我希望将midi文件转换为如下所示的.csv表示:
Notename,startTick,持续时间,速度
还包括整个和弦(从同一勾起的一系列音符)。
现在,JFugue有一个MidiParser类,它看起来可能能够做到这一点。我自己的实现有点粗糙,没有检测到注释、事件、中断或和弦。
那么,JFugue中是否有功能可以帮助我完成这一任务?
发布于 2016-06-09 19:29:26
创建自己的ParserListener (可能是" CsvParserListener "),将其作为侦听器添加到MidiParser中,并让CsvParserListener知道如何创建CSV文件。
ParserListener是JFugue中的一个接口。您还可以扩展ParserListenerAdapater,而不是实现ParserListener。
还有第二条路。您还可以创建一个实现AuxilliaryMidiParser并重写parseHandledEvent(MidiEvent e)的类。您可以直接访问MIDI事件,这可能对您更好,因为当播放音符时,您可以很容易地访问滴答。将您的AuxilliaryMidiParser添加到常规的MidiParser中,然后调用midiParser.parse(文件),最后在辅助解析器上编写一个方法来保存CSV文件。
https://stackoverflow.com/questions/37721745
复制相似问题