ALSA

Материал из MediaWiki
Перейти к навигации Перейти к поиску

Advanced Linux Sound Architecture (ALSA) — Архитектура звуковых драйверов, а также широкий их набор для Linux, призванная сменить OSS и обеспечивающая возможность обмена между приложениями звуковыми данными с гарантируемой предельно низкой задержкой. ALSA поддерживает широкий спектр как любительских, так и профессиональных звуковых интерфейсов (в том числе, многоканальных), а также совместима с OSS API и способна работать с большинством программ написанных только для OSS.

Как установить и настроить ALSA?

Данная статья или раздел ещё не завершены
Кто-то посчитал, что статья или раздел ниже не содержит какой-то важной информации или имеет проблемы с вёрсткой/текстом. Указана причина: нужно написать о сборке ALSA из исходников, брать отсюда{{#ifeq: {{{1}}} | nopoint | | . }}

{{#if: Доработка | }}


В большинстве современных дистрибутивных ядер ALSA является стандартной звуковой подсистемой и, если у вас не установлено какое-нибудь экзотическое аудиоустройство, работает «из коробки».

Если у вас установлена малораспространенная звуковая карта, может оказаться, что в вашем ядре не собран модуль для работы с ней. В этом случае, будет достаточно пересобрать ядро, вместе с требуемым модулем (его название можно узнать в описании вашей звуковой карты по адресу [1]).

Поддерживается ли моя звуковая карта?

Вот тут есть список производителей и моделей карт, а также состояние их поддержки.

Поставил ALSA, а звука нет. Что делать?

По умолчанию после установки ALSA (если ранее она не стояла), все каналы находятся в заглушенном положении (mute). Поэтому запустите alsamixer и снимите mute клавишей m с каналов Master и PCM. Кнопки курсора вверх и вниз позволят установить требуемый уровень звука.

Если звука нет, а у вас карточка от EchoAudio, Emu или некоторых других производителей, при этом в выводе dmesg (пример для EMU) видна ругань вида

firmware: emu/hana.fw not found. Err = -2

то карточка пришла в негодность придётся доустановить прошивку.

В некоторых дистрибутивах пакет alsa-firmware уже есть, для Ubuntu (а также Debian) можно взять в репозиториях Medibuntu или KX-Studio.

Как сохранить настройки микшера при использовании ALSA? Как сделать, чтобы они восстанавливались?

Для сохранения настроек выполните команду

user@linux# /usr/sbin/alsactl store

А чтобы они восстанавливались (и записывались) нужно, чтобы в инит-скриптах вашего дистрибутива стартовал демон alsasound или alsa-utils, в зависимости от дистрибутива.

У меня несколько звуковых карт, как задать карту по умолчанию?

Сначала смотрите какие карты у вас обнаружились ядром (файл /proc/asound/cards):

~ :$cat /proc/asound/cards
 0 [Audigy2        ]: Audigy2 - SB Audigy 2 [SB0240]
                      SB Audigy 2 [SB0240] (rev.4, serial:0x10071102) at 0xdc00, irq 16
 1 [NVidia         ]: HDA-Intel - HDA NVidia
                      HDA NVidia at 0xf9e78000 irq 23

Например, у меня установлены 2 карты, одна из которых называется Audigy2, а вторая - NVidia Далее Вам нужно открыть в редакторе /etc/asound.conf (глобальные настройки), либо ~/.asoundrc (настройки пользователя).

Задаете устройство по умолчанию (допустим, что я хочу использовать NVidia):

pcm.!default {
  type hw
  card NVidia
             }

ctl.!default {
   type hw
  card NVidia
             }

Всё, если Вы редактировали ~/.asoundrc, то достаточно перезапустить приложения (или перелогиниться), в случае asound.conf может потребоваться перезагрузка.


Где в Linux эквалайзер? Как мне поднять или прибрать высокие/низкие частоты для всех аудио-приложений?

Этот вопрос задается регулярно. Наиболее простой способ, если вы пользуетесь ALSA, описан здесь. В звуковых картах Creative Labs (семейства Live!, Audigy, X-Fi) встроен двухполосный аппаратный эквалайзер, но пользоваться им не рекомендуется из-за ощутимого ухудшения звучания при его использовании.

Приложение полностью занимает звуковую карту, что делать?

Данная статья или раздел ещё не завершены
Кто-то посчитал, что статья или раздел ниже не содержит какой-то важной информации или имеет проблемы с вёрсткой/текстом. Указана причина: начиная с какой-то-там версии ALSA dmix работает по умолчанию. ИМХО, этот вопрос устарел, так как arts и esound уже давно не используются. Но флеш местами всё ещё глючит{{#ifeq: {{{1}}} | nopoint | | . }}

{{#if: Доработка | }}


Как сделать программное микширование с ALSA на картах, не поддерживающих аппаратное?

Начиная с версии 1.0.9 ALSA сама определяет способна ли карта аппаратно микшировать потоки и если нет, включает dmix. На всякий случай стоит вспомнить как это настраивается вручную.

pcm.!default {
    type plug
    slave.pcm "dmixer"
}
 
pcm.dsp0 {
    type plug
    slave.pcm "dmixer"
}
 
pcm.dmixer  {
    type dmix
    ipc_key 1024
    slave {
        pcm "hw:0,0"
        period_time 0
        period_size 1024
        buffer_size 8192
        rate 44100
    }
    bindings {
        0 0
        1 1
    }
}
 
ctl.mixer0 {
    type hw
    card 0
}

Лучше всего добавить это в ~/.asound.conf

Что за ошибка «FATAL: Error running install command for sound_slot_0»?

Есть три варианта — простой, сложный и очень сложный.

Простой

В /etc/modprobe.d/modprobe.conf не хватает упоминания snd-slot-0:

alias snd-slot-0 snd-card-0

Сложный

Невозможно загрузить модуль звуковой карты и как следствие, нельзя к нему обратиться. Может перепутано имя, может карта неплотно стоит в слоте (отвалилась, такое бывает).

Очень сложный

Вы работаете в дистрибутиве с поддержкой SELinux (например, Fedora) и при этом он включен. Либо отключите его, либо настраивайте разрешения.

Что делать, если ALSA не видит часть железа?

Если часть железа работает, основные колонки например, а часть не работает, например наушники, сабвуфер или микрофон, то проблема может быть в сотрудничестве Алсы и вашей звуковой карты. Часто помогает это решение.

Что почитать по конфигурированию ALSA и .asoundrc?

A close look at ALSA

Unofficial wiki, там же есть секция Other documentation, со ссылками на дополнительную информацию.