Нашел вариант, избегающий проблем dmix и dshare. Установил PulseAudio, настройки в /etc/pulse/default.pa такие:
...
load-module module-alsa-sink
sink_name=speakers
device=hw:0
channels=8
channel_map=aux0,aux1,center,lfe,rear-left,rear-right,front-left,front-right
load-module module-remap-sink
sink_name=headphones
master=speakers
channels=2
master_channel_map=aux0,aux1
channel_map=left,right
load-module module-remap-sink
sink_name=hda71
master=speakers
channels=8
master_channel_map=aux0,aux1,center,lfe,rear-left,rear-right,front-left,front-right
channel_map=front-left,front-right,center,lfe,rear-left,rear-right,front-left,front-right
...
(разбил на строчки для наглядности, на самом деле строчек должно быть только три)
И в .asoundrc сейчас всего лишь:
pcm.headphones {
type pulse
device headphones
}
pcm.speakers {
type pulse
device speakers
}
pcm.!default {
type pulse
device hda71
}
ctl.pulse {
type pulse
}
Еще SMPlayer стал ни с того, ни с сего говорить «switch_audio», из-за чего пришлось добавить «if line.startswith("switch_audio "): continue» в цикл.
Итого: микширование работает, наушники/колонки можно использовать отдельно, можно вместе. Пока одно непонятно: как запускать pulseaudio -D раньше остальных программ, которые могут усесться на /dev/snd/pcmC0D0p и никого не пускать.