我正在尝试更改MusicSequence中的时间签名(默认为4/4),但我似乎不明白该怎么做。我在序列中有2 MusicTracks和MusicPlayer也可以重现音乐。如何更改此值?
修改
我现在知道我需要在MusicSequence Tempo Track中添加Time Sig事件。我知道我可以使用MusicSequenceGetTempoTrack获取此曲目,但如何向其添加时间sig事件?
编辑2:
研究我意识到我需要为音乐速度轨道创建一个MusicTrackExtendedMetaEvent。现在我需要知道如何正确格式化MIDIMetaEvent(我知道88是metaEventType但不知道如何添加其余的信息)。
答案 0 :(得分:5)
4次浪费了4个小时之后,我想出了怎么做。代码如下:
//Getting the tempo track
MusicTrack tempoTrack;
MusicSequenceGetTempoTrack (musicSequence, &tempoTrack);
//Set time signature to 7/16
MIDIMetaEvent timeSignatureMetaEvent;
timeSignatureMetaEvent.metaEventType = 0x58;
timeSignatureMetaEvent.dataLength = 4;
timeSignatureMetaEvent.data[0] = 0x07;
timeSignatureMetaEvent.data[1] = 0x04;
timeSignatureMetaEvent.data[2] = 0x18;
timeSignatureMetaEvent.data[3] = 0x08;
MusicTrackNewMetaEvent(tempoTrack, 0, &timeSignatureMetaEvent);
以下是对MIDI文件规范的引用,以便将时间签名代码查找到http://www.somascape.org/midi/tech/mfile.html