A brief overview, via shell installation and via GUI configuration for Jack Audio Connection Kit on GNU/Linux Ubuntu Qjacktl, presented by myself at Linux Day 2018. If you are searching for a virtual patchbay, JACK will makes you happy!
[LDNA2018] - JACK Audio Connection Kit: la tua Patchbay virtuale!
1. JACK Audio Connection KitJACK Audio Connection Kit
LinuxDay Napoli 2018
Software Engineer / Audio Software Engineer
Hw/Sw Audio and Audio
Encryption Independent Researcher
AES Italia Official Member
a cura di Marcello Marino
2. IntroduzioneIntroduzione
OBIETTIVI DEL TALK
Capire cos'è realmente JACK Audio Connection Kit (e a capirci un po' di più!)
Comprendere le potenzialità e le funzionalità principali di JACK
Installare JACK in ambiente Linux Ubuntu
Prendere confidenza con la configurazione iniziale con gli applicativi Jack-aware (QjackCtl) unico
vero scoglio iniziale per chiunque approccia a JACK (via i dubbi, via le incertezze!)
Convincere i Sound Engineers e tutti coloro che fanno dell'Home Recording la loro passione, che
esistono strumenti OpenSource capaci di aiutare realmente la loro attività artistica senza doversi
vendere la propria macchina o la propria casa perché il tizio qui sotto ha anche pensato a loro...
PAUL DAVIS
Audio Software Engineer
Fondatore di Ardour
3. Perché sono cosi forti:
● JACK è un Audio Deamon Server
● Cosa possiamo fare con JACK?
q Controllo impostazioni audio e connessioni MIDI esterne
q Scelta interfaccia audio, frequenza di campionamento, dimensione
del buffer e i periodi
q Monitoraggio e acquisizione a bassa latenza (Low-latency)
q Collegamento tra dispositivi e applicativi
q Inter-connettività e Intra-connettività
q Jam-syncing virtuale
●
JACK OverviewJACK Overview
6. Applicativi «Jack-aware» e
controllo e gestione di Jack
Applicativi «Jack-aware» e
controllo e gestione di Jack
● Applicativi «Jack-aware»: cosa sono e come si classificano?
● Server-oriented → orientati al “produttore” del servizio
(controllori di Jack)
● Client-oriented → orientati al “consumatore” del servizio
(Clients)
● Quando e perché usare gli uni o gli altri?
All-in DAW oppure processori/plugin esterni?
● Esempi di connessione tramite JACK
Routing D2D (DAW to DAW)
Routing su differenti Ouput Speakers
Sincronizzazione tramite Common Time-master
JACK e XJADEO
JACK S-O
Server-oriented
JACK S-O
Server-oriented
jackd
JACK
Client1 JACK
Client2
JACK
Client3
JACK
Client3
JACK
Client3
7. Applicativi «Jack-aware»
controllo e gestione di Jack
Applicativi «Jack-aware»
controllo e gestione di Jack
● Applicativi «Jack-aware» Server-oriented di uso comune:
QjackCtl
Cadence
Patchage
CATIA
8. Audio Software Engineering:
Knowledge-Base (1)
Audio Software Engineering:
Knowledge-Base (1)
Alcuni importanti concetti da tenere sempre a mente quando si
trattano applicativi audio software:
1. Dimensione del Buffer
È il registro nel quale vengono depositati i campioni affinché possano essere elaborati.
Dimensioni di buffer più piccole generano latenze minori (perché minore è la quantità di dati
elaborata). Aumentare il buffer, significa aumentare il numero di bit campione, guadagnando in
risoluzione ma richiedendo più effort alla CPU.
2. Frequenza di Campionamento
È la “velocità” a cui vogliamo che vengano “eseguiti” i nostri campioni.
Può generare crackle o popping (distorsioni)!
Xruns Errors
9. Audio Software Engineering:
Knowledge-Base (2)
Audio Software Engineering:
Knowledge-Base (2)
3. Periods/Buffer o FramePeriod/Buffer
FramePeriod → singolo campione che “sta suonando”
È misurato generalmente in bytes
44.1kHz / 16 bit PCM FP = 4 bytes
51.48 kHz / 16 bit PCM FP = 12 bytes
FramePeriod/Buffer → indica il numero di campioni che vengono spostati nel buffer
di lettura pronti alla elaborazione.
Se si utilizzano dispositivi USB possiamo impostarla anche che a 3 FP Streaming. In caso
contrario, possiamo usare utilizzeremo una configurazione standard a 2 FP Streaming.
10. Installazione di JACK (via Shell) (1)Installazione di JACK (via Shell) (1)
Prerequisiti
Installazione standard con utilizzo di sistema Linux Ubuntu
Installazione prevede la configurazione iniziale di Qjckctl
Utilizzeremo la shell per effettuare i settaggi iniziali di JACK per due motivi:
1. Maggiore controllo per le configurazioni dei drivers ALSA/PulseAudio
2. Jack è un servizio in background, la configurazione via shell è un “must”
Installazione
Per installare JACK, basterà digitare il comando sudo:
sudo apt-get install jack-tools ant openjdk-6-jdk fftw3 qjackctl
Alcune raccomandazioni sul Kernel:
Per ottenere prestazioni ottimali è necessario avere un Kernel abilitato in real-time
(kernel rt mode) per l’elaborazione coerente dei dati degli audio stream in
processing o per la configurazione di strumenti musicali esterni
Per i possessori di Ubuntu, Ubuntu studio vi permetterà di configurare facilmente il
supporto real-time per le applicazioni.
11. Installazione di JACK (via Shell) (2)Installazione di JACK (via Shell) (2)
JACK Background Service
Per avviare JACK digitiamo il comando
jackd
jackd -r -d alsa -r 44100
Note per gli utenti Fedora: l'installazione del pacchetto JACK è divisa in due fasi (prima per JACK
e successivamente per QjackCtl):
sudo yum install jack-audio-connection-kit-example-clients
sudo yum install jack-audio-connection-kit-dbus
sudo yum install qjackctl
jack_lsp (→ verifica lo stato corrente di JACK)
- Modalità rt-kernel è ottenuta tramite repositories forniti Planet CCRMA (dispense)
Controllo dei drivers di connessione PulseAudio/JACK
JACK necessita di alcuni moduli di PulseAudio dedicati, pertanto potrebbe essere utile fare un
check. Per farlo digitiamo a linea di comando la lista dei moduli di PulseAudio installati:
pulseaudio -k (→ reloading loading di tutti i moduli)
pulseaudio --dump-modules (→ lista di tutti i moduli installati)
Dovremmo accertarci di avere installati e caricati i due moduli software jack e jack-dbg
pulseaudio-module-jack
pulseaudio-module-jack-dbg (per il debugging, non strettamente necessario)
12. Installazione di JACK (via Shell) (3)Installazione di JACK (via Shell) (3)
Loading statico di jack-sink e jack-source
1) jack-sink : modulo utilizzato per la sincronizzazione degli applicativi "Jack-aware"
2)jack-source: modulo utilizzato per l'acquisizione da sorgenti esterne (strumenti
musicali, controller MIDI etc)
Aprite, come sudo, il file al path /etc/pulse/default.pa e sotto la sezione:
### Load audio Drivers statically
Se non presenti, aggiungete le righe e riavviate il sistema.
load-module module-jack-sink
load-module module-jack-source
13. Installazione di JACK (via Shell) (4)Installazione di JACK (via Shell) (4)
Audio Control Panel
Aprendo le configurazioni
Audio potete ora
beneficiare dell’ausilio di
JACK per la riproduzione e la
registrazione.
14. Configurazione di JACK con QjackCtl
(via GUI) (1)
Configurazione di JACK con QjackCtl
(via GUI) (1)
15. Configurazione di JACK con QjackCtl
(via GUI) (2)
Configurazione di JACK con QjackCtl
(via GUI) (2)
16. Configurazione di JACK con QjackCtl
(via GUI) (3)
Configurazione di JACK con QjackCtl
(via GUI) (3)
PRESET (Azzurro)
Permette “congelare” il pannello delle configurazioni globali di JACK e quindi generare delle
configurazioni personali con i nostri settings.
PARAMETERS GENERAL (Rosso)
Viene identificato nel preset name il servizio da avviare (preimpostato). Il servizio jackd può essere
ovviamente “riscritto” e riconfigurato. Inoltre, possiamo scegliere quali driver saranno utilizzati da
JACK (preimpostato ALSA ma nulla vieta di installare e utilizzare altri Soft driver).
RUNNING MODE SETTINGS (Grigio)
È il pannello di configurazione di Running Mode di JACK (checkboxes)
Realtime → Se è abilitata la modalità in rt-kernel, JACK lavorerà in real time scheduling
No Memory Lock → Se abilitato permette l'allocazione dinamica della memoria nei flussi audio tra i
clients (consigliato solo in condizioni critiche di memory usage). JACK dispone di un tot di memoria.
Unlock Memory → Utilizzo di JACK delle librerie grafiche GTK+, Qt, FLTK
Softmode → Abilita una modalità “software-mode” per alzare il livello dei logs di ALSA (a.e. Xruns
Error)
17. Configurazione di JACK con QjackCtl
(via GUI) (4)
Configurazione di JACK con QjackCtl
(via GUI) (4)
(SW) Monitor → Configurazione manuale via software delle porte audio (sysconfig) di output
(consigliata la configurazione automatica di JACK)
Force 16 bit → Forziamo JACK a lavorare con una PCM a 16 bit per i campioni
H/W Monitor → A differenza di “Monitor”, abilita le porte hardware. Se abilitato crea un garantisce
un percorso diretto di dati tra ingressi ed uscite senza elaborazione da parte dell'host (zero-latency)
Se non abilitata? JACK leggerà solo dallo stack di sistema aumentando la latenza di esecuzione.
H/W Meter → Se abilitato permette a JACK di controllare il metering della scheda audio se dotata di
VU/Peak Metering). Altrimenti utilizzerà quello dell'applicativo client main.
Verbose Message → Se abilitato consente di ottenere log espliciti sulla console (MESSAGES)
SOFTWARE AUDIO CORE (Verde)
Il pannello CORE serve a configurare la trasmissione dei dati audio e il process scheduling
Priority → I sistemi operativi Linux supportano un preemptive priority scheduling basato su
algoritmo Round Robin (favorendo i processi .
- Tutti i client di JACK hanno la stessa Priority, eventualmente più alta di altri processi
- Tutti i client sono “processi cooperativi” nel contendersi la CPU
- Funziona solo se JACK è in real time mode.
18. Configurazione di JACK con QjackCtl
(via GUI) (5)
Configurazione di JACK con QjackCtl
(via GUI) (5)
Frame/Period → Indica il numero di FramePeriod (cosnigliato a 128)
Sample Rate → Indica la frequenza di campionamento (default 44.100 oppure 48.000)
Period/Buffer → Indica il numero di bytes di Fpdel buffer (3 oppure 4 bytes)
Wordlength → Se non impostate le opzioni precedenti, indica il numero di bit del singolo campione
Channels → Indica il numero di canali (di default è 2 → L/R semplice)
Port Maximum → Imposta il numero massimo di porte di uscita di JACK (max 256 porte)
Timeout →Imposta il valore in ms entro il quale un singolo Client è in ascolto. Se JACK è in rt-mode il
valore deve essere sempre inferiore al watchdog time (di solito 500ms, valore di timeout della
scheda audio)
BACK-END SETTINGS (Blu)
È il pannello di configurazione per i driver ALSA/PulseAudio
Interface → Permette di scegliere il dispositivo di acquisizione (scheda audio)
Dither → Permette di scegliere una forma d'onda per minimizzare il dithering (fattore di
distorsione per la quant. dei campioni). Se non in particolari condizioni, possiamo lasciarla
“None”.
Audio → JACK permette di gestire acquisizioni (capture) e riproduzioni (playback). Possiamo
impostare “Duplex” per impostare entrambe le modalità.
Input/Output Device--> Imposta i device
Channels I/O → Imposta il numero di canali utilizzati, se impostato “Default” recupera quelli di
“Channel”
19. Configurazione di JACK con QjackCtl
(via GUI) (5)
Configurazione di JACK con QjackCtl
(via GUI) (5)
Latency I/O → Permette di impostare manualmente degli Extra-Frame di input. Impostiamo
sempre a 0 (è uno zero nominale!)
MIDI Driver →Se utilizziamo un MIDI controller esterno, possiamo scegliere di utilizzarlo per
pilotare JACK nella nostra audio chain.
20. Get Started with JACK! (1)Get Started with JACK! (1)
CONFIGURAZIONE DELLE PATCHBAYS E DELLE CONNESSIONI
1.PATCHBAY
Configurazione delle Input e Output Socket → “Mappatura” della Patchbay
2.CONNECTIONS
Configurazione delle connessioni tra i Client Jack-aware
3.MESSAGES
Configurazione del monitoraggio e dei console Logs
21. Get Started with JACK!
►PATCHBAY
Get Started with JACK!
►PATCHBAY
PATCHBAY
Configurazione delle Input e Output Socket → Mappatura della Patchbay
22. Get Started with JACK!
►CONNECTIONS
Get Started with JACK!
►CONNECTIONS
CONNECTIONS
Configurazione delle
connessioni tra i Client
Jack-aware
23. What's the difference between..?!What's the difference between..?!
Qual è la differenza tra Patchbay e Connections?
1. Il pannello Patchbay fornisce il setup delle connessioni automatiche tra Client Jack-
aware mantenendole persistenti quando JACK viene terminato, messo in pausa o in
caso di crash inaspettati degli stessi. Non può eliminare le connessioni tra le socket,
infatti se eliminate una “connessione tra socket” ma non il collegamento, e chiudete
JACK alla riapertura la connessione riapparirà automaticamente!
2. Il pannello delle Connections sono proprio le connessioni “fisiche” tra le socket!
24. Get Started with JACK!
►MESSAGES
Get Started with JACK!
►MESSAGES
MESSAGES
Console Logs
Se avete checkato l'opzione
“Verbose” nel Config Panel
vedrete che i messaggi della
Console Log saranno espliciti!