我的设置详细信息如下:
内置英特尔高清卡(card0),我现有的所有应用程序默认使用该卡。通常,立体声输出从立体声文件和流应用程序输出到卡。
我现在添加了一个 USB 声卡(卡 1:xCORE-200,来自 XMOS)并拥有 8 个输出的非标准阵列:4 个高音扬声器、4 个扬声器。它们是对称的,因此左侧有 2 个高音扬声器/2 个扬声器,右侧有 2 个高音扬声器/2 个扬声器。通道数组如下所示:
[0, 1, FrontRightTweeter, RearRightTweeter, LeftRearTweeter, LeftFrontTweeter, 6, 7, 8, 9, RightFrontSpeaker, RightRearSpeaker, LeftRearSpeaker, LeftFrontSpeaker, 14, 15]
交叉已经处理完毕,所以我想简单地重新映射所有立体声源,以便左侧进入整个新的左侧,右侧进入整个新的右侧。
此外,通过手动测试,我总是必须显着降低源的音量(约 90%),才能使我的新扬声器设置达到合理的水平。所以我也需要能够即时执行此操作。
我已经通过 .asoundrc 和 PulseAudio 模块查看了几个使用 ALSA 的示例,但我似乎无法将所有部分成功连接在一起 - 特别是从较少的通道源到更多的通道(通常是相反的方式)。我正在寻找一个示例 .asoundrc 或 PulseAudio 模块配置(以更有意义的为准),它可以实现我想要的通道重新映射和音量降低。谢谢!
答案1
这可以通过插件ttable
选项来实现route
,该插件也集成在plug
插件中:
pcm.MyLittleDevice {
type plug
slave {
pcm "hw:1"
channels 16
}
ttable [
[ 0 0 0 0 1 1 0 0 0 0 0 0 1 1 0 0 ]
[ 0 0 1 1 0 0 0 0 0 0 1 1 0 0 0 0 ]
]
}
要减小音量,请将1
s 替换为较小的值。
答案2
感谢@CL。 ,这是我想出的解决方案:
pcm.xcoreremapped {
type plug
hint {
show on
description "Remapping stereo to 8-ch speaker array."
}
slave {
pcm "hw:1,0"
channels 16
}
ttable [
[ 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 ]
[ 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 ]
]
}
0.05 将每个通道的音量级别降低到我想要的水平。我最终重新映射到所有通道以使配置更容易 - 我不必担心映射是否正确,并且重新映射到未使用的通道似乎没有坏处,尽管我会监视潜在的性能影响。