9

MusicSequenceで拍子記号(デフォルトは4/4)を変更しようとしていますが、その方法がわかりません。シーケンス内に2つのMusicTrackがあり、音楽を再生するためのMusicPlayerもあります。この値を変更するにはどうすればよいですか?

編集:

MusicSequenceテンポトラックに拍子記号イベントを追加する必要があることがわかりました。MusicSequenceGetTempoTrackでこのトラックを取得できることは知っていますが、拍子記号イベントを追加するにはどうすればよいですか?

編集2:

調べてみると、ミュージックテンポトラックに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);

http://www.somascape.org/midi/tech/mfile.htmlで拍子記号コードを検索するためのMIDIファイル仕様への参照は次のとおりです。

于 2013-01-04T06:06:05.647 に答える