Хочу поделиться своим опытом построения качественного выхода звука на Linux. Сразу предупреждаю, что на истину в последней инстанции не претендую и каким то знатоком Linux себя не считаю, так что если у кого то есть замечания или дополнения, милости просим!
Почему именно Linux? Windows может и удобнее, но он больше заточен на совместимость, чем на качество звука. При всех моих мытарствах с настройкой вывода звука Foobar 2000 через Wasapi Exclusive, Kernel Streaming и даже OpenAL (ASIO моя карточка не поддерживает), я так и не смог добиться хорошего звука. Слышу «цифрит» и всё. Единственное просветление - утилита Minority Clean, с ней из звука пропадает изрядная доля этого «цифрита», но всё равно Windows для меня уже пройденный этап и возвращаться я на него для прослушивания музыки не планирую.
Схема моего подключения:
ПК - Цифровая звуковая карта - Коаксиальный Spdif выход - ЦАП
При другой конфигурации вывода звука (например по USB) у вас могут получиться и другие результаты, но у меня добиться приемлемого качества на Windows не получилось. Возможно вина кривых драйверов моей звуковой карты.
Как то на одном сайте посвященном аудио я прочитал статью, про то, что Linux в плане качества звука выигрывает у Windows. Ну что же надо это проверить… Скачал несколько дистрибутивов для новичков и начал тестировать. Названий уже не помню, но некоторые были очень кривые… Перебрав несколько штук, остановился на Ubuntu Studio, вроде как специализированный дистрибутив для работы с медиафайлами, имеется low-latency ядром, да и багов поначалу не наблюдалось. Качество звука заметно было лучше Windows, имелась куча софта и документации. В качестве плеера использовался Audacious, звук выводился напрямую на ALSA. Никакого «цифрита», звук живой!
По качеству звука ALSA очень хороша, но она использует монопольный режим, т.е. одновременно проигрывается только один сигнал. Можно выводить звук и через Pulseaudio, но тогда будет работать передискретизация. Но Linux, не был бы Linux’ом если бы нельзя было бы что-то настроить.
Выполняем комманду в консоли:
sudo nano /etc/pulse/daemon.conf
В консоли откроется текстовый редактор nano, ищем там строчку:
; resample-method = speex-float-1
В данной строке указан метод передискретизации, но он отключен (закоментирован). Можно поменять цифру 1 на более высокое значение, тем самым получить более качественный ресемплер, но зачем? Можно вообще отключить передискретизацию и всегда выводить звук на частоте исходного файла, главное, чтобы оборудование эту частоту поддерживало! (Даже если не поддерживает можно легко включить ресемплер в плеере).
Делаем так:
resample-method = copy
и не забываем раскомментировать, т.е. убрать ; в начале.
Сохраняем изменения Ctrl+X, подтверждаем, и перезапускаем Pulseaudio коммандой:
pulseaudio --kill && pulseaudio --start
Всё, теперь даже звук с Youtube улучшился! На Windows подобное поддерживается лишь в драйверах некоторых дорогих звуковых карт!
В принципе меня всё устраивало, но я купил новый жесткий диск, руки зачесались и решил поставить на него новую сборку Linux. Сначала попытался установить Audiophile Linux v4.0, http://www.ap-linux.com/ но так и не смог. Установка через коммандную строку для новичка это тот еще садомазохизм! Дошел до установки загрузчика, но он не хотел устанавливаться и всё тут!
Погуглив нашел сборку Ctlos, так же как и AP Linux основанную на Arch. Почему именно эта сборка? Она сделана именно для новичков, имеет графический инсталлятор и полностью настроена, а после установки получим именно сам Arch со всеми его плюшками. Первое ощущение после установки - а Arch то гораздо шустрее Ubuntu. Если на Ubuntu всё как то слегка подлагивает, то на арче всё шустро работает. Arch запускает только необходимое, а Ubuntu действует по типу Windows, давайте запустим всё, авось пригодится! А что со звуком? А звук то получше, чем на Ubuntu, детальность заметно выше. Почему так, не знаю! Вроде бы одна и та же ALSA, может быть на Arch более новая версия ядра или сказывается меньшее количество запущенных системных процессов, но перезагружаюсь на Ubuntu, с теми же настройками и тем же плеером - слышу упрощение звука.
Около полу года сидел и радовался на Ctlos, пока в теме обсуждений плееров не узнал про Wtfplay. Это такая миниОС, основанная на Linux, которая представляет из себя по сути консольный плеер. Звук Wtfplay очень понравился, но вот удобство использования…
Что же не хватает Arch Linux до того, чтобы дотянуться по звуку до уровня Wtfplay? А не хватает аудиофильского ядра - Realtime Kernel, так называемое ядро реального времени. А чем оно хорошо для аудио? Низкими задержками! Под задержками понимается время, которое сигнал проходит между аудиовходом и аудиовыходом, включая промежуточную обработку между ними.
Стоит отметить разницу с low-latency ядром, которое по сути обычное ядро, просто немного получше сконфигурировано для меньшей задержки, RT ядро это совершенно другой несравнимый уровень.
Такое ядро где попало не встречается. В основном пользователю предлагается самостоятельно скомпилировать его из исходников c нужным набором патчей.
Arch Linux один из самых гибких и продвинутых дистрибутивов, здесь даже в 99% случаев не нужно искать никакие репозитории, как на Ubuntu, есть pacman и AUR. А на Ctlos есть еще и Pamac - удобная графическая утилита для установки и сборки пакетов, взятая из Manjaro. Всё делается в пару кликов.
Можно самостоятельно собрать realtime kernel из исходников в AUR. Но еще проще — просто подключить репозиторий с уже скомпилированными RT ядрами.
Редактируем pacman.conf:
sudo nano /etc/pacman.conf
Добавляем в конец файла строки:
[dvzrv]
Server = https://pkgbuild.com/~dvzrv/repo/$arch
и сохраняем.
Запускаем (перезапускаем) pamac и устанавливаем пакеты:
linux-rt
linux-rt-headers
после установки пакетов нужно обновить конфиг загрузчика, чтобы он увидел новые варианты загрузки.
grub-mkconfig -o /boot/grub/grub.cfg
И вот тут есть еще одна проблема. На realtime ядре не работают обычные драйвера видеокарты. На nvidia нужно установить пакет nvidia-dkms, тогда драйвер видеокарты будет работать. Что делать если у вас видеокарта из лагеря красных, я если честно не знаю) Google в помощь!
И вот наконец всё готово, перезагружаем систему, в доп. вариантах загрузки выбираем RT ядро и радуемся отличному звуку с минимально возможными задержками!