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_X
或 LOW_X
的打击乐器都已简化为 HI_X
或 LO_X
。
(您可能还对乐器名称感兴趣,这与打击乐名称不同。打击乐名称只是音符值的替代名称,用于在第 10 个通道中播放这些音符时使用(V9
) , MIDI 为打击乐器保留的(这就是为什么你的 MIDI 钢琴在几个音符上有打击乐器符号的原因);乐器名称用于实际的乐器音色。你可以在 MidiDictionary.INSTRUMENT_BYTE_TO_STRING
和 MidiDictionary.INSTRUMENT_STRING_TO_BYTE
中找到它们.)
我正在用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_X
或 LOW_X
的打击乐器都已简化为 HI_X
或 LO_X
。
(您可能还对乐器名称感兴趣,这与打击乐名称不同。打击乐名称只是音符值的替代名称,用于在第 10 个通道中播放这些音符时使用(V9
) , MIDI 为打击乐器保留的(这就是为什么你的 MIDI 钢琴在几个音符上有打击乐器符号的原因);乐器名称用于实际的乐器音色。你可以在 MidiDictionary.INSTRUMENT_BYTE_TO_STRING
和 MidiDictionary.INSTRUMENT_STRING_TO_BYTE
中找到它们.)