我的计划是使用 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;
}