2010-03-23 81 views
1

如果我有一個存儲在JAR中的soundbank,我將如何使用資源加載將該音頻庫加載到我的應用程序中?Java:在JAR中嵌入Soundbank文件

我試圖將盡可能多的MIDI程序整合到jar文件中,而我必須添加的最後一件事是我使用的soundbank文件,因爲用戶不會安裝soundbanks 。我試圖把它放到我的jar文件中,然後用Class類中的getResource()加載它,但是我在soundbank上得到了一個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))); 

這對我的作品。