SlideShare a Scribd company logo
1 of 31
Download to read offline
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
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).).
Campionamento e QuantizzazioneCampionamento e QuantizzazioneCampionamento e QuantizzazioneCampionamento e Quantizzazione
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
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))
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
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
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
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
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
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
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)
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]
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
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/
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...
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
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.
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
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...)
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..)
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
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.
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.
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
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
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
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.
Spazio a voi...Spazio a voi...Spazio a voi...Spazio a voi...
SOME QUESTION...?SOME QUESTION...?SOME QUESTION...?SOME QUESTION...?
RiferimentiRiferimentiRiferimentiRiferimenti
Marcello Marino
Mail: marcellomarino88@gmail.com
Slides References
http://www.slideshare.net/MarcelloMarino1
Fonti e ringraziamentiFonti e ringraziamentiFonti e ringraziamentiFonti e ringraziamenti
[1][1] http://www.alsa-project.orghttp://www.alsa-project.org
[2][2] https://wiki.debian.org/it/ALSAhttps://wiki.debian.org/it/ALSA
[3][3] http://www.linuxjournal.com/http://www.linuxjournal.com/
[4[4]]http://www.freedesktop.org/wiki/Software/PulseAudiohttp://www.freedesktop.org/wiki/Software/PulseAudio
[5][5] https://wiki.archlinux.org/index.php/Pulse_Audiohttps://wiki.archlinux.org/index.php/Pulse_Audio
[6][6] http://wiki.audacityteam.org/wikihttp://wiki.audacityteam.org/wiki
[7][7] http://en.wikibooks.org/wiki/Configuring_Sound_on_Linuxhttp://en.wikibooks.org/wiki/Configuring_Sound_on_Linux
[8][8] http://linux-sound.orghttp://linux-sound.org
[9][9] http://www.ladspa.orghttp://www.ladspa.org
[10][10]
http://www.ual.es/~vruiz/Docencia/Apuntes/Coding/Audio_coding/Vorbis/index.html#x1-180002.6http://www.ual.es/~vruiz/Docencia/Apuntes/Coding/Audio_coding/Vorbis/index.html#x1-180002.6
[11][11] http://csg.csail.mit.edu/6.375/6_375_2008_www/projects/group2_report.pdfhttp://csg.csail.mit.edu/6.375/6_375_2008_www/projects/group2_report.pdf
[12][12] http://xiph.org/vorbis/http://xiph.org/vorbis/
[13][13]
https://wiki.archlinux.org/index.php/Advanced_Linux_Sound_Architecturehttps://wiki.archlinux.org/index.php/Advanced_Linux_Sound_Architecture
[14][14] Audio Digitale, Aurelio UnciniAudio Digitale, Aurelio Uncini
[1][1] http://www.alsa-project.orghttp://www.alsa-project.org
[2][2] https://wiki.debian.org/it/ALSAhttps://wiki.debian.org/it/ALSA
[3][3] http://www.linuxjournal.com/http://www.linuxjournal.com/
[4[4]]http://www.freedesktop.org/wiki/Software/PulseAudiohttp://www.freedesktop.org/wiki/Software/PulseAudio
[5][5] https://wiki.archlinux.org/index.php/Pulse_Audiohttps://wiki.archlinux.org/index.php/Pulse_Audio
[6][6] http://wiki.audacityteam.org/wikihttp://wiki.audacityteam.org/wiki
[7][7] http://en.wikibooks.org/wiki/Configuring_Sound_on_Linuxhttp://en.wikibooks.org/wiki/Configuring_Sound_on_Linux
[8][8] http://linux-sound.orghttp://linux-sound.org
[9][9] http://www.ladspa.orghttp://www.ladspa.org
[10][10]
http://www.ual.es/~vruiz/Docencia/Apuntes/Coding/Audio_coding/Vorbis/index.html#x1-180002.6http://www.ual.es/~vruiz/Docencia/Apuntes/Coding/Audio_coding/Vorbis/index.html#x1-180002.6
[11][11] http://csg.csail.mit.edu/6.375/6_375_2008_www/projects/group2_report.pdfhttp://csg.csail.mit.edu/6.375/6_375_2008_www/projects/group2_report.pdf
[12][12] http://xiph.org/vorbis/http://xiph.org/vorbis/
[13][13]
https://wiki.archlinux.org/index.php/Advanced_Linux_Sound_Architecturehttps://wiki.archlinux.org/index.php/Advanced_Linux_Sound_Architecture
[14][14] Audio Digitale, Aurelio UnciniAudio Digitale, Aurelio Uncini

Thanks to...Thanks to...

Osservatorio diOsservatorio di
CapodimonteCapodimonte

NaLUGNaLUG

Marco FerrignoMarco Ferrigno
Emiliano GrilliEmiliano Grilli

Voi....Voi....

Thanks to...Thanks to...

Osservatorio diOsservatorio di
CapodimonteCapodimonte

NaLUGNaLUG

Marco FerrignoMarco Ferrigno
Emiliano GrilliEmiliano Grilli

Voi....Voi....

More Related Content

Similar to Alsa & PulseAudio

JACK Audio Connection Kit
JACK Audio Connection KitJACK Audio Connection Kit
JACK Audio Connection KitNaLUG
 
Tecnologie RFID e Bluetooth Low Energy a monte della filiera del dato 4.0: pi...
Tecnologie RFID e Bluetooth Low Energy a monte della filiera del dato 4.0: pi...Tecnologie RFID e Bluetooth Low Energy a monte della filiera del dato 4.0: pi...
Tecnologie RFID e Bluetooth Low Energy a monte della filiera del dato 4.0: pi...RFID Global by Softwork
 
Arduino & raspberry pi - Un connubio stimolante
Arduino & raspberry pi - Un connubio stimolanteArduino & raspberry pi - Un connubio stimolante
Arduino & raspberry pi - Un connubio stimolanteMirco Sbrollini
 
Decoder DVB-T PVR Media Player Scarty REC 4Geek
Decoder DVB-T PVR Media Player Scarty REC 4GeekDecoder DVB-T PVR Media Player Scarty REC 4Geek
Decoder DVB-T PVR Media Player Scarty REC 4GeekTGeek
 
Scarty Rec
Scarty RecScarty Rec
Scarty RecTGeek
 
Tesi Asterisk: CONFIGURAZIONE DI UN SERVIZIO VOIP CON ASTERISK
Tesi Asterisk: CONFIGURAZIONE DI UN SERVIZIO VOIP CON ASTERISK Tesi Asterisk: CONFIGURAZIONE DI UN SERVIZIO VOIP CON ASTERISK
Tesi Asterisk: CONFIGURAZIONE DI UN SERVIZIO VOIP CON ASTERISK Riccardo Galletti
 
EuComm
EuCommEuComm
EuCommiBLio
 
[Ldna 2019 marcello marino] mt's driver ravenna aes67 audio contribution over...
[Ldna 2019 marcello marino] mt's driver ravenna aes67 audio contribution over...[Ldna 2019 marcello marino] mt's driver ravenna aes67 audio contribution over...
[Ldna 2019 marcello marino] mt's driver ravenna aes67 audio contribution over...Marcello Marino
 
Marco Signorelli 19 09 2008 Ordine Degli Avvocati Di Bergamo
Marco Signorelli   19 09 2008 Ordine Degli Avvocati Di BergamoMarco Signorelli   19 09 2008 Ordine Degli Avvocati Di Bergamo
Marco Signorelli 19 09 2008 Ordine Degli Avvocati Di BergamoAndrea Rossetti
 
Formati files audio
Formati files audioFormati files audio
Formati files audioartmatham
 
Marco lembo
Marco lemboMarco lembo
Marco lemboDrMarlem
 
Introduzione al Sistema S6L
Introduzione al Sistema S6LIntroduzione al Sistema S6L
Introduzione al Sistema S6LSenio Corbini
 

Similar to Alsa & PulseAudio (20)

JACK Audio Connection Kit
JACK Audio Connection KitJACK Audio Connection Kit
JACK Audio Connection Kit
 
Tecnologie RFID e Bluetooth Low Energy a monte della filiera del dato 4.0: pi...
Tecnologie RFID e Bluetooth Low Energy a monte della filiera del dato 4.0: pi...Tecnologie RFID e Bluetooth Low Energy a monte della filiera del dato 4.0: pi...
Tecnologie RFID e Bluetooth Low Energy a monte della filiera del dato 4.0: pi...
 
Arduino & raspberry pi - Un connubio stimolante
Arduino & raspberry pi - Un connubio stimolanteArduino & raspberry pi - Un connubio stimolante
Arduino & raspberry pi - Un connubio stimolante
 
Decoder DVB-T PVR Media Player Scarty REC 4Geek
Decoder DVB-T PVR Media Player Scarty REC 4GeekDecoder DVB-T PVR Media Player Scarty REC 4Geek
Decoder DVB-T PVR Media Player Scarty REC 4Geek
 
Scarty Rec
Scarty RecScarty Rec
Scarty Rec
 
Test 03a 08.05.2015
Test 03a   08.05.2015Test 03a   08.05.2015
Test 03a 08.05.2015
 
Tesi Asterisk: CONFIGURAZIONE DI UN SERVIZIO VOIP CON ASTERISK
Tesi Asterisk: CONFIGURAZIONE DI UN SERVIZIO VOIP CON ASTERISK Tesi Asterisk: CONFIGURAZIONE DI UN SERVIZIO VOIP CON ASTERISK
Tesi Asterisk: CONFIGURAZIONE DI UN SERVIZIO VOIP CON ASTERISK
 
Standard
StandardStandard
Standard
 
Standard
StandardStandard
Standard
 
EuComm
EuCommEuComm
EuComm
 
[Ldna 2019 marcello marino] mt's driver ravenna aes67 audio contribution over...
[Ldna 2019 marcello marino] mt's driver ravenna aes67 audio contribution over...[Ldna 2019 marcello marino] mt's driver ravenna aes67 audio contribution over...
[Ldna 2019 marcello marino] mt's driver ravenna aes67 audio contribution over...
 
Marco Signorelli 19 09 2008 Ordine Degli Avvocati Di Bergamo
Marco Signorelli   19 09 2008 Ordine Degli Avvocati Di BergamoMarco Signorelli   19 09 2008 Ordine Degli Avvocati Di Bergamo
Marco Signorelli 19 09 2008 Ordine Degli Avvocati Di Bergamo
 
Asterisk
AsteriskAsterisk
Asterisk
 
Formati files audio
Formati files audioFormati files audio
Formati files audio
 
Marco lembo
Marco lemboMarco lembo
Marco lembo
 
Chiarimenti ipsos su sistema encoding e meter sw media cell
Chiarimenti ipsos su sistema encoding e meter sw media cellChiarimenti ipsos su sistema encoding e meter sw media cell
Chiarimenti ipsos su sistema encoding e meter sw media cell
 
Introduzione al Sistema S6L
Introduzione al Sistema S6LIntroduzione al Sistema S6L
Introduzione al Sistema S6L
 
Analogicoedigitale
AnalogicoedigitaleAnalogicoedigitale
Analogicoedigitale
 
Presentazione Tesi
Presentazione TesiPresentazione Tesi
Presentazione Tesi
 
IdTV
IdTVIdTV
IdTV
 

More from NaLUG

Grid System
Grid SystemGrid System
Grid SystemNaLUG
 
Cyber Forensic
Cyber ForensicCyber Forensic
Cyber ForensicNaLUG
 
Digital Divide
Digital DivideDigital Divide
Digital DivideNaLUG
 
Drupal
DrupalDrupal
DrupalNaLUG
 
Digital Forensic
Digital ForensicDigital Forensic
Digital ForensicNaLUG
 
Open Source: strumento per l'e-democracy
Open Source: strumento per l'e-democracyOpen Source: strumento per l'e-democracy
Open Source: strumento per l'e-democracyNaLUG
 
OpenHardware : Arduino
OpenHardware : ArduinoOpenHardware : Arduino
OpenHardware : ArduinoNaLUG
 
Understanding Linux
Understanding LinuxUnderstanding Linux
Understanding LinuxNaLUG
 
Net Neutrality: HoBBIT
Net Neutrality: HoBBITNet Neutrality: HoBBIT
Net Neutrality: HoBBITNaLUG
 
Opensource per un Sistema Informativo Territoriale
Opensource per un Sistema Informativo TerritorialeOpensource per un Sistema Informativo Territoriale
Opensource per un Sistema Informativo TerritorialeNaLUG
 
Knomos
Knomos Knomos
Knomos NaLUG
 
App comunicazione comune di Napoli
App comunicazione comune di NapoliApp comunicazione comune di Napoli
App comunicazione comune di NapoliNaLUG
 
BISmark : the broadband internet service benchmark
BISmark : the broadband internet service benchmarkBISmark : the broadband internet service benchmark
BISmark : the broadband internet service benchmarkNaLUG
 
ClearOS
ClearOSClearOS
ClearOSNaLUG
 
Security and hacking Engineering
Security and hacking EngineeringSecurity and hacking Engineering
Security and hacking EngineeringNaLUG
 
Software libero at ENEA
Software libero at ENEASoftware libero at ENEA
Software libero at ENEANaLUG
 
Una nuova crittografia frattale: Crypt fna
Una nuova crittografia frattale: Crypt fnaUna nuova crittografia frattale: Crypt fna
Una nuova crittografia frattale: Crypt fnaNaLUG
 
ROS@Unina
ROS@Unina   ROS@Unina
ROS@Unina NaLUG
 
Python@Unina - Exercises
Python@Unina - ExercisesPython@Unina - Exercises
Python@Unina - ExercisesNaLUG
 
Python@Unina - Theory
Python@Unina - TheoryPython@Unina - Theory
Python@Unina - TheoryNaLUG
 

More from NaLUG (20)

Grid System
Grid SystemGrid System
Grid System
 
Cyber Forensic
Cyber ForensicCyber Forensic
Cyber Forensic
 
Digital Divide
Digital DivideDigital Divide
Digital Divide
 
Drupal
DrupalDrupal
Drupal
 
Digital Forensic
Digital ForensicDigital Forensic
Digital Forensic
 
Open Source: strumento per l'e-democracy
Open Source: strumento per l'e-democracyOpen Source: strumento per l'e-democracy
Open Source: strumento per l'e-democracy
 
OpenHardware : Arduino
OpenHardware : ArduinoOpenHardware : Arduino
OpenHardware : Arduino
 
Understanding Linux
Understanding LinuxUnderstanding Linux
Understanding Linux
 
Net Neutrality: HoBBIT
Net Neutrality: HoBBITNet Neutrality: HoBBIT
Net Neutrality: HoBBIT
 
Opensource per un Sistema Informativo Territoriale
Opensource per un Sistema Informativo TerritorialeOpensource per un Sistema Informativo Territoriale
Opensource per un Sistema Informativo Territoriale
 
Knomos
Knomos Knomos
Knomos
 
App comunicazione comune di Napoli
App comunicazione comune di NapoliApp comunicazione comune di Napoli
App comunicazione comune di Napoli
 
BISmark : the broadband internet service benchmark
BISmark : the broadband internet service benchmarkBISmark : the broadband internet service benchmark
BISmark : the broadband internet service benchmark
 
ClearOS
ClearOSClearOS
ClearOS
 
Security and hacking Engineering
Security and hacking EngineeringSecurity and hacking Engineering
Security and hacking Engineering
 
Software libero at ENEA
Software libero at ENEASoftware libero at ENEA
Software libero at ENEA
 
Una nuova crittografia frattale: Crypt fna
Una nuova crittografia frattale: Crypt fnaUna nuova crittografia frattale: Crypt fna
Una nuova crittografia frattale: Crypt fna
 
ROS@Unina
ROS@Unina   ROS@Unina
ROS@Unina
 
Python@Unina - Exercises
Python@Unina - ExercisesPython@Unina - Exercises
Python@Unina - Exercises
 
Python@Unina - Theory
Python@Unina - TheoryPython@Unina - Theory
Python@Unina - Theory
 

Alsa & PulseAudio

  • 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).).
  • 3. Campionamento e QuantizzazioneCampionamento e QuantizzazioneCampionamento e QuantizzazioneCampionamento e Quantizzazione
  • 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...?
  • 31. Fonti e ringraziamentiFonti e ringraziamentiFonti e ringraziamentiFonti e ringraziamenti [1][1] http://www.alsa-project.orghttp://www.alsa-project.org [2][2] https://wiki.debian.org/it/ALSAhttps://wiki.debian.org/it/ALSA [3][3] http://www.linuxjournal.com/http://www.linuxjournal.com/ [4[4]]http://www.freedesktop.org/wiki/Software/PulseAudiohttp://www.freedesktop.org/wiki/Software/PulseAudio [5][5] https://wiki.archlinux.org/index.php/Pulse_Audiohttps://wiki.archlinux.org/index.php/Pulse_Audio [6][6] http://wiki.audacityteam.org/wikihttp://wiki.audacityteam.org/wiki [7][7] http://en.wikibooks.org/wiki/Configuring_Sound_on_Linuxhttp://en.wikibooks.org/wiki/Configuring_Sound_on_Linux [8][8] http://linux-sound.orghttp://linux-sound.org [9][9] http://www.ladspa.orghttp://www.ladspa.org [10][10] http://www.ual.es/~vruiz/Docencia/Apuntes/Coding/Audio_coding/Vorbis/index.html#x1-180002.6http://www.ual.es/~vruiz/Docencia/Apuntes/Coding/Audio_coding/Vorbis/index.html#x1-180002.6 [11][11] http://csg.csail.mit.edu/6.375/6_375_2008_www/projects/group2_report.pdfhttp://csg.csail.mit.edu/6.375/6_375_2008_www/projects/group2_report.pdf [12][12] http://xiph.org/vorbis/http://xiph.org/vorbis/ [13][13] https://wiki.archlinux.org/index.php/Advanced_Linux_Sound_Architecturehttps://wiki.archlinux.org/index.php/Advanced_Linux_Sound_Architecture [14][14] Audio Digitale, Aurelio UnciniAudio Digitale, Aurelio Uncini [1][1] http://www.alsa-project.orghttp://www.alsa-project.org [2][2] https://wiki.debian.org/it/ALSAhttps://wiki.debian.org/it/ALSA [3][3] http://www.linuxjournal.com/http://www.linuxjournal.com/ [4[4]]http://www.freedesktop.org/wiki/Software/PulseAudiohttp://www.freedesktop.org/wiki/Software/PulseAudio [5][5] https://wiki.archlinux.org/index.php/Pulse_Audiohttps://wiki.archlinux.org/index.php/Pulse_Audio [6][6] http://wiki.audacityteam.org/wikihttp://wiki.audacityteam.org/wiki [7][7] http://en.wikibooks.org/wiki/Configuring_Sound_on_Linuxhttp://en.wikibooks.org/wiki/Configuring_Sound_on_Linux [8][8] http://linux-sound.orghttp://linux-sound.org [9][9] http://www.ladspa.orghttp://www.ladspa.org [10][10] http://www.ual.es/~vruiz/Docencia/Apuntes/Coding/Audio_coding/Vorbis/index.html#x1-180002.6http://www.ual.es/~vruiz/Docencia/Apuntes/Coding/Audio_coding/Vorbis/index.html#x1-180002.6 [11][11] http://csg.csail.mit.edu/6.375/6_375_2008_www/projects/group2_report.pdfhttp://csg.csail.mit.edu/6.375/6_375_2008_www/projects/group2_report.pdf [12][12] http://xiph.org/vorbis/http://xiph.org/vorbis/ [13][13] https://wiki.archlinux.org/index.php/Advanced_Linux_Sound_Architecturehttps://wiki.archlinux.org/index.php/Advanced_Linux_Sound_Architecture [14][14] Audio Digitale, Aurelio UnciniAudio Digitale, Aurelio Uncini  Thanks to...Thanks to...  Osservatorio diOsservatorio di CapodimonteCapodimonte  NaLUGNaLUG  Marco FerrignoMarco Ferrigno Emiliano GrilliEmiliano Grilli  Voi....Voi....  Thanks to...Thanks to...  Osservatorio diOsservatorio di CapodimonteCapodimonte  NaLUGNaLUG  Marco FerrignoMarco Ferrigno Emiliano GrilliEmiliano Grilli  Voi....Voi....