我正在用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());
答案 0 :(得分:1)
打击乐器的名称保存在静态字符串[] 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
中找到它们。)