私の賞金を払わなかった後、私はApple DTSに手紙を送り、素晴らしい回答を得ました(Objective-Cから翻訳したコードサンプルを含む)。
以下の機能は、デフォルトの動作である出力/出力モードではなく、出力専用モードでデフォルトのオーディオデバイスに接続します。エンジン始める前にそれを呼び出すことを忘れないでください!
func setOutputDeviceFor(_ engine: AVAudioEngine) -> Bool {
var addr = AudioObjectPropertyAddress(
mSelector: kAudioHardwarePropertyDefaultOutputDevice,
mScope: kAudioObjectPropertyScopeGlobal,
mElement: kAudioObjectPropertyElementMaster)
var deviceID: AudioObjectID = 0
var size = UInt32(MemoryLayout.size(ofValue: deviceID))
let err = AudioObjectGetPropertyData(
AudioObjectID(kAudioObjectSystemObject),
&addr,
0,
nil,
&size,
&deviceID)
if (noErr == err && kAudioDeviceUnknown != deviceID) {
do {
try engine.outputNode.auAudioUnit.setDeviceID(deviceID)
} catch {
print(error)
return false
}
return true
} else {
print("ERROR: couldn't get default output device, ID = \(deviceID), err = \(err)")
return false
}
}
これはhttps://stackoverflow.com/questions/31501961とhttps://stackoverflow.com/questions/26728250に関連しています。 – Henrik