Продвинутая звуковая архитектура Linux
![]() Скриншот Alsamixer 1.0.14 | |
Оригинальный автор(ы) | Ярослав Кисела [1] |
---|---|
Разработчик(и) | команда АЛСА [2] |
Первоначальный выпуск | 1998 год |
Стабильная версия | 1.2.12 [3] / 10 июня 2024 г |
Написано в | С [4] |
Операционная система | Линукс |
Тип | |
Лицензия | |
Веб-сайт | Alsa-проект |


Advanced Linux Sound Architecture ( ALSA ) — это программная платформа и часть ядра Linux , которая предоставляет интерфейс прикладного программирования (API) для звуковой карты драйверов устройств .
Некоторыми целями проекта ALSA на момент его создания были автоматическая настройка оборудования звуковой карты и корректное управление несколькими звуковыми устройствами в системе. ALSA выпускается под лицензией GPL-2.0 или более поздней версии и LGPL-2.1 или более поздней версии . [5]
В Linux звуковые серверы, такие как sndio , PulseAudio , JACK (редактирование и микширование звука профессионального уровня с низкой задержкой) и PipeWire , а также API более высокого уровня (например, OpenAL , SDL audio и т. д.) работают поверх ALSA и его звука. драйверы карточных устройств. ALSA пришла на смену старому порту Open Sound System (OSS) для Linux.
История
[ редактировать ]Проект по разработке ALSA возглавлял Ярослав Кисела и был основан на драйвере устройства Linux для звуковой карты Gravis Ultrasound . Он начался в 1998 году и разрабатывался отдельно от ядра Linux, пока не был представлен в серии разработки 2.5 в 2002 году (2.5.4–2.5.5). [6]
В версии 2.6 она заменила предыдущую систему Open Sound System (OSS) по умолчанию (хотя уровень обратной совместимости существует). [7]
ALSA имеет более крупный и сложный API, чем OSS, поэтому может быть сложнее разработать приложение, использующее ALSA в качестве звуковой технологии. Хотя ALSA можно настроить для обеспечения уровня эмуляции OSS, такая функциональность больше не доступна или не устанавливается по умолчанию во многих дистрибутивах Linux.
Функции
[ редактировать ]ALSA была разработана с некоторыми функциями, которые на момент ее создания не поддерживались OSS:
- Аппаратный MIDI- синтез.
- Аппаратное микширование нескольких каналов.
- Полнодуплексный режим.
- Многопроцессорные и потокобезопасные драйверы устройств.
Помимо драйверов звуковых устройств, ALSA включает в себя пользовательского пространства библиотеку для разработчиков приложений, которые хотят использовать функции драйверов через интерфейс более высокого уровня, чем интерфейс, предоставляемый для прямого взаимодействия с драйверами ядра. В отличие от API ядра, который пытается напрямую отражать возможности оборудования, библиотека пользовательского пространства ALSA представляет собой абстракцию, которая остается максимально стандартизированной для разрозненных базовых элементов оборудования. Эта цель частично достигается за счет использования программных плагинов ; например, многие современные звуковые карты или встроенные звуковые чипы не имеют регулятора «основной громкости». Вместо этого для этих устройств библиотека пользовательского пространства обеспечивает программный контроль громкости с использованием подключаемого модуля « softvol », и обычному прикладному программному обеспечению не нужно заботиться о том, реализуется ли такой контроль с помощью базового оборудования или программной эмуляции такого базового оборудования.
Приложения
[ редактировать ]В дополнение к программной среде, внутренней для ядра Linux, проект ALSA также предоставляет инструменты командной строки. [8] [9] [10] и коммунальные услуги [11] alsactl
, [12] amixer
, [13] arecord/aplay
и alsamixer
, [13] TUI ncurses основе на .
Также существуют графические интерфейсы, запрограммированные сторонними разработчиками , например GNOME-ALSAmixer. [14] (с использованием GTK ), Kmix, [14] XFCE4-микшер, LXpanel, QasHctl, QasMixer, Pavucontrol, AconnectGUI, [15] тапир, [15] белый медведь, [15] ALSAmixerGUI [16] (с использованием FLTK ), ZynAddSubFX , Yoshimi и даже других.
Концепции
[ редактировать ]В этом разделе представлен обзор основных концепций, касающихся ALSA. [17] [18] [19]
Обычно ALSA поддерживает до восьми карт с номерами от 0 до 7; каждая карта представляет собой физическое или логическое устройство ядра, способное осуществлять ввод и вывод. Кроме того, к каждой карте также можно обращаться по ее идентификатору , который представляет собой поясняющую строку, например « Гарнитура » или « ICH 9 ».
На карте есть устройства , пронумерованные начиная с 0; устройство может быть типа воспроизведения , то есть оно выводит звук с компьютера, или устройства другого типа, например захвата , управления , таймера или секвенсора ; [20] номер устройства 0 используется по умолчанию, если не указано конкретное устройство.
Устройство может иметь подустройства , пронумерованные начиная с 0; субустройство представляет собой некоторую соответствующую конечную звуковую точку для устройства, например пару динамиков. Если субустройство не указано или если указан номер субустройства -1, то используется любое доступное субустройство.
карты Интерфейс — это описание протокола ALSA для доступа к карте; возможные интерфейсы включают: hw , plughw , default и plug:dmix . Интерфейс hw обеспечивает прямой доступ к устройству ядра, но не поддерживает программное микширование или адаптацию потока. Plughw интерфейс и default включают вывод звука, когда HW выдает ошибку.
Приложение обычно описывает вывод звука путем объединения всех вышеупомянутых характеристик в строку устройства. [ нужна ссылка ] , который имеет одну из следующих форм (с учетом регистра ):
- интерфейс:карта,устройство,подустройство
- интерфейс: КАРТА=1,DEV=3,SUBDEV=2 .
ALSA Поток — это поток данных, представляющий звук; наиболее распространенным форматом потока является PCM , который должен быть создан таким образом, чтобы соответствовать характеристикам или параметрам оборудования, включая:
- Частота дискретизации : часто 44,1 кГц в домашних стереосистемах или 48 кГц в домашних кинотеатрах, но до 88,2 кГц, 96 кГц или даже 192 кГц для производства или воспроизведения высококачественного звука.
- ширина выборки : измеряется в некотором количестве бит на выборку (например, 8, 16, 24 или 32 бита на выборку).
- пример кодировки : например, порядок байтов
- количество каналов : 1 для моно, 2 для стерео или 6 для AC-3 / IEC958.
Реализации
[ редактировать ]Уровень системы на кристалле ALSA (ASoC) призван обеспечить лучшую поддержку ALSA во встроенных системах , использующих конструкцию «система на кристалле» (SoC). [21]
Версия 4 Open Sound System способна эмулировать ALSA. [22]
QNX использует звуковую систему, созданную на основе ALSA, но не совместимую напрямую с ней. Имена заголовочных файлов и библиотек по-прежнему «звучны», как и имена ALSA. [23] ALSA API использует ioctl() вызывает способом, не разрешенным в ядре QNX. [24]
См. также
[ редактировать ]- Открытая звуковая система
- ДССИ
- удев
- Комплект аудиоподключения JACK
- КМид
- ЛАДСПА
- ПульсАудио
- Альсамиксер
- ТрубаПроволока
Ссылки
[ редактировать ]- ^ "Ярослав Кисела - Perex soft" .
- ^ Команда Alsa , alsa-project.org, 29 сентября 2008 г. , получено 8 января 2012 г.
- ^ "Главная страница новостей - AlsaProject" . 10 июня 2024 г. Проверено 11 июня 2024 г.
- ^ «ALSA» , Сводка анализа , Ohloh , заархивировано из оригинала 20 декабря 2013 г. , получено 8 января 2012 г.
- ^ Jump up to: а б "Введение" . alsa-project.org . Проверено 8 января 2012 г.
- ^ Примечания к выпуску Linux 2.5.5 , получены 8 января 2012 г.
- ^ Эмуляция OSS , заархивировано из оригинала 5 июня 2012 г. , получено 7 июля 2012 г.
- ^ «Алса-проект/Алса-инструменты» . Гитхаб . 3 апреля 2022 г.
- ^ «Alsa-инструменты — ALSA wiki» . alsa.opensrc.org . Архивировано из оригинала 18 марта 2008 года . Проверено 12 января 2022 г.
- ^ «Информация о пользователе ALSA — AlsaProject» .
- ^ «Алса-Утилитс» . Гитхаб . 4 мая 2022 г.
- ^ «Категория:Alsa-utils — ALSA wiki» . alsa.opensrc.org . Архивировано из оригинала 18 марта 2008 года . Проверено 12 января 2022 г.
- ^ Jump up to: а б «Как использовать утилиты ALSA для управления звуком Linux через терминал» . 14 мая 2018 г.
- ^ Jump up to: а б «AlsaMixers — ALSA wiki» . alsa.opensrc.org . Архивировано из оригинала 4 апреля 2008 года . Проверено 12 января 2022 г.
- ^ Jump up to: а б с бур, Мартен де. "домашняя страница Мартена" . iua.upf.es. Архивировано из оригинала 4 сентября 2006 г. Проверено 18 июля 2021 г.
на этой странице будет список моих проектов, но сначала мне нужно кое-что почистить. на данный момент используйте следующие ссылки или просмотрите FTP: Tapiir, alsamixergui, aconnectgui, Polarbear
- ^ Бур, Мартен де. «АлсаМиксерГуй» . Группа музыкальных технологий . Барселона: Университет Помпеу Фабра. Архивировано из оригинала 5 февраля 2009 г. Проверено 18 июля 2021 г.
alsamixergui — это интерфейс для alsamixer на основе FLTK. Он написан непосредственно поверх исходного кода alsamixer, оставляя исходный исходный код нетронутым, добавляя только пару ifdef и несколько вызовов графического интерфейса, поэтому он обеспечивает точно такую же функциональность, но с графическим пользовательским интерфейсом. (Исследователь, 1999-2010 гг.)
- ^ Трантер, Джефф (октябрь 2004 г.), «Введение в звуковое программирование с помощью ALSA» , Linux Journal , получено 8 января 2012 г.
- ^ Филлипс, Дэйв (июнь 2005 г.), «Руководство пользователя по ALSA» , Linux Journal , заархивировано из оригинала 09 января 2012 г. , получено 8 января 2012 г.
- ^ Документация Doxygen по библиотеке Alsa C , октябрь 2007 г. , получено 8 января 2012 г.
- ^ «Проект ALSA — справочник библиотеки C: интерфейс секвенсора» . www.alsa-project.org . Проверено 30 апреля 2019 г.
- ^ Уровень SoC ALSA , kernel.org , 13 июля 2017 г.
- ^ «Советы и рекомендации — открытая звуковая система» . ossnext.trueinstruments.com .
- ^ «Аудиоархитектура (QNX 6.4.1)» . www.qnx.com .
- ^ «ALSA и libasound.so» . www.qnx.com .
Внешние ссылки
[ редактировать ]- Официальный сайт
- Констебль, Марк. «Альса ВИКИ» . AlsaOpensrcOrg . Архивировано из оригинала 29 марта 2002 года . Проверено 18 июля 2021 г.
Некоторые из причин, по которым этот сайт продолжает существовать, заключаются в том, что никто с официального сайта ALSA никогда ничего не вносил на этот сайт (до того, как появился официальный сайт, этот сайт появился на несколько лет раньше официальной вики), никто официально или официально предложили слияние, никто больше не проявил серьезного интереса к тому, чтобы помочь им объединиться, и, что наиболее важно, существует значительное количество внешних ссылок и посещений Google, которые приходят непосредственно на этот сайт, потому что он существует здесь уже так долго.
Пользовательский режим | Пользовательские приложения | bash , LibreOffice , GIMP , Blender , 0 AD , Mozilla Firefox , ... | ||||
---|---|---|---|---|---|---|
Компоненты системы | демон инициализации : OpenRC , runit , systemd ... | Системные демоны : polkitd , smbd , sshd , udevd ... | Оконный менеджер : X11 , Wayland , SurfaceFlinger (Android) | Графика : Меса , катализатор AMD , ... | Другие библиотеки: GTK , Qt , EFL , SDL , SFML , FLTK , GNUstep , ... | |
Стандартная библиотека C | fopen , execv , malloc , memcpy , localtime , pthread_create ... (до 2000 подпрограмм ) glibc стремится быть быстрым, musl стремится быть легким, uClibc нацелен на встраиваемые системы, bionic написан для Android и т. д. Все стремятся быть POSIX / SUS -совместимыми. | |||||
Режим ядра | Ядро Linux | stat , splice , dup , read , open , ioctl , write , mmap , close , exit и т. д. (около 380 системных вызовов) ядра Linux Интерфейс системных вызовов (SCI) должен быть POSIX / SUS -совместимым. [1] | ||||
планирования процессов Подсистема | IPC Подсистема | управления памятью Подсистема | виртуальных файлов Подсистема | Сетевая подсистема | ||
Другие компоненты: ALSA , DRI , evdev , klibc , LVM , устройство отображения устройств , сетевой планировщик Linux , Netfilter. Модули безопасности Linux : SELinux , TOMOYO , AppArmor , Smack | ||||||
Аппаратное обеспечение ( ЦП , основная память , устройства хранения данных и т. д.) |
- ^ «Руководство администратора README» . Git-репозитории Kernel.org .