Java: Встраивание файла Soundbank в JAR - PullRequest
1 голос
/ 23 марта 2010

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

Я пытаюсь объединить как можно больше MIDI-программ в файл jar, и последнее, что я должен добавить, - это файл soundbank, который я использую, поскольку у пользователей не будет установлен soundbanks. Я пытаюсь поместить его в свой файл 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 Ответ

1 голос
/ 23 марта 2010

Вот что я сделал:

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

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

...