Sound system (Русский)
Состояние перевода: На этой странице представлен перевод статьи Sound system. Дата последней синхронизации: 8 августа 2020. Вы можете помочь синхронизировать перевод, если в английской версии произошли изменения.
Эта статья рассказывает о базовом управлении звуком. Для получения информации о более сложных темах см. статью Профессиональное аудио.
Общие сведения
Звуковая система Arch Linux состоит из нескольких уровней:
- Драйверы и интерфейс — поддержка и взаимодействие с аппаратным обеспечением
- Usermode API (библиотеки) — требуются и используются приложениями
- (опционально) Звуковые серверы в пользовательском режиме — находят лучшее применение в сложных системах, требующих одновременной работы нескольких аудиоприложений и незаменимы для более продвинутых возможностей, например, профессионального аудио.
- (опционально) Звуковые фреймворки — более высокоуровневые программные окружения, не связанные с серверными процессами
Базовая установка Arch Linux включает в себя звуковую систему ядра (ALSA), также можно установить множество утилит для управления ALSA из официальных репозиториев. Если требуются дополнительные возможности, вы можете сменить его на OSS или выбрать другой звуковой сервер.
Драйверы и интерфейс
- ALSA — компонент ядра Linux, содержащий драйверы устройств и обеспечивающий наиболее низкоуровневую поддержку звукового аппаратного обеспечения.
- Open Sound System (OSS) — альтернативная звуковая архитектура для Unix- и POSIX-совместимых систем. OSS 3-ей версии была основной звуковой системой Linux и включалась в ядро, но была заменена на ALSA в 2002 году, когда 4-ая версия OSS стала проприетарным ПО. OSSv4 вновь стала свободным ПО в 2007, когда 4Front Technologies опубликовали её исходные коды и разместили их под лицензией GPL. OSS не поддерживает такое же множество устройств как ALSA, но в некоторых случаях работает лучше.
Звуковые серверы
- PulseAudio — очень популярный звуковой сервер, использующийся большинством современных приложений для Linux. Очень хорошо работает с несколькими одновременными потоками аудио и может использоваться по сети. Также PulseAudio легко настраивается — зачастую достаточно только установить пакет.
The factual accuracy of this article or section is disputed.
Reason: Описание JACK и JACK2 может быть некорректным согласно FAQ: what are the differences between JACK 1 and JACK2 (англ.), где сказано, что: «Jack 1 и Jack 2 — одинаковые реализации одного протокола». Также в FAQ рассматривается следующий вопрос: «Почему я должен предпочитать одно другому? Для большинства людей нет никакой разницы. Для других же обычно существует одна-две возможности, которые и влияют на выбор». См. FAQ (англ.) для получения более подробной информации. (Discuss in Talk:Sound system (Русский))
- JACK Audio Connection Kit — более старая редакция звукового сервера, используемая в профессиональной работе со звуком, особенно когда требуется быстрый отклик при работе с записью, эффектами, синтезом в реальном времени и так далее. Хотя эта редакция и является старой, она сохраняет группу активных и преданных разработчиков, а многие проблемы удаётся решить путём проб и ошибок.
- JACK2 — новая версия JACK, разработанная непосредственно для работы в мультипроцессорных системах и также включающая передачу данных по сети.
- NAS — звуковой сервер, поддерживаемый некоторыми крупными приложениями.
Смотрите также
User : Zunguguzunguzeng/ALSA
Advanced Linux Sound Architecture (ALSA) это компонент ядра, призванный заменить оригинальную Open Sound System (OSSv3) в предоставлении драйверов звуковым картам. Помимо драйверов звуковых устройств, ALSA также включает в себя пользовательскую библиотеку для разработчиков приложений, которые хотели бы использовать возможности драйвера с API более высокого уровня чем простое взаимодействие с драйвером ядра.
Установка
ALSA уже включена в ядро Арча по умолчанию, как набор модулей, так что в установке нет необходимости.
udev автоматически проверит оборудование, загрузив соответствующий вашей звуковой карте модуль ядра. Так что звук уже должен работать, просто по умолчанию все каналы заглушены.
Пользователи должны состоять в группе audio, чтобы воспроизводить звук с помощью ALSA. Для добавления пользователя в группу audio можно воспользоваться следующей командой:
# gpasswd -a yourusername audio
Пользовательские утилиты
Пакет alsa-utils включает в себя программу alsamixer, которая позволяет настраивать звук из консоли, или терминала. Устанавливается с помощью pacman:
Установите пакет alsa-oss если хотите, чтобы ваши OSS-приложения работали с dmix (software mixing):
Note: С версии udev>=171 , модули эмуляции OSS ( snd_seq_oss, snd_pcm_oss, snd_mixer_oss ) не загружаются автоматически по умолчанию.
Установите пакет alsa-plugins, если вам нужны high quality resampling, upmixing/downmixing и другие дополнительные программы:
Включение каналов
Текущая версия ALSA устанавливается с заглушенными по умолчанию каналами. Включать каналы нужно вручную.
Для этого прекрасно подойдёт alsamixer (сделанный в ncurses) (либо можно использовать amixer из командной строки):
Буквы «MM» под обозначением канала говорят о том, что канал заглушен, а «00» о том, что включен.
Включите каналы Master и PCM с помощью стрелок на клавиатуре, и клавиши M . Используйте клавишу ↑ , и увеличьте громкость, чтобы gain стал 0dB (его уровень можно увидеть левом верхнем углу: Item: Master [dB gain: 0,00, 0,00] ). Больший уровень gain может стать причиной искажений и шума.
Для 5.1 или 7.1 surround надо включить остальные каналы, такие как: Front, Surround, Center, LFE (subwoofer) и Side (это названия каналов Intel HD Audio, для других карточек они могут отличаться). Здесь надо заметить, что таким образом качество обычного стерео повышено не будет (как повысить качество читай #Upmixing/Downmixing).
Выход из alsamixer осуществляется кнопкой Esc .
Note: У некоторых карточек должен быть выключен digital output, чтобы услышать аналоговый звук. Для Soundblaster Audigy LS надо отключать IEC958 channel.
Note: У некоторых машин, (таких как Thinkpad T61), есть канал Speaker, его нужно включить и прибавить.
Дальше проверка, как работает/не работает звук:
Измените Change -c в соответствии со своей аудиосистемой. Для системы 7.1 используйте -c 8:
Если не работает, читайте #Настройка и #Поиск проблем, чтобы разобраться.
Если всё получилось, то осталось лишь сохранить настройки микшера:
# alsactl -f /var/lib/alsa/asound.state store
Этой командой создаётся файл /var/lib/alsa/asound.state , содержащий установки alsamixerа.
Потом добавьте демон alsa в секцию DAEMONS файла /etc/rc.conf , чтобы микшер автоматически восстанавливал значения при загрузке:
Note: демон alsa просто восстанавливает настройки каналов, читая их из /var/lib/alsa/asound.state . It is separate from the alsa audio library (and kernel level API).
Настройка
Если вы так ничего не слышите, то проверьте ещё раз настройки микшера, и попробуйте запустить alsaconf от имени root:
Все необходимые модули udev должен определить и подгрузить автоматически. Особых настроек потребоваться не должно, (если только для карт ISA).
Warning: Не используйте alsaconf если у вас звуковая карта PCI или ISAPNP, так как записи в modprobe.conf, которые делает alsaconf, могут нарушить автоопределение udevа.
Установка дефолтной звуковой карты
В окружении ядра
Чтобы предотвратить конфликты другого оборудования со звуковой картой, узнайте название модели: lspci(8), и названия модулей ALSA с помощью ls:
total 0 lrwxrwxrwx 1 root root 0 Apr 25 00:56 snd_hda_codec -> ../../snd_hda_codec lrwxrwxrwx 1 root root 0 Apr 25 00:56 snd_hda_codec_realtek -> ../../snd_hda_codec_realtek lrwxrwxrwx 1 root root 0 Apr 25 00:56 snd_hda_intel -> ../../snd_hda_intel lrwxrwxrwx 1 root root 0 Apr 25 00:56 snd_hwdep -> ../../snd_hwdep lrwxrwxrwx 1 root root 0 Apr 25 00:56 snd_pcm -> ../../snd_pcm lrwxrwxrwx 1 root root 0 Apr 25 00:56 snd_timer -> ../../snd_timer
Then add the names of your sound card modules to (source[2]):
options snd slots=snd-intel8x0
These entries ensure that the Intel 82801DB-ICH4 sound card will become card 0 and the PC speaker will become card 1.
Note: You will need to unload all your sound modules and reload them for the changes to take effect. It might be easier to reboot. Your choice.
Note: This method will NOT work if the conflicting devices use the same module. If you would prefer to not configure sound on a per user basis as in the section below, you can directly modify /usr/share/alsa/alsa.conf . For example, replace all «card 0» with «card 1» .
Пользовательский способ
Этот способ не требует прав администратора, изменения делаются от имени простого пользователя, и вступают в силу сразу после перезапуска приложения.
В файле /usr/share/alsa/alsa.conf содержится список настроек, которые alsa применяет по умолчанию. Он может быть переписан в файл ~/.asoundrc .
Опции ‘pcm’ определяют какая именно карта будет использоваться для воспроизведения звука. В свою очередь опции ‘ctl’ определяют какую карту будут использовать программы управления, такие как alsamixer, amixer итп.
Чтобы выяснить какие цифры какое устройство обозначают, используйте aplay -l .
$ 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
Как узнать, загрузились ли модули
Допустим, что 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
Если вывод команды схож с приведённым выше, значит звуковые драйвера успешно определились.
Note: Начиная с udev>=171 , OSS модули ( snd_seq_oss, snd_pcm_oss, snd_mixer_oss ) не загружаются по умолчанию, это надо сделать вручную: modprobe и/или добавьте их в секцию MODULES , в /etc/rc.conf , если необходимо.
Вам также возможно захочется заглянуть в папку /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 Soundcard Matrix, перед названием модуля нужно поставить ‘snd-‘ (например: ‘snd-via82xx’).
- Загрузите модули:
- Сверьтесь с файлами устройств в /dev/snd (см. выше) and/or try if alsamixer or amixer have reasonable output.
- Add snd-NAME-OF-MODULE and snd-pcm-oss to the list of MODULES in /etc/rc.conf to ensure they are loaded next time (make sure snd-NAME-OF-MODULE is before snd-pcm-oss).
- This page was last edited on 29 November 2017, at 18:46.
- Content is available under GNU Free Documentation License 1.3 or later unless otherwise noted.
- Privacy policy
- About ArchWiki
- Disclaimers