SlideShare a Scribd company logo
1 of 27
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
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
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
Inter-connectivity e Intra-
connectivity
Inter-connectivity e Intra-
connectivity
● Inter-connettività
● Intra-connettività
connessioni tra applicativi differenti
connessioni tra moduli software
dello stesso applicativo
Jam-syncing virtualeJam-syncing virtuale
● Jam-syncing: cos’è ?
● Architetture Master/Slave in
Timecoding
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
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
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
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.
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.
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)
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
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.
Configurazione di JACK con QjackCtl
(via GUI) (1)
Configurazione di JACK con QjackCtl
(via GUI) (1)
Configurazione di JACK con QjackCtl
(via GUI) (2)
Configurazione di JACK con QjackCtl
(via GUI) (2)
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)
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.
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”
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.
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
Get Started with JACK!
►PATCHBAY
Get Started with JACK!
►PATCHBAY
PATCHBAY
Configurazione delle Input e Output Socket → Mappatura della Patchbay
Get Started with JACK!
►CONNECTIONS
Get Started with JACK!
►CONNECTIONS
CONNECTIONS
Configurazione delle
connessioni tra i Client
Jack-aware
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!
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!
Any questions?Any questions?
RingraziamentiRingraziamenti
UN RINGRAZIAMENTO SPECIALE VA A...
Osservatorio Astronomico di Capodimonte
TEAM DEL NaLUG
Marco Ferrigno
voi...
Bibliografia e RiferimentiBibliografia e Riferimenti
[1] http://jackaudio.org/files/refman.pdf
[2] https://qjackctl.sourceforge.io/
[3] http://jackaudio.org/
[4] https://github.com/overtone/overtone/wiki/Installing-and-starting-jack
[5] https://wiki.linuxaudio.org
[6] https://docs.fedoraproject.org
[7] https://help.ubuntu.com/community/HowToJACKConfiguration
[8] https://wiki.linuxaudio.org
[9] https://wiki.archlinux.org/index.php/PulseAudio
[10] https://sookocheff.com/post/linux/how-to-install-the-real-time-kernel-in-ubuntu/
RIFERIMENTI
Dott. Ing. Marcello Marino
Software Engineer / Audio Software Engineer
Hw/Sw Audio and Audio Encryption Independent Researcher
AES Italia Official Member

More Related Content

What's hot

Vgrd 1630 td
Vgrd 1630 tdVgrd 1630 td
Vgrd 1630 tdGpsLazio
 
Vudvr8 cc(new)
Vudvr8 cc(new)Vudvr8 cc(new)
Vudvr8 cc(new)GpsLazio
 
BeRTOS: Sistema Real Time Embedded Free
BeRTOS: Sistema Real Time Embedded FreeBeRTOS: Sistema Real Time Embedded Free
BeRTOS: Sistema Real Time Embedded FreeDeveler S.r.l.
 
Delphi Day 2009 Win7 Dev Overview
Delphi Day 2009 Win7 Dev OverviewDelphi Day 2009 Win7 Dev Overview
Delphi Day 2009 Win7 Dev Overviewpietrobr
 
Vgrd 410 g
Vgrd 410 gVgrd 410 g
Vgrd 410 gGpsLazio
 
Raspberry pi per tutti (workshop presso Warehouse Coworking Pesaro)
Raspberry pi per tutti (workshop presso Warehouse Coworking Pesaro)Raspberry pi per tutti (workshop presso Warehouse Coworking Pesaro)
Raspberry pi per tutti (workshop presso Warehouse Coworking Pesaro)Gabriele Guizzardi
 
Arduino & raspberry pi - Un connubio stimolante
Arduino & raspberry pi - Un connubio stimolanteArduino & raspberry pi - Un connubio stimolante
Arduino & raspberry pi - Un connubio stimolanteMirco Sbrollini
 
Vudvr16 cc(new)
Vudvr16 cc(new)Vudvr16 cc(new)
Vudvr16 cc(new)GpsLazio
 
Vudvr16 cc
Vudvr16 ccVudvr16 cc
Vudvr16 ccGpsLazio
 
Makers Italy: VR Neuron la risposta italiana alla piattaforma Raspberry pi
Makers Italy: VR Neuron la risposta italiana alla piattaforma Raspberry piMakers Italy: VR Neuron la risposta italiana alla piattaforma Raspberry pi
Makers Italy: VR Neuron la risposta italiana alla piattaforma Raspberry piRoberto Navoni
 
Trace32 lo-strumento-piu-completo-per-il-debug-di-un-sistema-linux
Trace32 lo-strumento-piu-completo-per-il-debug-di-un-sistema-linuxTrace32 lo-strumento-piu-completo-per-il-debug-di-un-sistema-linux
Trace32 lo-strumento-piu-completo-per-il-debug-di-un-sistema-linuxDeveler S.r.l.
 
Review4 u icd2 mplab pic programmer 2010-11-02
Review4 u icd2 mplab pic programmer   2010-11-02Review4 u icd2 mplab pic programmer   2010-11-02
Review4 u icd2 mplab pic programmer 2010-11-02Ionela
 
Arduino wifi logger node
Arduino wifi logger nodeArduino wifi logger node
Arduino wifi logger nodeMirco Piccin
 

What's hot (19)

Openmoko
OpenmokoOpenmoko
Openmoko
 
Vgrd 1630 td
Vgrd 1630 tdVgrd 1630 td
Vgrd 1630 td
 
Vudvr8 cc
Vudvr8 ccVudvr8 cc
Vudvr8 cc
 
Vudvr8 cc(new)
Vudvr8 cc(new)Vudvr8 cc(new)
Vudvr8 cc(new)
 
BeRTOS: Sistema Real Time Embedded Free
BeRTOS: Sistema Real Time Embedded FreeBeRTOS: Sistema Real Time Embedded Free
BeRTOS: Sistema Real Time Embedded Free
 
Delphi Day 2009 Win7 Dev Overview
Delphi Day 2009 Win7 Dev OverviewDelphi Day 2009 Win7 Dev Overview
Delphi Day 2009 Win7 Dev Overview
 
Vudvr4 cc
Vudvr4 ccVudvr4 cc
Vudvr4 cc
 
Vgrd 410 g
Vgrd 410 gVgrd 410 g
Vgrd 410 g
 
Raspberry pi per tutti (workshop presso Warehouse Coworking Pesaro)
Raspberry pi per tutti (workshop presso Warehouse Coworking Pesaro)Raspberry pi per tutti (workshop presso Warehouse Coworking Pesaro)
Raspberry pi per tutti (workshop presso Warehouse Coworking Pesaro)
 
Arduino & raspberry pi - Un connubio stimolante
Arduino & raspberry pi - Un connubio stimolanteArduino & raspberry pi - Un connubio stimolante
Arduino & raspberry pi - Un connubio stimolante
 
Vudvr16 cc(new)
Vudvr16 cc(new)Vudvr16 cc(new)
Vudvr16 cc(new)
 
Vudvr16 cc
Vudvr16 ccVudvr16 cc
Vudvr16 cc
 
Progetto Netkit
Progetto NetkitProgetto Netkit
Progetto Netkit
 
Arp Attack
Arp AttackArp Attack
Arp Attack
 
APT per RPM
APT per RPMAPT per RPM
APT per RPM
 
Makers Italy: VR Neuron la risposta italiana alla piattaforma Raspberry pi
Makers Italy: VR Neuron la risposta italiana alla piattaforma Raspberry piMakers Italy: VR Neuron la risposta italiana alla piattaforma Raspberry pi
Makers Italy: VR Neuron la risposta italiana alla piattaforma Raspberry pi
 
Trace32 lo-strumento-piu-completo-per-il-debug-di-un-sistema-linux
Trace32 lo-strumento-piu-completo-per-il-debug-di-un-sistema-linuxTrace32 lo-strumento-piu-completo-per-il-debug-di-un-sistema-linux
Trace32 lo-strumento-piu-completo-per-il-debug-di-un-sistema-linux
 
Review4 u icd2 mplab pic programmer 2010-11-02
Review4 u icd2 mplab pic programmer   2010-11-02Review4 u icd2 mplab pic programmer   2010-11-02
Review4 u icd2 mplab pic programmer 2010-11-02
 
Arduino wifi logger node
Arduino wifi logger nodeArduino wifi logger node
Arduino wifi logger node
 

Similar to [LDNA2018] - JACK Audio Connection Kit: la tua Patchbay virtuale!

Chakra_recensione
Chakra_recensioneChakra_recensione
Chakra_recensioneandreazube
 
Chakra 2012.9 rec
Chakra 2012.9 recChakra 2012.9 rec
Chakra 2012.9 reckdekda
 
Come Abilitare La Connettività Usb Con La Famiglia Di Js16 8 A 8 Bit Della Fr...
Come Abilitare La Connettività Usb Con La Famiglia Di Js16 8 A 8 Bit Della Fr...Come Abilitare La Connettività Usb Con La Famiglia Di Js16 8 A 8 Bit Della Fr...
Come Abilitare La Connettività Usb Con La Famiglia Di Js16 8 A 8 Bit Della Fr...Ionela
 
Mpc8308 rdb piattaforma di riferimento della freescale - recensione - 2010-10-26
Mpc8308 rdb piattaforma di riferimento della freescale - recensione - 2010-10-26Mpc8308 rdb piattaforma di riferimento della freescale - recensione - 2010-10-26
Mpc8308 rdb piattaforma di riferimento della freescale - recensione - 2010-10-26Ionela
 
Succo di lampone: come ottimizzare JAVA e PHP su un’architettura Raspberry Pi...
Succo di lampone: come ottimizzare JAVA e PHP su un’architettura Raspberry Pi...Succo di lampone: come ottimizzare JAVA e PHP su un’architettura Raspberry Pi...
Succo di lampone: come ottimizzare JAVA e PHP su un’architettura Raspberry Pi...Codemotion
 
Codemotion 2013: Succo di lampone: come ottimizzare JAVA e PHP su un’architet...
Codemotion 2013: Succo di lampone: come ottimizzare JAVA e PHP su un’architet...Codemotion 2013: Succo di lampone: come ottimizzare JAVA e PHP su un’architet...
Codemotion 2013: Succo di lampone: come ottimizzare JAVA e PHP su un’architet...Matteo Baccan
 
Deployment ripetibili e automatizzati con Salt
Deployment ripetibili e automatizzati con SaltDeployment ripetibili e automatizzati con Salt
Deployment ripetibili e automatizzati con Saltitbabu
 
Presentazione Laurea Matteo Vit
Presentazione Laurea Matteo VitPresentazione Laurea Matteo Vit
Presentazione Laurea Matteo VitMatteo Vit
 
CodingGym - Lezione 2 - Corso Linux, Android e Internet of Things
CodingGym - Lezione 2 - Corso Linux, Android e Internet of ThingsCodingGym - Lezione 2 - Corso Linux, Android e Internet of Things
CodingGym - Lezione 2 - Corso Linux, Android e Internet of ThingsMirko Mancin
 
Corso base - HW e SW pubblicata.pptx
Corso base - HW e SW pubblicata.pptxCorso base - HW e SW pubblicata.pptx
Corso base - HW e SW pubblicata.pptxPaolo Righetto
 
LinuxDay 2005 - Multimedialità con Linux - slides
LinuxDay 2005 - Multimedialità con Linux - slidesLinuxDay 2005 - Multimedialità con Linux - slides
LinuxDay 2005 - Multimedialità con Linux - slidesMaurizio Antonelli
 
Jc06 Antonio Terreno Fluidtime
Jc06 Antonio Terreno FluidtimeJc06 Antonio Terreno Fluidtime
Jc06 Antonio Terreno FluidtimeAntonio Terreno
 
Fpga il componente universale 2010-11-09
Fpga  il componente universale   2010-11-09Fpga  il componente universale   2010-11-09
Fpga il componente universale 2010-11-09Ionela
 
Free Software e Open Hardware
Free Software e Open HardwareFree Software e Open Hardware
Free Software e Open HardwareStefano Sanna
 
Un Pinguino Nel Tuo Modem
Un Pinguino Nel Tuo ModemUn Pinguino Nel Tuo Modem
Un Pinguino Nel Tuo ModemMarco Scaloni
 
Hacking Access Point con Firmware Open Source
Hacking Access Point con Firmware Open SourceHacking Access Point con Firmware Open Source
Hacking Access Point con Firmware Open SourceClaudio Cardinali
 

Similar to [LDNA2018] - JACK Audio Connection Kit: la tua Patchbay virtuale! (20)

DHow2 - L5
DHow2 - L5DHow2 - L5
DHow2 - L5
 
Chakra_recensione
Chakra_recensioneChakra_recensione
Chakra_recensione
 
Chakra 2012.9 rec
Chakra 2012.9 recChakra 2012.9 rec
Chakra 2012.9 rec
 
Come Abilitare La Connettività Usb Con La Famiglia Di Js16 8 A 8 Bit Della Fr...
Come Abilitare La Connettività Usb Con La Famiglia Di Js16 8 A 8 Bit Della Fr...Come Abilitare La Connettività Usb Con La Famiglia Di Js16 8 A 8 Bit Della Fr...
Come Abilitare La Connettività Usb Con La Famiglia Di Js16 8 A 8 Bit Della Fr...
 
Mpc8308 rdb piattaforma di riferimento della freescale - recensione - 2010-10-26
Mpc8308 rdb piattaforma di riferimento della freescale - recensione - 2010-10-26Mpc8308 rdb piattaforma di riferimento della freescale - recensione - 2010-10-26
Mpc8308 rdb piattaforma di riferimento della freescale - recensione - 2010-10-26
 
Succo di lampone: come ottimizzare JAVA e PHP su un’architettura Raspberry Pi...
Succo di lampone: come ottimizzare JAVA e PHP su un’architettura Raspberry Pi...Succo di lampone: come ottimizzare JAVA e PHP su un’architettura Raspberry Pi...
Succo di lampone: come ottimizzare JAVA e PHP su un’architettura Raspberry Pi...
 
Codemotion 2013: Succo di lampone: come ottimizzare JAVA e PHP su un’architet...
Codemotion 2013: Succo di lampone: come ottimizzare JAVA e PHP su un’architet...Codemotion 2013: Succo di lampone: come ottimizzare JAVA e PHP su un’architet...
Codemotion 2013: Succo di lampone: come ottimizzare JAVA e PHP su un’architet...
 
Corso base hw e sw
Corso base   hw e swCorso base   hw e sw
Corso base hw e sw
 
Deployment ripetibili e automatizzati con Salt
Deployment ripetibili e automatizzati con SaltDeployment ripetibili e automatizzati con Salt
Deployment ripetibili e automatizzati con Salt
 
Presentazione Laurea Matteo Vit
Presentazione Laurea Matteo VitPresentazione Laurea Matteo Vit
Presentazione Laurea Matteo Vit
 
Beryl
BerylBeryl
Beryl
 
3rd 3DDRESD: VGA Core
3rd 3DDRESD: VGA Core3rd 3DDRESD: VGA Core
3rd 3DDRESD: VGA Core
 
CodingGym - Lezione 2 - Corso Linux, Android e Internet of Things
CodingGym - Lezione 2 - Corso Linux, Android e Internet of ThingsCodingGym - Lezione 2 - Corso Linux, Android e Internet of Things
CodingGym - Lezione 2 - Corso Linux, Android e Internet of Things
 
Corso base - HW e SW pubblicata.pptx
Corso base - HW e SW pubblicata.pptxCorso base - HW e SW pubblicata.pptx
Corso base - HW e SW pubblicata.pptx
 
LinuxDay 2005 - Multimedialità con Linux - slides
LinuxDay 2005 - Multimedialità con Linux - slidesLinuxDay 2005 - Multimedialità con Linux - slides
LinuxDay 2005 - Multimedialità con Linux - slides
 
Jc06 Antonio Terreno Fluidtime
Jc06 Antonio Terreno FluidtimeJc06 Antonio Terreno Fluidtime
Jc06 Antonio Terreno Fluidtime
 
Fpga il componente universale 2010-11-09
Fpga  il componente universale   2010-11-09Fpga  il componente universale   2010-11-09
Fpga il componente universale 2010-11-09
 
Free Software e Open Hardware
Free Software e Open HardwareFree Software e Open Hardware
Free Software e Open Hardware
 
Un Pinguino Nel Tuo Modem
Un Pinguino Nel Tuo ModemUn Pinguino Nel Tuo Modem
Un Pinguino Nel Tuo Modem
 
Hacking Access Point con Firmware Open Source
Hacking Access Point con Firmware Open SourceHacking Access Point con Firmware Open Source
Hacking Access Point con Firmware Open Source
 

Recently uploaded

Giornata Tecnica da Piave Servizi, 11 aprile 2024 | SERRA Giorgio
Giornata Tecnica da Piave Servizi, 11 aprile 2024 | SERRA GiorgioGiornata Tecnica da Piave Servizi, 11 aprile 2024 | SERRA Giorgio
Giornata Tecnica da Piave Servizi, 11 aprile 2024 | SERRA GiorgioServizi a rete
 
Giornata Tecnica da Piave Servizi, 11 aprile 2024 | DISCIPIO Antonio
Giornata Tecnica da Piave Servizi, 11 aprile 2024 | DISCIPIO AntonioGiornata Tecnica da Piave Servizi, 11 aprile 2024 | DISCIPIO Antonio
Giornata Tecnica da Piave Servizi, 11 aprile 2024 | DISCIPIO AntonioServizi a rete
 
Giornata Tecnica da Piave Servizi, 11 aprile 2024 | ROMANO' Davide
Giornata Tecnica da Piave Servizi, 11 aprile 2024 | ROMANO' DavideGiornata Tecnica da Piave Servizi, 11 aprile 2024 | ROMANO' Davide
Giornata Tecnica da Piave Servizi, 11 aprile 2024 | ROMANO' DavideServizi a rete
 
Giornata Tecnica da Piave Servizi, 11 aprile 2024 | RENZI Daniele
Giornata Tecnica da Piave Servizi, 11 aprile 2024 | RENZI DanieleGiornata Tecnica da Piave Servizi, 11 aprile 2024 | RENZI Daniele
Giornata Tecnica da Piave Servizi, 11 aprile 2024 | RENZI DanieleServizi a rete
 
Giornata Tecnica da Piave Servizi, 11 aprile 2024 | CADEI Giovanni
Giornata Tecnica da Piave Servizi, 11 aprile 2024 | CADEI GiovanniGiornata Tecnica da Piave Servizi, 11 aprile 2024 | CADEI Giovanni
Giornata Tecnica da Piave Servizi, 11 aprile 2024 | CADEI GiovanniServizi a rete
 
Giornata Tecnica da Piave Servizi, 11 aprile 2024 | DI DOMENICO Simone
Giornata Tecnica da Piave Servizi, 11 aprile 2024 | DI DOMENICO SimoneGiornata Tecnica da Piave Servizi, 11 aprile 2024 | DI DOMENICO Simone
Giornata Tecnica da Piave Servizi, 11 aprile 2024 | DI DOMENICO SimoneServizi a rete
 
Giornata Tecnica da Piave Servizi, 11 aprile 2024 | ALBIERO Andrea
Giornata Tecnica da Piave Servizi, 11 aprile 2024 | ALBIERO AndreaGiornata Tecnica da Piave Servizi, 11 aprile 2024 | ALBIERO Andrea
Giornata Tecnica da Piave Servizi, 11 aprile 2024 | ALBIERO AndreaServizi a rete
 

Recently uploaded (7)

Giornata Tecnica da Piave Servizi, 11 aprile 2024 | SERRA Giorgio
Giornata Tecnica da Piave Servizi, 11 aprile 2024 | SERRA GiorgioGiornata Tecnica da Piave Servizi, 11 aprile 2024 | SERRA Giorgio
Giornata Tecnica da Piave Servizi, 11 aprile 2024 | SERRA Giorgio
 
Giornata Tecnica da Piave Servizi, 11 aprile 2024 | DISCIPIO Antonio
Giornata Tecnica da Piave Servizi, 11 aprile 2024 | DISCIPIO AntonioGiornata Tecnica da Piave Servizi, 11 aprile 2024 | DISCIPIO Antonio
Giornata Tecnica da Piave Servizi, 11 aprile 2024 | DISCIPIO Antonio
 
Giornata Tecnica da Piave Servizi, 11 aprile 2024 | ROMANO' Davide
Giornata Tecnica da Piave Servizi, 11 aprile 2024 | ROMANO' DavideGiornata Tecnica da Piave Servizi, 11 aprile 2024 | ROMANO' Davide
Giornata Tecnica da Piave Servizi, 11 aprile 2024 | ROMANO' Davide
 
Giornata Tecnica da Piave Servizi, 11 aprile 2024 | RENZI Daniele
Giornata Tecnica da Piave Servizi, 11 aprile 2024 | RENZI DanieleGiornata Tecnica da Piave Servizi, 11 aprile 2024 | RENZI Daniele
Giornata Tecnica da Piave Servizi, 11 aprile 2024 | RENZI Daniele
 
Giornata Tecnica da Piave Servizi, 11 aprile 2024 | CADEI Giovanni
Giornata Tecnica da Piave Servizi, 11 aprile 2024 | CADEI GiovanniGiornata Tecnica da Piave Servizi, 11 aprile 2024 | CADEI Giovanni
Giornata Tecnica da Piave Servizi, 11 aprile 2024 | CADEI Giovanni
 
Giornata Tecnica da Piave Servizi, 11 aprile 2024 | DI DOMENICO Simone
Giornata Tecnica da Piave Servizi, 11 aprile 2024 | DI DOMENICO SimoneGiornata Tecnica da Piave Servizi, 11 aprile 2024 | DI DOMENICO Simone
Giornata Tecnica da Piave Servizi, 11 aprile 2024 | DI DOMENICO Simone
 
Giornata Tecnica da Piave Servizi, 11 aprile 2024 | ALBIERO Andrea
Giornata Tecnica da Piave Servizi, 11 aprile 2024 | ALBIERO AndreaGiornata Tecnica da Piave Servizi, 11 aprile 2024 | ALBIERO Andrea
Giornata Tecnica da Piave Servizi, 11 aprile 2024 | ALBIERO Andrea
 

[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
  • 4. Inter-connectivity e Intra- connectivity Inter-connectivity e Intra- connectivity ● Inter-connettività ● Intra-connettività connessioni tra applicativi differenti connessioni tra moduli software dello stesso applicativo
  • 5. Jam-syncing virtualeJam-syncing virtuale ● Jam-syncing: cos’è ? ● Architetture Master/Slave in Timecoding
  • 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!
  • 26. RingraziamentiRingraziamenti UN RINGRAZIAMENTO SPECIALE VA A... Osservatorio Astronomico di Capodimonte TEAM DEL NaLUG Marco Ferrigno voi...
  • 27. Bibliografia e RiferimentiBibliografia e Riferimenti [1] http://jackaudio.org/files/refman.pdf [2] https://qjackctl.sourceforge.io/ [3] http://jackaudio.org/ [4] https://github.com/overtone/overtone/wiki/Installing-and-starting-jack [5] https://wiki.linuxaudio.org [6] https://docs.fedoraproject.org [7] https://help.ubuntu.com/community/HowToJACKConfiguration [8] https://wiki.linuxaudio.org [9] https://wiki.archlinux.org/index.php/PulseAudio [10] https://sookocheff.com/post/linux/how-to-install-the-real-time-kernel-in-ubuntu/ RIFERIMENTI Dott. Ing. Marcello Marino Software Engineer / Audio Software Engineer Hw/Sw Audio and Audio Encryption Independent Researcher AES Italia Official Member

Editor's Notes

  1. <numero>
  2. <numero>
  3. <numero>
  4. <numero>
  5. <numero>
  6. <numero>
  7. <numero>
  8. <numero>
  9. <numero>
  10. <numero>
  11. <numero>
  12. <numero>
  13. <numero>
  14. <numero>
  15. <numero>
  16. <numero>
  17. <numero>
  18. <numero>
  19. <numero>
  20. <numero>
  21. <numero>
  22. <numero>
  23. <numero>
  24. <numero>
  25. <numero>
  26. <numero>
  27. <numero>