Всем у кого не идет ALSA.
Редакция моя источники внизу.
Дополнения и исправления приветствуются
Передовая звуковая архитектура Linux (ALSA) обеспечивает вывод звука на уровне ядра драйвера звуковой карты. Она заменяет оригинальную систему Open Sound System (OSS).
Кроме драйверов звуковых устройств, ALSA предоставляет библиотеку драйверов для разработчиков приложений. Они могут использовать эти драйверы ALSA для развития API высокого уровня. Это позволяет осуществлять прямую доступ к ядру звукового устройства через библиотеки ALSA.
Установка
ALSA представляет собой набор программных модулей ядра GNU/Linux. Поэтому, ручная установка не требуется.
Функция авто определения автоматически определит ваше оборудование и установит требуемые драйверы во время загрузки. Таким образом, ваше звуковое устройство уже должно работать.
Примечание: По умолчанию в ALSA все каналы микшера отключены, для включения используйте команду:
$ alsamixer
Полномочия пользователя
Как правило, локальные пользователи имеют разрешение на воспроизведение аудио, и изменение уровней микшера.
Чтобы разрешить удаленным пользователям использовать ALSA, необходимо добавить этих пользователей в группу аудио:
# gpasswd -a yourusername audio
Примечание: Изменения вступят в силу только после следующего входа в систему.
Примечание: Добавление пользователей в аудио группу, позволяет получить прямой доступ к звуковым устройствам. Имейте в виду, что это позволит приложениям зарезервировать звуковое устройство. В свою очередь это может привести к неправильной работе программного смешивания (software mixing), или программы конечного пользователя, использующей программное смешивание в многоядерных системах. Поэтому добавление пользователя в аудио группу, по умолчанию не рекомендуется.
ALSA Утилиты
Установите пакет alsa-utils. Этот пакет содержит (среди других утилит) alsamixer и amixer утилиты. Amixer является командной оболочкой для изменения настроек звука, в тоже время alsamixer обеспечивает более понятный интуитивный ncurses интерфейс, для изменения конфигурации вашего аудио устройства.
Если вам необходимо высокое качество пере дискретизации установите alsa-plugins. Этот пакет также содержит upmixing/downmixing микширование и другие дополнительные программы.
Совместимость с OSS (Open Sound System)
Совместимость с OSS (Open Sound System) - унифицированный драйвер для звуковых карт в различных UNIX-подобных операционных системах.
Примечание: Если ваше приложение жалуется на отсутствие /dev/dsp или /dev/snd/seq.
ALSA умеет перехватить OSS вызовы и изменять их маршрут в направление ALSA. Этот вид эмуляции очень полезен. Например, для старых приложений, которые пытаются открыть /dev/dsp и вписать туда звуковые данные для работы сними напрямую. Без OSS или библиотек эмуляции, /dev/dsp будет отсутствовать, и приложение не будет выдавать никаких звуков.
Если вы используете OSS для работы приложений, установите пакет alsa-oss в который входит функция dmix (software mixing). Затем загрузите snd-seq-oss, snd-pcm-oss и snd-mixer-oss модули ядра для включения эмуляции OSS.
Примечание: Начиная с версии udev>=171, модули эмуляции OSS (snd_seq_oss, snd_pcm_oss, snd_mixer_oss) не загружаются автоматически.
ALSA и Systemd (systemd — демон инициализации других демонов в Linux
ALSA и Systemd (systemd — демон инициализации других демонов в Linux, пришедший на замену используемого ранее стартового демона /sbin/init)
Пакет alsa-utils поставляется с systemd с уже настроенными файлами конфигурации alsa-restore.service и alsa-state.service по умолчанию. Они автоматически устанавливаться и активируются во время установки. Проверить загрузку модулей можно с помощью команды systemctl.
Примечание: Для справки, ALSA хранит свои настройки в /var/lib/alsa/asound.state
Включение каналов звука
По умолчанию в ALSA все каналы отключены.
Настроить уровень громкости на звуковой карте можно с помощью команды amixer и alsamixer:
$ amixer sset Master unmute
$ alsamixer
Буквы ММ канала показывают, что звуковой канал отключен, а 00 означает, что он включен.
Перейдите к каналам звука Master и PCM с помощью клавиш ← и → и буквы М включите каналы. Используйте клавишу ↑, чтобы увеличить громкость и получить значение 0 дБ усиления.
Примечание: Если усиление установлено выше 0 дБ могут появиться искажения звукового сигнала.
Включение 5.1 / 7.1 surround звука
Чтобы получить полный 5.1 или 7.1 объемный звук, потребуется включить другие каналы, Front, Surround, Center, LFE (subwoofer) and Side. (Это названия каналов Intel HD Audio, они могут меняться в зависимости от производителя звуковых карт)
Примечание: Пожалуйста, обратите внимание - это не будет автоматически повышать качество звука от стерео источников. Для того чтобы добиться объемного звука от стерео сигнала нужно, применять upmixing микширование.
Примечание: У некоторых карточек должен быть выключен digital output, чтобы услышать аналоговый звук. Для Soundblaster Audigy LS надо отключать IEC958 channel.
Примечание: Если ваша система имеет более одной звуковой карты, то вы можете переключаться между ними нажатием F6.
Примечание: Некоторые машины, (такие как Thinkpad T61), имеют Speaker канал, который должен быть включен и настроен.
Примечание: Некоторые машины, (вроде Dell E6400) могут потребовать включение Front и Headphone каналов.
Примечание: Если ваши настройки не сохраняются после перезагрузки, попробуйте запустить alsamixer от имени root.
Примечание: Все необходимые модули, udev должен определить и подгрузить автоматически. Особых настроек потребоваться не должно, (если только для карт ISA).
Предупреждение: Не используйте alsaconf если у вас звуковая карта PCI или ISAPNP, так как записи в modprobe.conf, которые делает alsaconf, могут нарушить авто определение udevа.
Включение микрофона
Чтобы включить микрофон, переключитесь на вкладку Capture с помощью клавиши F4 и включите канал нажав Space.
Проверка звука
Измените Change -c в соответствии со своей аудиосистемой. Для системы 7.1 используйте -c 8:
$ speaker-test -c 8
Если аудио сигнал, выводиться на неправильное устройство, попробуйте вручную указать его, в качестве аргумента используйте -D.
$ speaker-test -D default -c 8
Аргумент -D принимает имена каналов PCM в качестве значений, которые можно получить, выполнив следующие действия:
$ aplay -L | grep :CARD
default:CARD=PCH # 'default' is the PCM channel name
sysdefault:CARD=PCH
front:CARD=PCH,DEV=0
surround21:CARD=PCH,DEV=0
surround40:CARD=PCH,DEV=0
surround41:CARD=PCH,DEV=0
surround50:CARD=PCH,DEV=0
surround51:CARD=PCH,DEV=0
surround71:CARD=PCH,DEV=0
Сохраняем настройки микшера
# alsactl -f /var/lib/alsa/asound.state store
Этой командой создаётся файл /var/lib/alsa/asound.state, содержащий установки alsamixerа.
Потом нужно добавить demon alsa в секцию DAEMONS файла /etc/rc.conf, чтобы микшер автоматически восстанавливал значения при загрузке:
/etc/rc.conf
DAEMONS=(... @alsa ...)
Примечание: demon alsa просто восстанавливает настройки каналов, читая их из /var/lib/alsa/asound.state. Этого нет в официальной библиотеке ALSA (и ядра на уровне API).
Основной синтаксис
Конфигурационные файлы ALSA следуют простому синтаксису, состоящему из иерархических значений параметра. Ниже все изменения происходят в файле asoundrc.txt, который обычно находится в alsa-Lib пакета.
........................................................
........................................................
Установка звуковой карты по умолчанию
Если ваша выбранная звуковая карта меняется при перезагрузке, вы можете указать их порядок загрузки в файле .conf в /etc/modprobe.d (/etc/modprobe.d/alsa-base.conf по умолчанию). Например, если вы хотите, чтобы ваша выбранная звуковая карта mia(название выбрано для примера) была # 0(default):
/etc/modprobe.d/alsa-base.conf
options snd_mia index=0
options snd_hda_intel index=1
Перейдите в $ cat /proc/asound/modules, чтобы получить загруженные звуковые модули и их порядок. Этот список, как правило, все, что необходимо для того, чтобы выяснить какие звуковые устройства загружены. Используйте $ lsmod | grep snd, чтобы получить список устройств и модулей. Эта конфигурация предполагает, что у вас одна внешняя звуковая карта Mia (имя snd_mia) и одна (например встроенная) карта с именем snd_hda_intel.
Вы также можете указать значение -2 чтобы ALSA никогда не использовала эту карту в качестве основной. Такие дистрибутивы, как Linux Mint и Ubuntu используют предыдущий параметр, для того чтобы несовместимые USB устройства и несовместимые драйвера не назначались в качестве устройства вывода звука по умолчанию # 0(default):
/etc/modprobe.d/alsa-base.conf
options bt87x index=-2
options cx88_alsa index=-2
options saa7134-alsa index=-2
options snd-atiixp-modem index=-2
options snd-intel8x0m index=-2
options snd-via82xx-modem index=-2
options snd-usb-caiaq index=-2
options snd-usb-ua101 index=-2
options snd-usb-us122l index=-2
options snd-usb-usx2y index=-2
options snd-pcsp index=-2
options snd-usb-audio index=-2
После внесения изменений перезагрузите компьютер.
Выбор PCM по умолчанию через командную строку
Этот способ не требует прав администратора, изменения делаются от имени простого пользователя, и вступают в силу сразу после перезапуска приложения.
Возможно этого будет достаточно, для того чтобы установить параметр ALSA_CARD с именем вашего устройства. Во-первых, получите имена звуковых карт с помощью команды aplay -l, затем установите параметр ALSA_CARD с именем, которое идет после двоеточия и перед скобками; например, если у вас:
card 1: HDMI [HDA ATI HDMI], device 3: HDMI 0 [HDMI 0]
то ALSA_CARD = HDMI.
В файле /usr/share/alsa/alsa.conf содержится список настроек, которые alsa применяет по умолчанию. Он может быть переписан в файл ~/.asoundrc:
~/.asoundrc
pcm.!default {
type hw
card 1
device 0
}
ctl.!default {
type hw
card 1
device 0
}
Опции 'pcm' определяют какая именно карта будет использоваться для воспроизведения звука. В свою очередь опция 'ctl' определяют какую карту будут использовать программы управления, такие как alsamixer, amixer итп.
/usr/share/alsa/alsa.conf
Variable name # Definition
ALSA_CARD # pcm.default pcm.hw pcm.plughw ctl.sysdefault ctl.hw rawmidi.default rawmidi.hw hwdep.hw
ALSA_CTL_CARD # ctl.sysdefault ctl.hw
ALSA_HWDEP_CARD # hwdep.default hwdep.hw
ALSA_HWDEP_DEVICE # hwdep.default hwdep.hw
ALSA_PCM_CARD # pcm.default pcm.hw pcm.plughw
ALSA_PCM_DEVICE # pcm.hw pcm.plughw
ALSA_RAWMIDI_CARD # rawmidi.default rawmidi.hw
ALSA_RAWMIDI_DEVICE # rawmidi.default rawmidi.hw
Кроме того, вы можете переопределить поведение звукового устройства в собственном файле конфигурации, предпочтительно изменять основной файл конфигурации, так как он используется системой по умолчанию (/etc/asound.conf). Добавить:
pcm.!default {
type plug
slave.pcm {
@func getenv
vars [ ALSAPCM ]
default "hw:Audigy2"
}
}
В этом случае, вы можете заменить Audigy2 с на имя вашего устройства. Вы можете получить имена ваших звуковых устройств командой aplay -l или вы можете также использовать PCM как surround5.1. Но если вам нужно использовать микрофон, выберите полнодуплексный режим PCM по умолчанию.
Теперь ваша звуковая карта, автоматически станет устройством вывода звука при запуске программы по умолчанию, просто измените переменную ALSAPCM. Этот способ также отлично работает для всех программ, которые не позволяют выбрать звуковую карту, для остальных убедитесь, что ваша карта используется по умолчанию. Например, предположим, что вы установили downmix микширование PCM с 5.1 до 2.0 (mix51to20) вы можете использовать это устройство с mplayer используя команду ALSAPCM = mix51to20 MPlayer example_6_channel.wav
Примечание: Обратите внимание на тип default при адресации.
Альтернативный метод
Совет: Этот процесс может быть частично автоматизирован с использованием asoundconfAUR.
Во-первых, вам придется узнать идентификатор устройства, который вы хотите использовать по умолчанию:
$ aplay -l
**** List of PLAYBACK Hardware Devices ****
card 0: Intel [HDA Intel], device 0: CONEXANT Analog [CONEXANT Analog]
Subdevices: 1/1
Subdevice #0: subdevice #0
card 0: Intel [HDA Intel], device 1: Conexant Digital [Conexant Digital]
Subdevices: 1/1
Subdevice #0: subdevice #0
card 1: JamLab [JamLab], device 0: USB Audio [USB Audio]
Subdevices: 1/1
Subdevice #0: subdevice #0
card 2: Audio [Altec Lansing XT1 - USB Audio], device 0: USB Audio [USB Audio]
Subdevices: 1/1
Subdevice #0: subdevice #0
Внимание: Установив type hw, как карта по умолчанию равно решению оборудования использовать его напрямую, что делает устройство недоступным для других приложений. Этот метод рекомендуется если она является частью более сложной настройки ~/.asoundrc или если пользователь намеренно хочет обратиться к звуковой карте напрямую (цифровой выход через eic958 или выделенный музыкальный сервер). Например, последняя строка в этом списке карта с ID 2(card 2) и идентификатор устройства 0(device 0). Чтобы установить эту карту по умолчанию, вы можете использовать либо общесистемный файл /etc/asound.conf либо файл конкретного пользователя ~/.asoundrc . Вы можете создать файл, если он не существует. Затем вставьте следующие строки с выбранной картой:
pcm.!default {
type hw
card 2
}
ctl.!default {
type hw
card 2
}
Примечание: Для серии Asus U32U, ID карты должен быть установлен в 1 для параметра pcm и ctl.
В большинстве случаев рекомендуется использовать имя звукового устройства вместо цифрового обозначения, которое также решит проблему порядка загрузки. Поэтому данный вариант будет правильным для приведенного выше примера:
pcm.!default {
type hw
card Audio
}
ctl.!default {
type hw
card Audio
}
Чтобы получить правильные имена карт ALSA, используйте команду aplay:
$ aplay -l | awk -F \: '/,/{print $2}' | awk '{print $1}' | uniq
PCH
В качестве альтернативы команда cat, которая может показать неиспользуемые устройства:
$ cat /proc/asound/card*/id
PCH
ThinkPadEC
Примечание: Этот метод может быть проблемным, если ваша система имеет несколько звуковых карт с одинаковыми именами (ALSA).
Опция 'pcm', показывает какие карты будут использоваться для воспроизведения аудио, в то время как опция 'ctl' показывает какая карта используется для управления alsamixer и другими утилитами.
Изменения должны вступить в силу, после перезапуска приложения (MPlayer и т.д.). Вы также можете проверить с помощью следующей команды aplay:
$ aplay -D default your_favourite_sound.wav
Проверка загрузки звуковых драйверов
Вы можете считать, что udev сам определит ваше звуковое устройство. Вы можете проверить это с помощью команды:
$ lsmod | grep '^snd' | column -t
snd_hda_codec_hdmi 22378 4
snd_hda_codec_realtek 294191 1
snd_hda_intel 21738 1
snd_hda_codec 73739 3 snd_hda_codec_hdmi,snd_hda_codec_realtek,snd_hda_intel
snd_hwdep 6134 1 snd_hda_codec
snd_pcm 71032 3 snd_hda_codec_hdmi,snd_hda_intel,snd_hda_codec
snd_timer 18992 1 snd_pcm
snd 55132 9 snd_hda_codec_hdmi,snd_hda_codec_realtek,snd_hda_intel,snd_hda_codec,snd_hwdep,snd_pcm,snd_timer
snd_page_alloc 7017 2 snd_hda_intel,snd_pcm
Если предыдущие строчки похожи на ваши, значит звуковые устройства были успешно обнаружены.
Примечание: Если версия udev>= 171, модули эмуляции OSS ( snd_seq_oss, snd_pcm_oss, snd_mixer_oss ) не загружаются по умолчанию загрузите их вручную, если они необходимы.
Вы также можете проверить каталог /dev/snd/ для проверки обнаруженных устройств:
$ ls -l /dev/snd
total 0
crw-rw---- 1 root audio 116, 0 Apr 8 14:17 controlC0
crw-rw---- 1 root audio 116, 32 Apr 8 14:17 controlC1
crw-rw---- 1 root audio 116, 24 Apr 8 14:17 pcmC0D0c
crw-rw---- 1 root audio 116, 16 Apr 8 14:17 pcmC0D0p
crw-rw---- 1 root audio 116, 25 Apr 8 14:17 pcmC0D1c
crw-rw---- 1 root audio 116, 56 Apr 8 14:17 pcmC1D0c
crw-rw---- 1 root audio 116, 48 Apr 8 14:17 pcmC1D0p
crw-rw---- 1 root audio 116, 1 Apr 8 14:17 seq
crw-rw---- 1 root audio 116, 33 Apr 8 14:17 timer
Если у вас есть по крайней мере одно устройство controlC0 и pcmC0D0p или аналогичные, то ваши звуковые модули были обнаружены и загружены правильно.
Если это не так, ваши звуковые модули не были должным образом обнаружены. Чтобы решить эту проблему, вы можете попытаться загрузить модули вручную:
Найдите модуль для вашей звуковой карты: ALSA звуковой карты Matrix Модуль будет начинаться с 'snd-' (например: SND-via82xx).
Загрузите модуль.
Проверьте наличие файлов устройств в /dev/snd или попробуйте через команду alsamixer или amixer - должны появиться ваши устройства вывода звука.
Настройка S/PDIF выхода
S/PDIF или S/P-DIF — расшифровывается как Sony/Philips Digital Interface (или Interconnect) Format (описано также как IEC 958 type II в международном стандарте IEC-60958). Является совокупностью спецификаций протокола низкого уровня и аппаратной реализации, описывающих передачу цифрового звука между различными компонентами аудиоаппаратуры. При описании S/PDIF необходимо описать как физическую часть (то есть, собственно, каким образом сигнал передаётся и по чему), так и программную часть (то есть используемый протокол).
S/PDIF представляет собой цифровой аудио интерфейс часто используется для подключения компьютера к цифровому усилителю (таких как домашний кинотеатр с 5.1/7.1 объемного звука).
Примечание: В некоторых звуковых картах отключается аналоговый выход звука (например Audigy2).
В зависимости от того, что за shell вы используете, добавьте следующую строку в файл конфигурации вашего shell:
amixer -c 0 cset name='IEC958 Playback Switch' on
Вы можете увидеть имя вашего цифрового выхода:
$ amixer scontrols
................................................................................
................................................................................
Высокое качество пере дискретизации
Если включается программное микширование, ALSA реассемблирует все к частоте 48 кГц (48 кГц по умолчанию, если поддерживается). По умолчанию, ALSA использует speexrate конвертер, если его нет ALSA использует низкокачественную линейную интерполяцию. Таким образом, если вы слышите плохое качество звука из-за плохой пере дискретизации, проблема может быть решена, просто - установите alsa-plugins пакет.
Для еще более высокого качества интерполяции, вы можете изменить значение частоты преобразования по умолчанию speexrate_medium или speexrate_best. Оба параметра выполняются достаточно хорошо, так что на практике не имеет значения, что вы выберете, так что использование более качественного конвертера, как правило, требует дополнительных вычислительных мощностей микропроцессора.
Чтобы изменить конвертор по умолчанию внесите изменения в следующие файлы ~/.asoundrc или /etc/asound.conf:
/etc/asound.conf
defaults.pcm.rate_converter "speexrate_medium"
Примечание: Можно также использовать libsamplerate конвектор, который быстрее, чем speexrate конвектор, но не достигают высокого качества звука.
Примечание: Можно также использовать lavcrate resamplers которые используют FFmpeg типоразмеров Фильтр lavcrate_faster: 4 lavcrate_fast: 8
lavcrate: 16 lavcrate_high: 32 lavcrate_higher: 64 с последним 2 варианта равна KODI resamplers низкого и среднего качества, соответственно.
Примечание: Некоторые приложения например, MPlayer используют свой конвертер для пере дискретизации по умолчанию, поскольку некоторые драйвера ALSA имеют неправильный параметр задержки при реассемблировании (ведет к AV рас синхронизации), изменение этого параметра не будет иметь никакого эффекта, если не настроено их использование в ALSA.
Upmixing микширование
Для того, чтобы из стереофонических источников, таких как музыка, получить 5.1 или 7.1 звуковую систему, необходимо использовать upmixing микширование. Раньше этот метод создавал проблемы и был подвержен ошибкам, но в настоящее время существующие модули легко справляются со своей задачей. Мы будем использовать плагин upmix, включенный в состав пакета alsa-plugins.
Добавьте следующие строчки в ваш файл конфигурации ALSA /etc/asound.conf или ~/.asoundrc:
pcm.upmix71 {
type upmix
slave.pcm "surround71"
delay 15
channels 8
}
Вы можете легко изменить этот пример upmixing микширования для 5,1 или 4,0 звука.
Следующий пример добавляет новый канал PCM, который можно использовать для upmixing микширования. Если вы хотите, чтобы все источники звука, направлялись через этот канал, добавите его в качестве канала по умолчанию:
pcm.dmix6 {
type asym
playback.pcm {
type dmix
ipc_key 567829
slave {
pcm "hw:0,0"
channels 6
}
}
}
и используйте "dmix6" вместо "surround71". Если вы слышите некачественный звук, рассмотрите вопрос об увеличении buffer_size (32768, например) или используйте высококачественный resampler.
Downmixing микширование
Если вы хотите, чтобы ваш звук микшировался в стерео. Например, хотите, чтобы фильм с звуковой дорожкой 5.1 был в 2.0. Используйте vdownmix плагин, включенных в пакет alsa-plugins.
Опять же, в конфигурационном файле, добавьте это:
pcm.!surround51 {
type vdownmix
slave.pcm "default"
}
pcm.!surround40 {
type vdownmix
slave.pcm "default"
}
Dmix
Функция микширования, позволяет нескольким приложениям использовать устройство вывода звука одновременно. Большинство дискретных звуковых карт поддерживают аппаратное микширование, эта функция включена по умолчанию, если доступна. Интегрированные звуковые карты в материнские платы (такие как Intel HD Audio), как правило, не поддерживают аппаратное микширование. На таких картах, выполняется программное микширование с помощью плагина ALSA называемого dmix. Эта функция включается автоматически, если аппаратное микширование недоступно.
Примечание: DMIX включена по умолчанию для звуковых карт, которые не поддерживают аппаратное микширование. DMIX не включена по умолчанию для цифрового выхода (S/PDIF) и для своей активации требует изменений в вашем файле конфигурации.
Для ручного включения DMIX, добавьте следующие строки в файл конфигурации ALSA:
/etc/asound.conf
pcm.dsp {
type plug
slave.pcm "dmix"
}
Ссылки на источники, редакция моя:
https://wiki.archlinux.org/index.php/User:Zunguguzunguzeng/ALSAhttps://wiki.archlinux.org/index.php/Advanced_Linux_Sound_Architecture
Просьба ознакомиться с Правилами форума.Правила форума
1. Основные положения
1.4. Листинги и содержимое текстовых файлов следует добавлять в сообщение с помощью тега [spоiler]...[/spоiler], либо прикреплять к сообщению в виде отдельного файла.
Как видите - не очень читаются ПРОСТЫНИ...
Не вникал, раскидал под спойлеры, если что то не так - подправьте.
И да, знаки препинания (Вам их давали ниже ) расставил, если что то не так - подправьте.
-- it0r