Noob’s Guide to Linux Audio: ALSA, OSS, and Pulse Audio Explained
The situation is relatively fine when it comes to mainstream distros like Ubuntu, Debian, or Fedora because their developers have gone to great lengths to make audio work right out of the box, but the same can’t be said about Arch Linux, Gentoo, and other minimalistic distributions that expect users to configure everything from scratch.
This article won’t make you an expert on Linux audio, but it will, hopefully, explain the basic technologies responsible for making sound come out of your speakers when you open a video on YouTube or play a game on Steam.
Advanced Linux Sound Architecture (ALSA)
Let’s start with the most important layer of the Linux audio, ALSA. Created in 1998 by Czech software developer Jaroslav Kysela, ALSA is responsible for giving a voice to all modern Linux distributions. It’s actually part of the Linux kernel itself, providing audio functionality to the rest of the system via an application programming interface (API) for sound card device drivers.
The original design of ALSA was largely inspired by the Linux device driver for the Gravis Ultrasound sound card, which was made by Canada-based Advanced Gravis Computer Technology and became very popular in the demo scene during the 1990s.
ALSA support for all types of audio interfaces thanks to fully modularized sound drivers, can manage up to eight audio devices at the same time, access hardware MIDI functionality, perform hardware mixing of multiple channels, and more.
Users typically interact with ALSA using alsamixer, a graphical mixer program that can be used to configure sound settings and adjust the volume of individual channels. Alsamixer runs in the terminal, and you can invoke it just by typing its name. One particularly useful keyboard command is activated by hitting the M key. This command toggles channel muting, and it’s a fairly common fix to many questions posted on Linux discussion boards.
Open Sound System (OSS)
The official website of ALSA mentions support for Open Sound System, or OSS for short. Until Linux 2.5, OSS was actually the main and only sound system for Linux. ALSA was designed to overcome its various shortcomings, such as the fact that it didn’t allow more than one application to access the hardware at a time. In Linux 2.6 ALSA replaced OSS as the default sound system.
When the developers of OSS announced that OSS version would have a proprietary license, a decision was quickly made by Linux developers to replace it with ALSA. It’s worth noting that OSS became free software again with the release of the version 4 in 2007. Today, OSS is distributed under four different licenses (BSD, CDDL, GPL, Proprietary).
Most Linux distributions these days don’t even bother activating the OSS emulation layer present in ALSA because almost nobody needs it anymore, making OSS a relic of the past.
PulseAudio
If you don’t remember the last time you interacted with ALSA when changing your audio settings, that’s probably because the user-facing layer of the Linux audio system in most modern distributions is called PulseAudio.
PulseAudio was initially released in 2004, and it’s now included and enabled by default in Ubuntu, Linux Mint, openSUSE, and other major distributions. The job of PulseAudio is to pass sound data between your applications and your hardware, directing sounds coming from ALSA to various output destinations, such as your computer speakers or headphones. That’s why it’s commonly referred to as a sound server.
At first glance, it might seem that PulseAudio doesn’t really add anything critically important to Linux audio, and many of its critics share the same opinion. In reality, there are actually many things that would be impossible or difficult to accomplish without it, including mixing several sounds into one, transferring audio to a different machine, or changing the sample format or channel count.
PulseAudio also brings cross-platform compatibility (FreeBSD, NetBSD, OpenBSD, Linux, Illumos, Solaris, macOS, and, in a limited fashion, Microsoft Windows). If you want to control PulseAudio directly, instead of interacting with it through a volume control widget or panel of some sorts, you can install PulseAudio Volume Control (called pavucontrol in most package repositories).
If you feel that you have no use for the features provided by PulseAudio, you can either use pure ALSA or replace it with a different sound server.
PulseAudio vs. JACK
PulseAudio isn’t the only sound server for Linux. There’s also JACK, which is a recursive acronym for JACK Audio Connection Kit. Whereas PulseAudio was developed with the needs of general Linux users in mind, JACK is intended for DJs and audio professionals, providing real-time, low-latency connections for both audio and MIDI data.
Because JACK lets you connect the audio inputs and outputs of each and everyone one of your applications together, you can do some pretty cool things with it, such as monitoring your own voice, adding effects to it in real-time, and more. In fact, the name of this sound system was inspired by the cables used in real recording studios to build intricate connections between instruments, synthesizers, MIDI controllers, and multitrackers.
Arguably the biggest downside of JACK is that it usually either works perfectly or horribly, owning to the fact that its chief goal is to provide low-latency audio. It also requires considerably more CPU power compared with PulseAudio, which is why you’ll find it mostly on professional workstations dedicated to audio editing.
Checking Pulse Audio and ALSA
You may be wondering, how do I tell which audio software my computer is using? To check if both Pulse Audio and ALSA are present on your system, use the following two commands:
Checking for PulseAudio:
Checking for ALSA:
Conclusion
Audio on Linux seems complicated because it really is. Untangling the web of legacy technologies and layers of abstraction can be a real challenge even for seasoned Linux users who know the ins and outs of the operating system by heart. Hopefully, our article helped you better understand the most important components of the Linux audio system, including ALSA, OSS, and PulseAudio.
About the author
David Morelo
David Morelo is a professional content writer in the technology niche, covering everything from consumer products to emerging technologies and their cross-industry application
Источник
Шаг 8: Звук
Есть множество путей настроить вывод звука. Я выделю три: ALSA, OSS и PulseAudio.
Я опишу эти технологии, но рекомендую на первое время оставить ALSA. Этот материал будет полезен если определенное приложение потребует OSS или PulseAudio.
ALSA — Advanced Linux Sound Architecture. Данный звуковой интерфейс в Ubuntu 7.10 установлен и настроен, так что проблем с его использованием нет.
Этот интерфейс стандартный и рекомендуемый для Ubuntu, поэтому на первое время его можно оставить.
OSS — Open Sound System. Один из стандартных интерфейсов воспроизведения и захвата звука в Linux.
Этот интерфейс устаревший, ему на смену пришел ALSA. Ставить его следует лишь для совместимости со старым софтом.
1. Убедимся что стоят пакеты: build-essential, gcc, make, binutils, libssl-dev, linux-headers-`uname -r`.
sudo apt-get install build-essential gcc make binutils libssl-dev linux-headers-`uname -r`
2. Выбираем, качаем и устанавливаем пакет (обычно x86 (DEB)) по ссылке www.4front-tech.com/download.cgi
При этом в процессе установки инсталлятор может сказать что-то вроде:
ERROR: Module snd_pcm is in use by snd_ice1724,snd_intel8x0,snd_ac97_codec,snd_ak4114
ERROR: Module snd_pt2258 is in use by snd_ice1724
ERROR: Module snd_i2c is in use by snd_ice1724,snd_pt2258
ERROR: Module snd_ak4xxx_adda is in use by snd_ice1724,snd_ice17xx_ak4xxx
ERROR: Module snd_mpu401_uart is in use by snd_ice1724
ERROR: Module snd_rawmidi is in use by snd_mpu401_uart
ERROR: Module snd_timer is in use by snd_pcm
ERROR: Module snd_seq_device is in use by snd_rawmidi
ERROR: Module snd_page_alloc is in use by snd_intel8x0,snd_pcm
Failed to disable conflicting sound drivers
Reboot and try running soundon again
Also check that you have not compiled sound support statically
into the kernel.
4. Спокойно перезагружаемся и идём в BIOS — очень желательно отключить встроенный звуковой кодек — так как может возникнуть следующая проблема:
— Detected M Audio Revolution 5.1
Detected Nvidia nForce2
Detected Generic USB audio device (BETA)
Detected OSS Transparent Virtual Mixing Architecture
— Starting Open Sound System
ERROR: Module snd_intel8x0 is in use
ERROR: Module snd_ac97_codec is in use by snd_intel8x0
ERROR: Module snd_pcm is in use by snd_intel8x0,snd_ac97_codec
ERROR: Module snd_timer is in use by snd_pcm
ERROR: Module snd_page_alloc is in use by snd_intel8x0,snd_pcm
5. После перезагрузки выполняем в терминале:
Вывод будет похож на:
OSS 4.0 (b1009/200711130545) © 4Front Technologies 1996-2007
This OSS version will expire after: May 2008
Audio devices:
0: M Audio Revolution 5.1 front out (OUTPUT)
1: M Audio Revolution 5.1 c/l out (OUTPUT)
2: M Audio Revolution 5.1 surround out (OUTPUT)
3: M Audio Revolution 5.1 digital out (OUTPUT)
4: M Audio Revolution 5.1 analog in (INPUT)
Mixers:
0: M Audio Revolution 5.1
6. Проверим работу
Откроем файл /usr/lib/oss/lib/flashsupport.c с правами администратора, закомментируем двумя слэшами (//) строку «#define OPENSSL» и сохраним.
Идем в папку /usr/lib/oss/lib
cd /usr/lib/oss/lib
Компилируем
sudo cc -shared -m32 -O2 -Wall -Werror -lssl flashsupport.c -o /tmp/libflashsupport.so
Инсталлируем
sudo install -s /tmp/libflashsupport.so /usr/lib/
И можем создать ссылку для Firefox
sudo ln -s /usr/lib/libflashsupport.so /usr/lib/firefox/plugins
Здесь была рассмотрена установка retail-версии. Она бесплатна, но требует обновления раз в полгода командой:
PulseAudio
PulseAudio это не просто интерфейс вывода звука. Это целый сервер звука. С его помощью звук можно передавать по каналам связи и воспроизводить на удаленных машинах.
Этот интерфейс очень перспективный. Некоторое современное ПО уже требует его.
Ставится он легко:
1. Устанавливаем необходимые пакеты:
sudo apt-get install «pulseaudio-*» paman padevchooser paprefs
2. Чтобы звук работал в flash, надо скачать и поставить пакет www.paulbetts.org/projects/libflashsupport_1.0
3. Редактируем файл настроек ALSA (sudo gedit /etc/asound.conf), пишем туда:
ctl.pulse <
type pulse
>
pcm.!default <
type pulse
>
ctl.!default <
type pulse
>
4. Открываем Система→Настройки→Звук и на вкладке «Звуки» включаем опцию «Включить програмное смешивание звука (ESD)».
5. Добавляем всех пользователей в группу pulse-access. Открываем Система→Администрирование→Пользователи и группы, Управление группами и выбираем группу pulse-access, куда добавляем всех пользователей, которые будут использовать аудиосервер.
6. Запускаем PulseAudio
Чтобы быть в курсе моих статей, можно подписаться на RSS-канал.
Источник
PulseAudio vs ALSA
Некоторые создают такие топики, типа что лучше.
А там не может быть «VS», ибо это вещи разных уровней. PulseAudio — это аудиосервер с шлюхами и блеком-джеком, а ALSA — это стопка драйверов со скромным интерфейсом. PulseAudio в любом случае юзает ALSA, либо OSS для вывода звука, но в 99% случаев ALSA, т.к. второе устарело.
Поэтому холивар должен идти не на тему «VS», а на тему «хочу я сам переключать все приложения на наушники, когда я их втыкаю, или мне нужен PulseAudio, который это будет делать сам».
хочу я сам переключать все приложения на наушники, когда я их втыкаю, или мне нужен PulseAudio
Толсто. У меня нет пульсы, но при включении наушников звук из динамиков пропадает. ЧЯДНТ?
Некоторые создают трэды типа вот этого даже чаще.
А там не может быть «VS», ибо это вещи разных уровней.
ALSA — это стопка драйверов со скромным интерфейсом.
И с интерфейсом плагинов, что очень важно.
Поэтому холивар должен идти не на тему «VS», а на тему «хочу я сам переключать все приложения на наушники, когда я их втыкаю, или мне нужен PulseAudio, который это будет делать сам».
У меня такое делалось и без PulseAudio, кстати. И вопрос скорее лежит в плоскости: «а надо ли это всё, если всё. что надо, работает и через чистую ALSA?».
Толсто. У меня нет пульсы, но при включении наушников звук из динамиков пропадает. ЧЯДНТ?
А теперь подключите наушники через отдельный ЦАП.
И вопрос скорее лежит в плоскости: «а надо ли это всё, если всё. что надо, работает и через чистую ALSA?».
Если вопрос лежит в такой плоскости, то он именно лежит, а не стоит. Встаёт он когда условие перестаёт выполняться, и таких юзкейсов не так мало, как может показаться.
У меня в пульсе крайне неадекватно работает (на всех дистрибутивах) настройка громкости что звуковой карты (любой, а их было не мало, хотя и все бюджетные), что конкретного приложения (любого).
У меня пришлось отрубить пульсу, из за него звука в тв тюнере не было.
А теперь давайте подключим наушники через оптический интерфейс, инкапсульнём их в поток, обогнём земной шар и подключим к пульсе.
А теперь давайте подключим наушники через оптический интерфейс, инкапсульнём их в поток, обогнём земной шар и подключим к пульсе.
Что ты делаешь, прекрати, человек-анектод.
То есть я что-то настраивать должен и лесть руками в конфиги? Зачем всё это когда алса просто работает?
То есть я что-то настраивать должен и лесть руками в конфиги? Зачем всё это
Потому что Лённарт мудак. Как это говно (flat-volumes) работает и зачем его включать по дефолту, одному ему известно. И то я не уверен.
Я выше уже писал. Когда она просто работает и всем устраивает, пульс не нужен.
Что за извращение? «ls vs bash»
Любопытно, зачем пульса вообще нужна помимо пары специфичных фич как проброс звука в сети? По мне городить отдельный несовместимый звуковой сервер ради этого кажется несколько бессмысленным и расточительным.
Ну хватит уже такое говорить. OSS не устарел, просто алса заняла его нишу и её не видят смысла менять обратно.
Регулировка звука отдельных приложений, работа многоканального звука на любой конфигурации из коробки.
Любопытно, зачем пульса вообще нужна помимо пары специфичных фич как проброс звука в сети?
С практически любым сетапом, в котором больше одного синка, альса работает ущербно. А таких дофига, включая, например, USB-гарнитуры.
Регулировка звука отдельных приложений и так работает (alsa + kmix), из коробки у меня только алса и работает, пульса вообще имеет 2 режима громкости на некоторых картах (тихо и очень громко). Не верю я сказкам про её работоспособность везде и всюду.
usb наушники (7.1, ныне давно покойные) — отлично, usb камера — отлично, usb выделенная звуковая карта — без нареканий. При этом во всех устройствах серьёзные проблемы у пульсы.
Регулировка звука отдельных приложений и так работает (alsa + kmix)
Скриншот в студию.
Ну хз, может это мой личный опыт. А вот про регулировку звука в приложениях чисто алсой не слышал, видимо новая фича.
usb наушники (ныне давно покойные) — отлично, usb камера — отлично, usb выделенная звуковая карта — без нареканий.
Да, лол, особенно когда в скайп уже звонят, а гарнитура ещё не подключена. Или когда смотрел кино со звуком через колонки, и захотел продолжить в наушниках, подключенных к другому ЦАПу.
При этом во всех устройствах серьёзные проблемы у пульсы.
Либо вы эпичный лузер, либо фантазёр, либо у вас руки совсем не из плеч растут. Бажное говножелезо, конечно, бывает, но поди такое найди сейчас. Я ни разу не видел.
Это у вас через MPRIS работает. Который поддерживается двумя с половиной приложениями.
//Ну и вырвиглазный п-ц же у вас. Без обид.
Консоль прозрачна только в скриншоте, а остальное точилось очень долго. Цветовая схема идеальна для дня и ночи (небольшое смещение тёмно-серого к красному спектру делает цвета мягче, нежели серые или тёмно-синие темы), для работы с графикой и кодом. Расположение панелей и виджетов прошло долгий тернистый путь оптимизаций под мои руки и быстрого равноценного управления мышью и клавиатурой. Сколько не пытался менять — всё не то и всё не так.
Да не, главное, чтобы вам нравилось. Но мне на скриншот в прямом смысле больно смотреть.
Несмотря на то как некрасиво он может выглядеть, с этими цветами не разу не было замечено усталости глаз или резкости контраста. В общем нравится-не нравится самому, а поделать ничего не могу, ибо с точки зрения юзабилити оно многократно перебивает все эстетические преимущества.
Одна из проблем, по которым считаю ff и новый хром нелицеприятными — с тёмными темами у них крайне печальные взаимоотношения.
А что плохого в умеренном контрасте? Мне без него очень некомфортно, глаза устают из-за отсутствия визуальных якорей.
Откуда вы лезете, ядрён-бантон?!
Зачем всё это когда алса просто работает?
А не вы ли создали три темы (1), (2), (3) о проблемах с alsa?
Причём, последнее ваше сообщение в одной из тем, просто красноречивей некуда!
Для меня хватает, края экрана все заняты более яркими элементами со значками (вкладки, панели инструментов), а окна по-умолчанию развёрнуты на весь экран (с убранными рамками; за исключением диалоговых и настроек, которые не требуют постоянного присутствия), одно приложение на один рабочий стол, таким образом отличительные элементы окон и визуальные якоря стали совершенно не нужны, ибо однотипные элементы управления на одних и тех же местах везде. Более того — оно избавляет необходимость «прицеливания» мышью: переключение вкладок в браузере происходит при перемещении курсора в самый верх (опускание их на строку жутко раздражает — приходится сознательно тормозить курсор в нужном положении (что теряет часть секунды и добавляет необходимость следить за позицией)), так же как и панели инструментов — тоже «до упора» вверх, с панелью плазмы та же тема — переключение раб. столов — крайний правый нижний угол и колёсико для перелистывания, так же как и список окон, а меню на крайний верхний правый угол — разворачивается приборная доска в полный рост.
В общем торжество лени и оптимизации.
Противоречив, да, признаю, по крайней мере за последние 2 года проблемы поменялись местами.
Причём, последнее ваше сообщение в одной из тем, просто красноречивей некуда!
На дату посмотреть не судьба? Почти четыре года этому линку.
И? Тогда оно работало, а теперь не работает? Человек годами героически удолял пульсу и боролся с алзой. Но пульса теперь плохая, а у алзы проблем нет и не бывает. Ага, ага.
Тогда оно работало, а теперь не работает?
Вот именно так он и написал. Вас удивляет, что пульса говно?
Человек годами героически удолял пульсу и боролся с алзой. Но пульса теперь плохая, а у алзы проблем нет и не бывает. Ага, ага.
Альса улучшалась, пульса ухудшалась. Что тут удивительного?
Вас не удивляет, что пульса работает через альсу, что она является лишней кривой прослойкой?
Если руки из жопы, много чего интересного можно натворить. Вот я вчера минут пять ломал голову, с какого хрена у меня не работает вебка, пока не вспомнил, что не поставил галочку на uvcvideo. Перекомпилял ведерко с нужными модулями — вуаля!
Подозреваю, что и lm_sensors у меня не работают из-за подобного же рукожопия. Но мне влом искать, что надо включить в .config, чтобы сенсоры появились. И без них неплохо.
Альса улучшалась, пульса ухудшалась.
Бред сивой кобылы. ALSA уже давно стагнирует и серьёзных улучшений в ней сто лет не было. Пульса же только года полтора-два назад хоть как-то приемлемо работать начала, там прогресс очевиден.
Вас не удивляет, что пульса работает через альсу, что она является лишней кривой прослойкой?
Вас не смущает, что две части этого предложения между собой логически не связаны?
Источник