Ios 如何将带有MIDI时间戳的MIDI消息发送到AKMIDI采样器?

Ios 如何将带有MIDI时间戳的MIDI消息发送到AKMIDI采样器?,ios,audiokit,Ios,Audiokit,我正在尝试将AudioKit集成到我的sequencer应用程序中 目前正在尝试了解如何将带有MIDIMESTAMP值的MIDI消息发送到AkMIDISPLER实例。在该类的接口中,没有允许为note命令指定时间戳值的方法 我不使用AKSequencer。我想从我自己的序列器调度命令 AudioKit对我的案例有什么帮助吗,或者我应该自己编写计划代码吗?@dimitry 如果您试图从非AKSequencer中播放AKMidSampler实例变量,我相信您只需要触发它们;是您的音序器以给定的时间戳

我正在尝试将AudioKit集成到我的sequencer应用程序中

目前正在尝试了解如何将带有MIDIMESTAMP值的MIDI消息发送到AkMIDISPLER实例。在该类的接口中,没有允许为note命令指定时间戳值的方法

我不使用AKSequencer。我想从我自己的序列器调度命令

AudioKit对我的案例有什么帮助吗,或者我应该自己编写计划代码吗?

@dimitry

如果您试图从非AKSequencer中播放
AKMidSampler
实例变量,我相信您只需要触发它们;是您的音序器以给定的时间戳发送MIDI事件,并通知AKMIDI采样器在序列中的那个时刻播放

例如:

 func playKick() {
    try! kick1Sampler.play(noteNumber: 60, velocity: 127, channel: 0)
 }
在没有看到sequencer实现或项目的情况下,您是否能够从sequencer发送MIDI事件?如果是这样,您可以添加
akmidistener
委托,并从音序器中捕获接收到的MIDI音符事件,如下所示:

func receivedMIDINoteOn(noteNumber: MIDINoteNumber, velocity: MIDIVelocity, channel: MIDIChannel, portID: MIDIUniqueID? = nil, offset: MIDITimeStamp = 0) {
    outputMIDIMessage = "Channel: \(channel+1) noteOn: \(noteNumber) velocity: \(noteVelocity))"
    print(outputMIDIMessage)
}

func receivedMIDINoteOff(noteNumber: MIDINoteNumber, velocity: MIDIVelocity, channel: MIDIChannel, portID: MIDIUniqueID? = nil, offset: MIDITimeStamp = 0) {
    outputMIDIMessage = "Channel: \(channel+1) noteOff: \(noteNumber) velocity: \(noteVelocity))"
    print(outputMIDIMessage)
}

请注意,我使用的是AudioKit版本
4.9.2
和Xcode 11.2.1。

不太可能以给定的时间戳发送事件。要使其精确,您需要从音频线程执行,并提供sampleOffset值。我自己知道如何实现它(事实上,我已经做到了)。我只是在问,也许AudioKit库中已经有一些代码,所以我可以直接使用它。似乎没有。