Suoni analogici e suoni digitali

Codifica analogica e codifica digitale
Il segnale analogico è una modalità di rappresentazione di variabili fisiche (tempo, temperatura, suono…) in cui una grandezza fisica è rappresentata mediante un segnale legato alla prima da una relazione d'analogia.
Questo segnale varia in modo continuo assumendo tanti valori quanti sono quelli assunti dalla grandezza fisica.
Il segnale analogico è quindi un segnale che varia con continuità nel tempo.
Il segnale digitale è invece una modalità di rappresentazione di variabili fisiche nel quale la grandezza fisica è rappresentata da valori numerici (dall'inglese digit = cifra) che variano in modo discreto.
Il segnale digitale in pratica può assumere soltanto un numero finito di valori su un tempo finito.
Poiché tali valori sono numerabili, il segnale prende anche il nome di segnale numerico.
Questo è il tipo di segnale che può essere elaborato da un sistema informatico e trasmesso tramite un moderno sistema di trasmissione digitale.
Solitamente l'informazione a disposizione non si trova già in formato digitale, ma deve essere trasformata per essere rappresentata in questa modalità.
Vediamo quindi come è possibile convertire il segnale analogico stesso in forma numerica.

La conversione analogico/digitale
Il processo di conversione di un segnale analogico in uno digitale avviene tramite due fasi di discretizzazione: il campionamento (discretizzazione temporale) e la quantizzazione (discretizzazione dei livelli).
Infine ci sarà una fase di codifica che permette di ottenere il segnale nella forma numerica finale.
A tutto ciò provvedono due circuiti: il ADC (Analogic to Digital Converter) che trasforma i segnali analogici in digitali e il DAC (Digital to Analogic Converter) che trasforma i segnali digitali in analogici.

La quantizzazione
Il secondo processo è la quantizzazione.
Tramite il campionamento è possibile descrivere un segnale specificandone il valore assunto in un numero finito di istanti opportunamente spaziati.
Anche dopo che è stato campionato, però, il segnale non è in una forma utile per essere manipolato da un elaboratore elettronico.
Questo perché una rappresentazione esatta dei singoli campioni richiederebbe una quantità di memoria infinita.
Si consideri, ad esempio, il caso di un campione che assume un valore pari a sqrt(2): tale valore rappresenta un numero reale con infinite cifre decimali e quindi la sua rappresentazione esatta richiederebbe una quantità di memoria infinita.
In generale non siamo interessati al valore esatto del campione, ma siamo disposti ad accettare anche un valore approssimato purché l'approssimazione sia abbastanza accurata.
In pratica, si fissa una precisione ritenuta sufficiente al nostro uso e ci si limita a specificare il valore dei campioni con tale precisione.
Questa operazione di limitazione del numero di cifre decimali usate per rappresentare i campioni va sotto il nome di quantizzazione del segnale campionato.
Il processo di quantizzazione dei campioni di un segnale è ottenuto così: per prima cosa si determina la precisione con la quale i campioni devono essere rappresentati, dopodiché si suddivide l'asse delle ordinate in tanti intervalli ognuno dei quali ha un'ampiezza pari alla precisione richiesta.
Se, ad esempio, si decide di rappresentare i campioni fino alla loro prima cifre decimali, ogni intervallo unitario sarà suddiviso in dieci parti uguali (0, 0.1, 0.2, ...).
Infine, a tutti i campioni che cadono in un certo intervallo viene assegnato il valore quantizzato più vicino (arrotondamento) o il valore quantizzato immediatamente inferiore al valore esatto (troncamento).

La codifica
L'ultimo processo è la codifica, che ad ogni campione quantizzato fa corrispondere un numero binario, cioè una sequenza di bit.
Più esattamente, una volta definiti i livelli di quantizzazione mediante i quali approssimare i campioni del segnale, ad ognuno di essi viene fatto corrispondere un diverso numero binario.
Sono tali numeri binari che vengono dati in pasto al computer per la loro eventuale memorizzazione o elaborazione.
Dato il numero di livelli di quantizzazione usati, mediante l'equazione precedente è possibile ricavare immediatamente il numero di bit necessari alla codifica dei campioni.
Il numero di livelli, a sua volta, può essere determinato a partire dalla precisione richiesta e dalla massima escursione del segnale in ingresso.
Se ad esempio, un segnale da convertire varia da +10V a -10V, e lo si vuole quantizzare con una precisione di 0.1V, sono necessari 20/0.1= 200 livelli di quantizzazione, per rappresentare i quali è necessario usare 8 bit.
É fondamentale notare che mentre il campionamento non comporta alcuna perdita delle caratteristiche del segnale (il quale, purché siano verificate le condizioni dettate dal Teorema del campionamento, può essere perfettamente ricostruito a partire dai suoi campioni), la quantizzazione provoca una perdita, in quanto i valori numerici quantizzati non sono uguali a quelli originali che sono andati persi nel processo di arrotondamento o troncamento legato alla quantizzazione.

Compressione
Per cercare di risolvere il problema dato dalla disponibilità insufficiente di memoria per poter utilizzare in modo efficiente l'audio, in formato digitale, sono stati introdotti gli algoritmi di compressione.
Compito specifico di un algoritmo di compressione è trasformare la sequenza di byte che costituisce un file in una differente sequenza più breve, sfruttando complessi algoritmi matematici.
Ovviamente, poiché una sequenza di byte che compone un file compresso non sarà utilizzabile per riprodurre il contenuto nel file originale, occorre che qualsiasi formato di compressione sia reversibile: in genere, se un programma ha la capacità di salvare un file in un formato compresso, è anche in grado di leggere i file che sono stati compressi con quel particolare formato, ripristinando l'informazione in essi contenuta, cioè decomprimendoli.
In linea di massima, comprimere un file vuol dire eliminare tutte le componenti non essenziali (o ridondanti), tentando però di mantenere il più possibile inalterata la qualità originaria utilizzando a questo scopo i metodi più opportuni.
In virtù di quanto detto sopra, la principale differenza che possiamo stabilire tra i formati di compressione è data dalla misura della loro reversibilità.
Un formato che è in grado di restituire, al termine della decompressione, un contenuto esattamente uguale - bit per bit - all'originale com'era prima che venisse compresso, viene normalmente definito lossless, cioè senza perdita.
Viceversa, un formato di compressione che non può assicurare una reversibilità assoluta, viene definito lossy, ovvero, in italiano, con perdita.
La cosa che si perde o non si perde è la fedeltà all'originale del contenuto ripristinato.
Occorre conoscere perfettamente le caratteristiche dei formati di compressione che si adoperano, se si vuole ottenere il meglio dalle manipolazioni che si effettuano sui file.
Sarebbe infatti un grave errore salvare e risalvare un file in un formato lossy, per poi utilizzarlo alla fine in un formato "senza perdita".
É invece corretto fare il contrario, ovvero salvare quante volte si vuole un lavoro in corso d'opera in un formato non distruttivo, per poi salvarlo solo alla fine, se necessario, in un formato distruttivo.
La regola (e la logica) vuole, insomma, che l'archiviazione in un formato lossy sia sempre l'anello conclusivo della catena di trasformazioni a cui è sottoposto un file.
A questo punto nasce una domanda scontata: perché mai usare un formato di compressione distruttivo, se esistono sistemi non distruttivi che permettono di comprimere e decomprimere uno stesso file infinite volte, conservando tutte le informazioni in esso contenute?
La risposta è che in molti casi la quantità di spazio che una compressione non distruttiva (lossless) riesce a salvare è di molto inferiore al risparmio di spazio ottenibile per mezzo di una compressione distruttiva (lossy).
L'efficienza della compressione viene calcolata dividendo la grandezza originale del file per la sua grandezza una volta compresso.
In inglese questo valore si chiama compression rate o, alla latina, ratio; in italiano possiamo chiamarlo coefficiente o fattore di compressione.
Ben diversi sono i fattori di compressione che possiamo ottenere ricorrendo all'uso di formati distruttivi.
Evidente, dunque, la necessità di usare per la fruizione su Internet, soggetta alla lentezza delle connessioni via modem, i formati distruttivi, grazie alle loro superiori capacità di compressione.

Bit rate
Il bit rate indica la quantità di dati che possono transitare, nell'unità di tempo, attraverso un canale di comunicazione e che normalmente è misurata in bit al secondo (bps).
Vediamo adesso alcuni esempi per renderci conto dei valori di bit rate necessari per trasmettere i più comuni tipi di segnale.
Il bit rate di un segnale vocale telefonico è di circa 64.000bps: la banda occupata dal segnale analogico vocale, trasmesso dal telefono, è infatti B= 4KHz.
Per il Teorema del campionamento, occorre campionare il segnale con un passo di campionamento TC = 1/(2B)= 1/8000 = 125 ms.
Ovvero, occorre trasmettere 8000 campioni al secondo.
Usualmente si quantizzano questi campioni con 256 livelli, per cui servono 8 bit per ogni campione.
Da cui il risultato, bit rate = 8*8000= 64Kbps.
Il bit rate di un segnale musicale monofonico è di circa 320.000bps: la banda di un segnale musicale è infatti di circa 20KHz, per cui occorre campionare il segnale analogico con circa 40000 campioni al secondo.
Se ancora una volta si utilizzassero 8 bit per campione, si otterrebbero 320Kbps.
Per trasferire un filmato a pieno schermo e a pieno movimento necessita invece una ampiezza di banda di circa 10.000.000bps.
La quantità di banda necessaria ad un'applicazione varia molto a seconda della grandezza dei frame, del frame rate e del metodo di compressione adottato.
Il bit rate è quindi la capacità di trasmettere informazioni lungo un canale di comunicazione in un determinato tempo.

Torna all'indice