JACK Audio Connection Kit | |||
![]() | |||
![]() | |||
Utviklar | Paul Davis | ||
---|---|---|---|
Nyaste versjon | 1.9.22 (2. februar 2023)[1] | ||
Operativsystem | Unix-variant, macOS, Microsoft Windows | ||
Skrevet i | C++, C | ||
Type | Lydtjener | ||
Lisens | GNU General Public License | ||
Nettstad | https://jackaudio.org |
JACK Audio Connection Kit (JACK) er ein miksar/tenar som sit mellom lydhandsamarprogram på brukarnivå og ein lågniva lydhandsamingsinfrastruktur som ALSA i Linux-kjernen, OSS på UNIX, Core Audio på Mac OS X og ASIO på Windows. JACK vart frå grunnen konstruert for proffesional bruk, der låg forsenking er viktig[2].
Funksjonaliten og programmeringsgrensesnittet til JACK er på eit høgare nivå enn underliggande lydhandsamingsinfrastruktur som ALSA, OSS, FFADO, CoreAudio, ASIO og PortAudio. JACK inneheld funksjonaliten som tillet utveksling og miksing av audiostraumar mellom ulike prosessar (tenarar og brukarprogram), grensesnitt og lydkort. JACK abstrakterer grensesnittet mellom ulike processar, og tek seg av trådhandsaming og synkronisering, slik at programmeraren kan konsentrera seg om å skriva kode for funksjonalitet. Internt i JACK vert kvar audiosample representert på enkelpresisjon flytkommaformat. JACK tek hand om konvertering til/frå 16- og 24-bit fastkommarepresentasjon som I/O-einingane nyttar[3].
JACK er bygd opp av fleire modular: jackd er ein tenarprocess (eller «deamon» om ein nyttar UNIX-terminologi) og libjack er eit biblioteket som brukarprogamma linkar til. Som anna lydhandsamingprogramvare kommuniserer JACK med drivarane via attendekallfunksjonar. I tillegg til å ruta audiostraumar mellom brukarprogram som køyrer som eigne prosessar kan JACK òg utvidast med plugin som nyttar prosesskontekst som JACK.
JACK nyttar funksjonaliteten som er innebygg i den underliggande infrastrukturen og innfører ikkje forseinking ut over forseinking som stammar frå ALSA eller CoreAudio. Det ekstra laget med programvare i JACK innfører litt ekstra arbeid for prosessoren, men ekstralasta er ikkje meir enn rundt 1% [2].
JACK vart utvikla for Linux, men køyrer òg på fleire UNIX-liknande operativsystem, som BSD, FreeBSD, NetBSD, OpenBSD og Mac OS X. JackOSX er ei programvarepakke som tilpassar JACK for Apple CoreAudio. JACK kan lett tilpassast alle operativsystem med POSIX-grensesnitt. Etter som Windows òg har eit POSIX-grensesnitt (i tillegg til WinAPI) kan JACK nyttast på Windows-maskinar. I praksis er det likevel ASIO som er mest utbreidd nytta i samband med profesjonell lydhandsaming på Windows-maskinar.
JACK har fleire små program som utfører ymse oppgåver.
qjackctl er eit Qt-basert grafisk controllprogram for JACK. qjackctl let brukaren oppretta forbindelsar mellom ulik lydkjelder, tenarar, brukarprogram og utgangar ved å ta tak i kjelder med markøren og dra dei til program og/eller utgangar [4].
jack_lsp er eit kommandolinjeverktøy som listar informasjon om I/O-portane som JACK kjenner til.
NetJack er ein modul som utvidar JACK med nettfunksjonalitet[5]. NetJack har ein «meister» som sender ein audiostraum og ein eller fleire mottakarar (slavar) som tek imot audiostraumen. NetJack syt for at alle mottakarane er synkroniserte med sendaren, slik at det ikkje oppstår datatap.