1. ALSA & PulseAudioALSA & PulseAudioALSA & PulseAudioALSA & PulseAudio
Codifica, decodifica e trattamento dei segnali eCodifica, decodifica e trattamento dei segnali e
dei dati audio digitali in ambiente GNU/Linuxdei dati audio digitali in ambiente GNU/Linux
A cura diA cura di Marcello MarinoMarcello Marino
Audio/SwAudio Engineering Independent ResearcherAudio/SwAudio Engineering Independent Researcher
AES (Audio Engineering Society) Student MemberAES (Audio Engineering Society) Student Member
(rel: Ing. Uncini Aurelio – Università degli studi di Roma La Sapienza)(rel: Ing. Uncini Aurelio – Università degli studi di Roma La Sapienza)
ADG (Audacity Development Group) and LAD ContributorADG (Audacity Development Group) and LAD Contributor
Codifica, decodifica e trattamento dei segnali eCodifica, decodifica e trattamento dei segnali e
dei dati audio digitali in ambiente GNU/Linuxdei dati audio digitali in ambiente GNU/Linux
A cura diA cura di Marcello MarinoMarcello Marino
Audio/SwAudio Engineering Independent ResearcherAudio/SwAudio Engineering Independent Researcher
AES (Audio Engineering Society) Student MemberAES (Audio Engineering Society) Student Member
(rel: Ing. Uncini Aurelio – Università degli studi di Roma La Sapienza)(rel: Ing. Uncini Aurelio – Università degli studi di Roma La Sapienza)
ADG (Audacity Development Group) and LAD ContributorADG (Audacity Development Group) and LAD Contributor
2. Segnali e Dati AudioSegnali e Dati AudioSegnali e Dati AudioSegnali e Dati Audio
Segnale AudioSegnale Audio
Un segnale audio è un segnale acustico,Un segnale audio è un segnale acustico,
emanato da una sorgente acusticaemanato da una sorgente acustica
contenente una qualche informazionecontenente una qualche informazione
che sia percepibile all’organo dell’udito,che sia percepibile all’organo dell’udito,
prodotto mediante la vibrazione ripetutaprodotto mediante la vibrazione ripetuta
di un corpo o di un dispositivodi un corpo o di un dispositivo
elettroacustico.elettroacustico.
Segnale AudioSegnale Audio
Un segnale audio è un segnale acustico,Un segnale audio è un segnale acustico,
emanato da una sorgente acusticaemanato da una sorgente acustica
contenente una qualche informazionecontenente una qualche informazione
che sia percepibile all’organo dell’udito,che sia percepibile all’organo dell’udito,
prodotto mediante la vibrazione ripetutaprodotto mediante la vibrazione ripetuta
di un corpo o di un dispositivodi un corpo o di un dispositivo
elettroacustico.elettroacustico.
Segnale AudioSegnale Audio
DigitaleDigitale
Un segnale audio digitale o dato audio èUn segnale audio digitale o dato audio è
la discretizzazione dell’asse dei tempila discretizzazione dell’asse dei tempi
(Campionamento) e delle ampiezze(Campionamento) e delle ampiezze
(Quantizzazione) di un segnale audio(Quantizzazione) di un segnale audio
analogico, per mezzo di un dispositivo inanalogico, per mezzo di un dispositivo in
grado di eseguire una conversionegrado di eseguire una conversione
Analogico-Digitale (Analogico-Digitale (Convertitore A/DConvertitore A/D).).
4. Teoremi di Nyquist e di WidrowTeoremi di Nyquist e di WidrowTeoremi di Nyquist e di WidrowTeoremi di Nyquist e di Widrow
Teorema di Nyquist → CampionamentoTeorema di Nyquist → Campionamento
Un segnale periodico campionato con passo di campionamento o periodo ,Un segnale periodico campionato con passo di campionamento o periodo ,
affinché possa essere campionato in maniera adeguata deve rispettare la condizione:affinché possa essere campionato in maniera adeguata deve rispettare la condizione:
ovvero che la frequenza del segnale campionato deve essere superiore alla frequenza delovvero che la frequenza del segnale campionato deve essere superiore alla frequenza del
segnalesegnale
I-II Teorema di Widrow → QuantizzazioneI-II Teorema di Widrow → Quantizzazione
I Q-T. Un segnale che ha una CF a “banda limitata”, allora la larghezza di tale banda permette
di escludere le parole codice con “peso”, minore può essere ricostruito a partire dal segnale
quantizzato. In caso contrario no.
II Q-T. Un segnale che ha una CF a “banda limitata” tale che l’errore ε detto di quantizzazione
sia sufficientemente piccolo allora il segnale x’ può essere ricostruito a partire dai momenti
statistici quello quantizzato (media, autocorrelazione etc..)
Teorema di Nyquist → CampionamentoTeorema di Nyquist → Campionamento
Un segnale periodico campionato con passo di campionamento o periodo ,Un segnale periodico campionato con passo di campionamento o periodo ,
affinché possa essere campionato in maniera adeguata deve rispettare la condizione:affinché possa essere campionato in maniera adeguata deve rispettare la condizione:
ovvero che la frequenza del segnale campionato deve essere superiore alla frequenza delovvero che la frequenza del segnale campionato deve essere superiore alla frequenza del
segnalesegnale
I-II Teorema di Widrow → QuantizzazioneI-II Teorema di Widrow → Quantizzazione
I Q-T. Un segnale che ha una CF a “banda limitata”, allora la larghezza di tale banda permette
di escludere le parole codice con “peso”, minore può essere ricostruito a partire dal segnale
quantizzato. In caso contrario no.
II Q-T. Un segnale che ha una CF a “banda limitata” tale che l’errore ε detto di quantizzazione
sia sufficientemente piccolo allora il segnale x’ può essere ricostruito a partire dai momenti
statistici quello quantizzato (media, autocorrelazione etc..)
f C ≥ 2 f S
Φx(u)=0, per∣u∣> π
q
=
ψ
2
Φx(u)=0, per∣u∣> π
q
−ϵ=
ψ
2
−ϵ
TC
5. La rappresentazione numerica diLa rappresentazione numerica di
un segnaleun segnale
La rappresentazione numerica diLa rappresentazione numerica di
un segnaleun segnale
Rappresentazione FXRappresentazione FX
Forma più semplice per codificare un campione. La parola codice quantizzata è data da:Forma più semplice per codificare un campione. La parola codice quantizzata è data da:
Dove b = {0,1} sono gli n bit che costituiscono la parola codice. Ogni bit ha un suo ”peso”.Dove b = {0,1} sono gli n bit che costituiscono la parola codice. Ogni bit ha un suo ”peso”.
Rappresentazione FL (IEEE754)Rappresentazione FL (IEEE754) (*)(*)
Maggiormente utilizzata il dato viene calcolato come:Maggiormente utilizzata il dato viene calcolato come:
Singola precisione (32 bit)Singola precisione (32 bit)
Doppia precisione (64 bit)Doppia precisione (64 bit)
(*)(*) La rappresentazione IEEE754 viene utilizzata nei calcolatori e DSP Intel-based Apple e piattaformeLa rappresentazione IEEE754 viene utilizzata nei calcolatori e DSP Intel-based Apple e piattaforme
Unix...Unix...
Rappresentazione FXRappresentazione FX
Forma più semplice per codificare un campione. La parola codice quantizzata è data da:Forma più semplice per codificare un campione. La parola codice quantizzata è data da:
Dove b = {0,1} sono gli n bit che costituiscono la parola codice. Ogni bit ha un suo ”peso”.Dove b = {0,1} sono gli n bit che costituiscono la parola codice. Ogni bit ha un suo ”peso”.
Rappresentazione FL (IEEE754)Rappresentazione FL (IEEE754) (*)(*)
Maggiormente utilizzata il dato viene calcolato come:Maggiormente utilizzata il dato viene calcolato come:
Singola precisione (32 bit)Singola precisione (32 bit)
Doppia precisione (64 bit)Doppia precisione (64 bit)
(*)(*) La rappresentazione IEEE754 viene utilizzata nei calcolatori e DSP Intel-based Apple e piattaformeLa rappresentazione IEEE754 viene utilizzata nei calcolatori e DSP Intel-based Apple e piattaforme
Unix...Unix...
xq= (∑
i=0
N −1
bi 2
i
)2
= (b0+b1 2
1
+...+bn−1 2
n−1
)2
xq=(−1)
S(x)
∙ 2
E (x)−127
(1.M(x))
6. CODECS vs CONTAINERSCODECS vs CONTAINERSCODECS vs CONTAINERSCODECS vs CONTAINERS
CONTAINERCONTAINER
Un COINTAINER o ”formato” è un
sistema software attraverso il quale il SO
riconosce il tipo di file, e quindi la sua
struttura in termini di byte. Si preoccupa
inoltre di Presentazione, Packaging e
Trasporto.
CODECCODEC
Un CODEC (audio) è un sistema sw/hw
(o eventualmente un sistema embedded)
in grado di effettuare un’operazione di
compression-decompression, ovvero che
è in grado di interpretare il segnale nella
sua forma digitale o numerica e
trasmetterlo su di un canale di
comunicazione digitale analogica
CONTAINERCONTAINER
Un COINTAINER o ”formato” è un
sistema software attraverso il quale il SO
riconosce il tipo di file, e quindi la sua
struttura in termini di byte. Si preoccupa
inoltre di Presentazione, Packaging e
Trasporto.
CODECCODEC
Un CODEC (audio) è un sistema sw/hw
(o eventualmente un sistema embedded)
in grado di effettuare un’operazione di
compression-decompression, ovvero che
è in grado di interpretare il segnale nella
sua forma digitale o numerica e
trasmetterlo su di un canale di
comunicazione digitale analogica
CONTAINERS
SW
HW
CODECS
7. Ogg Vorbis:Ogg Vorbis:
An OpenSource Audio File FormatAn OpenSource Audio File Format
Ogg Vorbis:Ogg Vorbis:
An OpenSource Audio File FormatAn OpenSource Audio File Format
«Ogg» + «Vorbis»«Ogg» + «Vorbis» (( http://xiph.org/vorbis/http://xiph.org/vorbis/ ))
OggOgg →→ Container (Vorbis, Theora, Opus , Flac etc...) [Container (Vorbis, Theora, Opus , Flac etc...) [.ogg, .oga.ogg, .oga..]..]
Multipurpose/Multiplexing stream (stream audio, video, text eMultipurpose/Multiplexing stream (stream audio, video, text e
subtitles)subtitles)
Packaging e Trasporto complessi e accuratiPackaging e Trasporto complessi e accurati
✔
BitStream Serial Number (4 Byte):BitStream Serial Number (4 Byte): Ogni stream è un flusso di bitOgni stream è un flusso di bit
univocamente identificato (Multiplexing e Demultiplexing)univocamente identificato (Multiplexing e Demultiplexing)
✔
Page Sequence Number (4 Byte) :Page Sequence Number (4 Byte) : Ogni stream è composto da pagineOgni stream è composto da pagine
univocamente identificate (utile per la Checksum - controllo degli errori).univocamente identificate (utile per la Checksum - controllo degli errori).
VorbisVorbis →→ Codec (Codec (CC-44.1 kHz/-44.1 kHz/ SS: mono-poly-stereo-5.1/: mono-poly-stereo-5.1/RR: 10 livelli di bit rate): 10 livelli di bit rate)
Encoding-Decoding basato suEncoding-Decoding basato su Quantizzazione Vettoriale MDCTQuantizzazione Vettoriale MDCT (DCT Modified)(DCT Modified)
Supporta la tecnica VBR diSupporta la tecnica VBR di Bitrate Peeling on NetworkBitrate Peeling on Network → bitrate variabile a→ bitrate variabile a
seconda della velocità di connessione dell'utenteseconda della velocità di connessione dell'utente
Da chi viene utilizzato OggVorbis?Da chi viene utilizzato OggVorbis?
Audio Gaming e Audio StreamingAudio Gaming e Audio Streaming
«Ogg» + «Vorbis»«Ogg» + «Vorbis» (( http://xiph.org/vorbis/http://xiph.org/vorbis/ ))
OggOgg →→ Container (Vorbis, Theora, Opus , Flac etc...) [Container (Vorbis, Theora, Opus , Flac etc...) [.ogg, .oga.ogg, .oga..]..]
Multipurpose/Multiplexing stream (stream audio, video, text eMultipurpose/Multiplexing stream (stream audio, video, text e
subtitles)subtitles)
Packaging e Trasporto complessi e accuratiPackaging e Trasporto complessi e accurati
✔
BitStream Serial Number (4 Byte):BitStream Serial Number (4 Byte): Ogni stream è un flusso di bitOgni stream è un flusso di bit
univocamente identificato (Multiplexing e Demultiplexing)univocamente identificato (Multiplexing e Demultiplexing)
✔
Page Sequence Number (4 Byte) :Page Sequence Number (4 Byte) : Ogni stream è composto da pagineOgni stream è composto da pagine
univocamente identificate (utile per la Checksum - controllo degli errori).univocamente identificate (utile per la Checksum - controllo degli errori).
VorbisVorbis →→ Codec (Codec (CC-44.1 kHz/-44.1 kHz/ SS: mono-poly-stereo-5.1/: mono-poly-stereo-5.1/RR: 10 livelli di bit rate): 10 livelli di bit rate)
Encoding-Decoding basato suEncoding-Decoding basato su Quantizzazione Vettoriale MDCTQuantizzazione Vettoriale MDCT (DCT Modified)(DCT Modified)
Supporta la tecnica VBR diSupporta la tecnica VBR di Bitrate Peeling on NetworkBitrate Peeling on Network → bitrate variabile a→ bitrate variabile a
seconda della velocità di connessione dell'utenteseconda della velocità di connessione dell'utente
Da chi viene utilizzato OggVorbis?Da chi viene utilizzato OggVorbis?
Audio Gaming e Audio StreamingAudio Gaming e Audio Streaming
8. Audio Drivers e Audio DSPAudio Drivers e Audio DSPAudio Drivers e Audio DSPAudio Drivers e Audio DSP
Audio DriverAudio Driver
Un audio driver è un modulo software (scritto in linguaggio macchina) che permette al dato audio di
essere correttamente interpretato o ricostruito dalla unità di elaborazione audio (scheda audio e/o
APU) essere inviato sul canale di comunicazione (digitale o analogico) del sistema utilizzato
(auricolari, altoparlanti, impianto Hi-Fi...).
Audio DriverAudio Driver
Un audio driver è un modulo software (scritto in linguaggio macchina) che permette al dato audio di
essere correttamente interpretato o ricostruito dalla unità di elaborazione audio (scheda audio e/o
APU) essere inviato sul canale di comunicazione (digitale o analogico) del sistema utilizzato
(auricolari, altoparlanti, impianto Hi-Fi...).
Lo schema a blocchi
mostra la complessità
di un’operazione di
ADSP. Non a caso
vengono sottolineate
le due sezioni di
Analog e Digital sides.
I due convertitori AD/DA
consentono ai
dispositivi di DSP
di effettuare le
operazioni
sui dati digitali
9. Parametri di Audio Digital SignalParametri di Audio Digital Signal
ProcessingProcessing
Parametri di Audio Digital SignalParametri di Audio Digital Signal
ProcessingProcessing
Aud io
Dig it al
Sig n al Pr o c essin g
PrecisionPrecision
robustnessrobustness
flexibilityflexibility
10. La Sintesi del Suono: WTSLa Sintesi del Suono: WTSLa Sintesi del Suono: WTSLa Sintesi del Suono: WTS
Sintesi WaveTable (WTS)Sintesi WaveTable (WTS)
una tecnica che si basa sulla riproduzione (quanto più reale possibile) di spettri tempo-una tecnica che si basa sulla riproduzione (quanto più reale possibile) di spettri tempo-
varianti a partire da un certo numero di forme d’onda periodiche (sinusoidali) registrate davarianti a partire da un certo numero di forme d’onda periodiche (sinusoidali) registrate da
strumenti veri memorizzati in più LUT (strumenti veri memorizzati in più LUT (Look-Up TableLook-Up Table). I sistemi GNU/Linux-based utilizza). I sistemi GNU/Linux-based utilizza
questo tipo di tecnica per applicazioni di editing in buona parte le sue distribuzioni. Ilquesto tipo di tecnica per applicazioni di editing in buona parte le sue distribuzioni. Il
campione sonoro è:campione sonoro è:
SINTESI ADDITIVASINTESI ADDITIVA
Caso particolare in cui le forme d'ondaCaso particolare in cui le forme d'onda
più complesse non sinusoidale ognuna dellepiù complesse non sinusoidale ognuna delle
quali è modulata in ampiezza e/o in fase.quali è modulata in ampiezza e/o in fase.
Sintesi WaveTable (WTS)Sintesi WaveTable (WTS)
una tecnica che si basa sulla riproduzione (quanto più reale possibile) di spettri tempo-una tecnica che si basa sulla riproduzione (quanto più reale possibile) di spettri tempo-
varianti a partire da un certo numero di forme d’onda periodiche (sinusoidali) registrate davarianti a partire da un certo numero di forme d’onda periodiche (sinusoidali) registrate da
strumenti veri memorizzati in più LUT (strumenti veri memorizzati in più LUT (Look-Up TableLook-Up Table). I sistemi GNU/Linux-based utilizza). I sistemi GNU/Linux-based utilizza
questo tipo di tecnica per applicazioni di editing in buona parte le sue distribuzioni. Ilquesto tipo di tecnica per applicazioni di editing in buona parte le sue distribuzioni. Il
campione sonoro è:campione sonoro è:
SINTESI ADDITIVASINTESI ADDITIVA
Caso particolare in cui le forme d'ondaCaso particolare in cui le forme d'onda
più complesse non sinusoidale ognuna dellepiù complesse non sinusoidale ognuna delle
quali è modulata in ampiezza e/o in fase.quali è modulata in ampiezza e/o in fase.
s[n]=∑
k=1
N arm
ak cos(
2πkn
D
+ Φk),1≤n≤D
● Numero di armoniche
● Numero di periodi per armonica
● Fase iniziale
N arm
D
Φk
11. Synthezisers, Sequencers eSynthezisers, Sequencers e
MixersMixers
Synthezisers, Sequencers eSynthezisers, Sequencers e
MixersMixers
SynthezisersSynthezisers
dispositivi hardware o software il cui scopo è quello di realizzare la sintesi digitale del suonodispositivi hardware o software il cui scopo è quello di realizzare la sintesi digitale del suono
sulla base di una specifica tecnica (e.g. WTS) adatta ad elaborare un determinato segnalesulla base di una specifica tecnica (e.g. WTS) adatta ad elaborare un determinato segnale
audio.audio.
SequencersSequencers
dispositivi hardware o software utilizzati nel campo musicale allo scopo di riprodurre delledispositivi hardware o software utilizzati nel campo musicale allo scopo di riprodurre delle
squenze di segnali di controllo per pilotare un dispositivo elettronico.squenze di segnali di controllo per pilotare un dispositivo elettronico.
SW SequencerSW Sequencer → sfrutta Sinthezisers virtuali, GUIs e le API necessarie del SO.→ sfrutta Sinthezisers virtuali, GUIs e le API necessarie del SO.
MixersMixers
dispositivi hardware e software di N ingressi ed M uscite (CANALI) il cui scopo è quello didispositivi hardware e software di N ingressi ed M uscite (CANALI) il cui scopo è quello di
prendere in ingressi più segnali audio, compattarli ed inviare in uscita un'unico flussoprendere in ingressi più segnali audio, compattarli ed inviare in uscita un'unico flusso
”spalmato” su più canali. I canali dipendono dal sistema fisico di riproduzione utilizzato”spalmato” su più canali. I canali dipendono dal sistema fisico di riproduzione utilizzato
SynthezisersSynthezisers
dispositivi hardware o software il cui scopo è quello di realizzare la sintesi digitale del suonodispositivi hardware o software il cui scopo è quello di realizzare la sintesi digitale del suono
sulla base di una specifica tecnica (e.g. WTS) adatta ad elaborare un determinato segnalesulla base di una specifica tecnica (e.g. WTS) adatta ad elaborare un determinato segnale
audio.audio.
SequencersSequencers
dispositivi hardware o software utilizzati nel campo musicale allo scopo di riprodurre delledispositivi hardware o software utilizzati nel campo musicale allo scopo di riprodurre delle
squenze di segnali di controllo per pilotare un dispositivo elettronico.squenze di segnali di controllo per pilotare un dispositivo elettronico.
SW SequencerSW Sequencer → sfrutta Sinthezisers virtuali, GUIs e le API necessarie del SO.→ sfrutta Sinthezisers virtuali, GUIs e le API necessarie del SO.
MixersMixers
dispositivi hardware e software di N ingressi ed M uscite (CANALI) il cui scopo è quello didispositivi hardware e software di N ingressi ed M uscite (CANALI) il cui scopo è quello di
prendere in ingressi più segnali audio, compattarli ed inviare in uscita un'unico flussoprendere in ingressi più segnali audio, compattarli ed inviare in uscita un'unico flusso
”spalmato” su più canali. I canali dipendono dal sistema fisico di riproduzione utilizzato”spalmato” su più canali. I canali dipendono dal sistema fisico di riproduzione utilizzato
12. LAA: Linux Audio ArchitectureLAA: Linux Audio ArchitectureLAA: Linux Audio ArchitectureLAA: Linux Audio Architecture
KERNELKERNELKERNELKERNEL
FFADO → Free Firewire Audio Drivers
OpenSurce. Furono i primi audio drivers
utilizzati per Sistemi OpenSource prima di
ALSA e di OSS. ALSA/OSS e FFADO oggi
sono architetture driver mutuamente
esclusive.
Gstreamer → Multipiattaforma pipeline
(Framework) attualmente alla versione 1.4.1
(Agosto 2014). Utilizzata dal SO Andoird per
la gestione di dati multimediali in streaming.
www.gstreamer.freedesktop.org
Xine → Multiplatform Multimedia Playback
Engine, di più grandi dimensioni rispetto a
Gstreamer. Xine ( si pronuncia ”KSIN”) ha la
particolare proprietà di sincronizzare dati
multimediali di diversa natura (a.e audio e
video) correggendone anche gli errori.
Versione attuale: 1.2.5 (Ago 2014)
(www.xine-project.org)
13. Linux Audio Architecture byLinux Audio Architecture by
Shell...Shell...
Linux Audio Architecture byLinux Audio Architecture by
Shell...Shell...
Esplorazione e controlloEsplorazione e controllo
Quanti e quali dispositivi audio sono attualmente collegati alla macchinaQuanti e quali dispositivi audio sono attualmente collegati alla macchina
Entrare attivamente nei moduli audio attuali del KernelEntrare attivamente nei moduli audio attuali del Kernel
Elencare i Sound Servers installati sul sistemaElencare i Sound Servers installati sul sistema
Contenuto delle librerie e dei file di configurazione dei SS rilevatiContenuto delle librerie e dei file di configurazione dei SS rilevati
Altre informazioni...Altre informazioni...
Comandi ed esempiComandi ed esempi
➢ mm@mm_System$ lspci | grep Audiomm@mm_System$ lspci | grep Audio
➢ mm@mm_System$ lspci -v | grep -A7 -i ”audio”mm@mm_System$ lspci -v | grep -A7 -i ”audio”
➢ mm@mm_System$ cat /proc/asound/cardsmm@mm_System$ cat /proc/asound/cards
➢ mm@mm_System$ cat /proc/asound/modulesmm@mm_System$ cat /proc/asound/modules
➢ mm@mm_System$ cat /usr/share/alsa lsmod | grep ”sound” | column -tmm@mm_System$ cat /usr/share/alsa lsmod | grep ”sound” | column -t
➢ mm@mm_System$ dpkg -l pulseaudio[alsa] | grep ii pulseaudio[alsa]mm@mm_System$ dpkg -l pulseaudio[alsa] | grep ii pulseaudio[alsa]
➢ mm@mm_System$ lspci | ps aux | grep alsa [pulseaudio]mm@mm_System$ lspci | ps aux | grep alsa [pulseaudio]
Esplorazione e controlloEsplorazione e controllo
Quanti e quali dispositivi audio sono attualmente collegati alla macchinaQuanti e quali dispositivi audio sono attualmente collegati alla macchina
Entrare attivamente nei moduli audio attuali del KernelEntrare attivamente nei moduli audio attuali del Kernel
Elencare i Sound Servers installati sul sistemaElencare i Sound Servers installati sul sistema
Contenuto delle librerie e dei file di configurazione dei SS rilevatiContenuto delle librerie e dei file di configurazione dei SS rilevati
Altre informazioni...Altre informazioni...
Comandi ed esempiComandi ed esempi
➢ mm@mm_System$ lspci | grep Audiomm@mm_System$ lspci | grep Audio
➢ mm@mm_System$ lspci -v | grep -A7 -i ”audio”mm@mm_System$ lspci -v | grep -A7 -i ”audio”
➢ mm@mm_System$ cat /proc/asound/cardsmm@mm_System$ cat /proc/asound/cards
➢ mm@mm_System$ cat /proc/asound/modulesmm@mm_System$ cat /proc/asound/modules
➢ mm@mm_System$ cat /usr/share/alsa lsmod | grep ”sound” | column -tmm@mm_System$ cat /usr/share/alsa lsmod | grep ”sound” | column -t
➢ mm@mm_System$ dpkg -l pulseaudio[alsa] | grep ii pulseaudio[alsa]mm@mm_System$ dpkg -l pulseaudio[alsa] | grep ii pulseaudio[alsa]
➢ mm@mm_System$ lspci | ps aux | grep alsa [pulseaudio]mm@mm_System$ lspci | ps aux | grep alsa [pulseaudio]
14. OSS: Open Sound System (1)OSS: Open Sound System (1)OSS: Open Sound System (1)OSS: Open Sound System (1)
OSS – Open Sound System (H. SavolainenOSS – Open Sound System (H. Savolainen
1992,1992,GNU/BSD/GPLv2/CDDLv1)GNU/BSD/GPLv2/CDDLv1)
Sottositema API e driver portabile per sistemi audio professionali e non, basati suSottositema API e driver portabile per sistemi audio professionali e non, basati su
UNIX e POSIX tra cui Linux (11 Sistemi Unix, www.opensound.com)UNIX e POSIX tra cui Linux (11 Sistemi Unix, www.opensound.com)
Architettura aperta facilmente ricompilabile su diverse piattaformeArchitettura aperta facilmente ricompilabile su diverse piattaforme
Compatibile con le API Solaris Audio (devaudio o SADA)Compatibile con le API Solaris Audio (devaudio o SADA)
Supporto hardwareSupporto hardware
MIDI (implementata da Wavetable Synthesis)MIDI (implementata da Wavetable Synthesis)
Supporta 8/16/24/32 bit / formati audio di esempioSupporta 8/16/24/32 bit / formati audio di esempio
Supporta frequenze di campionamento di 8 KHz fino a 200KHzSupporta frequenze di campionamento di 8 KHz fino a 200KHz
Supporta canali mono, stereo, quad, 5.1, 7.1 e dispositivi audio multicanaleSupporta canali mono, stereo, quad, 5.1, 7.1 e dispositivi audio multicanale
Garantisce fino a 64bit di processingGarantisce fino a 64bit di processing →→ fedeltà audio e precisione se un dato audiofedeltà audio e precisione se un dato audio
deve essere convertito da un formato ad un altrodeve essere convertito da un formato ad un altro
OSS – Open Sound System (H. SavolainenOSS – Open Sound System (H. Savolainen
1992,1992,GNU/BSD/GPLv2/CDDLv1)GNU/BSD/GPLv2/CDDLv1)
Sottositema API e driver portabile per sistemi audio professionali e non, basati suSottositema API e driver portabile per sistemi audio professionali e non, basati su
UNIX e POSIX tra cui Linux (11 Sistemi Unix, www.opensound.com)UNIX e POSIX tra cui Linux (11 Sistemi Unix, www.opensound.com)
Architettura aperta facilmente ricompilabile su diverse piattaformeArchitettura aperta facilmente ricompilabile su diverse piattaforme
Compatibile con le API Solaris Audio (devaudio o SADA)Compatibile con le API Solaris Audio (devaudio o SADA)
Supporto hardwareSupporto hardware
MIDI (implementata da Wavetable Synthesis)MIDI (implementata da Wavetable Synthesis)
Supporta 8/16/24/32 bit / formati audio di esempioSupporta 8/16/24/32 bit / formati audio di esempio
Supporta frequenze di campionamento di 8 KHz fino a 200KHzSupporta frequenze di campionamento di 8 KHz fino a 200KHz
Supporta canali mono, stereo, quad, 5.1, 7.1 e dispositivi audio multicanaleSupporta canali mono, stereo, quad, 5.1, 7.1 e dispositivi audio multicanale
Garantisce fino a 64bit di processingGarantisce fino a 64bit di processing →→ fedeltà audio e precisione se un dato audiofedeltà audio e precisione se un dato audio
deve essere convertito da un formato ad un altrodeve essere convertito da un formato ad un altro
15. OSS: Open Sound System (2)OSS: Open Sound System (2)OSS: Open Sound System (2)OSS: Open Sound System (2)
Basata su Hardware mixing (canali audio multipli)Basata su Hardware mixing (canali audio multipli)
Supporta la registrazione eSupporta la registrazione e full duplexfull duplex alla riproduzione.alla riproduzione.
PossibilitàPossibilità mixering l'audio stereo e multicanalemixering l'audio stereo e multicanale → flussi fino a 7.1 / 200Khz / 32bit→ flussi fino a 7.1 / 200Khz / 32bit
(Canale/Campionamento/Quantizzazione)(Canale/Campionamento/Quantizzazione)
Supporta tutta la gamma aSupporta tutta la gamma a 24 bit senza perdita di precisione24 bit senza perdita di precisione (lossless) durante calcoli(lossless) durante calcoli
interni.interni.
Ogni applicazione ha i propri controlli di volume indipendente.Ogni applicazione ha i propri controlli di volume indipendente.
SupportaSupporta la registrazione in feddback-loopla registrazione in feddback-loop . Ciò consente di attuare il "RWYH". Ciò consente di attuare il "RWYH"
(Recording What You Hear). In genere questo è utile per registrare audio in streaming o(Recording What You Hear). In genere questo è utile per registrare audio in streaming o
cattura audio da applicazionicattura audio da applicazioni
Nuova numerazione dei dispositivi e mixer API rende molto semplice laNuova numerazione dei dispositivi e mixer API rende molto semplice la
gestione dei dispositivi.gestione dei dispositivi.
♦ Source code disponibile al sito http://www.4front-tech.com/developer/sources/stable/
Basata su Hardware mixing (canali audio multipli)Basata su Hardware mixing (canali audio multipli)
Supporta la registrazione eSupporta la registrazione e full duplexfull duplex alla riproduzione.alla riproduzione.
PossibilitàPossibilità mixering l'audio stereo e multicanalemixering l'audio stereo e multicanale → flussi fino a 7.1 / 200Khz / 32bit→ flussi fino a 7.1 / 200Khz / 32bit
(Canale/Campionamento/Quantizzazione)(Canale/Campionamento/Quantizzazione)
Supporta tutta la gamma aSupporta tutta la gamma a 24 bit senza perdita di precisione24 bit senza perdita di precisione (lossless) durante calcoli(lossless) durante calcoli
interni.interni.
Ogni applicazione ha i propri controlli di volume indipendente.Ogni applicazione ha i propri controlli di volume indipendente.
SupportaSupporta la registrazione in feddback-loopla registrazione in feddback-loop . Ciò consente di attuare il "RWYH". Ciò consente di attuare il "RWYH"
(Recording What You Hear). In genere questo è utile per registrare audio in streaming o(Recording What You Hear). In genere questo è utile per registrare audio in streaming o
cattura audio da applicazionicattura audio da applicazioni
Nuova numerazione dei dispositivi e mixer API rende molto semplice laNuova numerazione dei dispositivi e mixer API rende molto semplice la
gestione dei dispositivi.gestione dei dispositivi.
♦ Source code disponibile al sito http://www.4front-tech.com/developer/sources/stable/
16. ALSA: Advanced Linux AudioALSA: Advanced Linux Audio
ArchitectureArchitecture
ALSA: Advanced Linux AudioALSA: Advanced Linux Audio
ArchitectureArchitecture
Main FeaturesMain Features
CompletamenteCompletamente modularemodulare
Supporto efficienteSupporto efficiente per tutti i tipi di interfacce audio, da schedeper tutti i tipi di interfacce audio, da schede
audio consumer ad interfacce audio multicanale professionali.audio consumer ad interfacce audio multicanale professionali.
SMPSMP (Symmetrical Multi-Processing o Multi-thread) e(Symmetrical Multi-Processing o Multi-thread) e thread-savingthread-saving..
Libreria spazio utente (alsa-lib.h e asound.h)Libreria spazio utente (alsa-lib.h e asound.h) per semplificare laper semplificare la
programmazione delle applicazioni e fornire funzionalità di più alto livello.programmazione delle applicazioni e fornire funzionalità di più alto livello.
Il supporto per l'APIIl supporto per l'API Open Sound System (OSS)Open Sound System (OSS), che fornisce compatibilità, che fornisce compatibilità
binaria per la maggior parte dei driver OSSbinaria per la maggior parte dei driver OSS
ALSA viene utilizzato comeALSA viene utilizzato come Basic Audio EngineBasic Audio Engine in numerosi dispositiviin numerosi dispositivi
come nei Decoder Sky e di Mediaset Premium, Playstation3, e XboX,come nei Decoder Sky e di Mediaset Premium, Playstation3, e XboX,
dispositivi Androiddispositivi Android
N.B. Provate ad aprire le cartelle etc dei vostri dispositivi...N.B. Provate ad aprire le cartelle etc dei vostri dispositivi...
Main FeaturesMain Features
CompletamenteCompletamente modularemodulare
Supporto efficienteSupporto efficiente per tutti i tipi di interfacce audio, da schedeper tutti i tipi di interfacce audio, da schede
audio consumer ad interfacce audio multicanale professionali.audio consumer ad interfacce audio multicanale professionali.
SMPSMP (Symmetrical Multi-Processing o Multi-thread) e(Symmetrical Multi-Processing o Multi-thread) e thread-savingthread-saving..
Libreria spazio utente (alsa-lib.h e asound.h)Libreria spazio utente (alsa-lib.h e asound.h) per semplificare laper semplificare la
programmazione delle applicazioni e fornire funzionalità di più alto livello.programmazione delle applicazioni e fornire funzionalità di più alto livello.
Il supporto per l'APIIl supporto per l'API Open Sound System (OSS)Open Sound System (OSS), che fornisce compatibilità, che fornisce compatibilità
binaria per la maggior parte dei driver OSSbinaria per la maggior parte dei driver OSS
ALSA viene utilizzato comeALSA viene utilizzato come Basic Audio EngineBasic Audio Engine in numerosi dispositiviin numerosi dispositivi
come nei Decoder Sky e di Mediaset Premium, Playstation3, e XboX,come nei Decoder Sky e di Mediaset Premium, Playstation3, e XboX,
dispositivi Androiddispositivi Android
N.B. Provate ad aprire le cartelle etc dei vostri dispositivi...N.B. Provate ad aprire le cartelle etc dei vostri dispositivi...
17. ALSA: Architettura Three TiersALSA: Architettura Three TiersALSA: Architettura Three TiersALSA: Architettura Three Tiers
Application LayerApplication LayerApplication Layer
Mixer API Layer
r
ASoC Layer
Comunica direttamente con i processi
applicativi disposti alla codifica dei dati
audio, ponendosi come collegamento
indiretto alla macchina.
Fornisce al SO le API necessarie a
“miscelare” i flussi audio
provenienti da varie sorgenti, nei canali
adibiti alla riproduzione adattando ad
esse le varie tecniche di Mixing Sw
Fornisce la “mappatura” degli elementi
di controllo associati all'hardware (es.
schede audio esterne)
Fornisce un migliore supporto ALSA
per sistemi embedded poggiano su
precisi processori (a.e. pxa2xx,
au1x00, iMX, etc) e un migliore
supporto alla portabilità dei codecs e
un power saving
18. ALSA: Application LayerALSA: Application LayerALSA: Application LayerALSA: Application Layer
ALSA RESAMPLER → HW/SW MergingALSA RESAMPLER → HW/SW Merging
1)1) Adattare il numero di Frames agli hardware PeriodsAdattare il numero di Frames agli hardware Periods
e al Buffer Size disponibile dell’hardware che varianoe al Buffer Size disponibile dell’hardware che variano
da hardware ad hardware (APU)da hardware ad hardware (APU)
2)2) Determinare il numero di Frame per ogni unità diDeterminare il numero di Frame per ogni unità di
elaborazione:elaborazione:
ALSA RESAMPLER → HW/SW MergingALSA RESAMPLER → HW/SW Merging
1)1) Adattare il numero di Frames agli hardware PeriodsAdattare il numero di Frames agli hardware Periods
e al Buffer Size disponibile dell’hardware che varianoe al Buffer Size disponibile dell’hardware che variano
da hardware ad hardware (APU)da hardware ad hardware (APU)
2)2) Determinare il numero di Frame per ogni unità diDeterminare il numero di Frame per ogni unità di
elaborazione:elaborazione:
Gestione e
Stabilizzazione
Adattiva
Dei Frames
ALSA
RESAMPLER
DEVICES
CAPTURE
AND
NAMING
AppLayer
Nf =N p⋅
f S
f card
Frame:: campione in fase di riproduzione, la cui parola
codice è composta da un numero di bit che dipende dal
sistema di riproduzione
Periodo:: numero di Frame per ogni hardware interrupt.
Buffer:: sistema di memorizzazione atto alla
riproduzione dei campioni, contiene un numero specifico
di periodi . Comunemente nelle distribuzioni 2 Periodi.
Canale:: mezzo di input/output utilizzato dal sistema
(mixer). Ogni frame generalmente deve essere inviato su
tutti i canali che costituiscono il sistema di riproduzione.
19. ALSA: Application Layer (2)ALSA: Application Layer (2)ALSA: Application Layer (2)ALSA: Application Layer (2)
DEVICES CAPTURE AND NAMINGDEVICES CAPTURE AND NAMING
CAPTURECAPTURE →→ gestione differente (con differente PCM – Pulse Code Modulation) deigestione differente (con differente PCM – Pulse Code Modulation) dei
dati che sono elaborati dalla Scheda Audio tramite il SO, attraverso due plugins hw e plughw.dati che sono elaborati dalla Scheda Audio tramite il SO, attraverso due plugins hw e plughw.
Con ALSA PCM si adatta automaticamente al formato in esecuzione modificando in manieraCon ALSA PCM si adatta automaticamente al formato in esecuzione modificando in maniera
adattiva frequenza di campionamento, numero di canali, il numero di periodi m frames e leadattiva frequenza di campionamento, numero di canali, il numero di periodi m frames e le
dimensioni dei periodi.dimensioni dei periodi.
hwhw utilizzati per i codecs/container standard (per OggVORBIS, .mp3,utilizzati per i codecs/container standard (per OggVORBIS, .mp3,
.FLAC, .AIFF…).FLAC, .AIFF…)
plughwplughw utilizzati per i formati non standard, ad esempio quelli proprietari.utilizzati per i formati non standard, ad esempio quelli proprietari.
NAMINGNAMING →→ consente di identificare il sistema di riproduzione output attraverso l'utilizzoconsente di identificare il sistema di riproduzione output attraverso l'utilizzo
di specifiche keywords e di inviare il flusso informativo su un determinato canale.di specifiche keywords e di inviare il flusso informativo su un determinato canale.
DEVICES CAPTURE AND NAMINGDEVICES CAPTURE AND NAMING
CAPTURECAPTURE →→ gestione differente (con differente PCM – Pulse Code Modulation) deigestione differente (con differente PCM – Pulse Code Modulation) dei
dati che sono elaborati dalla Scheda Audio tramite il SO, attraverso due plugins hw e plughw.dati che sono elaborati dalla Scheda Audio tramite il SO, attraverso due plugins hw e plughw.
Con ALSA PCM si adatta automaticamente al formato in esecuzione modificando in manieraCon ALSA PCM si adatta automaticamente al formato in esecuzione modificando in maniera
adattiva frequenza di campionamento, numero di canali, il numero di periodi m frames e leadattiva frequenza di campionamento, numero di canali, il numero di periodi m frames e le
dimensioni dei periodi.dimensioni dei periodi.
hwhw utilizzati per i codecs/container standard (per OggVORBIS, .mp3,utilizzati per i codecs/container standard (per OggVORBIS, .mp3,
.FLAC, .AIFF…).FLAC, .AIFF…)
plughwplughw utilizzati per i formati non standard, ad esempio quelli proprietari.utilizzati per i formati non standard, ad esempio quelli proprietari.
NAMINGNAMING →→ consente di identificare il sistema di riproduzione output attraverso l'utilizzoconsente di identificare il sistema di riproduzione output attraverso l'utilizzo
di specifiche keywords e di inviare il flusso informativo su un determinato canale.di specifiche keywords e di inviare il flusso informativo su un determinato canale.
front sorround41 spdif or iec958
rear sorround50 hdmi
center_life sorround51
side sorround71
20. ALSA: ASoC LayerALSA: ASoC LayerALSA: ASoC LayerALSA: ASoC Layer
Features and SkillsFeatures and Skills →→ a diretto contatto con a macchina fisica (drivers ALSA).a diretto contatto con a macchina fisica (drivers ALSA).
Codec IndipendenceCodec Indipendence
Semplice configurazione dell’interfaccia I2S/PCM tra codec eSemplice configurazione dell’interfaccia I2S/PCM tra codec e
SoCSoC
Dynamic Audio Power Management (DAPM)Dynamic Audio Power Management (DAPM)
Controlli aggiuntivi alla scheda audioControlli aggiuntivi alla scheda audio
ASoC 3DASoC 3D
CODEC DRIVERS → controlli e driver relativi ai codec audioCODEC DRIVERS → controlli e driver relativi ai codec audio
PLATFORM DRIVERS → contiene i driver relativi di interfaccia driver di quellaPLATFORM DRIVERS → contiene i driver relativi di interfaccia driver di quella
piattaforma software (Kernel)piattaforma software (Kernel)
MACHINE DRIVER → driver riferiti agli ”eventi” di inserimento dispotivi audioMACHINE DRIVER → driver riferiti agli ”eventi” di inserimento dispotivi audio
esterni (auricolari, microfon, schede audio. ETC...)esterni (auricolari, microfon, schede audio. ETC...)
Features and SkillsFeatures and Skills →→ a diretto contatto con a macchina fisica (drivers ALSA).a diretto contatto con a macchina fisica (drivers ALSA).
Codec IndipendenceCodec Indipendence
Semplice configurazione dell’interfaccia I2S/PCM tra codec eSemplice configurazione dell’interfaccia I2S/PCM tra codec e
SoCSoC
Dynamic Audio Power Management (DAPM)Dynamic Audio Power Management (DAPM)
Controlli aggiuntivi alla scheda audioControlli aggiuntivi alla scheda audio
ASoC 3DASoC 3D
CODEC DRIVERS → controlli e driver relativi ai codec audioCODEC DRIVERS → controlli e driver relativi ai codec audio
PLATFORM DRIVERS → contiene i driver relativi di interfaccia driver di quellaPLATFORM DRIVERS → contiene i driver relativi di interfaccia driver di quella
piattaforma software (Kernel)piattaforma software (Kernel)
MACHINE DRIVER → driver riferiti agli ”eventi” di inserimento dispotivi audioMACHINE DRIVER → driver riferiti agli ”eventi” di inserimento dispotivi audio
esterni (auricolari, microfon, schede audio. ETC...)esterni (auricolari, microfon, schede audio. ETC...)
21. DAPM:DAPM:
Dynamic Audio Power ManagementDynamic Audio Power Management
DAPM:DAPM:
Dynamic Audio Power ManagementDynamic Audio Power Management
Sistema Software diSistema Software di gestione e controllo della potenzagestione e controllo della potenza quando un file audio è inquando un file audio è in
esecuzioneesecuzione
Progettato in primis per consentire ai dispositivi portatili Linux di utilizzare laProgettato in primis per consentire ai dispositivi portatili Linux di utilizzare la
percentuale minima di potenzapercentuale minima di potenza all'interno del sottosistema audio in ogniall'interno del sottosistema audio in ogni
momentomomento
IndipendenteIndipendente da altri PMM del Kernelda altri PMM del Kernel
Trasparente e utilizzabileTrasparente e utilizzabile per tutte le applicazioni dello spazio utenteper tutte le applicazioni dello spazio utente
Commutazione di potenzaCommutazione di potenza basata su qualsiasi impostazione sul flusso audiobasata su qualsiasi impostazione sul flusso audio
(cattura / riproduzione) di attività e mixer audio all'interno del dispositivo(cattura / riproduzione) di attività e mixer audio all'interno del dispositivo
4 Dominii di management:4 Dominii di management:
1)1) CodecCodec → riferito al monitoraggio dei Codecs→ riferito al monitoraggio dei Codecs
2)2) Piattaforma/MacchinaPiattaforma/Macchina → ingressi e uscite fisicamente collegati→ ingressi e uscite fisicamente collegati
3)3) Path →Path → percorsi di segnale del sottosistema audio. Se il flusso vienepercorsi di segnale del sottosistema audio. Se il flusso viene
”dirottato” su altri sottosistemi.”dirottato” su altri sottosistemi.
4)4) StreamingStreaming → riferito agli eventi di riproduzione audio (play, stop..)→ riferito agli eventi di riproduzione audio (play, stop..)
Sistema Software diSistema Software di gestione e controllo della potenzagestione e controllo della potenza quando un file audio è inquando un file audio è in
esecuzioneesecuzione
Progettato in primis per consentire ai dispositivi portatili Linux di utilizzare laProgettato in primis per consentire ai dispositivi portatili Linux di utilizzare la
percentuale minima di potenzapercentuale minima di potenza all'interno del sottosistema audio in ogniall'interno del sottosistema audio in ogni
momentomomento
IndipendenteIndipendente da altri PMM del Kernelda altri PMM del Kernel
Trasparente e utilizzabileTrasparente e utilizzabile per tutte le applicazioni dello spazio utenteper tutte le applicazioni dello spazio utente
Commutazione di potenzaCommutazione di potenza basata su qualsiasi impostazione sul flusso audiobasata su qualsiasi impostazione sul flusso audio
(cattura / riproduzione) di attività e mixer audio all'interno del dispositivo(cattura / riproduzione) di attività e mixer audio all'interno del dispositivo
4 Dominii di management:4 Dominii di management:
1)1) CodecCodec → riferito al monitoraggio dei Codecs→ riferito al monitoraggio dei Codecs
2)2) Piattaforma/MacchinaPiattaforma/Macchina → ingressi e uscite fisicamente collegati→ ingressi e uscite fisicamente collegati
3)3) Path →Path → percorsi di segnale del sottosistema audio. Se il flusso vienepercorsi di segnale del sottosistema audio. Se il flusso viene
”dirottato” su altri sottosistemi.”dirottato” su altri sottosistemi.
4)4) StreamingStreaming → riferito agli eventi di riproduzione audio (play, stop..)→ riferito agli eventi di riproduzione audio (play, stop..)
22. PulseAudio:PulseAudio:
The Network Sound ServerThe Network Sound Server
PulseAudio:PulseAudio:
The Network Sound ServerThe Network Sound Server
SS/NSS ( Sound Server/Network Sound Server)SS/NSS ( Sound Server/Network Sound Server)
molto simile al predecessore EsounDmolto simile al predecessore EsounD
(Enlightened Sound Deamon) ma sotto certi(Enlightened Sound Deamon) ma sotto certi
aspetti con potenzialità maggiori e più avanzate.aspetti con potenzialità maggiori e più avanzate.
Architettura MiddlewareArchitettura Middleware
Architettura Modulare Multi-TiersArchitettura Modulare Multi-Tiers
Sound Server:: what is it?Sound Server:: what is it?
Processo software che si preoccupa della gestioneProcesso software che si preoccupa della gestione
dell'accesso ai dipositivi hardware collegati (schededell'accesso ai dipositivi hardware collegati (schede
audio e APU) alla macchinaaudio e APU) alla macchina
Background Process (Deamon)Background Process (Deamon)
Si comporta come un ”Server” per tutte leSi comporta come un ”Server” per tutte le
applicazioni audio indipendente da loro natura eapplicazioni audio indipendente da loro natura e
come un ”Network Sound Server” per applicazionicome un ”Network Sound Server” per applicazioni
Network-basedNetwork-based
Utilizzato come bridge da e verso l'architettturaUtilizzato come bridge da e verso l'architetttura
hardwarehardware
SS/NSS ( Sound Server/Network Sound Server)SS/NSS ( Sound Server/Network Sound Server)
molto simile al predecessore EsounDmolto simile al predecessore EsounD
(Enlightened Sound Deamon) ma sotto certi(Enlightened Sound Deamon) ma sotto certi
aspetti con potenzialità maggiori e più avanzate.aspetti con potenzialità maggiori e più avanzate.
Architettura MiddlewareArchitettura Middleware
Architettura Modulare Multi-TiersArchitettura Modulare Multi-Tiers
Sound Server:: what is it?Sound Server:: what is it?
Processo software che si preoccupa della gestioneProcesso software che si preoccupa della gestione
dell'accesso ai dipositivi hardware collegati (schededell'accesso ai dipositivi hardware collegati (schede
audio e APU) alla macchinaaudio e APU) alla macchina
Background Process (Deamon)Background Process (Deamon)
Si comporta come un ”Server” per tutte leSi comporta come un ”Server” per tutte le
applicazioni audio indipendente da loro natura eapplicazioni audio indipendente da loro natura e
come un ”Network Sound Server” per applicazionicome un ”Network Sound Server” per applicazioni
Network-basedNetwork-based
Utilizzato come bridge da e verso l'architettturaUtilizzato come bridge da e verso l'architetttura
hardwarehardware
23. PulseAudio: Info & SkillsPulseAudio: Info & SkillsPulseAudio: Info & SkillsPulseAudio: Info & Skills
Sviluppatori Lennart Poettering, Pierre Ossman, Shahms E. King,
Tanu Kaskinen, Colin Guthrie
Prima Release Luglio 2004
Attuale Release 5.0 (4 Marzo 2014)
Linguaggio C/C++/C Sound
Sistema Operativo FreeBSD, NetBSD, OpenBSD, Linux, Solaris, Debian, Ubuntu, Fedora,
Gentoo, Lunar Linux, OpenSUSE
Piattaforma ARM, PowerPC, x86 / IA-32, x86-64, and MIPS
architecture
Tipo • Sound server
• Linux on the desktop
Licenza GNU Lesser General Public License 2.1.
24. Why PulseAudio?Why PulseAudio?Why PulseAudio?Why PulseAudio?
CODECSCODECS
HANDLINGHANDLING
CODECSCODECS
HANDLINGHANDLING
MOTLEYMOTLEY
APPLICATIONAPPLICATION
DEVELOPMENTDEVELOPMENT
MOTLEYMOTLEY
APPLICATIONAPPLICATION
DEVELOPMENTDEVELOPMENT
TASKSTASKS
OVERLAPPINGOVERLAPPING
TASKSTASKS
OVERLAPPINGOVERLAPPING
CONVERGENZA!CONVERGENZA!CONVERGENZA!CONVERGENZA!
I team di sviluppo di KDE (aRTS) e GNOME
(EsounD) svilupparono sistemi che manipolavano
i codecs in maniera differente → NON
COMPATIBILITA'
Sviluppo diversificato a seconda
dello scopo dell'utenza
(Riproduzione, Editing Audio,
Recording...)
I numerosi progetti sulle
architetture in ambiente Linux
risultavano essere ridondanti
e con obiettivi comuni →
Sovrapposizione e
Malfunzionamenti.
25. PulseAudio:PulseAudio:
Architecture DiagramArchitecture Diagram
PulseAudio:PulseAudio:
Architecture DiagramArchitecture Diagram
Gestione del Sw Applicativo
Gestione delle principali
Librerie delle API utilizzate
da PulseAudio
Engine di PulseAudio
Qui passano tutti i flussi
informativi audio da e verso le
SC.
I riquadri rossi diversificano le
principali ”Action Modules”
(HAL,ALSA,OSS,RTP,Tunnel)
Il riquadro giallo è dedicato
alla funzione di Zero-Copy
utilizzata per Networking
Services (NSS)
Linux Kernel, Sound Cards
interne ed esterne e il
Network Layer
26. PulseAudio: aspetti funzionaliPulseAudio: aspetti funzionaliPulseAudio: aspetti funzionaliPulseAudio: aspetti funzionali
Licensed underLicensed under LGPL 2.1+LGPL 2.1+
Architettura “Extensible Plugin”Architettura “Extensible Plugin” → Moduli dinamici e caricabili con semplice→ Moduli dinamici e caricabili con semplice
dlopen()dlopen()
Supporto per il linking statico dei moduli binariSupporto per il linking statico dei moduli binari
Moduli autolodingModuli autoloding
Bassa LatenzaBassa Latenza in riproduzione, recording e resamplingin riproduzione, recording e resampling
PerfettaPerfetta Quality of LatencyQuality of Latency anche in presenza di più clientanche in presenza di più client
EmbeddableEmbeddable in altri softwares (the core is available as C library)in altri softwares (the core is available as C library)
Semplice interfaccia a linea di comandoSemplice interfaccia a linea di comando gestibile anche in deamon running modegestibile anche in deamon running mode
Conversione trasparente e flessibile dei formatiConversione trasparente e flessibile dei formati
ArchitetturaArchitettura Zero-Copy-basedZero-Copy-based
Permette l'utilizzo simultaneo di più Scards conPermette l'utilizzo simultaneo di più Scards con sincronizzazione multiplasincronizzazione multipla degli streamdegli stream
Consente laConsente la Network PlaybackNetwork Playback di un file audio remotodi un file audio remoto
Licensed underLicensed under LGPL 2.1+LGPL 2.1+
Architettura “Extensible Plugin”Architettura “Extensible Plugin” → Moduli dinamici e caricabili con semplice→ Moduli dinamici e caricabili con semplice
dlopen()dlopen()
Supporto per il linking statico dei moduli binariSupporto per il linking statico dei moduli binari
Moduli autolodingModuli autoloding
Bassa LatenzaBassa Latenza in riproduzione, recording e resamplingin riproduzione, recording e resampling
PerfettaPerfetta Quality of LatencyQuality of Latency anche in presenza di più clientanche in presenza di più client
EmbeddableEmbeddable in altri softwares (the core is available as C library)in altri softwares (the core is available as C library)
Semplice interfaccia a linea di comandoSemplice interfaccia a linea di comando gestibile anche in deamon running modegestibile anche in deamon running mode
Conversione trasparente e flessibile dei formatiConversione trasparente e flessibile dei formati
ArchitetturaArchitettura Zero-Copy-basedZero-Copy-based
Permette l'utilizzo simultaneo di più Scards conPermette l'utilizzo simultaneo di più Scards con sincronizzazione multiplasincronizzazione multipla degli streamdegli stream
Consente laConsente la Network PlaybackNetwork Playback di un file audio remotodi un file audio remoto
27. Zero-Copy e Low LatencyZero-Copy e Low LatencyZero-Copy e Low LatencyZero-Copy e Low Latency
Sono i due parametri più importanti di PASono i due parametri più importanti di PA
ZERO-COPYZERO-COPY →→ operazione secondo la quale laoperazione secondo la quale la
Audio Processing Unit gestisce un dato audio evitandoAudio Processing Unit gestisce un dato audio evitando
di copiarlo da un'area di memoria ad un'altra.di copiarlo da un'area di memoria ad un'altra.
Importante nelle trasmissioni su network.Importante nelle trasmissioni su network.
LOW-LATENCYLOW-LATENCY → La Latenza è il ritardo dovuto→ La Latenza è il ritardo dovuto
alla elaborazione del dato. Maggiore è la latenzaalla elaborazione del dato. Maggiore è la latenza
minori saranno le prestazioni del sistema. In genere:minori saranno le prestazioni del sistema. In genere:
PulseAudio permette di modificare la latenza aPulseAudio permette di modificare la latenza a
seconda delle applicazioni, attraverso la modifica delseconda delle applicazioni, attraverso la modifica del
numero di Frames e e della dimensione dei Buffer. Innumero di Frames e e della dimensione dei Buffer. In
questo caso il Sample Rate è sempre 44100 Khz (oquesto caso il Sample Rate è sempre 44100 Khz (o
48000 Khz per DVD).48000 Khz per DVD).
Sono i due parametri più importanti di PASono i due parametri più importanti di PA
ZERO-COPYZERO-COPY →→ operazione secondo la quale laoperazione secondo la quale la
Audio Processing Unit gestisce un dato audio evitandoAudio Processing Unit gestisce un dato audio evitando
di copiarlo da un'area di memoria ad un'altra.di copiarlo da un'area di memoria ad un'altra.
Importante nelle trasmissioni su network.Importante nelle trasmissioni su network.
LOW-LATENCYLOW-LATENCY → La Latenza è il ritardo dovuto→ La Latenza è il ritardo dovuto
alla elaborazione del dato. Maggiore è la latenzaalla elaborazione del dato. Maggiore è la latenza
minori saranno le prestazioni del sistema. In genere:minori saranno le prestazioni del sistema. In genere:
PulseAudio permette di modificare la latenza aPulseAudio permette di modificare la latenza a
seconda delle applicazioni, attraverso la modifica delseconda delle applicazioni, attraverso la modifica del
numero di Frames e e della dimensione dei Buffer. Innumero di Frames e e della dimensione dei Buffer. In
questo caso il Sample Rate è sempre 44100 Khz (oquesto caso il Sample Rate è sempre 44100 Khz (o
48000 Khz per DVD).48000 Khz per DVD).
ZERO-COPYZERO-COPYZERO-COPYZERO-COPY
LOW-LATENCYLOW-LATENCYLOW-LATENCYLOW-LATENCY
Latency =
N f ⋅ N p
Srate
≈default 500ms
28. PulseAudio ...5.0!PulseAudio ...5.0!PulseAudio ...5.0!PulseAudio ...5.0!
Abbandono del modulo A2DP nel progetto BlueZ5Abbandono del modulo A2DP nel progetto BlueZ5
Progetto BlueZProgetto BlueZ →→ progetto del team Bluez il cui compito eraprogetto del team Bluez il cui compito era
l'implementazione di moduli supportanti la tecnologia Bluetooth (l'implementazione di moduli supportanti la tecnologia Bluetooth ( A2DP:A2DP:
Advanced Audio Distribution ProfileAdvanced Audio Distribution Profile) Headset Profile e (HSF) e Handset-) Headset Profile e (HSF) e Handset-
Free (HFP)Free (HFP)
Attualmente il modulo non supporta più funzionalità per applicazioni VoIP maAttualmente il modulo non supporta più funzionalità per applicazioni VoIP ma
solo ed esclusivamente per l'ascolto delle riproduzioni.solo ed esclusivamente per l'ascolto delle riproduzioni.
Reimplementazione del Modulo RTP-recvReimplementazione del Modulo RTP-recv
IlIl Modulo RTP-recvModulo RTP-recv → principale responsabile della gestione della Latenza.→ principale responsabile della gestione della Latenza.
La latenza può essere regolata manualmente in superuser-space dai 500ms aiLa latenza può essere regolata manualmente in superuser-space dai 500ms ai
30 s30 s
Miglioramenti delle prestazioniMiglioramenti delle prestazioni
Prestazioni e miglioramenti per la portabilità su architetture ARM NEONPrestazioni e miglioramenti per la portabilità su architetture ARM NEON
→ accelerare e standardizzare il trattamento e l'elaborazione di segnali→ accelerare e standardizzare il trattamento e l'elaborazione di segnali
multimediali. NEON permette di eseguire la decodifica MP3 con una CPU a 10multimediali. NEON permette di eseguire la decodifica MP3 con una CPU a 10
Megahertz.Megahertz.
Abbandono del modulo A2DP nel progetto BlueZ5Abbandono del modulo A2DP nel progetto BlueZ5
Progetto BlueZProgetto BlueZ →→ progetto del team Bluez il cui compito eraprogetto del team Bluez il cui compito era
l'implementazione di moduli supportanti la tecnologia Bluetooth (l'implementazione di moduli supportanti la tecnologia Bluetooth ( A2DP:A2DP:
Advanced Audio Distribution ProfileAdvanced Audio Distribution Profile) Headset Profile e (HSF) e Handset-) Headset Profile e (HSF) e Handset-
Free (HFP)Free (HFP)
Attualmente il modulo non supporta più funzionalità per applicazioni VoIP maAttualmente il modulo non supporta più funzionalità per applicazioni VoIP ma
solo ed esclusivamente per l'ascolto delle riproduzioni.solo ed esclusivamente per l'ascolto delle riproduzioni.
Reimplementazione del Modulo RTP-recvReimplementazione del Modulo RTP-recv
IlIl Modulo RTP-recvModulo RTP-recv → principale responsabile della gestione della Latenza.→ principale responsabile della gestione della Latenza.
La latenza può essere regolata manualmente in superuser-space dai 500ms aiLa latenza può essere regolata manualmente in superuser-space dai 500ms ai
30 s30 s
Miglioramenti delle prestazioniMiglioramenti delle prestazioni
Prestazioni e miglioramenti per la portabilità su architetture ARM NEONPrestazioni e miglioramenti per la portabilità su architetture ARM NEON
→ accelerare e standardizzare il trattamento e l'elaborazione di segnali→ accelerare e standardizzare il trattamento e l'elaborazione di segnali
multimediali. NEON permette di eseguire la decodifica MP3 con una CPU a 10multimediali. NEON permette di eseguire la decodifica MP3 con una CPU a 10
Megahertz.Megahertz.
29. Spazio a voi...Spazio a voi...Spazio a voi...Spazio a voi...
SOME QUESTION...?SOME QUESTION...?SOME QUESTION...?SOME QUESTION...?