我想将一个midi文件转换为.csv表示形式,如下所示:
音符名称,startTick,持续时间,速度
还包括整个和弦(从同一滴答声开始的音符集)。
现在,JFugue具有一个MidiParser类,看起来它可以做到这一点。我自己的实现有点粗糙,无法检测到音符异常,断点或和弦。
那么,JFugue中是否有功能可以帮助我完成此任务?
最佳答案
创建自己的ParserListener(可能是“ CsvParserListener”),将其添加为MidiParser的侦听器,并使CsvParserListener知道如何创建CSV文件。
ParserListener是JFugue中的接口。您也可以扩展ParserListenerAdapater而不是实现ParserListener。
还有第二种方法。您也可以创建一个实现AuxilliaryMidiParser并覆盖parseHandledEvent(MidiEvent e)的类。您将直接访问MIDI事件,这可能对您更有效,因为在演奏音符时可以轻松访问音符。将您的AuxilliaryMidiParser添加到常规MidiParser中,然后调用midiParser.parse(File),最后调用您在辅助解析器上编写的用于保存CSV文件的方法。