如何播放具有确定持续时间的midi音符

时间:2016-12-04 12:33:17

标签: ios swift midi coremidi

要玩我正在使用AVAudioUnitSampler:

            sampler.stopNote(note, onChannel: channel)

但要停止我不想使用:

            DispatchQueue.main.asyncAfter(
                deadline: DispatchTime.now() + Double(Int64(0.7 * Double(NSEC_PER_SEC))) / Double(NSEC_PER_SEC))
            {
               sampler.stopNote(note, onChannel: channel)
            }

什么是更好的解决方案? 感谢

1 个答案:

答案 0 :(得分:3)

您可以创建一个MusicSequence,其中的每个事件都将由MusicPlayer安排。

您可以使用AVMIDIPlayer,但您需要将MusicSequence转换为数据,因为它不会直接识别MusicSequence。

如果您想通过按下按钮来模拟音符,并通过按钮释放注释,则使用MusicDeviceMIDIEvent。

let status = MusicDeviceMIDIEvent(midisynthUnit, noteCommand, noteNum, velocity, 0)

您可能需要阅读this以获取有关使用AVAudioUnitSampler的更多信息。