10 авг. 2015 г.

Я снова вернулся на ALSA

Время идет. Пора и мне обновить систему на новое ведро 4.1.4 со старого 3.18.1. OSS, естественно, не собралось с глупыми ошибками. И, что неестественно, за несколько месяцев никто так и не выложил даже намека на патч. Поскольку патчи на изменившийся API я писать не умею, на новом ядре хорошо бы остаться и хорошо бы со звуком, пришлось отказаться от умирающего реликта OSS v4.

Звук ALSA заставляет затыкать уши в попытке не слышать этих искажений. Ну, уже только ленивый не вспоминал, что по-умолчанию, там быстрый алгоритм ресемплинга, поэтому звук, как из стальной бочки. Сказано -- сделано: собираем alsa-plugins с USE-флагом libsamplerate. И видим в директории:

~ ❯❯❯ ls /usr/lib64/alsa-lib/ 
libasound_module_pcm_oss.so         libasound_module_rate_lavcrate.so         libasound_module_rate_lavcrate_higher.so  libasound_module_rate_samplerate_linear.so
libasound_module_ctl_arcam_av.so  libasound_module_pcm_upmix.so       libasound_module_rate_lavcrate_fast.so    libasound_module_rate_lavr.so             libasound_module_rate_samplerate_medium.so
libasound_module_ctl_oss.so       libasound_module_pcm_usb_stream.so  libasound_module_rate_lavcrate_faster.so  libasound_module_rate_samplerate.so       libasound_module_rate_samplerate_order.so
libasound_module_pcm_a52.so       libasound_module_pcm_vdownmix.so    libasound_module_rate_lavcrate_high.so    libasound_module_rate_samplerate_best.so

~ ❯❯❯ cat .asoundrc
defaults.pcm.rate_converter "lavcrate_higher"

Соответственно, выставляем в ~/.asoundrc самый лучший алгоритм. Пока не уверен, что все хорошо, но звук относительно чистый, а от музыки меня колбасит - это главное =)
Пояснение, как работают плагины:
https://github.com/Themaister/alsa-plugins-rsound/blob/master/doc/lavcrate.txt

UPDATE:
как оказалось, 24х-битный звук воспроизводится с заиканием.

Лекарство для deadbeef: идем в Настройки -> Расширения -> ALSA output plugin -> Настроить и выключаем галку "Использовать передискретизацию с помощью ALSA.

При проигрывании APE в 24бита одно из ядер i7 загружается больше, чем на 100%, не знаю, сколько искажений при этом вносится, но звучит приемлимо - воздух есть.