如何在JFugue 5.0中获取乐器字典

时间:2016-06-07 15:49:20

标签: java midi jfugue

我正在用JFugue 5.0做一个项目,我尝试过4.0但5.0看起来比他以前的兄弟更顺畅。无论如何,我有JFugue v4的完整指南,这些是用于引用differents percussion instruments

的字符串

现在,当我尝试运行我的代码时,我收到此错误:

Exception in thread "AWT-EventQueue-0" java.lang.RuntimeException: JFugue NoteSubparser: Could not find 'HIGH_TOM' in dictionary.

这是我使用的自定义节奏地图:

kitPercusion = new HashMap<>();
    kitPercusion.put('O', "[ACOUSTIC_BASS_DRUM]i");
    kitPercusion.put('S', "[ACOUSTIC_SNARE]i");
    kitPercusion.put('`', "[CLOSED_HI_HAT]s Rs");
    kitPercusion.put('^', "[OPEN_HI_HAT]i");
    kitPercusion.put('R', "[RIDE_CYMBAL_1]s Rs");
    kitPercusion.put('C', "[CRASH_CYMBAL_1]s Rs");
    kitPercusion.put('T', "[HIGH_TOM]s Rs");
    kitPercusion.put('-', "[HI_MID_TOM]s Rs");
    kitPercusion.put('_', "[LOW_FLOOR_TOM]s Rs");
    kitPercusion.put('~', "[COWBELL]i");
    kitPercusion.put('.', "Ri");

在官方网页示例中,我看到名称已经“简化”,如“吉他”,“钢琴”等。

有没有办法用有效的乐器字符串获取字典?

修改: 我试过这个,但它会打印一个空的地图

    Player player = new Player();
    StaccatoParser sp = player.getStaccatoParser();
    StaccatoParserContext spc = new StaccatoParserContext(sp);
    System.out.println(spc.getDictionary());

1 个答案:

答案 0 :(得分:1)

打击乐器的名称保存在静态字符串[] Note.PERCUSSION_NAMES中。

HI_TOM是您正在寻找的。在JFugue 5中,以前命名为HIGH_XLOW_X的所有打击乐器已简化为HI_XLO_X

(您可能也对乐器名称感兴趣,这些名称与打击乐器名称不同。打击乐器名称只是在第10个通道(V9)中播放这些音符时使用的音符值的替代名称,打击乐器的MIDI储备(这就是为什么你的MIDI钢琴在几个音符上有打击乐符号的原因);乐器名称用于实际的乐器补丁。你可以在MidiDictionary.INSTRUMENT_BYTE_TO_STRINGMidiDictionary.INSTRUMENT_STRING_TO_BYTE中找到它们。)