Pull to refresh

Плагины ALSA

Reading time3 min
Views5.2K

Линукс для музыканта: плагины ALSA

Здравствуй, Хабр!

Перевод-справка: плагины ALSA, краткое описание API следующих плагинов: hw, mmap_emul, shm, null, copy, linear, lfloat, mulaw, alaw, adpcm, route, rate, plug, file, multi, share, hooks, dmix, dshare, dsnoop, ladspa, asym, iec958, softvol, empty, remap.

Музыканты, поклонники «лампового звука», живущие около волшебного леса Linux, рано или поздно замечают среди деревьев темную тень — зверя с дурной славой и громким именем ALSA. И правда, ALSA — загадочный зверь, не любящий света. (Кажется, первая встреча с ALSA всегда неприятна и обычно случается в момент, когда из акустических колонок пропадает звук во время просмотра любимого кинофильма.)

На самом деле надежность подсистемы ALSA не вызывает сомнений: почти все проблемы звука в Линукс связаны или с неправильно настроенными плагинами ALSA, или с PulseAudio, а также демонами автосохранения настроек (это те самые таинственные программы, которые вызываются из командной строки

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

Плагины ALSA - «самостоятельные», но необычные программы, как правило, «встраиваемые» в звуковой поток с помощью настроек файла .asoundrc.

Зачем они нужны? Допустим, чтобы чтобы превратить ALSA в систему с «низкой задержкой», включить включить виртуальную звуковую карту (модуль snd-aloop), чтобы ALSA общалась с Jack.

«Общение» с Jack в данном случае происходит через две программы:

$ alsa_in -j cloop -dcloop -q1 & (на выход)

$ alsa_out -j ploop -dploop -q1 & (на вход)

Или придется настроить .asoundrc

pcm.jack {

type jack

playback_ports {

0 alsa_pcm:playback_1

1 alsa_pcm:playback_2

}

}

Настройка через плагины, между прочим, меньше нагружает процессор.

Плагины почти всегда требует «тонкой» настройки, например, явного указания битрейта. Ошибка в описании приведет к неработающей звуковой подсистемы или к не всегда очевидным проблемам PCM. (Например, когда микшируемый поток из-за неявного указания в .asoundrc записывается как S16, а воспроизводится как S32_LE — попробуй-ка «на слух» найти ошибочную запись в .asoundrc!)

Плагины легко позволяют сделать «качественную» выборку ALSA, например, поменять установку внутреннего конвертера на speexrate_medium или speexrate_best.

Всегот лишь добавьте в .asoundrc следующие строки: defaults.pcm.rate_converter "speexrate_medium"

Эти значения определены в ALSA так:

- speexrate_best, use quality 10 (equivalent to SRC_SINC_BEST_QUALITY)

- speexrate_medium, use quality 5 (equivalent to SRC_SINC_MEDIUM_QUALITY)

- speexrate, use quality 3 (equivalent to SRC_SINC_FASTEST)

И да, разрешается применять libsamplerate или ресемплеры lavcrate (Ffmpeg).

«Грамотная» настройка плагинов творит чудеса: позволяет снизить нагрузку на процессор, отказаться от избыточного функционала PulseAudio (если вы используете этот сервер), избежать неприятного треска и «заморозки» звука.

Строго говоря, плагины могут превратить ALSA в «звуковой сервер»: смикшировать потоки, включить софтовую регулировку громкости, эквализацию прямо в звуковую подсистему.

Звуковая подсистема Linux многолика. Здесь есть место традиционным фильтрам для музыкантов LADSPA и для модернового плагина asum.

Почему бы не слушать записи Леонарда Бернстайна с огромным динамическим диапазоном со включенным компрессором?

pcm.ladspa {

type ladspa

slave.pcm "plughw:0,0";

path "/usr/lib/ladspa";

plugins [{

label se4

input {

# RMS/peak attac time (ms) release time (ms) thresh

old (dB) ratio knee radius attenuation

controls [0.7 30 550 -25

6.5 6 0]

}

}]

}

Я переводил текст «для себя», потому что хотелось разобраться, как же грамотно настроить ALSA на домашнем компьютере (не очень-то крутом, со слабеньким процессором на четырех ядрах и 4 Gb памяти). В процессе перевода текста я выбрал «минималистскую стратегию»: старался максимально сжимать информацию, не перегружать текст избыточной информацией.

Конечно, плагины описывают как часть API звуковой подсистемы, это прежде всего информация для разработчиков, поэтому как-то незаметно я начал переводить комментарии к плагинам немецких музыкантов, японских программистов и даже форумные сообщения известного англоязычного ресурса LinuxMusicians

Надеюсь, мой перевод заинтересует энтузиастов «сложной» настройки звука в Линукс.


Скачать или прочитать можно здесь.







Tags:
Hubs:
+6
Comments11

Articles

Change theme settings