2

我正在用 JFugue 5.0 做一个项目,我试过 4.0 但 5.0 似乎比他以前的兄弟更流畅。无论如何,我有 JFugue v4 的完整指南,这些是用来指代不同打击乐器的弦乐

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

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());
4

1 回答 1

1

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

HI_TOM就是你要找的。HIGH_X在 JFugue 5 中,所有以前命名为or的打击乐器LOW_X都被简化为HI_Xor LO_X

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

于 2016-06-08T12:53:48.943 回答