使用MusicTrackNewMIDINoteEvent在播放时添加音符

时间:2013-05-25 12:33:06

标签: ios midi coremidi

我正在构建一台鼓机来学习如何在iOS上使用MIDI。我设法让它工作到一点,但是,我有以下问题。当用户点击某个按钮时,我需要在MIDI播放器播放时向我的MIDI循环添加声音,不幸的是我不能简单地做:

MusicTrackNewMIDINoteEvent(track, 0, &message);

虽然轨道是循环的并且具有确定的长度,但理论上它应该在一点上回到0。我也试过这个:

MusicTrackNewMIDINoteEvent(track, noteTimestamp, &message);

其中noteTimestamp是我从播放器收到的时间戳。最后,我设法使用这样的东西:

MusicTrackNewMIDINoteEvent(track, noteTimestamp+.5, &message);

但是不用说.5延迟并不是我想要的鼓机,这应该尽可能地响应。

那么,如何解决这个问题呢?你怎么能尽快在轨道上推一个音符呢?

1 个答案:

答案 0 :(得分:1)

你正在赛道上放下一个赛事,当你把赛事放下来时,“播放头”已经超过了可以用它做任何事情的地步。

所以继续做你正在做的事情(不要改变时间)作为“记录”事件的手段,以便下次循环“到来”,但是你需要手动触发midi消息 - 除了赛道:

(int) note = 60;
(int) velocuty = 127;
(int) offset = 0;
MusicDeviceMIDIEvent(_yourSamplerUnit, kMIDIMessage_NoteOn << 4 | 0, note, velocity, offset);

再一次,发出手动midi事件将允许听众听到声音,并将事件放入音轨将允许你的音轨“记录”下一次''。