2006-08-30
Jack - Xruns
När man kör Jack på en standard-distribution av Linux får man oftast så kallade XRUNS. Vad är då dessa Xruns för något?
På alla Linux-system finns en buffert för läsning och skrivning till och från ljudkortet. Vid uppspelning läggs data i bufferten som sedan hämtas av ljudkortet för vidare befordran ut till högtalarna. Vid inspelning lägger ljudkortet data i bufferten för vidare befordran till inspelningsprogrammet.
Xruns uppstår när bufferten inte hinner att tömmas eller fyllas i tillräckligt hög takt för att få en kontinuerlig uppspelning eller inspelning.
Speciellt illa är det att få Xruns under inspelning, eftersom detta leder till ett glapp i densamma. Det behöver inte vara hörbart, men kan orsaka dålig synkronisering i slutändan.
Eftersom Linux är ett multi-tasking-OS, innebär det att flera program kan köras samtidigt. Linux, liksom Windows, har ingen möjlighet att fysiskt köra flera processer exakt samtidigt på ett system med bara en processor. Det kan bara ge sken av att göra det genom att köra processerna lite i taget, i snabb följd, alltså genom att dela tiden mellan dem. Därför är det operativsystemets roll att avgöra vilken process/vilket program som ska få tillgång till de största resurserna.
Det är bland annat väntetiden mellan de olika processernas tid-utrymme som kan ge upphov till Xruns. Det är därför viktigt att minimera, eller helst helt eliminera, att de uppstår.
Ett vanligt sätt att undanröja Xruns är därför att ge ljudprogramvaran tillgång till processor-tid när den så önskar genom att prioritera upp de processer som den använder sig av. Det kallas att ge processerna realtids-prioritet.
Men det ska vi gå igenom i nästa avsnitt.
På alla Linux-system finns en buffert för läsning och skrivning till och från ljudkortet. Vid uppspelning läggs data i bufferten som sedan hämtas av ljudkortet för vidare befordran ut till högtalarna. Vid inspelning lägger ljudkortet data i bufferten för vidare befordran till inspelningsprogrammet.
Xruns uppstår när bufferten inte hinner att tömmas eller fyllas i tillräckligt hög takt för att få en kontinuerlig uppspelning eller inspelning.
Speciellt illa är det att få Xruns under inspelning, eftersom detta leder till ett glapp i densamma. Det behöver inte vara hörbart, men kan orsaka dålig synkronisering i slutändan.
Eftersom Linux är ett multi-tasking-OS, innebär det att flera program kan köras samtidigt. Linux, liksom Windows, har ingen möjlighet att fysiskt köra flera processer exakt samtidigt på ett system med bara en processor. Det kan bara ge sken av att göra det genom att köra processerna lite i taget, i snabb följd, alltså genom att dela tiden mellan dem. Därför är det operativsystemets roll att avgöra vilken process/vilket program som ska få tillgång till de största resurserna.
Det är bland annat väntetiden mellan de olika processernas tid-utrymme som kan ge upphov till Xruns. Det är därför viktigt att minimera, eller helst helt eliminera, att de uppstår.
Ett vanligt sätt att undanröja Xruns är därför att ge ljudprogramvaran tillgång till processor-tid när den så önskar genom att prioritera upp de processer som den använder sig av. Det kallas att ge processerna realtids-prioritet.
Men det ska vi gå igenom i nästa avsnitt.
2006-08-20
ALSA - grund(lig)kurs
För att få det mesta ut av den här texten, rekommenderar jag att du har ett Linux-system uppe redan, med en terminal inte alldeles för långt borta. Det går dock att läsa ändå, som tur är.
ALSA betyder som bekant Advanced Linux Sound Architecture och är själva fundamentet för att vi ska kunna ha något ljud över huvud taget i Linux.
ALSA är standardsystemet för alla Linux-kärnor av version 2.6.x och uppåt. Ska man vara riktigt petnoga blev det standard redan i 2.5. Alla Linux-versioner av någorlunda färskt datum inkluderar en 2.6.x-kärna, där x i skrivande stund kan vara alltifrån 0 till 18.
INSTALLATION
Jag kommer inte att gå in på hur man installerar ALSA i de olika distributionerna, det finns gott om dokumentation på nätet om hur man gör det om det inte finns installerat från start.
De distributioner som har alsa installerat från scratch är (bland många andra):
PROGRAM
I ALSA har man till sitt förfogande några små kommandobaserade program som kan vara bra att känna till. Jag kommer att gå igenom några av dessa mer i detalj lite längre ner:
ENHETER
I Linux är alla enheter en fil som man kan läsa från eller skriva till. Alla enheter återfinns i katalogen /dev. När du rör på musen i Linux ser operativsystemet detta som en dataström från musens enhetsfil som kan vara /dev/input/mice. /dev står för "devices". Tangentbordet har även det en enhetsfil och så även ljudkortet.
Skillnaden är att ljudkortet är en något mer komplex enhet, vilket gör att den har flera olika enheter (eller portar) för olika ändamål.
Ljudkortshanteringen i Linux är lite knepig. Till exempel är följande enheter egna ljudkort:
ALSA håller sina enhetsfiler i /dev/snd/-katalogen, och de är uppbyggda på följande sätt:

Figur 1: 4-bitars Pulskodsmodulering av analog signal (röda kurvan)
Det finns en enhet: pcmC0D0, som har både en playback(uppspelnings)-ström och en capture(inspelnings)-ström. Så kan det vara. Andra enheter har bara en playback-ström eller en capture-ström, eller flera av varje.
Vid första anblicken kan det vara svårt att förstå vilken enhet som är vad på ljudkortet. Till och med vid den andra anblicken. För att vara helt ärlig så är det smått omöjligt att utröna vad som är vad bara genom att kolla i katalogen /dev/snd.
PROC
Därför finns det hjälp att få i det virtuella filsystemet i /proc/asound/-katalogen. Proc är ett speciellt bibliotek, detta bibliotek är inte del av det riktiga filsystemet, utan är ett virtuellt filsystem där man kommer åt information som Linux-kärnan vill att du ska kunna komma åt, exempelvis vilken processor du har. Det går även att skicka information till Linux-kärnan genom /proc-filsystemet. De filer man kan ha hjälp av i sammanhanget är:
cat /proc/asound/cards
för att få en något kryptisk lista över vilka ljudkort som finns på datorn. Man kan även gå in i katalogen /proc/asound och lista filer med cat, det kommer inte att skada något mer än möjligen din självkänsla.
PROGRAMMEN igen
alsamixer

Figur 2: Alsamixers gränssnitt
Det första programmet vi ska ta en titt på är alsamixer. Vid start kan programmet ta ett antal parametrar varav -c [ljudkortsnummer] är den viktigaste. Här kan man specificera vilket ljudkort som skall kontrolleras. Om man har flera ljudkort, alltså, som USB-mikrofoner eller dylikt. Då skriver man:
alsamixer -c 1
för att få det andra ljudkortets inställningar. Detta eftersom nördar gillar att börja räkna från 0. Väl i programmet kan man använda följande tangenter för att navigera runt:
arecord
Detta är det simplaste inspelningsprogram som du kommer att stöta på, någonsin. Inte till sin användning, utan till sin utrustning. Det kan sampla i många format, men det är också allt man kan göra med det. Syntaxen är:
arecord -D [device] -f [format] -d [duration] file
och det är här detaljkunskapen om ALSA kommer till sin rätt, första gången. För att lista vilka enheter vi har till vårt förfogande att spela in på, skriver vi kommandot:
arecord --list-devices
För att spela in på den första inspelnings-enheten (Card 0, Device 0) i CD-kvalitet (44,1kHz, 16-bitar, stereo) i tjugo sekunder till filen test.wav skriver vi:
arecord -D hw:0,0 -f cd -d 20 test.wav
Det är inte snyggt, och det är inte lättanvänt, men det är bra att kunna när det skiter sig i det blå skåpet. Kommandot arecord --help ger en sammanfattning av hur man använder arecord.
aplay
För att spela upp vårt mästerverk använder vi aplay. Det har i princip samma syntax som arecord, så för att spela upp filen test.wav skriver vi:
aplay -D hw:0,0 -f cd test.wav
Vi kunde lagt med -d 20 också, men utan den parametern spelar den hela filen tills den är färdig. Notera att vi använder samma enhet: hw:0,0, men nu använder ALSA playback-strömmen istället för capture-strömmen.
För de andra programmens olika parametrar och användningsområden, föreslår jag deras manual-pages, som kan hittas genom att skriva, i tur och ordning:
man aplaymidi
man arecordmidi
man aseqdump
man aconnect
man speaker-test
Detta kommando fungerar givetvis med de program som redan redovisats också.
Lycka till!
ALSA betyder som bekant Advanced Linux Sound Architecture och är själva fundamentet för att vi ska kunna ha något ljud över huvud taget i Linux.
ALSA är standardsystemet för alla Linux-kärnor av version 2.6.x och uppåt. Ska man vara riktigt petnoga blev det standard redan i 2.5. Alla Linux-versioner av någorlunda färskt datum inkluderar en 2.6.x-kärna, där x i skrivande stund kan vara alltifrån 0 till 18.
INSTALLATION
Jag kommer inte att gå in på hur man installerar ALSA i de olika distributionerna, det finns gott om dokumentation på nätet om hur man gör det om det inte finns installerat från start.
De distributioner som har alsa installerat från scratch är (bland många andra):
- Ubuntu Breezy (5.10) / Dapper (6.06)
- Fedora Core 2, 3, 4 och 5
- SuSE 9, 10 osv.
PROGRAM
I ALSA har man till sitt förfogande några små kommandobaserade program som kan vara bra att känna till. Jag kommer att gå igenom några av dessa mer i detalj lite längre ner:
- alsamixer - en fönsterbaserad mixer i textmode med staplar för volymen på de olika enheterna
- arecord - ett inspelningsprogram
- aplay - ett uppspelningsprogram
- aplaymidi - ett uppspelningsprogram för MIDI-filer
- arecordmidi - ett inspelningsprogram för MIDI-filer
- aconnect - ett program för att koppla samman olika sequencers
- aseqdump - visar MIDI-events som mottas på en viss sequencerport
- speaker-test - genererar toner för att testa högtalare i ALSA
ENHETER
I Linux är alla enheter en fil som man kan läsa från eller skriva till. Alla enheter återfinns i katalogen /dev. När du rör på musen i Linux ser operativsystemet detta som en dataström från musens enhetsfil som kan vara /dev/input/mice. /dev står för "devices". Tangentbordet har även det en enhetsfil och så även ljudkortet.
Skillnaden är att ljudkortet är en något mer komplex enhet, vilket gör att den har flera olika enheter (eller portar) för olika ändamål.
Ljudkortshanteringen i Linux är lite knepig. Till exempel är följande enheter egna ljudkort:
- USB-mikrofoner
- Klaviatur av USB-MIDI-modell
- Externa USB-ljudkort (föga förvånande, men i alla fall..)
- andra ljudenheter som jag inte tänkt på.
ALSA håller sina enhetsfiler i /dev/snd/-katalogen, och de är uppbyggda på följande sätt:
- För varje installerat ljudkort i datorn finns det en kontroll/mixer-fil. Det finns undantagsfall, men dessa återkommer jag till.
- Alla ljudkort som hanterar in- och utgående ljudströmmar har playback- och capture-filer.
- Ljudkort med MIDI-enheter har en sequencer-fil.
- Ljudkort med MIDI-enheter har även en eller flera MIDI-enhets-filer.
- Alla ljudsystem har en timer-fil.
- /controlC0 - control Card 0. Kontroll/mixer-fil för det första ljudkortet.
- /pcmC0D0c - pulse code modulation Card 0 Device 0 capture. Den första enheten på det första ljudkortet. Bara för inspelning.
- /pcmC0D0p - pulse code modulation Card 0 Device 0 playback. Den första enheten på det första ljudkortet. Bara för uppspelning.
- /pcmC0D1c - Den andra enheten på det första ljudkortet. För inspelning.
- /pcmC0D2c - Den tredje enheten på det första ljudkortet. För inspelning.
- /pcmC0D3c - Den fjärde enheten på det första ljudkortet. För inspelning.
- /pcmC0D4p - Den femte enheten på det första ljudkortet. För uppspelning.
- /seq - Sequencer-filen för MIDI-systemet.
- /timer - Helt otippat är detta timern för ljudsystemet.

Figur 1: 4-bitars Pulskodsmodulering av analog signal (röda kurvan)
Det finns en enhet: pcmC0D0, som har både en playback(uppspelnings)-ström och en capture(inspelnings)-ström. Så kan det vara. Andra enheter har bara en playback-ström eller en capture-ström, eller flera av varje.
Vid första anblicken kan det vara svårt att förstå vilken enhet som är vad på ljudkortet. Till och med vid den andra anblicken. För att vara helt ärlig så är det smått omöjligt att utröna vad som är vad bara genom att kolla i katalogen /dev/snd.
PROC
Därför finns det hjälp att få i det virtuella filsystemet i /proc/asound/-katalogen. Proc är ett speciellt bibliotek, detta bibliotek är inte del av det riktiga filsystemet, utan är ett virtuellt filsystem där man kommer åt information som Linux-kärnan vill att du ska kunna komma åt, exempelvis vilken processor du har. Det går även att skicka information till Linux-kärnan genom /proc-filsystemet. De filer man kan ha hjälp av i sammanhanget är:
- /proc/asound/cards - visar kort information om alla ljudkort som finns installerade på datorn.
- /proc/asound/pcm - visar de PCM-enheter som finns i systemet i formen
CC-DD: Tillverkare : Enhetsnamn : [uppspelning : inspelning] - /proc/asound/modules - visar de moduler som är laddade för att ljudkortet ska fungera.
- /proc/asound/seq/drivers - visar de moduler som är laddade för att MIDI ska fungera.
- /proc/asound/card0/ - katalog som innehåller information om det första ljudkortet på datorn.
cat /proc/asound/cards
för att få en något kryptisk lista över vilka ljudkort som finns på datorn. Man kan även gå in i katalogen /proc/asound och lista filer med cat, det kommer inte att skada något mer än möjligen din självkänsla.
PROGRAMMEN igen
alsamixer

Figur 2: Alsamixers gränssnitt
Det första programmet vi ska ta en titt på är alsamixer. Vid start kan programmet ta ett antal parametrar varav -c [ljudkortsnummer] är den viktigaste. Här kan man specificera vilket ljudkort som skall kontrolleras. Om man har flera ljudkort, alltså, som USB-mikrofoner eller dylikt. Då skriver man:
alsamixer -c 1
för att få det andra ljudkortets inställningar. Detta eftersom nördar gillar att börja räkna från 0. Väl i programmet kan man använda följande tangenter för att navigera runt:
- pil-upp och pil-ner för att ändra volym
- pil-höger/pil-vänster för att byta stapel
- F4 för att bara visa inspelnings-kontroller
- M för att stänga av/slå på ljudet på en kanal
- [space] för att slå på/slå av default capture på vald kanal
- F2 för att lista relevant information från /proc-katalogen
- F3 för att bara visa uppspelnings-kontroller
- F5 för att visa alla tillgängliga kontroller
- Esc för att avsluta programmet
arecord
Detta är det simplaste inspelningsprogram som du kommer att stöta på, någonsin. Inte till sin användning, utan till sin utrustning. Det kan sampla i många format, men det är också allt man kan göra med det. Syntaxen är:
arecord -D [device] -f [format] -d [duration] file
och det är här detaljkunskapen om ALSA kommer till sin rätt, första gången. För att lista vilka enheter vi har till vårt förfogande att spela in på, skriver vi kommandot:
arecord --list-devices
För att spela in på den första inspelnings-enheten (Card 0, Device 0) i CD-kvalitet (44,1kHz, 16-bitar, stereo) i tjugo sekunder till filen test.wav skriver vi:
arecord -D hw:0,0 -f cd -d 20 test.wav
Det är inte snyggt, och det är inte lättanvänt, men det är bra att kunna när det skiter sig i det blå skåpet. Kommandot arecord --help ger en sammanfattning av hur man använder arecord.
aplay
För att spela upp vårt mästerverk använder vi aplay. Det har i princip samma syntax som arecord, så för att spela upp filen test.wav skriver vi:
aplay -D hw:0,0 -f cd test.wav
Vi kunde lagt med -d 20 också, men utan den parametern spelar den hela filen tills den är färdig. Notera att vi använder samma enhet: hw:0,0, men nu använder ALSA playback-strömmen istället för capture-strömmen.
För de andra programmens olika parametrar och användningsområden, föreslår jag deras manual-pages, som kan hittas genom att skriva, i tur och ordning:
man aplaymidi
man arecordmidi
man aseqdump
man aconnect
man speaker-test
Detta kommando fungerar givetvis med de program som redan redovisats också.
Lycka till!
Program - introduktion
Jag ska dra igenom ett antal program som kan vara bra att känna till när man börjar sin bana som Linux-musiker.
LASH
LASH (LASH Audio Session Handler) är som namnet antyder en sessionshanterare för JACK- och ALSA-applikationer. Eftersom man i Linux ofta använder sig av flera olika program i sin virtuella studiomiljö uppstod LASH, som tillåter att man sparar alla programmens inställningar i en speciell LASH-fil, stänger programmen och sedan laddar tillbaka alla programmen med rätt inställningar efter den något blöta semestern under vilken man glömt allt man kom ihåg innan, med ett darrigt musklick. LASH hanterar ingen ljud-data, det kör bara programmen som hanterar ljud-datan med de inställningar som gäller för en viss session. Alla program stöds ännu inte av LASH, men vi kommer att återkomma till detta i en annan artikel.
LADSPA
LADSPA är för ovanlighetens skull inte en rekursiv akronym och står för Linux Audio Developers Simple Plugin API. Det kan jämföras med VSTs kusin från landet, eftersom standarden inte riktigt räcker till för instrument liknande VSTi. Men det finns åtskilliga effekter och filter för att hålla sig nöjd ett tag. De flesta ljud-applikationer med självaktning stödjer LADSPA på något sätt. Och gör de inte det kan man alltid koppla in någon applikation via JACK som gör det.
DSSI
För att tillgodose de arma själar som inte har riktiga instrument att pilla på introducerades istället DSSI som av någon underlig anledning står för Disposable Soft Synth Instrument. Detta är alltså Linux-världens svar på VSTi. DSSI kan också köra vissa VSTi-plugins genom en dssi-vst-wrapper som i sin tur är beroende av Windows-kompatibilitetslagret Wine.
Låter det komplicerat? Det är det.
DIGITAL AUDIO WORKSTATION
Det finns egentligen bara en DAW att räkna med i Linux idag, och det är ardour. För människor som aldrig använt en hårddisk-inspelare förut kan den vara lite komplicerad att komma igång med, men när den tröskeln är passerad är den mycket bra.

Figur 4: Ardour Digital Audio Workstation v0.99.2
Ardour har stöd för MIDI-in och -ut via JACK och hårddisk-inspelaren kan redigera icke-destruktivt. I den kommande 2.0 versionen kommer det finnas stöd för VST-plugins via Wine.
MIDI
För MIDI finns det flera olika program att använda. Här följer ett litet urval:
TRUMMOR
En enkel step-sequencer för produktion av trum-mönster är Hydrogen som är både lättanvänt och räcker till för de flesta behov.

Figur 3: Hydrogen step-sequencer för trumloopar
Hydrogen kan styras via MIDI, och har stöd för JACK. T ex kan man styra Hydrogen genom att lägga in MIDI-spår i Rosegarden/MusE, skicka dem till JACK som sänder dem vidare till Hydrogen som skickar vidare till JACK som skickar vidare till en effektbox som skickar tillbaka till JACK som skickar ut signalen i högtalarna. Ja, ni fattar..
MJUKVARUSYNTHAR / EFFEKTER
Det finns även en uppsjö av mjukvarusynthar, effekt-rack och diverse annat smått och gott. Några som använts med författarens goda minne är:
För mastering kan programmet JAMin användas. JAMin står för JACK Audio Mastering interface. Den kan åstadkomma mastering på ett obegränsat antal input-strömmar. För att göra detta har den:

Figur 4: JAMin handritad EQ-gränssnitt
TILL SIST
Det finns många andra program som också kvalar in här som Introduktion till ljudredigering/-produktion i Linux. För en någorlunda lång lista som kommer att hålla dig sysselsatt ett tag, gå till:
http://linux-sound.org/
Det var allt som vi hade att bjuda på den här gången. Jag hoppas att jag inte rört ihop det alltför mycket för er.
LASH
LASH (LASH Audio Session Handler) är som namnet antyder en sessionshanterare för JACK- och ALSA-applikationer. Eftersom man i Linux ofta använder sig av flera olika program i sin virtuella studiomiljö uppstod LASH, som tillåter att man sparar alla programmens inställningar i en speciell LASH-fil, stänger programmen och sedan laddar tillbaka alla programmen med rätt inställningar efter den något blöta semestern under vilken man glömt allt man kom ihåg innan, med ett darrigt musklick. LASH hanterar ingen ljud-data, det kör bara programmen som hanterar ljud-datan med de inställningar som gäller för en viss session. Alla program stöds ännu inte av LASH, men vi kommer att återkomma till detta i en annan artikel.
LADSPA
LADSPA är för ovanlighetens skull inte en rekursiv akronym och står för Linux Audio Developers Simple Plugin API. Det kan jämföras med VSTs kusin från landet, eftersom standarden inte riktigt räcker till för instrument liknande VSTi. Men det finns åtskilliga effekter och filter för att hålla sig nöjd ett tag. De flesta ljud-applikationer med självaktning stödjer LADSPA på något sätt. Och gör de inte det kan man alltid koppla in någon applikation via JACK som gör det.
DSSI
För att tillgodose de arma själar som inte har riktiga instrument att pilla på introducerades istället DSSI som av någon underlig anledning står för Disposable Soft Synth Instrument. Detta är alltså Linux-världens svar på VSTi. DSSI kan också köra vissa VSTi-plugins genom en dssi-vst-wrapper som i sin tur är beroende av Windows-kompatibilitetslagret Wine.
Låter det komplicerat? Det är det.
DIGITAL AUDIO WORKSTATION
Det finns egentligen bara en DAW att räkna med i Linux idag, och det är ardour. För människor som aldrig använt en hårddisk-inspelare förut kan den vara lite komplicerad att komma igång med, men när den tröskeln är passerad är den mycket bra.

Figur 4: Ardour Digital Audio Workstation v0.99.2
Ardour har stöd för MIDI-in och -ut via JACK och hårddisk-inspelaren kan redigera icke-destruktivt. I den kommande 2.0 versionen kommer det finnas stöd för VST-plugins via Wine.
MIDI
För MIDI finns det flera olika program att använda. Här följer ett litet urval:
- Rosegarden verkar vara det som kommit längst, men det är inte helt enkelt att konfigurera.
- MusE är väl integrerat med JACK men är svårt att få igång.
- Seq24 är för den minimalistiske esteten.
TRUMMOR
En enkel step-sequencer för produktion av trum-mönster är Hydrogen som är både lättanvänt och räcker till för de flesta behov.

Figur 3: Hydrogen step-sequencer för trumloopar
Hydrogen kan styras via MIDI, och har stöd för JACK. T ex kan man styra Hydrogen genom att lägga in MIDI-spår i Rosegarden/MusE, skicka dem till JACK som sänder dem vidare till Hydrogen som skickar vidare till JACK som skickar vidare till en effektbox som skickar tillbaka till JACK som skickar ut signalen i högtalarna. Ja, ni fattar..
MJUKVARUSYNTHAR / EFFEKTER
Det finns även en uppsjö av mjukvarusynthar, effekt-rack och diverse annat smått och gott. Några som använts med författarens goda minne är:
- Alsa Modular Synth - koppla och förvräng, addera LFOer, Echo-effektboxar, Delay, sequencer-boxar, allt som det finns LADSPA-plugins till. Stödjer JACK.
- JACK-Rack - ett virtuellt effekt-rack där man kan stapla effekter på varandra och skicka vidare till nästa ljudkälla via JACK.
- fluidsynth - en synth för att spela SoundFonts. Med MIDI och Audio-stöd via JACK.
- Virtual Keyboard - det är inte snyggt, det är inte stort, men det är ett virtuellt MIDI-keyboard där man kan spela antingen genom att trycka på sitt eget datortangentbord, eller klicka med muspekaren på tangenterna på skärmen. Stödjer MIDI via JACK.
- ZynAddSubFX - Ett effekt-rack med en hel del coola effekter. Stöds även det av JACK.
För mastering kan programmet JAMin användas. JAMin står för JACK Audio Mastering interface. Den kan åstadkomma mastering på ett obegränsat antal input-strömmar. För att göra detta har den:
- en 1024-bands handritad EQ med modifierbara parameterkontroller,
- en 31-bands grafisk EQ,
- en 3-bands kompressor,
- en 3-bands stereoviddskontroll,
- och en massa annat.

Figur 4: JAMin handritad EQ-gränssnitt
TILL SIST
Det finns många andra program som också kvalar in här som Introduktion till ljudredigering/-produktion i Linux. För en någorlunda lång lista som kommer att hålla dig sysselsatt ett tag, gå till:
http://linux-sound.org/
Det var allt som vi hade att bjuda på den här gången. Jag hoppas att jag inte rört ihop det alltför mycket för er.
Jack - introduktion
JACK
Om ALSA är fundamentet så är JACK (Jack Audio Connection Kit) grunden för de flesta framgångsrika studiobyggen. Till detta finns ett grafiskt gränssnitt: QJackCtl. I QJackCtl binder man ihop olika källor, vare sig de är ljudkällor eller MIDI-källor i något som närmast kan liknas vid en gammal telefonväxel, under Connections. På ena sidan finns input-portar och på den andra output-portar och dessa sammanfogas till något som låter:

Figur 1: Connections-fönstret i QJackCtl.
De två blåmarkerade portarna (capture_1 och master/in 1) kan knytas samman genom att trycka på Connect i fönstrets nedre vänstra hörn. Detta gör att ljud som kommer in på ljudkortets inspelningsport capture_1 vidarebefordras till den virtuella input-porten master/in 1 som startats genom programmet ardour, som vi kommer att återkomma till nedan.
Det finns även ett program som heter Patchage som visualiserar JACK-portar på ett lite annat sätt än QJackCtl gör. Detta program kommer också att avhandlas vid tillfälle.
Att JACK ser input-portar som output-portar och tvärtom är egentligen ganska logiskt och kan illustreras med en kedja som ser ut såhär:

Figur 2: Logiskt flöde för applikationen JACK.
Vi kommer att gå in mer på djupet av JACK i en alldeles egen artikel.
Om ALSA är fundamentet så är JACK (Jack Audio Connection Kit) grunden för de flesta framgångsrika studiobyggen. Till detta finns ett grafiskt gränssnitt: QJackCtl. I QJackCtl binder man ihop olika källor, vare sig de är ljudkällor eller MIDI-källor i något som närmast kan liknas vid en gammal telefonväxel, under Connections. På ena sidan finns input-portar och på den andra output-portar och dessa sammanfogas till något som låter:

Figur 1: Connections-fönstret i QJackCtl.
De två blåmarkerade portarna (capture_1 och master/in 1) kan knytas samman genom att trycka på Connect i fönstrets nedre vänstra hörn. Detta gör att ljud som kommer in på ljudkortets inspelningsport capture_1 vidarebefordras till den virtuella input-porten master/in 1 som startats genom programmet ardour, som vi kommer att återkomma till nedan.
Det finns även ett program som heter Patchage som visualiserar JACK-portar på ett lite annat sätt än QJackCtl gör. Detta program kommer också att avhandlas vid tillfälle.
Att JACK ser input-portar som output-portar och tvärtom är egentligen ganska logiskt och kan illustreras med en kedja som ser ut såhär:

Figur 2: Logiskt flöde för applikationen JACK.
Vi kommer att gå in mer på djupet av JACK i en alldeles egen artikel.
Ljudsystem - introduktion
Det finns en uppsjö olika program för att åstadkomma ljud och musik med Linux som bas. Vissa är otroliga, vissa är bra, andra mindre bra och en del är rent av usla. På senare år har det gjorts en del försök att standardisera informationsutbytet mellan olika applikationer för att de ska kunna användas parallellt, vilket är ett välkommet steg mot verklig användarvänlighet.
OSS
Men vi börjar från grunden, nämligen med med själva ljudsystemet, fundamentet som allt kommer att bygga på. Ljud i Linux var i begynnelsen OSS (Open Sound System). OSS är i grund och botten gammal dynga som man inte ska grotta alltför mycket i, vilket jag heller inte kommer att göra, eftersom det från Linux kernel-version 2.6 blivit utfasat till förmån för ett annat system. OSS finns även på BSD-system och andra plattformar, vilket mycket väl kan vara dess enda fördel. OSS har i princip inga möjligheter att hantera flera ljudkällor samtidigt, vilket är ganska välkommet om man vill använda sitt ljudkort till annat än att spela upp systemljud när man gör något fel i OpenOffice Writer.
ALSA
Istället har ALSA (Advanced Linux Sound Architecture) blivit adopterat som det välartade barnet. Just "Advanced" i ALSA är inget att ta lätt på, för konfigurationsmöjligheterna är många och syntaxen för att göra dem är svår. Tanken är dock att vi på denna sidan ska kunna reda ut ett och annat gällande konfiguration, så att ni inte står alldeles handfallna. ALSA stödjer bland annat:
OSS
Men vi börjar från grunden, nämligen med med själva ljudsystemet, fundamentet som allt kommer att bygga på. Ljud i Linux var i begynnelsen OSS (Open Sound System). OSS är i grund och botten gammal dynga som man inte ska grotta alltför mycket i, vilket jag heller inte kommer att göra, eftersom det från Linux kernel-version 2.6 blivit utfasat till förmån för ett annat system. OSS finns även på BSD-system och andra plattformar, vilket mycket väl kan vara dess enda fördel. OSS har i princip inga möjligheter att hantera flera ljudkällor samtidigt, vilket är ganska välkommet om man vill använda sitt ljudkort till annat än att spela upp systemljud när man gör något fel i OpenOffice Writer.
ALSA
Istället har ALSA (Advanced Linux Sound Architecture) blivit adopterat som det välartade barnet. Just "Advanced" i ALSA är inget att ta lätt på, för konfigurationsmöjligheterna är många och syntaxen för att göra dem är svår. Tanken är dock att vi på denna sidan ska kunna reda ut ett och annat gällande konfiguration, så att ni inte står alldeles handfallna. ALSA stödjer bland annat:
- Hårdvarubaserad MIDI-syntes
- Hårdvarumixning av flera kanaler
- Full-duplex
- Ett jäkligt komplext API (Application Programming Interface)
- Multiprocessor-vänliga trådsäkra drivrutiner
- OSS genom ett emuleringslager