ALC1150 on MSI z87-GD65 ALSA setup

The ALC1150 chip on this motherboard fails to mix all channels played at it a simple,

pcm.!default{
   type hw
   card 1
}

Works but fails in mixing and does not take in SND_PCM_FORMAT_FLOAT inputs(may be because it is writing directly to the card’s buffer which doesn’t support float inputs). The fix is to use dmix but a lot of the dmix setups I used didn’t work at all, all ended in “can’t open output” errors. Put the following in /etc/asound.conf and it’ll work like a charm, no need for sound servers! It is a modified version of the conf found in http://wiki.gentoo.org/wiki/ALSA.

pcm.dmixed {
        type asym
        playback.pcm {
                type dmix
                ipc_key 5678293
                ipc_perm 0660
                ipc_gid audio

                slave {
                        channels 2 # make 6 or 5.1 channel
                        pcm {
                                format S16_LE # S32_LE
                                rate 48000 # can also be 44100
                                type hw
                                card 1 # your card
                                device 0 # your device
                                subdevice 0 #important?
                        }

                        period_size 1024
                        buffer_size 8192
                }

                bindings {
                        0 0
                        1 1
# Uncomment below if using 6 channel
#                       2 2
#                       3 3
#                       4 4
#                       5 5
                }
        }
        capture.pcm "hw:0"
}

pcm.!default {
        type plug
        slave.pcm "dmixed"
}