I can't seem to bend ALSA completely to my will, even after I spent a lot of time configuring it. I just do not seem to understand it well enough.Here is my /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}What it currently achieves is:Dmixing (I do not understand what this actually does, I think itensures that the device will play sound no matter how many sourcesare outputting to alsa) with dmixedForces sample rate to 96KhzForces format to S32_LE (I think this works, although my media player doesn't say it works, I think it works because if I put S24_LE the sound will break.)Upmix 2.0 sounds to 5.1 with upmix20_51 which is set as a slave tothe !default pcm which I think is the normal output for 2.0 files.Upmix 4.0 to 5.1 via channel duplication (route_policy duplicate)Plays 5.1 sound normally granted it uses the !surround51 pcm as it should.What I would like to know is:What exactly is dmixing for?Is the pcm.!surround20 redundant? (Should I just remove it?)Can I check somehow if sample rate conversion is currently done with hardware or software?Will forcing the Frequency to 96khz and format to 32-bit have any benefits for quality?Will 5.1 sources ever use the !default pcm? And if it can happen, will the upmixing that is tied to it be problematic for that 5.1 source? Is there a better way to upmix 2.0 sources only?How do I upmix Mono sound to Stereo sound and then upmix that Stereo sound to 5.1 soundHow do I downmix 7.1 sources (i.e. divide the side speakers between the front and rear speakers) to 5.1 in case I get one of those rare sourcesIs there any better/higher quality method to do upmixing than what I am currently doing with alsa? Any method that allows for greater control over how the sound is mixed?
Understanding Mixing of sounds in ALSA
linux;configuration;audio;alsa