我如何将带有MIDITimestamp的MIDI消息发送到AKMIDISampler?

问题描述 投票:0回答:1

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

[当前试图弄清楚如何将具有MIDITimestamp值的MIDI消息发送到AKMIDISampler实例。在此类的接口中,没有方法可以为note命令指定时间戳记值。

我不使用AKSequencer。我想从我自己的音序器中安排命令。

AudioKit对我的案例有帮助吗,还是我应该自己编写计划代码?

ios audiokit
1个回答
0
投票

@ dimitry,

[如果您尝试从非AKMIDISampler中播放AKSequencer实例变量,我相信您只需要触发它们;是您的音序器在给定的时间戳下发送MIDI事件,并仅通知AKMIDISampler在该时刻的那一刻播放。

例如:

 func playKick() {
    try! kick1Sampler.play(noteNumber: 60, velocity: 127, channel: 0)
 }

没有看到音序器的实现或项目,您能够从音序器发送MIDI事件吗?如果是这样,您可以添加AKMIDIListener委托并捕获来自音序器的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。

© www.soinside.com 2019 - 2024. All rights reserved.