5

我正在尝试将一个非常基本的单音符 MusicSequence ( MusicSequence Reference ) 保存到 MIDI 文件中。该文件现在正在写入,并且音符的持续时间也(如果我输入持续时间 4,则 MIDI 文件持续 2 秒,如果我将其更改为 2,那么它应该持续 1 秒)但是没有声音被再现和如果我在 Logic 中查看 MIDI 文件,也没有任何信息。似乎笔记持续时间被写了,但笔记的笔记没有。

会发生什么?

+ (MusicSequence)getSequence
{
    MusicSequence mySequence;
    MusicTrack myTrack;
    NewMusicSequence(&mySequence);
    MusicSequenceNewTrack(mySequence, &myTrack);

    MIDINoteMessage noteMessage;
    MusicTimeStamp timestamp = 0;
    noteMessage.channel = 0;
    noteMessage.note = 4;
    noteMessage.velocity = 90;
    noteMessage.releaseVelocity = 0;
    noteMessage.duration = 4;

    if (MusicTrackNewMIDINoteEvent(myTrack, timestamp, &noteMessage) != noErr) NSLog(@"ERROR creating the note");
    else NSLog(@"Note added");

    return mySequence;
}
4

1 回答 1

5

尝试写一个大于 20 且 < 109 的音符(中音范围)。虽然 4 在技术上可能是有效的,但它超出了正常 MIDI 音符的范围。

此外,与 Core Audio/MusicPlayer 等一起使用的有用函数是 CAShow() - 因此请尝试CAShow(sequence)查看序列数据。

于 2012-08-04T17:28:41.187 回答