gpt4 book ai didi

ios - 使用 AudioKit 录制和播放 MIDI 轨道

转载 作者:行者123 更新时间:2023-11-29 05:50:32 25 4
gpt4 key购买 nike

我正在尝试使用一个采样器同时录制 MIDI 轨道。对于每个新录音,它都会使用不同 channel 在音序器、回调乐器上创建新轨道。

当轨道不相交时,一切正常。但是,当我为与已录制的轨道相交的新轨道添加注释时,仅在播放时录制的轨道不会调用声音的回调函数,并且它将是标准的“蜂鸣声”。

以下是设置轨迹和回调函数的代码:

func startRecord() {
guard let newTrack = sequencer.newTrack() else { return }
recordingTrack = newTrack
recordingChannel = MIDIChannel(sequencer.tracks.count)

let midiInstrument = AKMIDICallbackInstrument()
let channel = recordingChannel
let sampler = currentSampler
midiInstrument.callback = { (status, note, velocity) in
let status = AKMIDIStatus(byte: status)!.type!
switch status {
case .noteOn:
try! sampler.play(noteNumber: note, velocity: velocity, channel: channel!)
case .noteOff:
try! sampler.stop(noteNumber: note, channel: channel!)
default:
break
}
}
newTrack.setMIDIOutput(midiInstrument.midiIn)

sequencer.rewind()
sequencer.preroll()
sequencer.play()
}

最佳答案

每次调用此函数时,您都会创建 AKMIDICallbackInstrument 的新实例。您似乎没有将这些引用存储在该代码块之外。尝试保留 AKMIDICallbackIntruments 的类级数组,您可以向其中添加您创建的新实例。

关于ios - 使用 AudioKit 录制和播放 MIDI 轨道,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55716571/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com