Итак, уже пол года как я пользователь Ubuntu (где то с конца февраля), и переодически я делал попытки поправить звук. И всегда мне это сделать не удавалось, я оставался на временных решениях. Однако, сегодня знаменательный день. Я поборол ALSA и смог настроить звук правильно, как я и хотел.
Ни кому не желаю такого жёсткого секса который я испытал за пол года, поэтому пишу этот пост. И да наткнётся на него как можно больше народу

Особенно владельцы звуковух ASUS.
Если кому то интересно как звук работает без настроек то сейчас расскажу, если нет - переходите непосредственно к настройкам.
Итак, "из коробки" с Альсой звук у Xonar работает так:
- регулировка громкости работает только для передних каналов
- есть всего три режима апмикса (это когда стерео звук играет во всех колонках что у вас есть): Front (только передние колонки), Front + Surround (передние + боковые), Front + Surround + Real (передние + боковые + задние). Нету самого главного режима!!! Нету Саба + центр. Я кстати эту проблему решал хаком драйверов (они ОЧЕНЬ понятно написаны, буквально в одну строчку решается), но во-первых звук не ахти, во-вторых это не решает первую проблему.
- Я так и не понял где боковые каналы, где задние. ASUS в инструкции пишет, что если звук 5.1, то канал задних колонок нужно втыкать в выход боковых колонок.
Микширование (или смешивание потоков - то, что позволяет работать нескольким программам) работает для стерео, и, традиционно, не работае для 5.1 звука.
"Реальный" 5.1 звук есть, но его хрен послушаешь. Как правило устройство уже чем то занято

Pulseaudio решает часть проблем, добавляя свои. Как я через пульс настроил - написано выше. Это очень проблематично, очень лагает, очень мешает, очень раздражает... и так далее. Я бы сказал даже что через Пульс все проблемы "те же яица, только в профиль". Но всё же лучше чем "из коробки".
Решение проблемы со звуком Asus Xonar DX/D1
или на любой другой Xonar
или просто правильная настройка многоканального звука
- удаляем pulseaudio. Он нам не нужен. Если вы вдруг решили оставить Пульс то это инструкция не для вас, вы и так прекрасно знаете что делаете. А я удалил. Так свободнее дышится.
- Выставляем в настройках звука везде ALSA. Причём не свою звуковуху выбираем, а именно там где просто написано "ALSA - Advanced Linux Sound Architecture". (Система - Параметры - Звук)
- Если вы не собирали из исходников Альсу... то и не собирайте её!! Проблемы с линковкой библиотек никому не нужны. В остальном же нам конечно же понадобится установленная alsa + пакет alsa-utils
- Выполните (с правами суперпользователя) в консоле alsaconf. Выбирете из списка virtuoso (не важно какой). Согласитесь на замену.
- Далее самое главное. Открываем файл .asoundrc находящийся в папке вашего пользователя. Если его нет - создаём.
Строчку в "углвых скобках" <> не трогаем, всё остальное удаляем (хотя там ничего не должно быть) и вписываем
# 2009-08-21
#
# This .asoundrc will allow the following:
#
# - upmix stereo files to 5.1 speakers.
# - playback real 5.1 sounds, on 5.1 speakers,
# - allow the playback of both stere(oupmixed) and surround(5.1) sources at the same time.
# - use the 6th and 7th channel (side speakers) as a separate soundcard, i.e. for headphones
# (This is called the "alternate" output throughout the file, device names prefixed with 'a')
# - play mono sources in stereo (like skype & ekiga) on the alterate output
#
#
# Please try the following commands, to make sure everything is working as it should.
#
# To test stereo upmix : speaker-test -c2 -Ddefault -twav
# To test surround(5.1): speaker-test -c6 -Dplug:dmix6 -twav
# To test alternative output: speaker-test -c2 -Daduplex -twav
# To test mono upmix: speaker-test -c1 -Dmonoduplex -twav
#
#Define the soundcard to use
pcm.snd_card {
type hw
card 0
device 0
}
# 8 channel dmix - output whatever audio, to all 8 speakers
pcm.dmix8 {
type dmix
ipc_key 1024
ipc_key_add_uid false
ipc_perm 0660
slave {
pcm "snd_card"
rate 48000 # звуковуха поддерживает до 192 кГц, но в Линуксе не удалось завести больше чем 96 кГц.
# но даже 96 сейчас нигде нету. зато 48 кГц используется во всех DVD-филмах.
channels 8
period_time 0
period_size 1024 # не трогать. некоторые приложения не смогут работать
buffer_time 0
buffer_size 8192 # от заикания звука. здесь стояло 5120
}
# It routes the audio to t he correct speakers.
# в оригинале роутинг был не правильный
bindings {
0 0
1 1
2 2
3 3
4 4
5 5
6 6
7 7
}
}
# upmixing - duplicate stereo data to all 6 channels
pcm.ch51dup {
type route
slave.pcm dmix8
slave.channels 8
ttable.0.0 1
ttable.1.1 1
ttable.0.2 1
ttable.1.3 1
ttable.0.4 0.5
ttable.1.4 0.5
ttable.0.5 0.5
ttable.1.5 0.5
}
# this creates a six channel soundcard
# and outputs to the eight channel one
# i.e. for usage in mplayer I had to define in ~/.mplayer/config:
# ao=alsa:device=dmix6
# channels=6
pcm.dmix6 {
type route
slave.pcm dmix8
slave.channels 8
ttable.0.0 1
ttable.1.1 1
ttable.2.2 1
ttable.3.3 1
ttable.4.4 1
ttable.5.5 1
}
# share the microphone, i.e. because virtualbox grabs it by default
pcm.microphone {
type dsnoop
ipc_key 1027
slave {
pcm "snd_card"
}
}
# rate conversion, needed i.e. for wine
pcm.2chplug {
type plug
slave.pcm "ch51dup"
}
pcm.a2chplug {
type plug
slave.pcm "dmix8"
}
# routes the channel for the alternative
# 2 channel output, which becomes the 7th and 8th channel
# on the real soundcard
pcm.alt2ch {
type route
slave.pcm "a2chplug"
slave.channels 8
ttable.0.6 1
ttable.1.7 1
}
# skype and ekiga are only mono, so route left channel to the right channel
# note: this gets routed to the alternative 2 channels
pcm.mono_playback {
type route
slave.pcm "a2chplug"
slave.channels 8
# Send Skype channel 0 to the L and R speakers at full volume
ttable.0.6 1
ttable.0.7 1
}
# 'full-duplex' device for use with aoss
pcm.duplex {
type asym
playback.pcm "2chplug"
capture.pcm "microphone"
}
pcm.aduplex {
type asym
playback.pcm "alt2ch"
capture.pcm "microphone"
}
pcm.monoduplex {
type asym
playback.pcm "mono_playback"
capture.pcm "microphone"
}
# for aoss
pcm.dsp0 "duplex"
ctl.mixer0 "duplex"
# softvol manages volume in alsa
# i.e. wine likes this
pcm.mainvol {
type softvol
slave.pcm "duplex"
control {
name "2ch-Upmix Master"
card 0
}
}
pcm.!surround51 dmix6 # вот оно!!! здесь вместо стандартного surround51
# используется dmix6 который использует софтовое микширование
# pcm.!surround71 dmix8 # наверное это тоже нужно, но так как у меня нету 8ми канальной системы
# то не уверен
#pcm.!default "mainvol"
# set the default device according to the environment
# variable ALSA_DEFAULT_PCM and default to mainvol
pcm.!default {
@func refer
name { @func concat
strings [ "pcm."
{ @func getenv
vars [ ALSA_DEFAULT_PCM ]
default "mainvol"
}
]
}
}
Это мною исправленная версия файла, взятого откуда то отсюдаСохраняем файл. Перезагружаемся.
Заходим в микшер - параметры. Снимаем галочки с общего микшера, Stereo Upmix и всего остального что не нужно. Ставим галочку напротив 2ch-Upmix Master.
Всё! Всё везде работает!
Upmix - работает полноценно, все каналы.
5.1 звук - работает полноценно. Все каналы на месте.
всё микшируется: и 5.1 и стерео и вообще всё.
Регулировка звука работает только для всех каналов одновременно, но это можно исправить покопавшись в asoundrc.
Данное решение подойдёт вообщем то для многих звуковух. Далеко не всем правда нужен софтовый регулятор громкости... но этой звуковухе, к сожалению, нужен.
Итак, в чём хитрость.
pcm.!surround51 dmix6 <--- в этом! этой строчки я нигде никогда не видил!!! Именно поэтому раньше я не мог заставить микшировать 5.1 звук. Она заставляет вмето стандартного surround51, который обращается напрямую к звуковухе, использовать наш любимый dmix.
В настройке звука мне помогли
официальный и
неофициальный сайты альсы. А так же смекалка, терпение и рвение

Даже врагу не пожелаю столько мучатся сколько я на звуком.
И ещё раз напомню: при моей прекрасной системе, отличном слухе, музыкой во FLAC'е, разницу между HDA-Intel и ASUS Xonar я
не слышу!! Избавьте себя от геммороя и не покупайте звуковуху если устраивает встроенная.
Спасибо Линуксу за качественный секс длинною в пол года 