Alsa + ECHO Audiofire 12

Помогите пожалуйста настроить звуковую карту ECHO Audiofire 12 (Firewire) под Leap 42.2.
Задача - просто обеспечить юзерский звук в Линуксе, т. е. слушать музыку, смотреть фильмы, ютуб, ВК и т. д. Всё это надо делать в 2.0 (Стерео). Для работы с проф. аудио и многоканалкой (студийной, а не просмотр фильма в 5.1) я всё же пока остаюсь на Windows 7 + ASIO + Cubase.
Помню, давно тестил это всё дело на SUSE 13.1, там ничего само не работало, приходилось ставить JACK и FFADO - и вот с ними всё получалось настроить.
Теперь поставил 42.1, а потом 42.2 и обнаружил, что моя звуковушка определилась автоматически - она есть в графическом микшере, загружен модуль fireworks. Более того, туда даже что-то выводится, типа “пинь-пинь” при регулировке громкости.

НО!

Видимо ALSA в процессе автонастройки решила, что раз у меня 12-ти выходная аудиокарта, то я фанат домашних кинотеатров, и настроила систему в какой-то сверх режим 5.1 -> 7.1 -> 7.2, что там ещё бывает. Т. е. на хардварных индикаторах каналов я вижу, как звук выводится на все каналы. Аудиомониторы всё равно подключены только к 1му и 2му каналам, а остальные на входы всяких обработчиков. Причём наверняка он ещё и как-то там делится каким-нить супер-процессором эффектов окружения и т. п. Т. е. на реальный 1й 2й канал я получаю остаток от разбитого по каналам звука.

Вопрос. Как сказать ALS’е, что мне нужны только первые 2 канала в режиме стерео и всё, остальные не использовать? Куда начать копать, что почитать, какой man?

Видимо ALSA в процессе автонастройки решила, что раз у меня 12-ти выходная аудиокарта, то я фанат домашних кинотеатров, и настроила систему в какой-то сверх режим 5.1 -> 7.1 -> 7.2, что там ещё бывает

Это pulseaudio с легкостью настраивает многоканальный звук.
Вот с alsa придется повозиться.
Отключите pulse и будет вам два канала.

это плэер определяет какой вывод использовать, стерео или 5.1 (7.1)

если же у вас в плэере выставлено стерео, но по-прежнему распихивается на остальные каналы - то у вас в альсе каким-то образом получился хитрый конфиг с апмиксом, типа такого: http://forums.balancer.ru/tech/forum/2017/02/t73337–programmnoe-mikshirovanie-v-linux-asoundrc.7341.html
или пульса по-умолчанию выставлена в объемный выход (если через неё играет)
ну эт предположение, по-хорошему надо больше инфы: используется ли пульс (если да - то его конфиг), и конфиг альсы тож.

Некоторые слова очень даже знакомы из аудио-знаний, но что конкретно имеется ввиду… =)) Плюс ещё так и не понял в архитектуре, кто куда и за чем играет и кто куда какие потоки пересылает =D


:~> cat /etc/alsa-pulse.conf 
@hooks 
        {
                func load
                files 
                        "/etc/asound.conf"
                        "/etc/asound-pulse.conf"
                        "~/.asoundrc"
                ]
                errors false
        }
]

:~> cat /etc/asound.conf
cat: /etc/asound.conf: No such file or directory

:~> cat /etc/asound-pulse.conf
# PulseAudio plugin configuration


pcm.!default {
    type pulse
    hint {
        show on
        description "Default ALSA Output (currently PulseAudio Sound Server)"
    }
    fallback "sysdefault"
}


ctl.!default {
    type pulse
    fallback "sysdefault"
}

:~> cat ~/.asoundrc
cat: /home/NeWT/.asoundrc: No such file or directory

:~> cat /etc/pulse/daemon.conf
# This file is part of PulseAudio.
# ...


; daemonize = no
; fail = yes
; allow-module-loading = yes
; allow-exit = yes
; use-pid-file = yes
; system-instance = no
; local-server-type = user
; enable-shm = yes
; shm-size-bytes = 0 # setting this 0 will use the system-default, usually 64 MiB
; lock-memory = no
; cpu-limit = no


; high-priority = yes
; nice-level = -11


; realtime-scheduling = yes
; realtime-priority = 5


; exit-idle-time = 20
; scache-idle-time = 20


; dl-search-path = (depends on architecture)


; load-default-script-file = yes
; default-script-file = /etc/pulse/default.pa


; log-target = auto
; log-level = notice
; log-meta = no
; log-time = no
; log-backtrace = 0


; resample-method = speex-float-1
; enable-remixing = yes
; enable-lfe-remixing = no
; lfe-crossover-freq = 0


; flat-volumes = yes


; rlimit-fsize = -1
; rlimit-data = -1
; rlimit-stack = -1
; rlimit-core = -1
; rlimit-as = -1
; rlimit-rss = -1
; rlimit-nproc = -1
; rlimit-nofile = 256
; rlimit-memlock = -1
; rlimit-locks = -1
; rlimit-sigpending = -1
; rlimit-msgqueue = -1
; rlimit-nice = 31
; rlimit-rtprio = 9
; rlimit-rttime = 200000


; default-sample-format = s16le
; default-sample-rate = 44100
; alternate-sample-rate = 48000
; default-sample-channels = 2
; default-channel-map = front-left,front-right


; default-fragments = 4
; default-fragment-size-msec = 25


; enable-deferred-volume = yes
; deferred-volume-safety-margin-usec = 8000
; deferred-volume-extra-delay-usec = 0


:~> cat /etc/pulse/client.conf
# This file is part of PulseAudio.
# ...


; default-sink =
; default-source =
; default-server =
; default-dbus-server =


; autospawn = yes
; daemon-binary = /usr/bin/pulseaudio
; extra-arguments = --log-target=syslog


; cookie-file =


; enable-shm = yes
; shm-size-bytes = 0 # setting this 0 will use the system-default, usually 64 MiB


; auto-connect-localhost = no
; auto-connect-display = no

вроде дефолтные конфиги, ок)

>>Плюс ещё так и не понял в архитектуре, кто куда и за чем играет и кто куда какие потоки пересылает =D

т.к используется пульс (включается/выключается в yast2, к примеру), то:

  1. Приложение умеет пульс:
    приложение->пульсаудио->драйвер альсы -> звуковуха

  2. Приложение не умеет пульс, только альсу:
    приложение->заглушка в альсе заворачивающая поток в пульс->пульсаудио->драйвер альсы -> звуковуха

настройки пульсаудио можно покрутить в программке pavucontrol
ну, и всё таки, какой плэер и как там настроен аудиовыход?

Почитал еще на работе, вопрос интересный! JACK тут не при чем, не нужен - вычеркиваем. Про Пульсу тоже ничего не знаю, у меня ее нет. По идее тут в первую очередь нужен компрессор динамического диапазона, если речь про 5(7).х -> 2.0 Иначе вы пожалеете)) И от взрывов в кино у вас будут вылетать фронтальные динамики)) Полагаю, решается в ~/.asoundrc но сам еще не разобрался как. С моей акустикой 2.0 крайне низкого качества пока не актуально.

Честно, ещё никакого, всё никак не дойду до этого домашнего компа (куча работы). Только “пиу-пиу” из микшера при изменении громкости и проигрывание youtube / VK - Adobe Flash походу. Браузер Mozilla.
На Винде музыку слушаю WinAMP’ом 2.95, соответственно под Линь буду ставить audacious походу. Вот только разобраться бы для начала кто куда играет, чтобы без всяких ресемплингов и регейнов.

Воу-воу-воу! В корне неверный подход. Не нужен мне даунмиксинг апмиксингового 2.0 -> 7.2 -> 2.0, нафига такой огород. Я считаю, система должна видеть в моём случае 6 стереовыходов, а в программе указывать на какой стереовыход проигрывать (так в Винде на этой карте можно сделать). Динамический компрессор-то мне зачем? Тоже не нужно, я слушаю всё в оригинале, если в фильме разговор, то разговор, если стрельба, то стрельба!

Сегодня вечером буду экспериментировать.

Поправка и уточнение. Что-то я давно не садился за домашний комп.
Работают только “пук-пук” при изменении громкости и всё. Выходные каналы: 1, 2, 3, 4, 5, 7, 8. Видимо, конфигурация 5.2.
Проигрываем youtube / VK - на сайте всё как бы проигрывается, но звука нет. Причём в KDE микшере в Applications эти потоки появляются, но пусто…

Установил audacious - та же картина. Поток в микшере виден, но тишина. Настройки звука там сводятся к выбору получателя - ALSA или Pulse. Оба вариант тишина.

Установил pavucontrol. Понял, что просто звук уходил в по умолчальную карту RADEON HD6900… В HDMI короче. Поменял карту на определённом потоке - работает audacious. Но каналов 7.0 (судя по именам каналов) - все 7 играют. Нужно получается ALSE жёстко как-то сказать, что хочу только 2 канала? Плюс надо как-то удалить или выключить звуковуху от HDMI.

HDMI звуковуха легко отключается в pavucontrol, но чё-то я поспешил радоваться. Стабильности как-то нет. Свежезапущенный в пульсу поток играет, играет, играет, а потом бац, и виснет. Аналогично с потоком audacious -> alsa. Когда поток виснет - в программе замораживается воспроизведение. Нужно только нажать стоп, подождать, и опять воспроизводится до следующей заморозки. Максимум играет секунд 20 без обрыва.

Вобщем, пока пришёл к такому:


:/etc> cat pulse/daemon.conf | grep -v ";" | grep -v "#" | grep -v "^$"
enable-remixing = no
enable-lfe-remixing = no
flat-volumes = yes
default-sample-format = s24le
default-sample-rate = 88200
alternate-sample-rate = 96000
default-sample-channels = 2
default-channel-map = front-left,front-right
default-fragments = 2
default-fragment-size-msec = 21

Я чё-то в начале подумал, что “;” это не коммент, а оказалось - коммент.
Оказывается, настраивать надо было Pulse. Хотя может это и не правильно.

Сейчас играют только два канала - 1й и 2й, в нормальном для данной звуковухи формате - 88/96 24-бита. Однако всё равно, после прошествия какого-то времени всё останавливается, поток виснет.
Ну ещё придирка, что в винде у меня было какбы 6 разных стерео звуковух, а тут одна с неопределяемыми выходными каналами. Мне подходит, но хочу чуть глубже разобраться.

Однако статус всё равно показывает не так как хотелось бы… Наверное где-то всё-таки не то…


:~> pactl list | grep "Sink #0" -A 55
Sink #0
        State: RUNNING
        Name: alsa_output.firewire-0x001486035ba774b3.multichannel-output
        Description: AudioFire12 Multichannel
        Driver: module-alsa-card.c
        Sample Specification: s32le 12ch 88200Hz
        Channel Map: front-left,front-right,rear-left,rear-right,front-center,lfe,side-left,side-right,aux0,aux1,aux2,aux3
        Owner Module: 7
        Mute: no
        Volume: front-left: 65536 / 100% / 0,00 dB,   front-right: 65536 / 100% / 0,00 dB,   rear-left: 65536 / 100% / 0,00 dB,   rear-right: 65536 / 100% / 0,00 dB,   front-center: 65536 / 100% / 0,00 dB,   lfe: 65536 / 100% / 0,00 dB,   side-left: 65536 / 100% / 0,00 dB,   side-right: 65536 / 100% / 0,00 dB,   aux0: 65536 / 100% / 0,00 dB,   aux1: 65536 / 100% / 0,00 dB,   aux2: 65536 / 100% / 0,00 dB,   aux3: 65536 / 100% / 0,00 dB
                balance 0,00
        Base Volume: 65536 / 100% / 0,00 dB
        Monitor Source: alsa_output.firewire-0x001486035ba774b3.multichannel-output.monitor
        Latency: 31807 usec, configured 31927 usec
        Flags: HARDWARE DECIBEL_VOLUME LATENCY 
        Properties:
                alsa.resolution_bits = "24"
                device.api = "alsa"
                device.class = "sound"
                alsa.class = "generic"
                alsa.subclass = "generic-mix"
                alsa.name = "AudioFire12 PCM"
                alsa.id = "Fireworks"
                alsa.subdevice = "0"
                alsa.subdevice_name = "subdevice #0"
                alsa.device = "0"
                alsa.card = "1"
                alsa.card_name = "AudioFire12"
                alsa.long_card_name = "Echo Digital Audio AudioFire12 v5.8, GUID 001486035ba774b3 at fw1.0, S400"
                alsa.driver_name = "snd_fireworks"
                device.bus_path = "pci-0000:05:03.0"
                sysfs.path = "/devices/pci0000:00/0000:00:1e.0/0000:05:03.0/fw1/fw1.0/sound/card1"
                udev.id = "firewire-0x001486035ba774b3"
                device.bus = "firewire"
                device.vendor.id = "0014"
                device.vendor.name = "Echo Digital Audio"
                device.product.id = "00af"
                device.product.name = "AudioFire12"
                device.serial = "0x001486035ba774b3"
                device.string = "hw:1"
                device.buffering.buffer_size = "135168"
                device.buffering.fragment_size = "67584"
                device.access_mode = "mmap"
                device.profile.name = "multichannel-output"
                device.profile.description = "Multichannel"
                device.description = "AudioFire12 Multichannel"
                alsa.mixer_name = "AudioFire12"
                module-udev-detect.discovered = "1"
                device.icon_name = "audio-card-firewire"
        Ports:
                multichannel-output: Multichannel Output (priority: 0)
        Active Port: multichannel-output
        Formats:
                pcm

>>Аналогично с потоком audacious -> alsa.

Пульс перед этим выключали? Если нет - то, как я говорил - один фиг пойдёт петлёй через пульсаудио, в pavucontrol появится источник - не плэер, а alsa-sink.

>>Ну ещё придирка, что в винде у меня было какбы 6 разных стерео звуковух, а тут одна с неопределяемыми выходными каналами.

А как входы/выходы выглядят в алса-микшере? Думаю, если продолжать воевать с пульсаудио, то попробуйте переключить профиль

device.profile.name = “multichannel-output”
на
device.profile.name = “analog-stereo”

возможно, придётся самому делать профиль для вашей карты: https://www.freedesktop.org/wiki/Software/PulseAudio/Backends/ALSA/Profiles/

И лирическое. У меня нет firewire карт, но почитав, понял, что ситуация с такими драйверами, как это заведено, - драматическая. Есть alsa https://www.alsa-project.org/main/index.php/ALSA_firewire_stack и ffado http://ffado.org/ , на первый периодически жалуются и вообще, не относятся к нему серьёзно. С другой стороны - с ffado работает только jackd.
Я бы из интереса повозился с ffado и jack, благо все плэеры должны уметь выводить через него звук, если не умеют - то есть alsa-plugins-jack и pulseaudio-module-jack.
Преобразование будет, но от него по-моему вообще никуда не деться при разных источниках воспроизведения.
а ещё у ffado есть прикольный микшер

Ну бред же. Если вы просто перекинете 2 любых канала из например 7.1, то даже не поймете, что это собственно было. Там спектральное и пространственное разделение по частотам, как минимум. Как я понимаю, нужно собирать сигнал обратно на 2 канала. Микшер короче. Вопрос был бы интересен и мне самому, если бы было что смотреть, и оно было бы только в 7.1. Но нынче ничего нет.

joneone, блин, ты не понял.
Задача - не собрать 7.1 в 2.0, а запретить разбивку 2.0 > 7.1.

Нет, забыл. А как его лучше всего выключать?

Это где такой параметр надо прописать? Ни в одном конфиг-файле не нашёл.
Входы-выходы:



Я раньше его использовал, но потом вышла новая прошивка под мою карту, и ffado больше с ней не работает. Об этом написано в его хелпах. А так да, ffado mixer + jack очень крутая тема, но излишняя для моей задачи. ffado + jack - это уже попытка принести в Линь проф. аудио, но пока не очень-то выходит, в винде всё гораздо удобнее. Так что мне достаточно ALS’ы, уж раз она уже хоть как-то работает с моей звуковухой, то надо её добивать.

Преобразование будет, но если задать в /etc/pulse/daemon.conf:
default-sample-rate = 88200
alternate-sample-rate = 96000
то уже я видел как ЦАП звуковой карты переключает sample rate 88-96 в зависимости от файла (это отображается светодиодами на самой карте), проигрываемого в audacious (44-48 -> 88-96, но этот апсемплинг не даёт ухудшения качества, т. к. кратное целому числу ресемплирование). Т. е. я так понял, если воспроизводится один поток, то пульса выбирает нужный sample-rate, и это уже круто - так круто как было в Win XP до появления WASAPI в Win Vista.

Чтож, попробую изучить мануал по ручной настройке Alsa.

Вот только что не понял из своих скриншотов - почему у меня в Alsamixer - Card: Pulseaudio, а не Firewire, мы же тут определились, что ALSA уже выводит поток в железо…

>>А как его лучше всего выключать?

можно в pavucontrol в профиле звуковухи выставить off тогда alsa будет работать с ней напрямую
можно отключить autospawn в конфиге и прибить: pulseaudio -k
можно вообще отключить pulseaudio в yaste-e

>>Это где такой параметр надо прописать? Ни в одном конфиг-файле не нашёл.

pactl set-card-profile alsa_output.firewire-0x001486035ba774b3.multichannel-output output:analog-stereo

но по-моему это фигня, такого профиля в выпадающем списке pavucontrol-a нет, т.к. похоже карта в самой алсе сконфигурированна как multichannel
то есть, либо конфиг алсы переделывать из multichannel в кучку стерео, либо делать профиль карты для pulseaudio (примеры есть в /usr/share/pulseaudio/alsa-mixer/profile-sets/)
либо всё это вместе

>>Я раньше его использовал, но потом вышла новая прошивка под мою карту, и ffado больше с ней не работает.

А пишут, что работает.