如何在立体声会话中使用单声道AKNode?

问题描述 投票:0回答:1

AKSettings.channelCount = 2AKMicrophone录音输出到单个通道的环境中。因此,我希望能够了解如何正确修补或混合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
1个回答
0
投票

我专门为麦克风找到了两个解决方案,但是,当然,如果能很好地了解如何在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

可能还有其他方法,但到目前为止,这是我所知道的。

© www.soinside.com 2019 - 2024. All rights reserved.