JACK Audio Connection Kit

Linux.fista
Versio hetkellä 9. maaliskuuta 2018 kello 13.33 – tehnyt Heikkiket (keskustelu | muokkaukset) (→‎Mistä laitteet löytyvät?)
Siirry navigaatioon Siirry hakuun

JACK Audio Connection Kit eli tuttavallisemmin JACK on Linux-audiojärjestelmän ydin. Arkikielessä Jackilla tarkoitetaankin useaa eri asiaa: Järjestelmää, jonka avulla on mahdollista reitittää audio- ja midisignaalia ohjelmista toisiinsa ja luoda reitityksiä äänikortteihin, sekä muihin ulkoisiin laitteisiin. Komentoriviltä käynnistettävää ohjelmaa, joka luo edellä mainitun järjestelmän, sekä komentoriviohjelman ympärille kehitettyä graafista QJackCtl-edusohjelmaa, joka pyrkii madaltamaan Jackin käyttökynnystä.

Kun tässä artikkelissa puhutaan Jackista, tarkoitetaan sillä lähinnä koko audiosignaalin reititysjärjestelmää. Komentoriviltä käynnistettävää, edellä mainitun järjestelmän luovaa taustaprosessia kutsutaan jackd:ksi tai jack-prosessiksi, ja QJackCtl:ää luonnollisesti QJackCtl:ksi.

Mikäli haluat saada kattavan kokonaiskuvan Jackin tarjoamista ominaisuuksista, on syytä lukea tämä artikkeli kokonaan, siis myös QJackCtl:ää käsittelevä osuus, koska tieto Jackin ominaisuuksista on pirstoutunut sekavasti näiden kahden osuuden välille.

Mikä Jack on?

Jackin lähimmät vastineet muissa käyttöjärjestelmissä ovat varmaankin OS X:n Core Audio -järjestelmä ja Propellerheadsin kehittämä ReWire-teknologia. Jack on yksinkertaisesti järjestelmä, jonka avulla on mahdollista kytkeä ohjelmia, äänikortteja ja midilaitteita toisiinsa, sekä synkronoida eri ohjelmia keskenään.

Jackin ainutlaatuisuus piilee siinä, että se kohtelee kaikkia audio- ja midisignaaleja samalla tavalla riippumatta siitä, ovatko ne peräisin tietokoneeseen kytketyistä oheislaitteista – kuten äänikorteista – vai ohjelmista.

Jack myös toimii välittäjänä Linux-audio-ohjelmien sekä laiteajurien välillä, mikä tarkoittaa käyttäjän näkökulmasta, että Jack-prosessin on oltava aina päällä jotta ohjelmista kuuluisi mitään.

Asennus

JACK Audio Connection Kit löytyy useimpien jakeluiden paketinhallinnasta nimellä jack-audio-connection-kit tai jack. Lisätietoja ohjelmien asentamisesta löytyy artikkelista Ohjelmien asentaminen. Eri jakelut toimittavat jackista eri versioita, ja kannattaakin olla tarkkana mitä versiota itse käyttää. Jack-projektin kotisivut ovat oiva paikka tarkistaa onko oma versio riittävän tuore ja vakaa.

Kannattaa myös harkita graafisen QJackCtl-ohjelman asentamista. Se on ajantasainen ja laaja liittymä Jack-prosessin hallintaan ja konfigurointiin kaikille niille, jotka eivät syystä tai toisesta halua käyttää jackd:tä komentoriviltä käsin. QJackCtl myös tarjoaa joitain ominaisuuksia, joita jackd:ssä ei ole, kuten mahdollisuuden automatisoida ohjelmien kytkentöjä toisiinsa Patchbayn avulla, sekä tallentaa useita erilaisia asetuskokonaisuuksia.

Jackille on myös muita hallintaohjelmia, joista ehkä tunnetuin on KXStudio-järjestelmän mukana tuleva Cadence.

Transport

Jack voi lähettää ohjelmille Transport-signaalia, jonka avulla useat eri ohjelmat voivat synkronoitua samaan tempoon. Yksi ohjelmista toimii Transport masterina ja muut ovat Transport slaveja, jotka seuraavat master-ohjelmalta tulevaa aikainformaatiota. Transportin avulla ohjelmat saa paitsi soittamaan ja pysäyttämään samaan aikaan, myös jakamaan keskenään tempoinformaatiota. Tällälailla on mahdollista esimerkiksi synkronoida arpeggiaattori ja standalone-efektejä globaaliin tempoon, tai vaikkapa laittaa xjadeo toistamaan videota Ardourin kanssa.

Transportia voi ohjata jack_transport -komennolla. Lisäksi suurin osa transportia hyödyntävistä ohjelmista tarjoaa Transportin ohjaustoiminnot.

Sessionhallinta

Jackin tuorein ominaisuus on tuki sessionhallinnalle. Tämä tarkoittaa, että tulevaisuudessa Jackin avulla pystyy tallentamaan käynnissä olevat ohjelmat asetuksineen ja projektitiedostoineen, sekä ohjelmien välillä olevat kytkennät. Tällälailla monimutkaisten kytkentöjen tallentaminen ja palauttaminen helpottuu huomattavasti. Suhteellisen monet ohjelmat tukevat nykyään sessionhallintaa. Suurimpana ongelmana on, että Jack-sessionhallinnalla on myös kilpailijoita, ja mitään standardia eivät ohjelmat täysin kattavasti tue. Lisätietoa sessionhallinnasta Linuxissa on artikkelissa Sessionhallintatyökalut.

Jackin käyttö komentoriviltä

Asetukset

Oleellisin valinta jackia konfiguroitaessa on ajurikerroksen valinta. Mahdollisia vaihtoehtoja on useita, mutta Linux-käyttäjälle oleellisia ovat lähinnä alsa- ja firewire-ajurit. Firewire-ajureita käytetään firewire-äänikorttien kanssa ja alsa-ajureita kaikkien muiden korttien kanssa.

Käyttö

Kun asetukset ovat kunnossa, Jackin käynnistämisen komentoriviltä käsin pitäisi olla helppoa. Kytkennät tehdään komennoilla jack_connect ja jack_disconnect. jack_bufsize-komennolla voi muuttaa lennossa puskurin kokoa, eli sen audiopalan suuruutta, jonka Jack kerralla käsittelee.

QJackCtl


Qjackctl
 
Käyttöliittymä QT
Lisenssi GPLv2+
Kotisivu http://qjackctl.sourceforge.net

Qjackctl on Qt-pohjainen ohjelma Jack-äänipalvelimen hallintaan. Se tarjoaa yksinkertaisen graafisen käyttöliittymän Jackin asetuksille.

Asennus

Qjackctl löytyy useimpien jakeluiden paketinhallinnasta nimellä qjackctl. Lisätietoja ohjelmien asentamisesta löytyy artikkelista Ohjelmien asentaminen. QJackCtl osaa toimia sekä Jackin ykkös- että kakkosversion kanssa. D-Bus -rajapintaa koskevat asetukset eivät toimi ollenkaan ykkösversion kanssa.

Käynnistys

Moderneissa Linux-jakeluissa QJackCtl katkaisee Pulseaudion toiminnan välittömästi käynnistyttyään. Tämä tarkoittaa, ettei normaaleista ohjelmista kuulu ääntä enää lainkaan. Ääni palautuu, kun QJackCtl suljetaan. QJackCtl:n käynnistäminen ei kuitenkaan vielä käynnistä Jackia, vaan sitä varten on klikattava Start-painiketta. Tämän jälkeen Jack käynnistyy, mikäli asetukset ovat kohdallaan. Mahdolliset käynnistyessä ilmenevät virheet löytyvät Messages-ikkunasta. Status-painikkeesta voi tarkastella käynnissä olevan äänipalvelimen tietoja, kuten näytteenottotaajuutta tai xrunien määrää.

Ääniasetukset

 
Jackin asetukset

Jackin asetukset. Tärkeimmät on kehystetty.

QJackCtl:ssä Jackin asetukset tehdään Options-ikkunassa.

Äänikortin ajuri valitaan oikean laidan Driver -valikosta. Vaihtoehtoja Linux-käyttäjälle ei ole kuin kaksi, eli alsa ja firewire. Firewire-ajuri on oikealta nimeltään FFADO ja sitä käytetään firewire-äänikorttien kanssa. Kaikkien muiden äänikorttien kanssa käytetään Alsa-ajuria.

Oikeanpuolimmaisesta sarakkeesta säädetään äänikorttiin liittyviä asetuksia. Tärkein on ylinnä oleva Interface, joka valitsee mitä äänikorttia käytetään. Huom! Äänikortti valitaan klikkaamalla oikeanpuolimmaista pikkunuolta, ei siis isoa pudotusvalikkoa heti Interface-tekstin vierellä.

Laitteet on nimetty aitoon Unix-tyyliin, ja helpoin keino onkin koettaa vuorotellen kaikkia vaihtoehtoja, kunnes oikea laite löytyy. Varsinkin alsaa käytettäessä on syytä olla tarkkana, sillä valittavien laitteiden listassa näkyvät äänikorttien lisäksi myös esimerkiksi usb-midi-koskettimistot.

Äänikortin valinta vaikuttaa siihen, miten alas latenssin voi säätää, ja mikä Periods/Buffer -arvo on annettava. Siitä lisää seuraavaksi.

Latenssi kohdalleen

Latenssi on heti äänikortin valinnan jälkeen tärkein yksittäinen asia, jota Jackin asetuksilla säädetään. Suomeksi latenssi tarkoittaa viivettä, eli aikaa, joka äänisignaalilla kuluu koneen läpi kulkiessa.

Ammattimaisessa käytössä hyvänä voi pitää alle kymmenen millisekunnin latenssia, koska tällöin onnistuu instrumenttien soittaminen ilman viiveitä, sekä äänisignaalin reaaliaikainen efektointi. Toisaalta taas nauhoituksen aikana, ja etenkin useaa raitaa yhtä aikaa nauhoitettaessa voi matala latenssi aihetuttaa xruneja, eli ääneen tulevia särähtäviä häiriöitä. Silloin latenssia kannattaa nostaa. Sen voi tehdä lennossa joko jack_buffersize -komentorivikomennolla, tai jonkin ohjelman tarjoaman toiminnon avulla. Useamman kymmenen millisekunnin latenssi tekee reaaliaikaisesta soittamisesta jo lähes mahdotonta, mutta esimerkiksi miksatessa tai editoidessa se ei juuri haittaa.

Latenssin säätämisessä kaikista tärkein asetus on Frames/Period, jolla säädetään puskurin kokoa, eli sitä, minkä mittaisia audiopaloja Jack prosessoi. Mitä pienempi Frames/Period -arvo, sitä alhaisempi latenssi. Alhaisen latenssin saavuttamisessa erittäin merkittävä tekijä on hyvä äänikortti: Jack pystyy korkeintaan niin nopeaan operointiin kuin mitä äänikortti antaa myöten. Mikäli käytössä tulee xruneja, on Frames/Period-arvoa syytä nostaa suuremmaksi. Frames/Period -arvoa voi muuttaa käynnistämättä Jackia uudelleen, mutta QJackCtl ei tarjoa tähän mahdollisuutta. Ainakin Ardourista käsin puskurin kokoa on mahdollista säätää lennossa, ja hommaan löytyy myös komentorivityökalu jack_bufsize.

Periods/Buffer-säätö on myös syytä muistaa, mikäli xruneja ilmenee. Yleensä oletusasetus 2 on hyvä, mutta USB- ja Firewire-äänikorttien kanssa suositellaan sen nostamista kolmeen (Firewire-korteissa asetus onkin oletuksena 3). Muidenkin äänikorttien kanssa arvon muuttaminen voi joskus auttaa. Jackin käyttöohjeissa mainitaan esimerkkinä Yamahan YMF-sirua käyttävät kortit.

Realtime

Asetusikkunan vasemmassa yläkulmassa on yksinkertainen asetusruutu: realtime. Tämä laitetaan päälle aina kun käytössä on realtime-ydin, ja järjestelmän realtime-asetukset ovat kunnossa.

Useamman äänikortin järjestelmä

Jos järjestelmään on asennettuna useampia äänikortteja, voi Jackin kanssa tulla ongelmia, sillä QJackCtl ilmoittaa käytettävän äänikortin Jackille indeksinumeroilla. Esimerkiksi hw:1 voi olla koneeseen liitetty ulkoinen USB-äänikortti. Indeksit kuitenkin annetaan laitteille sitä mukaa kun ne kytketään kiinni koneeseen, joten seuraavalla käynnistyskerralla äänikortti voi saada eri indeksinumeron, esimerkiksi hw:2 -indeksin. Tällöin Jack, etsiessään turhaan korttia hw:1-indeksillä, kieltäytyy käynnistymästä, ja asetuksia on pakko muuttaa.

Ongelmasta pääsee eroon kirjoittamalla Interface-kenttään kortin kutsumanimen indeksinumeron sijaan. Kutsumanimen saa selville komennolla

cat /proc/asound/cards

Komennon tulosteessa jokainen kortti kuvataan tähän tapaan:

0 [Intel          ]: HDA-Intel - HDA Intel
                     HDA Intel at 0xfc020000 irq 47

Kortin kutsumanimi on heti indeksinumeron jälkeen. Tässä tapauksessa kyse on ensimmäisestä kortista, eli kortista numero 0, ja sen kutsumanimi on Intel. Kun siis Interface-kenttään kirjoittaa hw:Intel, Jack käyttää joka kerta Intel-nimistä korttia.

Harvinaisempia asetuksia

Joissain tapauksissa voi olla tarpeen myös äänikortin valintaruudun alta vaihtaa Duplex-asetuksen tilalle Capture Only tai Playback Only. Tämä säätö vaikuttaa siihen, yrittääkö Jack toimia duplex-modessa, eli sekä nauhoittaa sisääntulevaa ääntä että soittaa ulosmenevää ääntä samaan aikaan, vai tekeekö se vain jompaakumpaa. Lisäksi on säätö, jolla jackin käsittelemään äänisignaaliin voi lisätä Dither-kohinaa.

Näiden alapuolelta löytyvät tarkemmat valinnat, Input device ja Output device, joilla voi halutessaan säätää sisääntulevalle ja ulosmenevälle signaalille eri äänikortit. Lisäksi voi rajoittaa listattujen kanavien määrää Input Channels ja Output Channels -valinnoilla.

Viimeisenä on vielä mahdollisuus lisätä sisään ja ulos menevään ääneen latenssia. Alakulmassa näkyy kokonaislatenssi, joka pienimmillään on muutamia millisekunteja, ja suurimmillaan joitain kymmeniä tai jopa satoja millisekunteja. Latenssi vaihtuu kaikkien asetusikkunassa tehtävien säätöjen mukaan, ja tästä puhutaankin tarkemmin seuraavaksi.

Midi-liitännät

 
Yoshimi on hyvä esimerkki ohjelmasta, joka tarjoaa oletuksena vain Jack midi -liitännän.

Midi-standardeja on Linuxissa kaksi: Alsa ja Jack. Näiden molempien kautta on mahdollista reitittää MIDI-signaalia ohjelmasta toiseen ja QJackCtl:n kautta voi kontrolloida näitä molempia. Alsa midi on Jackia vanhempi midistandardi, jota edelleen käytetään monissa ääniohjelmissa. Tietokoneeseen kytkettävät ulkoiset midilaitteet taas näkyvät etupäässä alsa-liitäntöinä, koska suurin osa midiajureista on rakennettu osaksi Alsaa.

Mistä laitteet löytyvät?

Connections-ikkunan Alsa-välilehdelle ilmestyvät kaikki vanhaa Alsan midirajapintaa käyttävät liitännät. Jack-välilehdelle taas ilmestyvät uutta Jack-midiä käyttävien ohjelmien liitännät. Joskus on tarpeen sillata liitäntöjä, eli peilata vanhaa Alsa midiä käyttävät liitännät uusiksi Jack Midi -porteiksi, tai toisinpäin.

Midi-signaalin siltauksen voi toteuttaa käyttämällä suosittua a2jmidid-apuohjelmaa, joka ajetaan komentoriviltä käsin. a2jmidid ei asennu järjestelmään Jackin mukana, vaan on kokonaan erillinen ohjelmansa. Sen voi asentaa useimpien järjestelmien pakettivarastoista. Ohjelma käynnistetään kirjoittamalla komentoriville

a2jmidid --export-hw

Tämän jälkeen kytkennät näkyvät Jack Controlin Connections-ikkunassa.

Toinen, mutta ei niin suositeltava tapa on käyttää QJackCtl:n omia asetuksia. Asetusikkunan vasemman alakulman Midi driver -valikosta säädetään Alsa midi -yhteensopivuus käyttöön. none tarkoittaa, että portit eivät ilmesty näkyviin, raw tarkoittaa, että tietokoneeseen kytketyt laitteet näkyvät, mutta muu ei, ja seq tarkoittaa, että sekä tietokoneeseen kytketyt laitteet että kaikki ohjelmat näkyvät Midi-välilehdellä.

Patchbay

Patchbay on mainio tapa automatisoida toistuvien kytkentöjen tekeminen. Sen avulla voi luoda kytkennät, jotka QJackCtl tekee automaattisesti aina kun niitä vastaavat inputit ja outputit ilmestyvät näkyviin.

 
Esimerkki patchbaysta, jossa paljon sekä midi- että audiokytkentöjä

Tee aluksi kaikki tarvittavat kytkennät niin että ääni kuuluu. Klikkaa sitten QJackCtl:n pääikkunassa Patchbay-nappia. Eteen aukeaa periaatteessa melko paljon Connections-ikkunaa muistuttava ruutu, mutta älä anna sen hämätä: Tähän ruutuun luodaan kytkentäkaavio, jonka kytkennät QJackCtl sitten tekee automaattisesti puolestasi, kun asianmukaiset inputit ja outputit ilmestyvät näkyviin.

Oikealla puolella olevaan sarakkeeseen luodaan output socketit. Klikkaa "Add" ja eteen aukeaa uusi ikkuna. Ylimpänä on socketin nimi. Tähän voi laittaa mitä vain, mikä kuvaa sockettia. Client-kohtaan valitaan haluttu client eli ohjelma. Sen jälkeen seuraavasta valikosta valitaan haluttu ulostulo ja klikataan Add Plug. Stereoäänen tapauksessa on syytä lisätä vielä toinenkin plugi, jonka jälkeen klikataan OK. Sama toistetaan toisessa sarakkeessa.

Samalla lailla luodaan myös midi-kytkentä – hieman hämäävästi samoihin sarakkeisiin. Isompien setuppien kanssa kannattaa olla tarkkana, ja luoda vaikkapa tyhjät Socketit, joille antaa nimet "Audio" ja "Midi". Oheisessa kuvassa on tehty juuri näin. Tämän jälkeen toimitaan samoin kuin Connections -ikkunassa: valitaan haluttu output ja input, ja klikataan "Connect" -nappulaa. Vaihtoehtoisesti voit vetää hiirellä piuhan inputista toiseen – kuten Connections -ikkunassakin.

Nyt Patchbay on valmis. Se kannattaa tallentaa yläreunan save-nappulalla johonkin järkevään kansioon. Mikäli patchbay-määritelmiä alkaa kertymään, niille voi olla järkevää tehdä kokonaan oma kansionsa. Tiedostolle kannattaa antaa järkevä nimi, koska se ilmestyy näkyviin myös preset-valikkoon. Viimeiseksi klikataan Activate-nappi pohjaan, ja kaiken pitäisi olla valmista!

Patchbay myös osaa tunnistaa automaattisesti sellaiset liitännät, joiden perässä on vaihtuva numero. Tästä on hyötyä esimerkiksi Portaudiota käyttävien ohjelmien kanssa, sillä oletuksena niiden luomat liitännät ovat joka käynnistyskerralla hieman eri nimisiä. Asetuksista voi Options-välilehdeltä ottaa käyttöön Patchbay Persistense-toiminnon, joka lataa määritellyn patchbayn automaattisesti aina käynnistyksen yhteydessä.

Transport

QJackCtl tarjoaa yksinkertaiset kontrollit Jack Transportin hallintaan: ohjelmasta löytyvät Play- ja pause-painikkeet, sekä kelauspainikkeet.

Sessionhallinta

QJackCtl:n kautta on mahdollista tallentaa ja avata Jack Sessioita. Työkalu tarjoaa lähinnä perustoiminnot, mutta on niiden kannalta kätevä. Lisätietoa: Sessionhallintatyökalut#QJackCtl_Session.

Muita vaihtoehtoja Jackin graafiseen hallintaan

KXStudioon kuuluva Cadence tarjoaa mainion vaihtoehtoisen käyttöliittymän Jackin hallintaan. Lisäksi Ladish-sessionhallintaohjelmalla voi hoitaa Jackin hallitsemisen. Ladishia on helpointa käyttää KXStudioon kuuluvan Claudian tai Ladishin kehittäjän Gladish-käyttöliittymän avulla.

Katso myös



v  k  m
  Musiikintekoon liittyvät artikkelit
 Yleiset  Johdanto musiikintekoon Linuxilla | Jakelut | Jack
 Sekvensserit, DAW:it, nuotinnus, sävellys  Ardour | Qtractor | Rosegarden | Nuotinnus- ja sävellysohjelmat | Trakkerit | Kaupalliset ohjelmistot
 Syntetisaattorit, samplerit, rumpukoneet  ZynAddSubFX | SetBFree | Hydrogen | LinuxSampler
 Plugin-formaatit  LADSPA | DSSI | LV2 | Linux VST | Windows VST
  Pluginit Taajuusanalysaattorityökalut Laaja lista musiikinteko-ohjelmista