Audio

Noob's Guide to Linux Audio ALSA, OSS, and Pulse Audio Explained

Noob's Guide to Linux Audio ALSA, OSS, and Pulse Audio Explained
Det finns en sak som både nya och erfarna Linux-användare kan komma överens om: Linux-ljud är förvirrande. Inte bara utför flera tekniker liknande jobb, men de flesta av dem kan utelämnas helt av Linux-distributioner och deras användare.

Situationen är relativt bra när det gäller vanliga distros som Ubuntu, Debian eller Fedora eftersom deras utvecklare har strävat mycket för att få ljud att fungera direkt ur lådan, men detsamma kan inte sägas om Arch Linux, Gentoo, och andra minimalistiska distributioner som förväntar sig att användare konfigurerar allt från grunden.

Den här artikeln kommer inte att göra dig till en expert på Linux-ljud, men det kommer förhoppningsvis att förklara de grundläggande teknologier som är ansvariga för att göra ljud kommer ut ur dina högtalare när du öppnar en video på YouTube eller spelar ett spel på Steam.

Advanced Linux Sound Architecture (ALSA)

Låt oss börja med det viktigaste lagret av Linux-ljudet, ALSA. ALSA skapades 1998 av den tjeckiska programutvecklaren Jaroslav Kysela och ansvarar för att ge en röst till alla moderna Linux-distributioner. Det är faktiskt en del av själva Linux-kärnan och ger ljudfunktionalitet till resten av systemet via ett applikationsprogrammeringsgränssnitt (API) för drivrutiner för ljudkort.

Den ursprungliga designen av ALSA var till stor del inspirerad av Linux-enhetsdrivrutinen för Gravis Ultrasound-ljudkort, som gjordes av Kanada-baserade Advanced Gravis Computer Technology och blev mycket populär i demo-scenen under 1990-talet.

ALSA-stöd för alla typer av ljudgränssnitt tack vare helt modulariserade ljuddrivrutiner, kan hantera upp till åtta ljudenheter samtidigt, få tillgång till MIDI-funktionalitet för maskinvara, utföra maskinvarublandning av flera kanaler och mer.

Användare interagerar vanligtvis med ALSA med alsamixer, ett grafiskt mixerprogram som kan användas för att konfigurera ljudinställningar och justera volymen på enskilda kanaler. Alsamixer körs i terminalen och du kan åberopa den bara genom att skriva dess namn. Ett särskilt användbart tangentbordskommandon aktiveras genom att trycka på M-tangenten. Det här kommandot växlar mellan kanalavstängning och det är en ganska vanlig fix för många frågor som läggs upp på Linux-diskussionsforum.

Öppna ljudsystem (OSS)

Den officiella webbplatsen för ALSA nämner stöd för Open Sound System, eller OSS för kort. Fram till Linux 2.5, OSS var faktiskt det huvudsakliga och enda ljudsystemet för Linux. ALSA var utformad för att övervinna dess olika brister, till exempel det faktum att det inte tillät mer än en applikation att komma åt hårdvaran åt gången. I Linux 2.6 ALSA ersatte OSS som standardljudsystem.

När utvecklarna av OSS meddelade att OSS-versionen skulle ha en licensierad licens fattades snabbt ett beslut av Linux-utvecklare att ersätta den med ALSA. Det är värt att notera att OSS blev fri programvara igen med lanseringen av version 4 2007. Idag distribueras OSS under fyra olika licenser (BSD, CDDL, GPL, Proprietary).

De flesta Linux-distributioner i dessa dagar bryr sig inte ens om att aktivera OSS-emuleringsskiktet i ALSA eftersom nästan ingen behöver det längre, vilket gör OSS till en relik från det förflutna.

PulseAudio

Om du inte kommer ihåg den senaste gången du interagerade med ALSA när du ändrade dina ljudinställningar, beror det förmodligen på att det användarvändande lagret i Linux-ljudsystemet i de flesta moderna distributioner heter PulseAudio.

PulseAudio släpptes ursprungligen 2004, och det ingår nu och aktiverat som standard i Ubuntu, Linux Mint, openSUSE och andra större distributioner. PulseAudios uppgift är att skicka ljuddata mellan dina applikationer och din hårdvara, dirigera ljud som kommer från ALSA till olika utgångsdestinationer, till exempel dina datorhögtalare eller hörlurar. Det är därför det ofta kallas en ljudserver.

Vid första anblicken kan det tyckas att PulseAudio inte riktigt lägger till något kritiskt viktigt för Linux-ljud, och många av dess kritiker delar samma åsikt. I verkligheten finns det faktiskt många saker som skulle vara omöjliga eller svåra att åstadkomma utan det, inklusive blandning av flera ljud till ett, överföring av ljud till en annan maskin eller ändring av exempelformat eller kanalantal.

PulseAudio ger också plattformskompatibilitet (FreeBSD, NetBSD, OpenBSD, Linux, Illumos, Solaris, macOS och på ett begränsat sätt Microsoft Windows). Om du vill styra PulseAudio direkt, istället för att interagera med den via en volymkontrollwidget eller en panel av något slag, kan du installera PulseAudio Volymkontroll (kallas pavucontrol i de flesta paketförvar).

Om du känner att du inte har någon användning av funktionerna från PulseAudio kan du antingen använda ren ALSA eller ersätta den med en annan ljudserver.

PulseAudio vs. JACK

PulseAudio är inte den enda ljudservern för Linux. Det finns också JACK, som är en rekursiv akronym för JACK Audio Connection Kit. Medan PulseAudio utvecklades med tanke på allmänna Linux-användares behov, är JACK avsedd för DJ-skivor och ljudproffs, vilket ger realtidsanslutningar med låg latens för både ljud- och MIDI-data.

Eftersom JACK låter dig ansluta ljudingångarna och utgångarna för var och en av dina applikationer tillsammans, kan du göra några ganska coola saker med det, som att övervaka din egen röst, lägga till effekter i realtid och mer. Faktum är att namnet på detta ljudsystem inspirerades av kablarna som används i riktiga inspelningsstudior för att bygga intrikata anslutningar mellan instrument, synthesizers, MIDI-kontroller och multitrackers.

Förmodligen den största nackdelen med JACK är att det vanligtvis antingen fungerar perfekt eller hemskt, och äger det faktum att dess främsta mål är att ge ljud med låg latens. Det kräver också betydligt mer CPU-kraft jämfört med PulseAudio, varför du hittar det mestadels på professionella arbetsstationer dedikerade till ljudredigering.

Kontrollerar pulsljud och ALSA

Du kanske undrar, hur berättar jag vilken ljudprogramvara min dator använder? För att kontrollera om både Pulse Audio och ALSA finns i ditt system, använd följande två kommandon:
Kolla efter PulseAudio:

$ pactl-lista


Kontroll för ALSA:

$ aplay -l

Slutsats

Ljud på Linux verkar komplicerat eftersom det verkligen är det. Att lösa upp nätet av äldre tekniker och lager av abstraktion kan vara en verklig utmaning även för erfarna Linux-användare som känner till operativsystemets in-och-outs. Förhoppningsvis hjälpte vår artikel dig att bättre förstå de viktigaste komponenterna i Linux-ljudsystemet, inklusive ALSA, OSS och PulseAudio.

Mus Hur man använder Xdotool för att stimulera musklick och tangenttryckningar i Linux
Hur man använder Xdotool för att stimulera musklick och tangenttryckningar i Linux
Xdotool är ett ledigt verktyg för öppen källkod för simulering av musklick och tangenttryckningar. Den här artikeln kommer att täcka en kort guide om ...
Mus Topp 5 Ergonomiska datormusprodukter för Linux
Topp 5 Ergonomiska datormusprodukter för Linux
Ger långvarig datoranvändning smärta i handleden eller fingrarna? Lider du av styva leder och måste ständigt skaka hand? Känner du en brännande smärta...
Mus Så här ändrar du inställningar för mus och pekplatta med Xinput i Linux
Så här ändrar du inställningar för mus och pekplatta med Xinput i Linux
De flesta Linux-distributioner levereras med "libinput" -bibliotek som standard för att hantera inmatningshändelser i ett system. Den kan bearbeta inm...