在 AudioKit 中,当同时使用 MIDI 乐器和麦克风时,可能会出现行为冲突导致声音无法正常输出的问题。此时,我们可以使用 AudioKit 的 Mixer 类来解决这一问题。
具体的做法是,创建一个 Mixer 对象,将 MIDI 乐器和麦克风都连接到 Mixer 上,然后将 Mixer 的输出连接到 AudioKit 的输出端口上。
下面是一份实现该方法的代码示例:
import AudioKit
class MyAudioProcessor {
let mic = AKMicrophone()
let midi = AKMIDINode()
var mixer: AKMixer!
init() {
mixer = AKMixer(mic, midi)
AudioKit.output = mixer
AudioKit.start()
}
func playMidi(note: MIDINoteNumber) {
// 发送 MIDI 指令,播放指定音符
}
func startRecording() {
// 开始录音
}
func stopRecording() {
// 停止录音
}
}
在这个例子中,我们创建了一个名为 MyAudioProcessor
的类,该类包含了一个麦克风和一个 MIDI 乐器。在初始化函数中,我们创建了一个 Mixer 对象,将麦克风和 MIDI 乐器都连接到了 Mixer 上,并将 Mixer 的输出连接到 AudioKit 的输出端口上。
这样做可以确保 MIDI 乐器和麦克风的声音都经过了 Mixer 进行混音后再输出,从而避免了它们之间的行为冲突。在 playMidi
、startRecording
和 stopRecording
方法中,我们可以根据需要执行不同的音频处理逻辑。
通过这种方法,我们可以在 AudioKit 中同时使用 MIDI 乐器