我重新创建了MIDI
文件而没有更改任何Meta
个事件。我在每个SysEx (System Exclusive)
和note_on
事件下添加了note_off
条消息。我使用this库来解析MIDI文件并提取曲目以获取MIDI信息。
以下是我尝试的一些示例代码(我在原始文件夹中有MIDI文件)。
try {
InputStream is = getResources().openRawResource(R.raw.mysamplemidifile);
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();
}
最初MIDI信息的总数约为2500。但该库只能获取大约2300个MIDI消息。
sysExTrack
变量包含未完全解析的SysEx
数据。
我无法理解这里出了什么问题。对此有任何帮助表示赞赏。
修改 MIDI文件在iOS中正确解析。