Путь в мир Bitperfect или как я подружился с Arch Linux

Хочу поделиться своим опытом построения качественного выхода звука на 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 в помощь! :grin:

И вот наконец всё готово, перезагружаем систему, в доп. вариантах загрузки выбираем RT ядро и радуемся отличному звуку с минимально возможными задержками! :innocent:

17 лайков

Интересно, почему считается, что Linux больше заточен на качество звука? Его допилить, возможно, проще, а по дефолту звук в любой ос вопрос точно не в первой десятке важных.

Знакомый путь. На очереди отсутствие окон (хоть даже и низкоуровневых etc WM3). И может даже система из-под RAM :slightly_smiling_face:
Однако последняя концепция построения тракта твердит о разделении “шумного” сервера (игрока) и минимально потребляющей ресурсы конечной точки.
Долго не верил. Казалось, что локально - самый короткий путь и сеть костыль. Ан нет…

Потому что так оно и есть.
Задержки ниже - звук лучше.
Специально за звуком, естественно, никто не гнался.
Ну а где звук, там и изображение, то есть фото, видео, печать и т.д.

Ну, костыль и есть, просто плюсы перевесили минусы.

О том и речь.
Не уверен, что задержки единственный параметр. Просто его измерить проще.

Казалось бы, зачем тогда Linux? В оторванном от реальности контексте тогда имело бы смысл смотреть на QNX и VxWorks. Но тут добавляются сложности с распространением и модификацией. И драйверы для устройств вывода.

Arca OS используют, здесь есть тема.
Понять бы еще, что лучше всего, а то ведь и linux дистрибутивов куча для музыки есть, а вот консенсуса среди пользователей не наблюдается.

RT-ядра Arch Linux с планировщиком BFQ (применяется в Euphony и Audiolinux)

2 лайка

Линукс строится с НУЛЯ под собственные нужды. Хоть 2-а запущенных процесса.
Виндовс ставится объемом с танк и напильником доводится до размера коробка.
В моем случае проще и логичнее первый вариант.

1 лайк

Одна незадача, практически во всех случаях ставят Alsa. Даже в ArcaOS портировали (из FreeBSD). Надо как-нибудь найти время и попробовать-таки пресловутую OSS, может быть, сразу под Haiku (наследница BeOS).

Кстати, автор Wtfplay project (в девичестве Gentoo) намеренно использует только low-latency kernel.

1 лайк

Не получается у меня…
Пишет: не удалось найти базу данных.

Причем это при сборке из aur.
Больше вариантов при поиске linux-rt в pamac не вижу.

После добавления репозитория нужно перезапустить pamac, он обновит базу данных и тогда пакеты будут доступны. Можно и через консоль.
pacman -Syu
pacman -S linux-rt linux-rt-headers

Из AUR не нужно ничего собирать, это очень долго
Проверьте добавили репозиторий или нет, там сохранять нужно Ctrl + X, и подтвердить.

2 лайка

Если я правильно понял, вы на линукс компе используете дискретную видео карту, верно?
По своему опыту скажу, что наличие видюхи в слоте портит звук, замыливает его, я для видео перешел на встроенныю видюху из за этого.
Рекомендую вам попробовать послушать комп некоторое время без видеокарты.

У меня Xeon без встоенной графики.

Без видюхи линукс не заведется?

Линукс то заведётся, как мне запустить плеер вслепую, это не система для удаленного управления. Если только его как то прикрутить

Может как то через удаленный рабочй стол? Или использовать mpd, он поддерживает удаленное управление с др компа, планшета и телефона

1 лайк

Нет root прав.
После перезагрузки из pacman.conf пропали добавленные строки. Добавил еще раз.
Система на флэшке.

Всмысле без установки? Система загружается в оперативку и всё сбрасывается после перезагрузки. Realtime так не попробовать.