midi 键盘无法在所有平台上工作
不久前,我制作了一个键盘应用程序,该应用程序从罐子中获取midi声音库作为资源,并使用它来获取声音库中包含的乐器名称。这似乎适用于使用Windows 7和suns java 6的机器,以及在linux中使用suns java 6的机器。但是,这似乎不适用于使用相同版本java的Windows xp的机器。似乎正在发生的事情是,在调用该方法时,尚未加载工具数组。工具数组填充在类的构造函数中(第二个代码示例)。有人可以帮助我理解为什么会这样,为什么它似乎依赖于机器?getInstrumentName()
DefaultControl
我得到的当前工具名称如下:
data.setControls(new DefaultControls());
data.setKeyboard(new KeyboardPanel(data.getPressed()));
data.getKeyboard().setInstrumentName(data.getControls().getInstrumentName());
我得到并加载声音库,如下所示:
this.synth=MidiSystem.getSynthesizer();
synth.open();
synth.loadAllInstruments(
MidiSystem.getSoundbank(
getClass().getResourceAsStream("soundbank.gm")));
this.instrument=synth.getAvailableInstruments();
this.channels=synth.getChannels();
这是调用来加载名称的方法,如下所示:
public String getInstrumentName(){
return instrument[selected_instrument].getName();
}