在AKSettings.channelCount = 2
和AKMicrophone
录音输出到单个通道的环境中。因此,我希望能够了解如何正确修补或混合AudioKit
中的音频?
让我们来看下面的示例,请记住,我将其保持在最低限度,因此将其视为“伪代码”,如下所示:
AKSettings.bufferLength = .medium
AKSettings.channelCount = 2
AKSettings.setSession(category: .playAndRecord)
AKNodeRecorder(node: microphone) // or AKMicrophone >>> AKMixer
mainMixer.connect(input: mic) // is AKMixer()
AudioKit.output = mainMixer
AudioKit.start()
播放器(AKPlayer)的设置非常简单:
player.load(audioFile: audioFile)
player.isLooping = false
player.buffering = .always
player >>> mainMixer
导致recorded microphone audio
向左“平移”或在左声道中播放!我宁愿确定它的工作方式,以便做出正确的选择,因为在模拟混音器中,除非将麦克风左右拨动,否则麦克风会跳到单声道,混音居中。另外,我也不想将AKSettings.channelCount
更改为1
,因为我也希望音轨也输出立体声。
任何提示或建议,谢谢!
我专门为麦克风找到了两个解决方案,但是,当然,如果能很好地了解如何在AudioKit中正确打补丁,那将是一件很不错的事情:)
第一个可行的解决方案是使用AVAudioFormat
,如下所示:[https://audiokit.io/docs/Classes/AKMicrophone.html#/c:@M@AudioKit@objc(cs)AKMicrophone(im)initWith:):
var audioFormat: AVAudioFormat = AVAudioFormat(standardFormatWithSampleRate: 44100, channels: 1)!
var mic = AKMicrophone(with: audioFormat)
我们也可以使用AKStereoFieldLimiter
并将通道数限制为一个:
AKStereoFieldLimiter(mic, amount: 1)
然后您可以将其传递到AKMixer
并将其修补到AKNodeRecorder
。
可能还有其他方法,但到目前为止,这是我所知道的。