9

我正在尝试更改MusicSequence中的拍号(默认为 4/4),但我似乎不明白如何做到这一点。我在序列中有 2 个MusicTracks和一个 MusicPlayer 也可以重现音乐。如何更改此值?

编辑:

我现在知道我需要将 Time Sig 事件添加到 MusicSequence Tempo Track。我知道我可以使用MusicSequenceGetTempoTrack获得这首曲目,但是如何向其中添加时间信号事件?

编辑2:

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

4

1 回答 1

6

在这浪费了 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中查找拍号代码

于 2013-01-04T06:06:05.647 回答