MIDI-клавиатура не работает на всех платформах

Я недавно сделал приложение для клавиатуры , которое получает звуковой банк midi в качестве ресурса из jar-файла и использует его для получения названий инструментов, содержащихся в звуковой банк. Кажется, это нормально работает на машинах, использующих windows 7 с suns java 6 и в linux с suns java 6. Однако это не работает на машинах, использующих windows xp с той же версией java. Похоже, что происходит то, что массив инструментов не был загружен при вызове метода 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();
}

18
задан Roman C 16 March 2016 в 20:15
поделиться