了解 ALSA 中的声音混合

了解 ALSA 中的声音混合

我似乎无法让 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 所做的更好/更高质量的方法来进行上混?有什么方法可以更好地控制声音的混合方式?

相关内容