使用AVAudioUnitSampler时,我在iPhone(iOS 11)上遇到了一个奇怪的问题.
假设我有一个用钢琴声音初始化的AVAudioUnitSampler.因此,每次连接或断开耳机时,我都会听到钢琴声音加上正弦波音,声音越大,连接/断开耳机的次数越多.
因此,对我而言,每次耳机插入/拔出时都会感觉到,新的音频单元采样器将内部连接到声音输出(并且,由于它是未初始化的,因此仅产生正弦波音调).
以下类已经显示了该问题.请注意,我正在使用AudioKit来处理MIDI信号并触发采样器(虽然在这一端,一切似乎工作正常,即.startNote()并stopNote()正确调用):
class MidiController: NSObject, AKMIDIListener {
var midi = AKMIDI()
var engine = AVAudioEngine()
var samplerUnit = AVAudioUnitSampler()
override public init() {
super.init()
NotificationCenter.default.addObserver(
self,
selector: #selector(handleRouteChange),
name: .AVAudioSessionRouteChange,
object: nil)
midi.openInput()
midi.addListener(self)
engine.attach(samplerUnit)
engine.connect(samplerUnit, to: engine.outputNode)
startEngine()
}
func startEngine() {
if (!engine.isRunning) {
do {
try self.engine.start()
} catch {
fatalError("couldn't start engine.")
}
}
}
@objc func handleRouteChange(notification: NSNotification) {
let deadlineTime = DispatchTime.now() + …Run Code Online (Sandbox Code Playgroud)