2010-03-23 3 views
1

Если у меня есть звуковой банк, хранящийся в JAR, как я могу загрузить этот звуковой банк в свое приложение, используя загрузку ресурсов ...?Java: Вложение файла Soundbank в JAR

Я пытаюсь закрепить как можно больше MIDI-программы в файле jar, и последнее, что я должен добавить, это файл soundbank, который я использую, поскольку у пользователей не будет установленных звуковых банков , Я пытаюсь помещать его в файл jar, а затем загружать его с помощью метода getResource() в классе Class, но я получаю InvalidMidiDataException на звуковом банке, который, как я знаю, действителен.

Вот код, это в конструкторе для моего объекта синтезатора:


try { 
    synth = MidiSystem.getSynthesizer(); 
    channels = synth.getChannels(); 
    instrument = MidiSystem.getSoundbank(this.getClass().getResource("img/soundbank-mid.gm")).getInstruments(); 
    currentInstrument = instrument[0]; 
    synth.loadInstrument(currentInstrument); 
    synth.open(); 
    } catch (InvalidMidiDataException ex) { 
     System.out.println("FAIL"); 
     instrument = synth.getAvailableInstruments(); 
     currentInstrument = instrument[0]; 
     synth.loadInstrument(currentInstrument); 
     try { 
      synth.open(); 
     } catch (MidiUnavailableException ex1) { 
      Logger.getLogger(MIDISynth.class.getName()).log(Level.SEVERE, null, ex1); 
     } 
    } catch (IOException ex) { 
     Logger.getLogger(MIDISynth.class.getName()).log(Level.SEVERE, null, ex); 
    } catch (MidiUnavailableException ex) { 
     Logger.getLogger(MIDISynth.class.getName()).log(Level.SEVERE, null, ex); 
} 

ответ

1

Это то, что я сделал:

synth.loadAllInstruments(
    MidiSystem.getSoundbank( 
     getClass().getResourceAsStream(filePath))); 

Это работает для меня.

Смежные вопросы