我修改了由Gene De Lisa创建的代码来提取有关MIDI文件的信息。注意,我使用的是Objective C,而不是Swift。我可以获得有关时间签名,曲目名称,bpm等的信息,但由于某种原因我无法提取MIDI文件的密钥签名。
这是我的代码:
首先我打开MIDI文件:
geo:<latitude>,<longitude>?z=10
我的理解是你解析MIDI文件的速度轨道,寻找-(void) loadSequence {
NSString *songTitle = [[NSUserDefaults standardUserDefaults] objectForKey:@"songTitle"];
NewMusicSequence(&_sequence);
//NSURL *midiFile = [[NSBundle mainBundle] URLForResource:songTitle withExtension:@"mid" subdirectory:@"Levels"];
NSURL *midiFile = [[NSBundle mainBundle] URLForResource:songTitle withExtension:@"mid"];
MusicSequenceFileLoad(_sequence, (__bridge CFURLRef)midiFile, 0, 0);
}
事件类型,其值为5.时间签名是一种这样的事件,关键签名也是如此。这是代码:
kMusicEventType_Meta
当我在Logic Pro X中打开MIDI文件时,我可以清楚地看到一个关键签名。我尝试将多个密钥签名更改添加到单个MIDI文件中,但它从未显示有任何此类事件。
我错过了什么?