고도의 Linux 사운드 아키텍처
Advanced Linux Sound Architecture![]() Alsamixer 1.0.14 스크린샷 | |
원저작자 | 야로슬라프 키셀라[1] |
---|---|
개발자 | ALSA팀[2] |
초기 릴리즈 | 전( |
안정된 릴리스 | 1.2.7[3] / 2022년 5월 ; 전 ( ) |
기입처 | C[4] |
운영 체제 | 리눅스 |
유형 | |
면허증. | |
웹 사이트 | alsa-project |

Advanced Linux Sound Architecture(ALSA)는 소프트웨어 프레임워크로 사운드 카드 디바이스 드라이버용 Application Programming Interface(API; 응용 프로그램프로그래밍 인터페이스)를 제공하는 Linux 커널의 일부입니다.
ALSA 프로젝트의 초기 목표 중 일부는 사운드 카드 하드웨어의 자동 구성과 시스템 내 여러 사운드 디바이스의 우아한 처리였습니다.ALSA는 GPL-2.0 이후 및 LGPL-2.1 [5]이후에 출시됩니다.
Linux에서는 sndio, PulseAudio, JACK(저레이텐시 프로페셔널 등급 오디오 편집 및 믹싱) 및 PipeWire 등의 사운드 서버와 고급 API(OpenAL, SDL 오디오 등)가 ALSA 및 사운드 카드 디바이스 드라이버 상에서 작동합니다.ALSA는 오픈사운드시스템(OSS)의 오래된 Linux 포트를 계승했다.
역사
ALSA 개발 프로젝트는 Jaroslav Kysela가 주도했으며 Gravis Ultrasound 사운드 카드용 Linux 장치 드라이버를 기반으로 했다.1998년에 시작되어 2002년 2.5 개발 시리즈(2.5.4~2.5.5)[6]에 도입될 때까지 Linux 커널과는 별도로 개발되었습니다.
2.6 버전에서는 이전 시스템인 OSS(Open Sound System)를 기본적으로 대체했습니다(단, 하위 호환성 계층이 존재합니다).[7]
ALSA는 OSS보다 크고 복잡한 API를 가지고 있기 때문에 ALSA를 음향기술로 사용하는 어플리케이션 개발이 어려울 수 있습니다.OSS 에뮬레이션레이어를 제공하도록 ALSA 를 설정할 수 있습니다만, 이러한 기능은 사용할 수 없게 되어, 많은 Linux 디스트리뷰션에서는 디폴트로 인스톨 되어 있지 않습니다.
특징들
ALSA는 OSS에서 지원되지 않는 몇 가지 기능을 사용하여 설계되었습니다.
사운드 디바이스 드라이버 외에 ALSA는 커널 드라이버와의 직접 상호작용을 위해 제공된 인터페이스보다 높은 수준의 인터페이스를 통해 드라이버 기능을 사용하고자 하는 애플리케이션 개발자들을 위해 사용자 공간 라이브러리를 번들합니다.하드웨어의 기능을 직접 반영하려는 커널 API와 달리 ALSA의 사용자 공간 라이브러리는 서로 다른 기본 하드웨어 요소 간에 가능한 한 표준화된 추상화를 제공합니다.이 목표는 소프트웨어 플러그인을 사용하여 부분적으로 달성됩니다. 예를 들어, 많은 최신 사운드 카드나 내장 사운드 칩에는 "마스터 볼륨" 컨트롤이 없습니다.대신 이러한 디바이스에서는 사용자 공간 라이브러리가 "소프트볼" 플러그인을 사용하여 소프트웨어 볼륨 컨트롤을 제공합니다.일반 애플리케이션 소프트웨어에서는 이러한 제어가 기본 하드웨어에 의해 구현되는지 또는 이러한 기본 하드웨어의 소프트웨어 에뮬레이션에 의해 구현되는지 여부에 신경쓸 필요가 없습니다.
적용들
ALSA 프로젝트는 Linux 커널 내부의 소프트웨어 프레임워크와 더불어 명령줄[8][9][10] 도구와[11] 유틸리티도 제공합니다. alsactl
,[12] amixer
,[13] arecord/aplay
그리고.alsamixer
ncurses 기반의 [13]TUI.
GNOME-ALSAmixer[14](GTK 사용), Kmix,[14] XFCE4-mixer, LXpanel, QasHctl, QasMixer, PavuControl, Aconnect 등의 서드파티 개발자에 의해 프로그래밍된 GUI도 있습니다.GUI,[15] tapiir,[15] polarbear,[15] ALSAmixerGUI[16](FLTK 사용), ZynAddSubFX, Yoshimi 등입니다.
개념
여기에서는 ALSA와 [17][18][19]관련된 기본 개념의 개요를 설명합니다.
일반적으로 ALSA는 0 ~7의 번호를 가진 최대 8장의 카드를 지원합니다.각 카드는 입력 및 출력이 가능한 물리 또는 논리 커널 디바이스입니다.또, 각 카드는, 「헤드 세트」나 「ICH9」등의 설명 문자열인 ID 에 의해서도 행선지가 지정됩니다.
카드에는 0부터 번호가 매겨진 디바이스가 있습니다.디바이스는 재생 타입(컴퓨터로부터의 음성을 출력하는 것을 의미), 또는 캡처, 컨트롤, 타이머, 시퀀서 [20]등 다른 타입의 디바이스일 수 있습니다.디바이스 번호0 은, 특정의 디바이스가 지정되어 있지 않은 경우에 디폴트로 사용됩니다.
디바이스에는 0부터 번호가 매겨진 서브디바이스가 있을 수 있습니다.서브디바이스는 스피커 페어 등 디바이스와 관련된 사운드엔드포인트를 나타냅니다.서브디바이스가 지정되지 않은 경우 또는 서브디바이스 번호-1이 지정되어 있는 경우 사용 가능한 서브디바이스가 사용됩니다.
카드의 인터페이스는 카드에 액세스하기 위한 ALSA 프로토콜을 기술한 것입니다.사용 가능한 인터페이스에는 hw, plughw, default 및 plug:dmix가 있습니다.hw 인터페이스는 커널 디바이스에 대한 직접 액세스를 제공하지만 소프트웨어 혼합이나 스트림 적응 지원은 제공하지 않습니다.plughw 및 default는 하드웨어 인터페이스에서 오류가 발생하는 사운드 출력을 활성화합니다.
통상, 애플리케이션에서는, 상기의 모든 사양을 디바이스 스트링으로 조합하는 것으로써, 사운드 출력을 기술합니다.디바이스[citation needed] 스트링은 다음의 몇개의 형식(대문자와 소문자가 구별됩니다).
- 인터페이스: 카드, 디바이스, 서브디바이스
- 인터페이스:CARD=1, DEV=3, SUBDEV=2.
ALSA 스트림은 사운드를 나타내는 데이터 흐름입니다.가장 일반적인 스트림 포맷은 PCM 입니다.이 포맷은 하드웨어의 특성 또는 파라미터에 일치하도록 생성되어야 합니다.다음은 예를 제시하겠습니다.
- 샘플링 레이트: 대부분의 경우 홈 스테레오에서는 44.1kHz, 홈시어터에서는 48kHz이지만 하이파이 오디오 제작 또는 재생에서는 최대 88.2kHz, 96kHz, 192kHz까지 가능합니다.
- 샘플 폭: 샘플당 일정 비트 수(8, 16, 24 또는 32비트/샘플 등)로 측정
- 부호화 예: endianness 등
- 채널 수: 모노의 경우 1, 스테레오의 경우 2, AC-3/IEC958의 경우 6
실장
ALSA System on Chip(ASoC; 시스템 온 칩) 레이어는 System-On-Chip(SoC; 시스템 온 칩)[21] 설계를 사용하는 임베디드 시스템에서 ALSA를 보다 효과적으로 지원하는 것을 목적으로 합니다.
「 」를 참조해 주세요.
레퍼런스
- ^ "Jaroslav Kysela - Perex soft".
- ^ Alsa Team, alsa-project.org, 2008-09-29, retrieved 2012-01-08
- ^ "Main Page News".
- ^ "ALSA", Analysis Summary, Ohloh, retrieved 2012-01-08
- ^ a b "Introduction". alsa-project.org. Retrieved 2012-01-08.
- ^ Linux 2.5.5 release notes, retrieved 2012-01-08
- ^ OSS Emulation, archived from the original on 2012-06-05, retrieved 2012-07-07
- ^ "Alsa-project/Alsa-tools". GitHub. 3 April 2022.
- ^ "Archived copy". alsa.opensrc.org. Archived from the original on 18 March 2008. Retrieved 12 January 2022.
{{cite web}}
: CS1 maint: 제목으로 아카이브된 복사(링크) - ^ "ALSA User Info - AlsaProject".
- ^ "Alsa-utils". GitHub. 4 May 2022.
- ^ "Archived copy". alsa.opensrc.org. Archived from the original on 18 March 2008. Retrieved 12 January 2022.
{{cite web}}
: CS1 maint: 제목으로 아카이브된 복사(링크) - ^ a b "How to Use ALSA Utilities to Manage Linux Audio from the Terminal". 14 May 2018.
- ^ a b "Archived copy". alsa.opensrc.org. Archived from the original on 4 April 2008. Retrieved 12 January 2022.
{{cite web}}
: CS1 maint: 제목으로 아카이브된 복사(링크) - ^ a b c boer, maarten de. "maarten's homepage". iua.upf.es. Archived from the original on 2006-09-04. Retrieved 18 July 2021.
this page will contain a list of my projects, but i need to clean up some things first. for now, use the following links, or browse the ftp: tapiir, alsamixergui, aconnectgui, polarbear
- ^ Boer, Maarten de. "AlsaMixerGui". Music Technology Group. Barcelona: Universitat Pompeu Fabra. Archived from the original on 2009-02-05. Retrieved 18 July 2021.
alsamixergui is a FLTK based frontend for alsamixer. It is written directly on top of the alsamixer source, leaving the original source intact, only adding a couple of ifdefs, and some calls to the gui part, so it provides exactly the same functionality, but with a graphical user interface. (Researcher, 1999-2010)
- ^ Tranter, Jeff (October 2004), "Introduction to Sound Programming with ALSA", Linux Journal, retrieved 2012-01-08
- ^ Phillips, Dave (June 2005), "A User's Guide to ALSA", Linux Journal, archived from the original on 2012-01-09, retrieved 2012-01-08
- ^ Alsa C library Doxygen documentation, October 2007, retrieved 2012-01-08
- ^ "ALSA project - the C library reference: Sequencer interface". www.alsa-project.org. Retrieved 2019-04-30.
- ^ ALSA SoC Layer, kernel.org, 2017-07-13
외부 링크
- 공식 웹사이트
- Constable, Mark. "Alsa WIKI". AlsaOpensrcOrg. Archived from the original on 29 March 2002. Retrieved 18 July 2021.
Some of the reasons this site remains in existence are, no one from the official ALSA site has ever contributed anything to this site (before the official one existed, this one predates the official wiki by quite a few years), no one has officially or formally suggested a merge, no one else has shown any serious interest in helping to merge them, and most importantly there are a significant number of offsite referers and Google hits that come directly to this site because it's been here for so long.
사용자 모드 | 사용자 응용 프로그램 | bash, LibreOffice, GIMP, Blender, A.D 0, Mozilla Firefox, ... | ||||
---|---|---|---|---|---|---|
시스템 컴포넌트 | init 데몬: RC 열기, 실행, systemd... | 시스템 데몬: polkitd, smbd, sshd, udevd... | 창 관리자: X11, Wayland, SurfaceFlinger(Android) | 그래픽스: Mesa, AMD Catalyst... | 기타 라이브러리: GTK, Qt, EFL, SDL, SFML, FLTK, GNU 스텝... | |
C 표준 라이브러리 | fopen ,execv ,malloc ,memcpy ,localtime ,pthread_create ...(최대 2000개의 서브루틴)glibc는 고속, musl은 경량, uClibc는 임베디드 시스템을, 바이오닉은 Android용으로 작성되었습니다.모두 POSIX/SUS 호환을 목표로 하고 있습니다. | |||||
커널 모드 | Linux 커널 | stat ,splice ,dup ,read ,open ,ioctl ,write ,mmap ,close ,exit , 등(약 380개의 시스템콜)Linux 커널 시스템콜 인터페이스(SCI)는 POSIX/SUS 호환성을 목표로 하고 있습니다. | ||||
프로세스 스케줄링 서브시스템 | IPC 서브시스템 | 메모리 관리 서브시스템 | 가상 파일 서브시스템 | 네트워크 서브시스템 | ||
기타 컴포넌트: ALSA, DRI, evdev, klibc, LVM, 디바이스 매퍼, Linux Network Scheduler, Netfilter Linux 보안 모듈: SELinux, TOMOYO, AppArmor, Smack | ||||||
하드웨어(CPU, 메인 메모리, 데이터 스토리지 디바이스 등) |
- ^ "Admin Guide README". git.kernel.org.