首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >jFugue + Gervill:使用不同的声音组,声音不会改变

jFugue + Gervill:使用不同的声音组,声音不会改变
EN

Stack Overflow用户
提问于 2014-02-21 11:01:39
回答 1查看 604关注 0票数 0

我正在尝试使用jFugue + gervill来使用Java7创建音乐。

代码语言:javascript
复制
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());
   }

问题是,如果我改变声音库,乐器的声音不会改变,印刷的乐器总是一样的。我做错什么了?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-02-21 11:22:41

我找到了解决办法(我想:-)。我必须反转open和loadAllInstruments调用:

synt.open();synt.loadAllInstruments(音库);

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21932573

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档