Журнал LinuxFormat - перейти на главную

LXF108:ALSA

Материал из Linuxformat
(Различия между версиями)
Перейти к: навигация, поиск
(Новая: ==''ALSA'': крутые советы и трюки== : '''Дэниел Джеймс''' углубляется в звуковую подсистему вашего компьютера...)
 
(Изменение порядка звуковых карт)
 
Строка 157: Строка 157:
 
  options snd-via82xx-modem index=-2
 
  options snd-via82xx-modem index=-2
  
Данная опция не дает модему захватить первое устройство ''ALSA'' с индексом '''0''' и используется по умолчанию в файле '''/etc/modprobe.d/alsa-base''' в Debian для трех драйверов winmodem’ов, которые мы рас-
+
Данная опция не дает модему захватить первое устройство ''ALSA'' с индексом '''0''' и используется по умолчанию в файле '''/etc/modprobe.d/alsa-base''' в Debian для трех драйверов winmodem’ов, которые мы рассмотрели.
  
 
===Intel HDA и ''ALSA''===
 
===Intel HDA и ''ALSA''===

Текущая версия на 09:54, 29 октября 2009

Содержание

[править] ALSA: крутые советы и трюки

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


Архитектура 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 значит «завидовать»

Благодаря популярности звуковых карт среднего класса типа 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

Следущая вкладка 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 хотели бы узнать об этом. С подробностями.

Персональные инструменты
купить
подписаться
Яндекс.Метрика