LXF108:ALSA

Материал из Linuxformat.

Перейти к: навигация, поиск

Содержание

ALSA: крутые советы и трюки

Дэниел Джеймс углубляется в звуковую подсистему вашего компьютера, чтобы извлечь лучшее из ALSA.

Многие возможности микшера Gnome по умолчанию скрыты. Чтобы увидеть больше каналов, воспользуйтесь окном Preferences.

Архитектура Advanced Linux Sound Architecture является стандартом в ядре 2.6, и в большинстве дистрибутивов есть автоматические средства конфигурации, выполняющие основную настройку. Поэтому вы, как минимум, слышите мелодию при загрузке рабочего стола. Но ALSA умеет гораздо больше.

Почти в каждой настольной системе доступен простой микшер, возможно, в виде апплета регулятора громкости в лотке рядом с часами. Примерно так же оформлены элементы управления звуковым драйвером в Windows. Он очень удобен, когда во время разговора по телефону нужно быстро сделать потише CD, который вы слушаете, но не может согласовать уровни звука с различных источников.

Чтобы сделать это, откройте окно микшера, доступное в Gnome по щелчку правой кнопкой мыши на апплете регулятора громкости. (Если у вас не установлены X.org и рабочий стол, можно запустить аналогичную консольную утилиту командой alsamixer.)

Смикшируйте это

В окне микшера Gnome под каждым регулятором находится иконка «отключить» [mute], а у стереосигнала есть также «объединить» [chain], связывающая уровни левого и правого каналов. Кроме регулятора основного стереоканала, есть и регулятор стереоканала PCM, управляющий большей частью программного звука. Исключение из этого правила – системный звуковой сигнал: он генерируется независимо от звуковой карты аппаратным зуммером на материнской плате. В моем микшере есть регулятор PC Speaker, но он никак не влияет на громкость системного звукового сигнала. Вы таже можете заметить регуляторы входных каналов: стереовход Line In или моно-регулятор для гнезда микрофона.

Регулятор ‘CD’ может ввести в заблуждение, потому что обычно относится к аналоговому выходу привода CD-ROM. Его нужно соединить тонким кабелем с четырехконтактным разъемом с аналоговым входом аудиокарты; полученный звук через цифровой кабель передается на современные приложения типа Sound Juicer в Gnome. Результатом будет не только лучшее качество звучания, но и «аналоговая дыра», которая так расстраивает производителей ПО с DRM. Если к вашему оптическому приводу не подключен аналоговый кабель, для управления уровнем звука CD придется использовать регулятор PCM.

Окна микшера выглядят незатейливыми, но с их помощью можно регулировать большинство параметров стандартных звуковых карт. Для доступа ко всем регуляторам микшера в Gnome воспользуйтесь диалоговым окном Edit > Preferences.

У обладателей устройств 5.1 должны присутствовать регуляторы объемного звучания или канала низкочастотных эффектов LFE (Low Frequency Effects) для сабвуфера. Этот канал – «точка-один» в системе 5.1, поскольку он не формирует полный диапазон частот, в отличие от других пяти. Также можно найти регуляторы каналов IEC958, которые относятся к гнездам цифрового аудио. Чаще всего это S/PDIF (Sony/Philips Digital Interconnect Format), и для передачи всех каналов 5.1 обычно требуется один кабель с коннектором RCA («тюльпан»). Реже можно встретить оптический аудиовход (световод) с разъемом с небольшой заслонкой или противопыльной крышкой, требующим оптоволоконного соединения Toslink (Toshiba link). Общее название таких гнезд – EIAJ Optical, по названию торговой организации Electronic Industries Association of Japan (Ассоциация электронной промышленности Японии).

Dolby Digital

На современных звуковых картах или материнских платах часто присутствует выход IEC958 для подключения усилителя домашнего кинотеатра, но нет цифрового аудиовхода. Тем не менее, если есть совместимый усилитель и в MPlayer или Xine установлена опция «прогон AC3» (AC3 pass-through), этот выход очень удобен для воспроизведения звука в стандарте Dolby Digital при проигрывании DVD-диска. Цифровой аудиовыход также рекомендуется использовать с MythTV.

С подъемом по ценовому диапазону у звуковых карт лучшего качества появляются входы, отсутствующие на потребительских устройствах или встроенных чипсетах: например, многоканальные оптические входы ADAT. (Аббревиатура ссылается на цифровой интерфейс, изначально использовавшийся в устройствах Alesis Digital Audio Tape.) На более дорогих аудиоплатах также могут присутствовать возможности измерений и маршрутизации, недоступные средствами стандартных микшеров ALSA, поскольку они специфичны для конкретных чипсетов. К счастью, для трех популярных моделей есть особые микшеры ALSA, каждый с графическим интерфейсом. Это:

  • Envy24control Поддерживает большинство звуковых карт PCI M-Audio Delta, Digigram VX442, Terratec DMX 6Fire – как Terratec EWS88, так и EWX 24/96, и Hoontech Soundtrack Audio DSP 24.
  • Echomixer Предназначен для устройств, произведенных Echo Audio, включая PCMCIA-карты Indigo, MIDI-устройство Mia и PCI-карты Gina 3G и Layla.
  • Hdspmixer Поддерживает звуковые интерфейсы RME HDSP, включая карты Hammerfall DSP 9632 и 9652 PCI.

Микшер особого назначения

Более продвинутые микшеры не только предоставляют возможности аппаратного измерения и маршрутизации, но и содержат функции управления, включающие блокировку частоты дискретизации и бит «защиты от копирования» SCMS, который есть в некоторых реализациях S/PDIF (ранняя форма DRM). В не-мультимедиа дистрибутивах эти микшеры не устанавливаются по умолчанию, но, как правило, для них есть готовые пакеты. Если вы загрузите исходники ALSA с сайта http://www.alsa-project.org, то найдете специализированные микшеры в пакете alsa-tools. В некоторых дистрибутивах Linux, включая Debian, этот пакет разделяется на консольные и графические приложения, и в производных Debian упомянутые выше графические микшеры находятся в пакете alsa-tools-gui.

Envy значит «завидовать»

С помощью Envy24control можно панорамировать аппаратные входы для каждого источника.

Благодаря популярности звуковых карт среднего класса типа M-Audio Audiophile 24/96, из трех микшеров вам скорее всего встретится Envy24control. Эта PCI-карта – хороший выбор для подключения hi-fi-систем или домашних кинотеатров, так как она позволяет управлять аналоговым уровнем на фоно-гнездах и поддерживает S/PDIF на вход и на выход. Устройство опробовано и протестировано под ALSA, а значит, это разумный выбор для профессиональных проектов, когда нужна только пара аналоговых каналов с несбалансированными входами/выходами – они прекрасно работают, пока соединяющие аппаратуру кабели короткие. Если вам требуются провода длиной в несколько метров, подойдут сбалансированные кабели, обычно с трехконтактными разъемами XLR или четверть-дюймовыми штекерами TRS (tip, ring, sleeve – наконечник, кольцо, муфта), поскольку сбалансированные системы способны подавлять электрический шум. Если необходимо восемь каналов со сбалансированными входами/ выходами, можно взять M Audio Delta 1010, которая использует все тот же бывалый драйвер ALSA.

После установки подходящей звуковую карты, Envy24control можно запускать с терминала. В противном случае он откажется работать, выдав сообщение «Не найдено карт ICE1712» (‘No ICE1712 cards found’). (Ссылка на ICE1712 отражает номер модели оригинального чипсета Envy24, а также название соответствующего модуля ALSA). У счастливчиков после установки пакета alsa-tools или alsa-tools-gui в меню рабочего стола появится пункт меню для Envy24control.

После старта Envy24control подключится к первой поддерживаемой звуковой карте, обнаруженной в системе. Адрес и номер прерывания IRQ для нее появятся в заголовке окна приложения, например, ‘0xd400, IRQ 10’. Если в системе несколько поддерживаемых звуковых карт, можно управлять каждой из отдельного приложения Envy24control, используя опцию -c с номером карты в командной строке. На man-странице Envy24control можно найти описание других полезных аргументов Envy24control.

В левой части окна Envy24control есть измеритель для «цифрового микшера» (‘Digital Mixer’), показывающий сумму уровней внутренних сигналов. На двух первых вкладках справа отображаются уровни входного и выходного сигнала соответственно. Как и в обычных микшерах ALSA, имеются кнопки отключения звука (mute) и набор стереокнопок. Есть и более необычная возможность. Уровень каждого входного сигнала, поступающего в левый и правый каналы цифрового микшера, можно контролировать отдельно, что напоминает управление панорамированием. Обычно для стерео первый вход поступает только в левый канал, а второй – только в правый.

Patchbay/Router

На вкладке Patchbay/Router в окне Envy24control можно управлять физическими выходами звуковой карты.

Следущая вкладка Envy24control называется Patchbay/Router [Коммутационная панель/Маршрутизатор]. В стандартных потребительских звуковых картах внутренняя маршрутизация звука прошита аппаратно, но в более дорогих моделях появляется большая гибкость. Например, при желании можно связать аналоговый вход непосредственно с выходом S/PDIF.

Далее идет вкладка Settings [Настройки]. Наверное, самая важная настройка здесь – Master Clock [Главный генератор тактовых импульсов]. Можно выбрать стандартную частоту дискретизации внутреннего генератора тактовых импульсов звуковой карты от 22050 Гц до 96000 Гц или заставить карту работать на частоте внешнего устройства S/PDIF. Также можно зафиксировать выбранное значение частоты дискретизации или разрешить ее программный сброс. Эта настройка сначала может сбить с толку, если попытаться записать звук на частоте дискретизации 96000 Гц, потому что часто карта по умолчанию фиксирует 48000 Гц. На этой вкладке также можно задать параметры выхода S/PDIF.

Для звуковых карт 24/96 следующая вкладка носит название Analogue Volume [Аналоговый уровень], но она есть не у всех карт Envy24. На ней можно настроить параметры входного сигнала, поступающего на аналого-цифровой преобразователь (АЦП), и выходного сигнала с цифро-аналогового преобразователя (ЦАП), чтобы совместить уровни сигналов с внешним оборудованием и предотвратить искажения. На других интерфейсах, включая Delta 1010, для этого предусмотрены аппаратные переключатели рядом с каждым штекером. Это необходимо потому, что уровни аналогового сигнала не одинаковы во всей звуковой аппаратуре. В профессиональных системах используется стандарт +4dBu, а в потребительских hi-fi-системах принят стандарт -10dBV. Все, что нужно о них знать – это что один громче другого; и если сигнал искажен (слишком громкий) или слишком тихий, причина может крыться в несоответствии уровней сигнала.

Аппаратные настройки позволяют зафиксировать частоту дискретизации.

На предпоследней вкладке Profiles [Профили] можно сохранить и восстановить настройки микшера в ALSA. Наконец, на вкладке About [О программе] просто упоминается разработчик ALSA и ответственный за звук в ядре Linux Ярослав Кысела [Jaroslav Kysela], создавший Envy24control.

Изгоняем winmodem

В современных рабочих столах Linux устройств ALSA обычно два или три. В большинстве ПК есть встроенная звуковая карта или устройство PCI, но у вас также могут быть включены USB-колонки или VoIP-гарнитура. И то, и другое взаимодействует с ALSA независимо от встроенного звукового оборудования. Также может присутствовать карта MPEG-декодера или MIDI-устройство USB с собственным интерфейсом ALSA. Вдобавок, некоторые устройства типа winmodem на самом деле представляют собой дешевые и дрянные звуковые карты, в которых «бормотание» модема эмулируется программно. Вы экономите несколько рублей/долларов на микросхемах и повышаете загрузку процессора только ради ностальгии по dial-up.

Это по большому счету ничего не значит, не считая того, что в некоторых приложениях поддерживается только одно звуковое устройство, а другие все еще ожидают найти его в /dev/dsp/ – устройство для первой звуковой карты из наследства Open Sound System (OSS), которого уже много лет нет в основном ядре Linux. В ALSA первому устройству дается нулевой индекс. На него ссылаются как на hw:0. К счастью, ALSA хорошо эмулирует OSS, но если звуковых устройство несколько, то только одно из них будет /dev/dsp/ – остальные будут эмулироваться как /dev/dsp1/, /dev/dsp2/ и т.д.

Вы вряд ли захотите, чтобы звонок по VoIP проходил через ТВ-приставку, а система hi-fi пищала каждый раз, когда пришло новое письмо. Поэтому нужно научиться определять индекс ALSA каждого звукового устройства и убедиться, что он не изменяется после перезагрузки.

Установка корректного уровня аналогового сигнала предотвратит искажения.

Во-первых, избавимся от драйвера winmodem, если он не используется; в эпоху широкополосных соединений и Wi-Fi это скорее всего так и есть. Откройте терминал и проверьте, загружен ли любой драйвер winmodem с помощью команды:

 $ lsmod|grep snd

Поищите модули snd_atiixp_modem, snd_intel8x0m или snd_via82xx_modem для чипсетов ATI, Intel и VIA соответственно. Модуль от Intel также поддерживает чипсеты winmodem от SIS и Nvidia. Будьте внимательны, если у вас встроенная звуковая карта и загружен модуль snd_intel8x0: это обычное звуковое устройство, а не модем, но имя модуля отличается лишь на одну букву.

ALSA предоставляет механизм, предотвращающий загрузку драйверов winmodem; в основанных на Debian дистрибутивах Linux он управляется файлом /etc/modprobe.d/alsabase-blacklist; в других системах расположение может немного отличаться. В файле должны быть примерно такие строки:

# Uncomment these entries in order to blacklist unwanted modem drivers
# blacklist snd-atiixp-modem
# blacklist snd-intel8x0m
# blacklist snd-via82xx-modem

Естествено, редактировать и сохранять этот файл нужно от имени root. Теперь остановите звуковую систему, удалите модуль, о котором идет речь, из работающего ядра, перезапустите ALSA и проверьте, что модуль, который только что был добавлен в черный список, отсутствует:

# /etc/init.d/alsa-utils stop
Shutting down ALSA...done.
# rmmod snd-atiixp-modem
# /etc/init.d/alsa-utils stop
Setting up ALSA...done.
# lsmod|grep snd

При следующей запуске компьютера драйвер winmodem уже не будет загружаться автоматически.

Изменение порядка звуковых карт

Профили микшера можно сохранить и потом вызывать.

Теперь в системе остались только нужные нам аудиоустройства, и пора определить порядок их представления. Это поможет решить проблему унаследованных приложений с /dev/dsp, но удобно и для съемных устройств. По умолчанию, при подключении устройства ALSA каждый раз дает ему новый индекс, и это может сбить с толку приложения, сохраняющие настройки ALSA не по его полному имени. Скажем, Ekiga запоминает, что для приема звонков вы используете ‘Plantronics Headset’, но другие программы могут хранить лишь номер: hw:0 или hw:1.

Чтобы исправить это, добавьте следующие строки в конец файла /etc/modprobe.d/alsa-base или его эквивалента (от имени пользователя root):

alias snd-card-0 snd-emu10k1
options snd-emu10k1 index=0
alias snd-card-1 snd-rme9652
options snd-rme9652 index=1
alias snd-card-2 snd-usb-audio
options snd-usb-audio index=2

В этом примере карта Creative Labs Audigy выбрана как card 0 для системных уведомлений, что соответствует /dev/dsp/ в OSS. RME Hammerfall – это card 1, по этому имени звуковой сервер Jack достоверно сможет его найти; а MIDI-коннектор USB – это card 2.

Если вам все же потребуется драйвер winmodem, то есть альтернатива помещению его в черный список. Это установка значения индекса в -2, например:

options snd-via82xx-modem index=-2

Данная опция не дает модему захватить первое устройство ALSA с индексом 0 и используется по умолчанию в файле /etc/modprobe.d/alsa-base в Debian для трех драйверов winmodem’ов, которые мы рассмотрели.

Intel HDA и ALSA

Стандарт Intel, High Definition Audio, должен заменить старый чипсет AC97, установленный на большинстве материнских плат со встроенным звуком. HDA имеет технические преимущества перед AC97, включая более высокий битрейт интерфейсов S/PDIF, множество независимых потоков, до восьми каналов и варьируемые входы/выходы (что Intel называет «переназначение разъемов», ‘jack retasking’). Однако на большинстве материнских плат с HDA не реализована полная спецификация стандарта.

Так как все реализации HDA отличаются, то создание общего драйвера ALSA, способного хорошо работать на всех платах с HDA – задача непростая. Если с устройством HDA возникают проблемы, проект ALSA рекомендует перед отправкой отчета об ошибке собрать информацию из файлов /proc/asound/card#/codec*. А если вы хотите помочь в разработке драйвера ALSA для HDA, воспользуйтесь утилитой на странице http://helllabs.org/codecgraph, которая может сгенерировать информацию о кодеке в формате Graphviz. Если вашего чипсета HDA нет на этой странице, разработчики codecgraph хотели бы узнать об этом. С подробностями.

Личные инструменты
  • Купить электронную версию
  • Подписаться на бумажную версию