2010-03-23 2 views
1

JAR에 사운드 뱅크를 저장 한 경우 리소스 로딩을 사용하여 애플리케이션에 해당 사운드 뱅크를로드하는 방법은 무엇입니까?자바 : JAR에 사운드 뱅크 파일 임베드

최대한 많은 MIDI 프로그램을 jar 파일에 통합하려고하는데, 내가 추가해야 할 마지막 사항은 사운드 뱅크가 설치되어 있지 않아서 사용하고있는 사운드 뱅크 파일입니다. . 내 항아리 파일에 넣으려면 노력하고 클래스 클래스에서 getResource() 함께로드 할 수 있지만 유효한 것으로 알고 사운드 뱅크 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))); 

그것은 나를 위해 작동합니다.