我正在尝试将AudioKit集成到我的音序器应用程序中。
当前试图弄清楚如何将具有MIDITimestamp值的MIDI消息发送到AKMIDISampler实例。在此类的接口中,没有方法可以为note命令指定时间戳记值。
我不使用AKSequencer。我想从自己的音序器安排命令。
AudioKit对我的案例有帮助吗,还是我应该自己编写调度代码?
答案 0 :(得分: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。