JFugue 解析 midi 文件并输出 .csv?
JFugue to parse midi file and output .csv?
我想将 midi 文件转换为 .csv 格式,如下所示:
音符名称、startTick、持续时间、速度
还包括整个和弦(从同一刻度开始的音符组)。
现在,JFugue 有一个 MidiParser class,看起来它可以做到这一点。我自己的实现有点粗糙,无法检测音符关闭事件或中断或和弦。
那么,JFugue 中是否有功能可以帮助我完成此任务?
创建您自己的 ParserListener(可能是 "CsvParserListener"),将其添加为 MidiParser 的侦听器,并让您的 CsvParserListener 知道如何创建 CSV 文件。
ParserListener 是 JFugue 中的一个接口。您还可以扩展 ParserListenerAdapater 而不是实现 ParserListener。
还有第二种方法。您还可以创建一个 class 来实现 AuxilliaryMidiParser 并覆盖 parseHandledEvent(MidiEvent e)。您将可以直接访问 MIDI 事件,这可能更适合您,因为您可以在播放音符时轻松访问节拍。将您的 AuxilliaryMidiParser 添加到常规 MidiParser,然后调用 midiParser.parse(File),最后在您编写的辅助解析器上调用一个方法来保存 CSV 文件。
我想将 midi 文件转换为 .csv 格式,如下所示:
音符名称、startTick、持续时间、速度
还包括整个和弦(从同一刻度开始的音符组)。
现在,JFugue 有一个 MidiParser class,看起来它可以做到这一点。我自己的实现有点粗糙,无法检测音符关闭事件或中断或和弦。
那么,JFugue 中是否有功能可以帮助我完成此任务?
创建您自己的 ParserListener(可能是 "CsvParserListener"),将其添加为 MidiParser 的侦听器,并让您的 CsvParserListener 知道如何创建 CSV 文件。
ParserListener 是 JFugue 中的一个接口。您还可以扩展 ParserListenerAdapater 而不是实现 ParserListener。
还有第二种方法。您还可以创建一个 class 来实现 AuxilliaryMidiParser 并覆盖 parseHandledEvent(MidiEvent e)。您将可以直接访问 MIDI 事件,这可能更适合您,因为您可以在播放音符时轻松访问节拍。将您的 AuxilliaryMidiParser 添加到常规 MidiParser,然后调用 midiParser.parse(File),最后在您编写的辅助解析器上调用一个方法来保存 CSV 文件。