JFugue 5.0中乐器词典获取方法

How to get the instrument dictionary in JFugue 5.0

我正在用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");

在官网上的例子中我看到名字是"simplified"像"guitar","piano"等等。

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

编辑: 我已经试过了,但是它打印了一个空的 Map

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

打击乐器的名称保存在静态字符串[]中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 中找到它们.)