我似乎无法让 ALSA 完全按照我的意愿行事,即使我花了很多时间配置它。我只是似乎不太理解它。
这是我的/etc/asound.conf
:
pcm.dmixed {
type asym
playback.pcm {
# See plugin:dmix at http://www.alsa-project.org/alsa-doc/alsa-lib/pcm_plugins.html
type dmix
# Don't block other users, e.g. the Timidity midi-player daemon
# http://www.alsa-project.org/alsa-doc/alsa-lib/pcm_plugins.html
ipc_key_add_uid true
ipc_key 5678293
ipc_perm 0660
ipc_gid audio
slave {
# 2 for stereo, 6 for surround51, 8 for surround71
channels 6
pcm {
format S32_LE
#format S16_LE
#rate 44100
rate 96000
# http://www.alsa-project.org/alsa-doc/alsa-lib/pcm_plugins.html
nonblock true
type hw
card 0
device 0
subdevice 0
}
period_size 1024
# If too large, use CONFIG_SND_HDA_PREALLOC_SIZE=2048
buffer_size 16384
}
}
capture.pcm "hw:0"
}
pcm.!default{
type plug
slave.pcm "upmix20_51"
}
pcm.!surround20 {
type plug
slave.pcm "upmix20_51"
}
pcm.!surround40 {
type plug
slave.pcm "dmixed"
route_policy duplicate
}
pcm.!surround51 {
type plug
slave.pcm "dmixed"
}
pcm.upmix20_51 {
slave.pcm "dmixed"
slave.channels 6
type route
# Front and rear
ttable.0.0 0.9
ttable.1.1 0.9
ttable.2.2 1
ttable.3.3 1
# Center and LFE
ttable.4.4 1
ttable.5.5 1
# Front left/right to center
ttable.0.4 0.5
ttable.1.4 0.5
# Front left/right to rear
ttable.0.2 0.5
ttable.1.3 0.5
}
目前它所实现的目标是:
Dmixing(我不明白这实际上是做什么的,我认为它确保无论有多少源输出到 alsa,设备都会播放声音)
dmixed
强制采样率至 96Khz
强制格式为 S32_LE (我认为这有效,虽然我的媒体播放器没有说它有效,但我认为它有效,因为如果我放入 S24_LE 声音就会中断。)
Upmix 2.0 使用“upmix20_51”听起来为 5.1,“upmix20_51”被设置为“!default”pcm 的从属,我认为这是 2.0 文件的正常输出。
通过通道复制将 4.0 上混到 5.1(route_policy 重复)
通常播放 5.1 声音,因为它应该使用“!surround51”pcm。
我想知道的是:
- dmixing 到底是做什么用的?
- 是
pcm.!surround20
多余的吗? (我应该把它删除吗?) - 我可以以某种方式检查采样率转换当前是通过硬件还是软件完成的吗?
- 强制频率为 96khz 且格式为 32 位会对质量有任何好处吗?
- 5.1 信号源会使用“!default”pcm 吗?如果它能够发生,与之相关的上混对于 5.1 源来说是否会出现问题?有没有更好的方法仅对 2.0 源进行混音?
- 如何将单声道声音上混为立体声,然后将立体声上混为 5.1 声音
- 如果我得到这些罕见的音源之一,如何将 7.1 音源(即在前置和后置扬声器之间分配侧面扬声器)缩混为 5.1
- 有没有比我目前使用 alsa 所做的更好/更高质量的方法来进行上混?有什么方法可以更好地控制声音的混合方式?