Как устроена звуковая система в Linux?

pomodor аватар
Не в сети
Регистрация: 4 Мар 2008

Есть ли на сайте спецы, которые расскажут как устроена звуковая система в Linux? Как устроена в Windows 7 примерно представляю — потрясающе убого. Единственная возможность получить качественный звук — попросить Windows вообще не прикасаться к аудиоданным (режим WASAPI Exclusive) и выводить их напрямую.

Звуком в Linux тоже не очень доволен. Подозреваю, что это из-за микшеров, ресемплеров и прочих эффектов. Вопрос: как в Линуксе отказаться от множества промежуточных программных уровней?

И раз уж зашла речь о качественном звуке, кто чем проигрывает FLAC в Linux?

Ваша оценка: Нет Средняя оценка: 5 (2 votes)
Леголас

Как устроена в Windows 7 примерно представляю — потрясающе убого. Единственная возможность получить качественный звук — попросить Windows вообще не прикасаться к аудиоданным (режим WASAPI Exclusive) и выводить их напрямую.

И что там "убого"? WASAPI - это стандартный API в Windows, который может использоваться любым софтом. В Linux со звуком вообще беда - введите в поисковик Linux Audio Mess и посмотрите картинки.
Будет интересно почитать, как можно вывести побитовый звук в Linux. До недавнего времени без специальных патчей для ядра это вообще была нереальная задача. Как с этим обстоит дело сейчас?

Ваша оценка: Нет Средняя оценка: 2.6 (5 votes)
pomodor аватар
Не в сети
Регистрация: 4 Мар 2008

Так жеж WASAPI Exclusive — это когда звук выводится в обход звуковой системы Windows. Это ж как нужно постараться, чтобы написать такую звуковую подсистему, которую лучше сразу отключить, чтобы получить качественный звук? ;)

Что касается Линукса, то его за звук хвалят. Например, за такие минимальные задержки, что даже никаких ASIO не требуется:

ALSA — программный микшер, который эмулирует совместимость для других слоев. Также предоставляет API для программистов и работает с такой низкой и стабильной задержкой, что способна конкурировать с ASIO из Windows и CoreAudio из Mac OS X.

К сожалению, когда дело доходит до практики звук получается малость говнистым. Надеюсь специалисты пояснят какие программные обработчики можно смело выпилить, чтобы искажений было меньше.

как можно вывести побитовый звук в Linux. До недавнего времени без специальных патчей для ядра это вообще была нереальная задача.

Да ладно. Уже сто лет как можно просто взять файл в PCM в нужными характеристиками и засунуть его в /dev/девайс.

Ваша оценка: Нет Средняя оценка: 3.3 (3 votes)
Леголас

Так жеж WASAPI Exclusive — это когда звук выводится в обход звуковой системы Windows. Это ж как нужно постараться, чтобы написать такую звуковую подсистему, которую лучше сразу отключить, чтобы получить качественный звук? ;)

WASAPI - это и есть часть звуковой подсистемы Windows (Windows Audio Session Application Programming Interface). Звук можно пустить в обход виндовых софтверных обработчиков, которые не так уж и плохи, на самом деле. Проблемы со звуком могут быть у тех старых приложений, которые использовали DirectSound, но на то они и старые. У нового софта проблем со звуком в Windows нет никаких.

К сожалению, когда дело доходит до практики звук получается малость говнистым.

Ясное дело. Ядро+ASIO+PulseAudio вообще ужас.

Уже сто лет как можно просто взять файл в PCM в нужными характеристиками и засунуть его в /dev/девайс

Ваша оценка: Нет Средняя оценка: 5 (1 vote)
Леголас

Да ладно. Уже сто лет как можно просто взять файл в PCM в нужными характеристиками и засунуть его в /dev/девайс.

...и он волшебным образом воспроизведётся в обход звуковых серверов? :))

Ваша оценка: Нет
pomodor аватар
Не в сети
Регистрация: 4 Мар 2008

Ядро+ASIO+PulseAudio вообще ужас

Ну Вы сказанули. Никакого ASIO в Линуксе нет, ибо не нужен:

Сфера применения данного аудиоинтерфейса, как правило, ограничивается Microsoft Windows, так как в других операционных системах (например, в Mac OS X или Linux) отсутствуют подобные проблемы с задержками и микшированием

Ваша оценка: Нет Средняя оценка: 5 (1 vote)
pomodor аватар
Не в сети
Регистрация: 4 Мар 2008

И что же здесь волшебного? Даже просто логически рассуждая это становится очевидным. После обработки звука в ALSA его же нужно передать ядру для отсылки в железо.

Ваша оценка: Нет Средняя оценка: 5 (1 vote)
Леголас

После обработки звука в ALSA его же нужно передать ядру для отсылки в железо.

И микшер ALSA даст побитовый вывод? :)

Ваша оценка: Нет
Леголас

Ну Вы сказанули. Никакого ASIO в Линуксе нет

Виноват, опечатался. Не ASIO, конечно же, а ядро+ALSA+PulseAudio.
А ALSA нужен хотя бы потому, что может организовать побитовый вывод с низкими задержками. Как и WASAPI, впрочем.

Ваша оценка: Нет Средняя оценка: 1 (1 vote)
pomodor аватар
Не в сети
Регистрация: 4 Мар 2008

Причем здесь микшер? Я говорю о том, что если ALSA передает куда-то звук после обработки, следовательно туда можно передать звук сразу, без обработки через ALSA. Не удивлюсь, если это просто какое-нибудь устройство в /dev. Надеюсь, специалисты подскажут, а я всего лишь вывел теоретическую возможность существования подобных вещей.

Ваша оценка: Нет
Леголас

Я говорю о том, что если ALSA передает куда-то звук после обработки, следовательно туда можно передать звук сразу, без обработки через ALSA.

Так в том и вопрос, как это сделать без микширования и ресэмплинга? Т.е. передать звук не после обработки, а без обработки? В Windows это можно сделать через WASAPI или ASIO. Интересно, как это сделать в Linux?

Ваша оценка: Нет Средняя оценка: 3.7 (3 votes)
Леголас

Не удивлюсь, если это просто какое-нибудь устройство в /dev.

Так и есть. Только это не одно устройство, а несколько.
Есть /dev/audio и /dev/dsp. Они передают битовый поток в ALSA, которая уже перенаправляет этот поток в нужное устройство (на одно или на несколько сразу), которые расположены в каталоге /dev/snd. А вон там уже лежат псевдофайлы, записывая в которые направляешь поток байт прямо на связанное с этим псевдофайлом устройство.

Ваша оценка: Нет Средняя оценка: 4 (1 vote)
Леголас

Так в том и вопрос, как это сделать без микширования и ресэмплинга?

В самой ALSA? Проще простого:
Для прямого доступа без микширования подаёте звук на нужное устройство (там front, rear, side), т.е. на любой другой кроме default. Хотя современные программные микшеры хоть в ALSA, хоть в PulseAudio очень хороши (в отличии от ...) и смысла их отключать я не вижу.
Отключение передискритизации осуществляется добавление префикса "plug:" перед именем устройства.
Причём это можно делать для каждого приложения отдельно.

Ваша оценка: Нет Средняя оценка: 4 (1 vote)
Леголас

Для прямого доступа без микширования подаёте звук на нужное устройство (там front, rear, side), т.е. на любой другой кроме default.

Поподробнее, пжлста! Устройство - это звуковая карта с цифро-аналоговым преобразователем. Что такое "front, rear,side"??? Вопрос простой - как подать цифру напрямую на ЦАП карты, например, звук 24/96, чтобы он так и пришёл на ЦАП в 24/96 без ресемплинга, микширования и т.п.?

Ваша оценка: Нет Средняя оценка: 3 (2 votes)
Леголас

Устройство - это звуковая карта с цифро-аналоговым преобразователем. Что такое "front, rear,side"???

Видели на звуковой карте разъёмы для передних, задних и т.п. колонок? Вот это они и есть.

Вопрос простой - как подать цифру напрямую на ЦАП карты, например, звук 24/96, чтобы он так и пришёл на ЦАП в 24/96 без ресемплинга, микширования и т.п.?

aplay --device=front --channels=1 --format=U24_3LE --rate=96 --disable-resample --disable-softvol my.superb.sound

Т.к. вы не указали, я на свой вкус выбрал беззнаковость и остроконечность.

Ваша оценка: Нет Средняя оценка: 4.2 (5 votes)
Леголас

Через ALSA звук хуже, чем через ASIO в W. и это касается дискретных аудиокарт, комбайнов. Пульсаудио вообще не стоит принимать всерьез.
Товарищ pomidorium прав, звук гавнистый. Не надо иметь музыкальные уши или же быть аудиофилом. Звук плоский и пластиковый. Все кто утверждают обратное, просто не имеют аппаратуры и аудиокарт по стоимости более 5 тыс. На гениусах за 500 рублей разницы не услышит никто и пойдет доказывать, что вывод звука не хуже и даже превосходит качество в популярной ОС.

Видели на звуковой карте разъёмы для передних, задних и т.п. колонок
"front, rear,side"

Как раз вот такое присутствует только на встройках и дешевых карточках, а также гениусах, к звуку эти устройства не относится, скорее ближе к интерьеру или же мебели для домашних животных.
Проблема есть и все чаще встречаются на форумах подобные рассуждения, решений никаких нет. Только ответы, что якобы все враки, звук великолепен и на этом завершается ветка.

А вот уже использование в качестве транспорта, по мнениям большинства владельцев дискретных решений, аля полноценный ЦАП с внешним питанием, транспорт цифры в Линупс, ничем не уступает цифре в W. Но это уже более дорогое решение от 40 тыс. и из другой оперы...

Ваша оценка: Нет Средняя оценка: 3.3 (7 votes)
Леголас

Увеличить детальность в Linux можно отрубив из автозагрузки или удалив Pulseaudio и в /usr/share/alsa/alsa.conf изменить значение defaults.pcm.minperiodtime на 0, defaults.pcm.rate_converter на "samplerate_best" и слушайте музыку через hw в настройках плеера или впишите использование hw в .asoundrc.

Ваша оценка: Нет
Отправить комментарий
КАПЧА
Вы человек? Подсказка: зарегистрируйтесь, чтобы этот вопрос больше никогда не возникал. Кстати, анонимные ссылки запрещены.
CAPTCHA на основе изображений
Enter the characters shown in the image.