将 7.1 USB 声卡的输出拆分为 4 个不同的立体声对

将 7.1 USB 声卡的输出拆分为 4 个不同的立体声对

我的计划是使用 7.1 USB 声卡 (AUREON XFIRE 8.0 HD) 的 4 个模拟输出作为单独的立体声对,以使用 Ubuntu 22.04 和 Shairport Sync 创建多房间音频设置。

我有以下内容.asoundrc来创建可以在 Shairport Sync(或支持 ALSA 的任何其他源)中使用的虚拟设备:

pcm.stereoA {
    # 0 - Front Left
    # 1 - Front Right
    type route;
    slave.pcm "hw:1,0";
    slave.channels 8;
    ttable.0.0 1;
    ttable.1.1 1;
}

pcm.stereoB {
    # 2 - Front Center
    # 3 - LFE
    type route;
    slave.pcm "hw:1,0";
    slave.channels 8;
    ttable.0.3 1;
    ttable.1.2 1;
}

pcm.stereoC {
    # 4 - Rear Right
    # 5 - Rear Left
    type route;
    slave.pcm "hw:1,0";
    slave.channels 8;
    ttable.0.4 1;
    ttable.1.5 1;
}

pcm.stereoD {
    # 6 - Side Right
    # 7 - Side Left
    type route;
    slave.pcm "hw:1,0";
    slave.channels 8;
    ttable.0.7 1;
    ttable.1.6 1;
}

现在的问题是这仅适用于stereoA.对于其他输出,通过 Shaiport Sync 使用时音频保持静音。

但是,在使用扬声器测试进行测试时,它工作正常:

speaker-test -D stereoB -c 2

speaker-test 1.2.6

Playback device is stereoB
Stream parameters are 48000Hz, S16_LE, 2 channels
Using 16 octaves of pink noise
Rate set to 48000Hz (requested 48000Hz)
Buffer size range from 12 to 96000
Period size range from 6 to 48000
Using max buffer size 96000
Periods = 4
was set period_size = 24000
was set buffer_size = 96000
 1 - Front Center
 0 - LFE

我可以在这里测试在正确输出上播放的噪音。

当Shairport Sync被告知使用stereoB作为其output_device时,它实际上也接受音频流,并且看起来好像正在播放(当我尝试播放其他内容时,音频设备也很忙)。所以我猜它在错误的频道上播放。

如何修复通道映射,以便立体声对实际上表现得像真正的立体声对一样,并命名为“左前”和“右前”?

答案1

我发现我的配置实际上工作得很好。我只是没有意识到,在 AirPlay 目标之间切换时,macOS 会将音量滑块重置为相当低的音量,这就是为什么我在测试不同输出时没有听到音频的原因。

我一路上学到的是,您可以通过定义一个pcm_slave部分并在这些pcm部分中引用它来稍微简化配置。

因此,我将更新的配置留在这里,以防有人发现它有用:

pcm_slave.outs {
    pcm "hw:1,0";
    channels 8;
}

pcm.stereoA {
    type route;
    slave outs;
    ttable.0.0 1;
    ttable.1.1 1;
}

pcm.stereoB {
    type route;
    slave outs;
    ttable.0.3 1;
    ttable.1.2 1;
}

pcm.stereoC {
    type route;
    slave outs;
    ttable.0.4 1;
    ttable.1.5 1;
}

pcm.stereoD {
    type route;
    slave outs;
    ttable.0.6 1;
    ttable.1.7 1;
}

相关内容