在MusicSequence中更改时间签名

时间:2012-08-31 20:44:01

标签: ios iphone ios5 midi musicsequence

我正在尝试更改MusicSequence中的时间签名(默认为4/4),但我似乎不明白该怎么做。我在序列中有2 MusicTracks和MusicPlayer也可以重现音乐。如何更改此值?

修改

我现在知道我需要在MusicSequence Tempo Track中添加Time Sig事件。我知道我可以使用MusicSequenceGetTempoTrack获取此曲目,但如何向其添加时间sig事件?

编辑2:

研究我意识到我需要为音乐速度轨道创建一个MusicTrackExtendedMetaEvent。现在我需要知道如何正确格式化MIDIMetaEvent(我知道88是metaEventType但不知道如何添加其余的信息)。

1 个答案:

答案 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