2014-02-21 8 views
0
내가

jFugue + Gervill : 다른 사운드 뱅크를 사용하면 사운드는 변경되지 않습니다

Soundbank soundbank = MidiSystem.getSoundbank(new File("/home/morelli/tmp/SoundBanks/JR_elepiano.sf2")); 
    Synthesizer synt = MidiSystem.getSynthesizer(); 
    synt.loadAllInstruments(soundbank); 
    synt.open(); 
    Player player = new Player(synt); 
    Pattern pattern = new Pattern("$PP=0 T120 V0 I42 C4ww V1 I[PP] C5w+E5qq_G5qq C5w+E5qq_G5qq C5w+A5qq_g5qq C5w+A5qq_g5qq V2 I43 G3q G3q G3q G3q G3q G3q G3q G3q V9 81q"); 

    Rhythm rhythm = new Rhythm(); 
    rhythm.setLayer(1, "O..oO...O..oOO.."); 
    rhythm.setLayer(2, "..*...*...*...*."); 
    rhythm.setLayer(3, "^^^^^^^^^^^^^^^^"); 
    rhythm.setLayer(4, "...............!"); 
    rhythm.addSubstitution('O', "[BASS_DRUM]i"); 
    rhythm.addSubstitution('o', "Rs [BASS_DRUM]s"); 
    rhythm.addSubstitution('*', "[ACOUSTIC_SNARE]i"); 
    rhythm.addSubstitution('^', "[PEDAL_HI_HAT]s Rs"); 
    rhythm.addSubstitution('!', "[CRASH_CYMBAL_1]s Rs"); 
    rhythm.addSubstitution('.', "Ri"); 
    Pattern rpattern = rhythm.getPattern(); 


    rpattern.repeat(2); 
    pattern.add(rpattern); 
    player.play(pattern); 

    player.saveMidi(pattern, new File("/tmp/music-file.mid")); 

    //System.out.println(Arrays.toString(synt.getLoadedInstruments())); 
    for (javax.sound.midi.Instrument l: synt.getLoadedInstruments()) { 
     System.out.println(l.toString()); 
    } 

문제는 다음 코드를 한 자바 7 음악을 만들 jFugue +의 gervill를 사용하려고 해요

경우 그 나는 사운드 뱅크를 바꾸고 악기 사운드는 변하지 않으며 인쇄 된 악기는 항상 동일합니다. 내가 틀린거야?

답변

1

나는 해결책을 찾는다. (나는 생각한다 :-)). open 및 loadAllInstruments 호출을 반전시켜야합니다.

synt.open(); synt.loadAllInstruments (사운드 뱅크);