Найти тему
Электро Манго

Как настроить звук в Linux, чтобы он был не хуже, чем в Windows

Многие юзеры после перехода с Windows на Linux, или просто установки последнего в качестве дополнительной системы (мультибут), отмечают резко ухудшившееся качество звука. В связи с этим даже бытует мнение, что "пингвин" никогда не сравняется с "окнами" в плане звучания. Однако, даже немного разобравшись в том, как функционирует аудио-подсистема в Linux, можно добиться существенно большего комфорта при прослушивании своих любимых музыкальных композиций.

Для тех, кто не в курсе - в Linux одновременно запущены и работают сразу две аудио-подсистемы. Одна из них - Alsa - более низкоуровневая и выступает на сегодняшний день больше в роли драйвера, а вторая - это PulseAudio, наоборот акцентированная на всяческие микшеры и высокоуровневые подстройки звучания. Наиболее важно правильно настроить именно PulseAudio, но начинать следует с Alsa.

Если в системе установлен пакет Alsa Utils, можно использовать команду

alsamixer

для просмотра в терминале используемых системой аудиокарт. Переключение между ними осуществляется клавишей F6. Обычно аудиокарта с индексом 0 выбрана по умолчанию, и звук выводится на PulseAudio через нее, но так бывает не всегда. Распознать дефолтное устройство в данном случае можно по наличию множества слайдеров (Master, PCM, Front и так далее). Переключаться между ними легко при помощи стрелок влево и вправо, тогда как уровень громкости изменяется стрелками вверх и вниз. Здесь нужно выставить все громкости (кроме заканчивающихся словом "Boost") на 100%, обеспечив тем самым передачу звука без урезания громкости на PulseAudio.

Alsamixer в терминале
Alsamixer в терминале

Не факт, что уровни громкости останутся максимальными после перезагрузки. Стоит это проверить, и если все-таки нет, тогда достаточно поместить в автозапуск (реализация зависит от дистрибутива) команды:

amixer -c 0 set 'Master',0 100%
amixer -c 0 set 'PCM',0 100%

или скрипт их содержащий ("0" здесь означает индекс аудиокарты, а "100%" - уровень громкости на соответствующем канале).

Дальше начинается самое интересное. Вся соль различия в звучании между Linux и Windows состоит в том, что в первом случае (как всегда) нужно все делать собственными руками. Так свежеустановленная ОС от Microsoft сама определит и установит оптимальные настройки для основных параметров - частоты дискретизации и диапазона. Поэтому и выходит так, что пользователи сравнивают 24-битный звук с частотой 48000 кГц и стандартные 16 бит с 44100 кГц. А чтобы и в выбранном Linux-дистрибутиве было так же, следует открыть в текстовом редакторе с правами суперпользователя файл

/etc/pulse/daemon.conf

и добавить туда две строчки:

default-sample-format = s32le
default-sample-rate = 48000

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

; flat-volumes = no

Если она вместо "no" содержит "yes", лучше раскомментировать ее (убрать точку с запятой в начале) и заменить "yes" на "no". Так почти предотвращается ситуация со слишком интенсивным снижением звука за счет программной связи между каналами Alsa и PulseAudio - регулировка громкости на канале Master в одной подсистеме пропорционально изменяет данный показатель на том же канале в другой. "Предотвращается почти", по скольку связаны и другие каналы и, чтобы отвязать и их, нужно редактировать файл

/usr/share/pulseaudio/alsa-mixer/paths/analog-output.conf.common

Начиная с середины этого конфига, вслед за закомментированным содержимым, идут рабочие параметры типа "[Element PCM]...". Каждый из них нужно заменить соответственно на:

[Element Master]
switch = mute
volume = ignore
[Element PCM]
switch = mute
volume = ignore
override-map.1 = all
override-map.2 = all-left,all-right
[Element Front]
switch = mute
volume = ignore
[Element Surround]
switch = mute
volume = ignore
[Element Center]
switch = mute
volume = ignore
[Element LFE]
switch = mute
volume = ignore
[Element Side]
switch = mute
volume = ignore

После этого все каналы в подсистемах будут регулироваться строго по отдельности, а, значит, при постоянстве уровней в Alsa (ранее установленных на 100%), все управление громкостью теперь всецело ложится на PulseAudio. То есть, получаем примерно как в "окнах": через значок громкости на панели легко и просто повышаем/снижаем уровень, звука, который по качеству уже "оконному" не уступает. При необходимости настроить микшер для отдельной программы (то, что в Windows делается через значок в трэе путем ПКМ -> Открыть микшер), можно найти в настройках Gnome, Xfce и т. д. Регулятор громкости PulseAudio либо запустить его в терминале командой

pavucontrol
Регулятор громкости PulseAudio
Регулятор громкости PulseAudio

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

После манипуляций, результатом которых стала идентичность диапазона и частоты звука в разных ОС, мало вероятно, что качество звучания в них будет существенно отличаться. При этом радует факт, что сочетание Alsa-PulseAudio уже давно является стандартом для Linux, и предложенная техника одинаково хорошо работает во множестве дистрибутивов.