我使用great MIDI library来解析MIDI文件。
在我的一个MIDI文件中。我有一个仅包含SysEx消息的独家曲目(~3000条消息)。但是,每当库解析MIDI文件时,它只能识别所有SysEx消息中的43个。 SysEx消息中包含的数据也未正确获取。
以下是我尝试的一些示例代码(我在raw
文件夹中有MIDI文件)。
try {
InputStream is = getResources().openRawResource(R.raw.stairwaysysex);
File tempFile = File.createTempFile("temp", ".mid");
tempFile.deleteOnExit();
FileOutputStream out = new FileOutputStream(tempFile);
IOUtils.copy(is, out);
MidiFile midi = new MidiFile(tempFile);
ArrayList<MidiTrack> tracks = midi.getTracks();
MidiTrack sysExTrack = tracks.get(tracks.size() - 1);
} catch (Exception e) {
e.printStackTrace();
}
sysExTrack
变量包含未完全解析的SysEx数据。
值得注意的是,所有其他曲目都被正确解析。