我怎么能读MIDI文件,并得到跟踪预设的信息在OS X
问题描述:
我开了一个MIDI文件:我怎么能读MIDI文件,并得到跟踪预设的信息在OS X
MusicSequence sequence;
NewMusicSequence(&sequence);
MusicSequenceFileLoad(sequence, (__bridge CFURLRef _Nonnull)(midiFile), kMusicSequenceFile_MIDIType, 0);
,并通过使用MusicTrack
& MusicEventIterator
阅读MIDI音符消息。 我怎样才能得到仪器预置信息?诸如此类piano(id:0)
或别人..
答
轨道的预设信息或仪器预设信息不属于MIDI标准,据我所知的概念。为了找出是否有计划数设置或程序号改变,里面你的MIDI读回调你应该检测类型的二进制消息:
1100nnnn 0ppppppp
其中[nnnn = 0-15 (MIDI channel number 1-16)]
和[ppppppp = program number]
。
然而,这些只是事件生成的程序编号,可能是指任何声音。原始的MIDI规范没有“通用MIDI系统”中指定的“声音设置到程序更改号码”映射。因此,地方在你的代码应该有GeneralMIDI系统消息,例如搜索:
通用MIDI系统(十六进制):
F0 7E <device-ID> 09 01 F7
通用MIDI系统OFF(十六进制):
F0 7E <device-ID> 09 02 F7
完整规格可以从:MIDI Manufacturers Association。
这些设置由事件组成。它们不一定是预设;他们可以随时更改。 –