martedì 13 marzo 2012

6. Musica e Midi

Per scambiare informazioni bisogna definire una forma di linguaggio attraverso il quale si può realizzare la comunicazione e quando l'informazione ha una forma precisa è possibile anche la sua trasformazione e manipolazione.
Quando ci proponiamo di costruire un linguaggio di rappresentazione per la musica dobbiamo chiederci quali informazioni rappresentare. Passaggio che si basa su un'operazione di selezione: la scelta del tipo di informazione rappresentare nel linguaggio implica anche la scelta di ciò che non deve essere rappresentato.
Determinato un codice di rappresentazione per l'informazione musicale è possibile la sua trasmissione e la sua trasformazione: questa è un'operazione può essere svolta da applicazioni informatiche.

La rappresentazione della musica poiché dipende dalle necessità di trasmissione e riproduzione può avvenire a livelli diversi.
La rappresentazione in termini fisici del segnale è inefficace come notazione operativa per l'uso strumentale. Ogni rappresentazione della musica deve situarsi al livello adatto allo scopo prefisso.


Livelli di rappresentazione:
- livello fisico: parametri per la rappresentazione sono quelli della descrizione fisica del segnale(ampiezza, frequenza, forma d'onda).
- livello percettivo: descrizione psicoacustiche(volume, altezza, timbro).
- livello operativo: musica rappresentata nei termini di istruzioni esecutive(gesti esecutore, strumenti musicali).
- livello simbolico: esempio tipico è la notazione occidentale strandard.
- livello strutturale: rappresentazione che rende conto delle relazioni logiche  che presiedono alla produzione/comprensione della musica(insieme di regole di una grammatica).

Possiamo descrivere le relazioni tra i diversi livelli attraverso uno schema che ha come due estremi la conoscenza fisica  e la conoscenza musicale.
Ognuno dei 5 elementi : (Ambiente, ascoltatore, compositore, esecutore, strumento) si situano in relazione a due livelli.
Ascoltatore muove dal campo sonoro(livello percettivo) per costruire un modello musicale cognitivo di quanto ascoltato(livello strutturale).
Le competenze strutturali del compositore necessitano della mediazione della notazione(livello simbolico) per essere trasmesse all'esecutore.
Esecutore traduce la notazione in un insieme di controlli  gestuali che governano l'esecuzione strumentale(livello operativo).
Attraverso lo strumento , le operazioni gestuali  si trasformano in pressione sonora(livello fisico), che costituisce il correlato acustico del campo fenomenico dell'ascoltatore(livello percettivo).

Rappresentazione audio: situa tra il livello operativo e quello fisico.
Rapprentazione musica: interessa il rapporto tra compositore, esecutore e strumento.(livelli: simbolico, operativo).

Midi

Midi è il protocollo standard che permette a un sequencer di comunicare con gli altri dispositivi  che controlla.
Con protocollo midi si intende il modo di rappresentazione della musica che ha raggiunto una diffusione commerciale universale.
Con Midi si indica , oltre al protocollo anche l'interfaccia, l'hardware necessario per la comunicazione tra dispositivi.

Un protocollo è un sistema di regole che stabilisce attraverso quali modalità deve avvenire la comunicazione tra i dispositivi hardware o processi software differenti.
Alla base del protocollo ce la necessità di far comunicare sintetizzatori musicali di case produttrici diverse: i problemi che deve risolvere il protocollo sono quelli della rappresentazione  dei dati musicali e della sincronizzazione tra i dispositivi durante la comunicazione.

Il midi si situa tra il livello simbolico e quello operativo: attraverso il protocollo è possibile rappresentare come dati elettronici una performance musicale.
L'informazione codificata dal protocollo consiste in un'insieme di istruzioni per un sintetizzatore, il quale, sulla base dei dati ricevuti, si occupa della sintesi audio.
Il dispositivo di input dei dati musicali e quello di output del segnale possono comunicare attraverso la codifica MIDI.
Se i dati midi vengono memorizzati possono poi essere modificati in un secondo momento attraverso procedure di editing più o meno complesse, per poi essere inviati al modulo di sintesi.

Sequencer: sistema di registrazione - esecuzione ,dotato di una memoria programmabile dove vengono memorizzati i dati di controllo operativi necessari alla (ri-)generazione di eventi musicali.
Sequencer memorizza i dati provenienti da un dispositivo di input , ne consente l'editing, infine ricrea la performance inviando i dati al dispositivo che si occupa della sintesi.
Midi è un protocollo strandard tramite il quale i sequencer in commercio memorizzano i dati.
Il controllo su suono è soltanto indiretto, la qualità timbrica dipende interamente dal modulo di sintesi.

Nascita del midi

Anni 80 la necessità di uno standard per la comunicazione  tra diversi sintetizzatori, i primi erano monofonici e avevano una povera tavolazza timbrica.
La connessione di più sintetizzatori in sistema costituiva un modo per arricchire le possibilità di sintesi.
Standard che avrebbe dovuto risolvere tre tipi di problema:
- la rappresentazione dei dati musicali(la definizione univoca di altezza e volume delle note);
- la sincronizzazione tra i dispositivi e la modalità di trasmissione dati;
- la progettazione e la costruzione di dispositivi fisici.


Successo:
Basso costo, esigenza di avere uno standard, possibilità di comunicare tra marche, comunicazione tra strumenti e altri dispositivi elettronici (computer, sequencer, controllo luci, mixer).

Lo standard MIDI stabilisce anche quali connessioni fisiche debbono essere impiegate nel collegamento.
Il trasferimento dei dati avviene alla velocità di 31.250 bit/sec;
attraverso un'interfaccia seriale asincrona, seriale perché i dati sono trasferiti come sequenza di bit successivi e asincrona  perché l'invio dei dati dipende dal momento in cui il dispositivo inizia a trasmettere.
IL trasferimento è seriale quindi bisogna impiegare convertitori da parallelo a seriale.
Connettori impiegati sono di tipo DIN a 5 pin, tipici degli impianti audio, di cui solo 3 vengono impiegati per le informazioni numeriche del MIDI.
Porte fisiche del MIDI(connettori):
MIDI in: riceve segnali dall'esterno;
MIDI out: trasmette info MIDI all'esterno;
MIDI Thru: trasmette copia esatta di MIDI in;

Lunghezza max dei cavi: 15 metri(50 piedi)
Per trasmettere un byte(8+2 bit): ogni pacchetto impiega 0,32 millisecondi.

Editor(sequenze): brani musicali come sequenze di eventi complessi.
Expander: generatori di suono(sintetizzatori, campionatori…).
Controller: generatori di messaggi MIDI (tastiere, Midi-sax, drum-pads..).

Numero dei dispositivi deve limitarsi a tre.
Si può usare una Trhu box(scatola di derivazione): moltiplica il segnalein entrata e lo trasmette attraverso più porte MIDI trhu.
Patch Bay svolge le stesse funzioni di una thru box ma consente di effettuarela selezione tra più configurazioni ingresso/uscita.
Midi processor puà svolgere tutte le funzioni.
Due configurazioni tipiche --> pag. 250.

Protocollo di comunicazione

La comunicazione avviene attraverso messaggi MIDI, messaggi che non rappresentano la forma d'onda ma solo informazioni di controllo.

Canali
Strade per la comunicazione per veicolare i messaggi agli espander. Sono indirizzi dove ricevere e inviare dati musicali. Distribuire i messaggi per canale è un metodo per differenziare i timbri, a ogni canale è possibile associare uno strumento. Il MIDI prevede 16 canali.


Tracce
E un flusso strutturato e autonomo di messaggi MIDI, distinto da altre tracce. 2 pianoforti: 2 tracce; 1 Pianoforte: 1 traccia melodia, 2 traccia accompagnamento.
Traccia è solo un contenitore di messaggi MIDI in sequenza, da un punto di vista pratico possiamo assegnare a ogni traccia un canale.

L'informazione è strutturata logicamente in tracce, alle quali vengono assegnati dei canali. + tracce a un canale. Ai canali si assegna poi la patch.


Patch
Il termini usuale per indicare il timbro prodotto da un generatore è patch. Messaggi midi possono veicolare informazioni relative a un massimo di 128 patch: 128 timbri selezionabili.
Un banco contiene 128 patch, n banchi --> n 128 patch. Definito il banco scegliamo tra 128 patch che lo compongono.

L'impiego di 2 canali ci permette di modificare l'assegnazione di una patch di un canale senza modificare l'altro.

Cosa succede quando suoniamo una nota?
L'esecuzione della nota viene codificata attraverso una serie di messaggi MIDI.
La pressione sul tasto è rappresentata da due distinti messaggi: Note ON e OFF. Indicano che il tasto è stato premuto o rilasciato.
Sono caratterizzati da una velocity che che fa riferimento alla velocità con cui il tasto di una tastiera si abbassa o si rialza.


Temporizzione
I messaggi MIDI non devono soltanto essere posti in sequenza è necessario anche fornire l'informazione temporale(timestamp) che consenta a un sequencer di conoscere il momento esatto in cui deve reagire.
Ogni dispositivo Midi è dotato di un clock, un dispositivo interno di sincronizzazione, sulla base del quale ordina nel tempo i messaggi.

Le unità di misura(timebase) impiegate dal clock sono i tiks o PPQ(parti per quarto), unità di misura relativa poiché dipende dal valore assunto dal quarto(semiminima).

Il numero dei quarti in un minuto è indicato come BPM(pulsazioni per minuto), tipicamente compreso tra 40 e 240.

Numero di tick in un quarto può essere variabile, multiplo e potenza di 2: da 24 a 4096.
Valori tipici: 24,96, 480.

Per calcolare il numero dei tick dobbiamo sapere il tempo del metronomo e il numero di tick per quarto.
Esempio:
1 tick - BPM = 120 - PPQ = 24
120 beat in un minute: 1 beat = 0,5 (60/120)
24 PPQ in un secondo(beat): 1 tick = 0,5/24 = 0,020833(1 tick dura 21 millisecondi)

Sincronizzazione
quando si impiegano più dispositivi collegati insieme è necessario prevedere una sincronizzazione tra di essi.
La sincronizzazione è gestita nei dispositivi MIDI in due modi: MIDI clock e MIDI time code(TMC).

MIDI clock
supponiamo di avere un collegamento tra 2 sintetizzatori.
Il master controlla quello slave. Master tiene il tempo con il suo clock(internal sync) inviando allo slave un messaggio di sincronizzazione ogni 24 di quarto. Lo slave farà riferimento al  messaggio di clock del master(external sync).
Il master timing (sincronizzazione via Midi Clock) fa riferimento a un tempo relativo: il numero dei quarti è variabile.(tasso fisso di 24 per quarto).
BPM = 40 il master invierà allo slave 16 messaggi di sincronizzazione al secondo.
ogni beat 60s/40 beat = 1,5 secondi = 24 messaggi
                    1 secondo = 16 messaggi (24:1 = x : 1,5 --> x = 24/1,5)
BPM = 240 --> 96 messggi
1 beat : 60/240 = 0,25 secondi(24:1 = x:0,25--> x = 24/0,25)


IL MIDI time code(MTC)
è invece il metodo di sincronizzazione per coordinare i dispositivi con le produzioni di film e video.
Metodo standard di codifica del tempo nell'audio e video è SMPTE, tempo codificato in forma assoluta(ore, minuti, secondi).
Il codice SMTPE viene inviato insieme con i segnali audio e video.
MTC è la traduzione in forma di messaggi MIDI dello SMPTE: sono necessari 8 messaggi di 2 byte per realizzare la codifica completa di una locazione temporale SMPTE in MIDI.
Si specifica anche lo standard SMPTE che si sta impiegando, il numero dei frame per secondo è variabile(24,25,30).
Durante l'esecuzione di un prodotto video, si estrae la locazione temporale codificata in SMPTE e un MTC gererator provvede alla generazione dei messaggi MIDI equivalenti, quattro volte per ogni frame: i messaggi attivano gli effetti audio e le sequenze musicali.

I Modi
I dispositivi MIDI interpretano le informazioni relative ai canali sulla base di specifiche configurazioni, dette modi.(criteri con cui un device decide di accettare un messaggio).
Son 4 più uno:
I primi quattro si ottengono dalla combinazione delle categorie Omni On/Off - Poly/Mono; a essi si puà aggiungere Il General MIDI Mode.
Omni: riguarda la risposta del dispositivo alle info di canale;
On: dispositivo Midi riceve e reagisce alle info provenienti da tutti i canali.
Off: dispositivo Midi riceve e reagisce ai messaggi provenienti dall'unico canale prescelto.
Poly/Mono: la possibilità di ricevere o meno più messaggi di Note On  su un singolo canale.
Mono: Suona una nota singola;
Poly: Suona più note(accordi);

4 Modi:
"Omni" = Omni On + Poly
Slave risponde in polifonia ai messaggi provenienti da tutti i canali.(può essere usato in fase di test).
Omni On + Mono
Slave risponde a tutti i canali in monofonia(scarsa utilità).
"Poly" = Omni Off + Poly
Slave risponde alle info indirizzate a uno specifico canale con il massimo grado di polifonia.
"Multi" = Omni Off + Mono
pensato per strumenti multitimbrici, gestiscono più timbri o patch in contemporanea.
Ogni patch riceve i dati da un singolo canale a cui risponde: slave risponde ai messaggi indirizzati a tutti i canali , ma separando l'info canale per canale.


Messaggi di canale/sistema
Messaggi Midi di distinguono in due tipi: Channel e System Message.
Messaggi di canale: contengono dati relativi a uno specifico canale. Oltre all'info relativa all'evento anche quella relativa al canale a cui questa è indirizzata(il numero del canale). Se nel device ricevente il canale selezionato non è disponibile , non viene generato nessun evento.
Messaggi di sistema: sono indirizzati al sistema nel suo complesso, veicolando info relative al timing, alla sincronizzazione, non contengono info sul canale.


Struttura generale dei messaggi
Messaggi MIDI sono costituiti da sequenze di parole di 10 bit. Il primo è l'ultimo hanno la funzione di delimitare l'inizio e la fine, ogni parola è composta da 8 bit(1 byte).
Un messaggio è composto da una o più parole di 1 byte.
Primo Byte: identifica il tipo di messaggio --> status byte
I byte successivi contengono il messaggio vero e proprio --> data byte
La distinzione tra status e data è effettuata in base al bit più significativo(MSB): il bit più a sinistra di ogni byte.
1 status - 0 data (uno o due).

Classificazione dei messaggi
Lo status byte  è suddivisibile in due segmenti di 4 bit (nibble).
Il primo a sinistra specifica il tipo di messaggio. Sono disponibili 3 bit rimanenti, 8 combinazioni possibili: di queste, sette  identificano i messaggi di canale, mentre la combinazione 111 indicai messaggi di sistema.
Il Secondo nibble ha una funzione diversa  a seconda se si tratti di messaggi di canale o sistema.
Nei messaggi di canale: indica il numero del canale(possiamo mappare 16 canali).
Nei messaggi di sistema: distinguere 16 possibili messaggi di sistema.

Tipologia dei messaggi

Channel Message
la struttura è 1xxx nnnn(status byte) a cui seguono uno o due data byte 0xxxxxxx(128 valori a disposizione).
Primo nibble varia tra 1000 e 1110.(codice di identificazione del messaggio).
Secondi 4 bit: identificazione del canale.

Channel Voice Message
Descrivono gli eventi musicali: quale nota deve essere mandata in esecuzione , quale deve essere terminata, con quale volume, con quali modificazioni espressive.


Note On
indica al dispositivo di suonare una nota: tasto di una tastiera o pad di una batteria.
Status Byte è 1001 nnnn, cui seguono 2 data bytes
- specifica l'altezza della nota(pitch);
- la velocità: forza con cui si pigia un tasto(ampiezza dell'output, eventualmente timbro).
Sono rappresentabili 128 altezze e 128 valori per la velocity.


Note Off
indica quando disattivare una nota
Status byte è 1000 nnnn, i 2 data byte rappresentano pitch e velocity.
Non è significativo il valore della velocità si può sfruttare una codifica abbreviata che equipara al Note Off un messaggio di Note On con velocità 0. Si risparmia un 33% di traffico sulla rete.

Channel Pressure
Messaggio che trasmette informazioni relative ai cambiamenti di pressione dopo che è stato inviato un Note On (mentre un tasto è premuto).
Il valore di pressione nel data byte è applicato a tutte le note attive. Usualmente si indica con aftertouch.
Modifiche timbriche su tutto il canale, effetti diversi a seconda del dispositivo usato.
Se Sono premuti più tasti contemporaneamente si un unico valore per tutti.


Polyphonic Key Pressure.
E sensibile ai cambiamenti di pressione relativi a ogni singolo tasto della tastiera.
I 2 data bytes indicano: il pitch a cui applicare il valore di pressione e il valore di pressione stesso.


Pitch Bend Change
Messaggio che indica la variazione frequenziale intorno alla frequenza corrispondente al numero di tasto premuto(alla nota attiva). Corrsisponde a un cambiamento di intonazione: vibrato o glissando.
I 2 data byte: velocity e variazione.


Program change
I messaggi inviano al dispositivo ricevente attraverso il data byte successivo un numero intero compreso tra 0 e 126. In un sintetizzatore le patch sono numerate, e attraverso il messaggio si può selezionare il timbro che viene associato al canale.
( di per sé il numero è semplicemente un indice: può indicare un particolare effetto, es. chourus).

Control Change
Controller sono dispositivi che consentono di aumentare l'espressività di un dispositivo MIDI (dai pedali al soffio), può essere un pedale, una ruota, una leva. Ogni qualvolta che questo si muove viene inviato un messaggio costituito da 3 byte.
Allo status seguono 2 data byte:
- identificatore del controller;
- valore del controller;
Due categorie di controllori: controllori che possono assumere valori continui o discreti.

Channel Mode Message
Specificano una delle 4 opzioni possibili in cui può rispondere il dispositivo MIDI, la cui combinazione produce i modi.
Questa info è codificata attraverso gli ultimi 4 valori disponibili nel primo data byte.
Dal punto di vista strutturale sono un sottotipo dei Control Change.

System Message
Non sono indirizzati specificatamente a un canale, ma sono rivolti a tutto il sistema: questo può comprendere più unità collegate che ricevono su diversi canali.
Ogni singolo dispositivo reagisce ai Channel Message per i quali è abilitato a rispondere, ma  a tutti i System Message.
Status Byte  è 1111 xxxx. Il secondo nibble può venire utilizzato per distinguere 16 messaggi di sistema.
Attualmente sono definiti 11 messaggi distinti in 3 categorie.


System Common Message
Svolgono funzioni generali relative a tutto il sistema.


MIDI Time Code Quarter Frame
categoria di messaggi impiegata dai dispositivi in grado di trasmettere /ricevere il MIDI time code che codifica il tempo in termini assoluti. Sono necessari 8 messaggi trasmessi ogni quarto di frame per definire univocamente una locazione temporale SMPTE.

Song Position Pointer
Una song è una sequenza di messaggi MIDI memorizzata da un dispositivo MIDI o un Midi File.
Il messaggio indica il punto all'interno della song caricata dove si deve posizionare il puntatore.
La riproduzione o la registrazione successive inizieranno da quel punto.
Status byte: 1111 0001
2 data byte che specificano la posizione contando a partire dall'inizio della song(2alla14 posizioni diverse).


Song Select
Seleziona una di 128 song possibili che un device può avere memorizzate.
Il messaggio cambia la song corrente.


System Real Time Message
Si occupano del funzionamento sincronizzato dei diversi moduli di un sistema in tempo reale. Sono gli unici messaggi che possono bloccare il funzionamento di un altro messaggio e sono gli unici a essere costituiti esclusivamente dallo status byte.


MIDI clock
messaggi che garantiscono la sincronizzazione di più dispositivi in tempo relativo.
E la frequenza dei messaggi, inviati 24 volte ogni quarto, che opera come pulsazione di riferimento.
Il numero dei messaggi è relativo perché dipende dal valore del quarto.


Start/Continue/Stop
Tre messaggi che coordinano il funzionamento di tutti i dispositivi che compongono il sistema midi.
Start: i puntatori di tutti i dispositivi si spostano alla locazione iniziale della song corrente.
Stop: impone a tutti i dispositivi di bloccare l'operazione in corso.
Continue: determina la ripresa dell'operazione interrotta con un messaggio di Stop.

Active Sensing
viene inviato ogni 300 millisecondi, con la funzione di mantenere attiva la connessione tra master e slave. Se allo slave non arriva il messaggio considera il collegamento con il master interrotto e non attende altri messaggi.

System Reset
Messaggio che riporta tutti i dispositivi ai valori predefiniti(quelli impostati dalla casa produttrice per il momento dell'accensione del dispositivo).

System Exclusive Message
Messaggi attraverso i quali i costruttori sono in grado di specificare info relative ai lori prodotti.
Unici messaggi ad essere composti da 2 status byte , posti all'inizio e alla fine della sequenza di byte.
- Lo status byte indica l'inizio di un messaggio SysEx;
- una data byte che indica il codice standard proprio di ogni costruttore(ID byte);
Se il dispositivo riconosce il codice procede nella decodifica dei data byte successivi, significativi per quel particolare costruttore, altrimenti ignora il messaggio.
Chiude la sequenza lo status byte. 


Il General MIDI
E uno standard che specifica ulteriormente il protocollo MIDI 1.0. La codifica di ulteriori informazioni consente di aumentare la trasportabilità dei messaggi tra i diversi dispositivi.
Definisce un quinto MODO : General MIDI Mode(GMM), che regola a priori l'associazione canali, patch  e timbri. Il GMM definisce dei preset, indipendenti dall'hardware impiegato.
Canale 4: Melodia, 8: Armonia, 10: persuasioni; così un dispositivo che supporta il GM assegna automaticamente ai Channel Voice MEssage provenienti sul canale 10 le patch che producono timbri percussivi.
Il GM assegna a ogni valore di Program Change una patch prestabilita, assicurando un risultato timbricamente più o meno simile su ogni dispositivo.
La classificazione delle patch stabilisce una tipologia timbrica che deve essere più o meno simile a tutti i dispositivi che si adeguano al GM: l'effettivo risultato audio dipende dall'hardware ricevente.
Lo standard GM richiede per i device che lo supportano:
- 24 voci di polifonia;
- 16 canali polifonici  e multitimbrici;
- la possibilità di utilizzare 16 timbri diversi contemporaneamente ;
- l'utilizzo come accordatura del la4 a 440 hz --> equivale al picth(nota) 69.
- il 10 riservato alla batteria.
LIMITI GM: numero degli strumenti(128)


Altri Standard
Roland GS
codifica anche l'impiego del Bank Select(aumenta i preset) e altri controlli di effetti audio e parametri timbrici.
Yamaha XG
aumenta i preset e drumkit disponibili e prevede la scalabilità: se il device non è dotato delle possibilità dello standard approssima il più possibile il risultato.


XMidi(eXtended MIDI)
proposta di estensione del protocollo MIDI di Lukac -Kuruc.
Incrementa i canali indirizzabili da 16 a 324;
risoluzione dei valori lineari(volume, velocità) da 128 a 528;
valori non lineari(n. controllori, Program Change) da 128 a 4374.
Tutto ciò utilizzando un logica a livello hardware non binaria ma ternaria, incrementando il numero dei valori assegnabili.
Pensato per essere compatibile all'indietro.
Attuale perplessità delle case costruttrici.

Il Formato dei File in Protocollo MIDI: Standard MIDI FIle (SMF)

Come avviene l'archiviazione dei messaggi su file. I messaggi MIDI vengono memorizzati in un formato il cui standard è stato definito dalla MMA: permette di scambiare dati MIDI marcati temporalmente tra differenti programmi sullo stesso o su più elaboratori diversi.
Prende il nome di Standard MIDI File Format: attraverso di esso una sequenza di messaggi può essere eseguita su tutti i dispositivi MIDI. La rappresentazione dei dati è particolarmente compatta , pochi Kbyte, i MIDI-file sono agevolmente integrabili in altre applicazioni online.


Dal Protocollo al formato SMF
Il protocollo stabilisce quale deve essere la struttura dei messaggi e quali info i messaggi devono trasmettere . Il protocollo non definisce in che modo i messaggi debbano essere memorizzati in un file. E assente il concetto di tempo che è affidata all'esecutore o al sequencer.
Quello che interessava era la possibilità di trasmettere un flusso di dati tra più dispositivi MIDI durante una performance.
L'esecuzione in tempo differito non è definita dal protocollo. La memorizzazione dei dati richiede che di ogni evento si ricordi l'esatta collocazione temporale.
Prima specifica il formato di memorizzazione con l'info temporale era lasciata al costruttore.
Nel 1988 la definizione del SMF.
Non si propone di sostituire i formati proprietari: il suo obbiettivo è l'interscambio dei dati MIDI in un formato compatto adatto alla memorizzazione su disco.
Un Midi-File contiene un flusso di eventi MIDI, a ognuno dei quali associa una info temporale, o timestamp.
Consente di memorizzare le info della song e delle tracce che la compongono, tempo di metronomo(BPM) e il metro(4/4,3/4).
Permette  di definire info descrittive: nomi tracce, strumenti, copyright  e testi canzoni.
Dal punto di vista strutturale il Midi-FIle è un file composto da sequenze di parole binarie di un byte : una successione di messaggi MIDI intercalati da info sul ritardo di emissione. 


Definizione del tempo
Ogni evento MIDI è preceduto da un numero (timestamp) e che rappresenta l'intervallo di tempo che separa un evento dal precedente. L'intervallo: delta-time, può avere due significati, a seconda se il tempo è calcolato in termini relativi o assoluti.
- intervallo calcolato "metricamente" in tick: timestamp indica quanti impulsi di clock il dispositivo deve attendere per rendere attivo il messaggio successivo.
- Il delta-time può indicare la suddivisione di un secondo(frame SMPTE).


Eventi e Meta-Eventi
Un SMF può essere pensato come una sequenza alternata di timestamp e di successivi messaggi MIDI.
Tra le info veicolate dai messaggi è possibile distinguere tra eventi(Channel e System Message) e i meta eventi, info aggiuntive non definite dal protocollo 1.0: cambi di tempo, nomi tracce e strumenti, porzioni di testo , armatura di chiave.


Tracce, chunk e formati
Anche i MIdi-File sono formati da chunk: blocchi di informazione separata, ognuno costituito da un numero variabile di byte.
Due tipi  di chunk: un header e uno o più track.
Header, dimensione fissa di 14 byte, posto all'inizio e dichiara tre proprietà generali: formato, numero tracce e divisione in PPQ.

Il formato può essere di tre tipi.
Formato 0: info conservate in un'unica traccia. In una song con più tracce e la memorizziamo con il formato 0 , tutti i dati Midi vengono riversati in un'unica traccia. Formato base per garantire maggiore compatibilità tra i dispositivi.
Tempo e time signature definiti per l'unica traccia.
Formato 1: consente di definire più tracce autonome che debbono essere eseguite in simultaneità: formato più usuale, permette di sfruttare tutte le risorse messe a disposizione dall'impiego delle tracce.
Per ogni traccia possono essere definiti simultaneamente tempo e time signature(un cambio di tempo in quel momento si riferirà a tutte le tracce).
Formato 2: memorizza l'informazione in più tracce separate, ma sequenziali, (pattern); può essere pensato come una collezione di sequenze del formato 0. Non è supportato da tutti i sequencer.
Per ogni traccia possono essere definiti tempo e time signature. Tracce in sequenza, se ne può eseguire una sola per volta, ma ognuna è dotata di tempo e time signature indipendente.

Altre info nell'header riguardano il numero di tracce(1 nel formato 0) e la suddivisione che può essere indicata in tempo relativo o assoluto.

Track Chunk: la dimensione e il numero è variabile. Hanno la stessa struttura in tutti e tre i formati.
Ognuno è costituto dalla sequenza di eventi e meta-eventi relativi a una traccia, separati dall'indicazione del delta-time .
Possono avere dimensioni molto diverse l'uno dall'altro.
Formati 1 e 2  le info sui cambiamenti di tempo e di time signature vengono memorizzati nel primo track chunk.
Se salviamo una song di 3 tracce nel formato 1 o 2, analizzando file rileveremo non3 ma 4 tracce, poiché la traccia 0 viene aggiunta per contenere le info relative al tempo.

Vantaggi Midi
- Non è necessario memorizzare i segnali sonori, soltanto i dati MIDI(molto più ridotti).
- Musicista può cambiare alcuni aspetti dell'esecuzione dopo la registrazione.
- La registrazione non ha distorsione, fruscio.


Audio digitale VS MIDI
Registratori digitali VS sequencer MIDI
- sistemi digitali
- tracce multiple

Differiscono nel tipo e nella quantità di informazione gestita

Confronto
Musicista suona 4 semiminime a un tempo di 60 beat/min (4 sec)

Sintetizzatore MIDI
- 16 porzioni di informazione
- 4 noteOn, 4 noteOff, 8 altezze, 8 velocity
- 1 bye per info, 24 byte

Registratore digitale con microfono(stereo)
- sr = 44.100 hz
44.100 x 2 canali x 4 secondi= 352.800 campioni
campioni a 16 bit, 2 byte= 705.600 byte

24 byte per il MIDI
705 kbyte per l'audio digiate qualità cd

Vantaggio MIDI: basso costo
Vantaggio della registrazione digitale: qualsiasi suono catturato da un microfono, descrizione sfumature del segnale(pochi controlli MIDI),portabilità della registrazione(Dipendenz MIDI da sintetizzatore).

Limiti MIDI
baud rate 31250 bit/sec, 500 note/sec
Numero limitato canali, no indirizzamento dei device difficoltà  a configurare grandi reti MIDI.
Arbitrarietà delle patch.

Autore: Fabrizio Garis

Licenza Creative Commons
Formati e Supporti by http://lucciolaonline.blogspot.com/2012/03/6-musica-e-midi.html is licensed under a Creative Commons Attribuzione - Non commerciale 3.0 Italia License.

lunedì 12 marzo 2012

smtp.tiscali.it inviare email di tiscali con thunderbird

L'unico metodo che si ha per inviare le email di tiscali con thunderbird è quello di aprire un account di posta gmail e utilizzarlo come "filtro" per le email di tiscali.

Tutorial da seguire passo passo

1. Aprire account gmail qui

esempio con prova@gmail.com

2. Entrare nell'account gmail appena creato e seguire questa procedura per impostare correttamente l'account.

- Cliccare sull'icona a forma di ingranaggio in alto a destra e selezionare impostazioni.

- Entrare nel menu Account

- Nella sezione "invia messaggio come:" cliccare su "Aggiungi un altro indirizzo email di tua proprietà"
- Inserire un nome  e l'indirizzo emaildi tiscali: lucciolagrafica@tiscali.it, cliccare su"specifica un indirizzo diverso per le risposte" e inserire di nuovo lucciolagrafica@tiscali.it
--> Passaggio Successivo

- Spuntare su "invia con Gmail"
--> Passaggio Successivo

- Cliccare su "invia Verifica" . Le verrà inviata una mail sull'indirizzo lucciolagrafica@tiscali con un codice di conferma da inserire per confermare l'associazione.--> Chiudi Finestra

- All'interno della sezione "invia messaggio come:" - spuntare "rispondi dallo stesso indirizzo al quale il messaggio è stato inviato".

3. Aprire thunderbird,
aprire il menu strumenti > impostazioni account > Server in uscita(SMTP)> Modifica>

Inserire:

Descrizione: gmail
Nome Server: smtp.gmail.com
Porta: 25

Spuntare "Utilizza nome utente e password"
        nome utente:(quello registrato su gmail)esempio: prova@gmail.com
Spuntare "NO" su utilizza connessione sicura

cliccare su ok.

Ora finalmente potrete inviare le email di tiscali con thunderbird.

venerdì 2 marzo 2012

5. Formati e Supporti

Considerare due aspetti.
Primo riguarda il numero e il formato effettivo delle informazioni che sono memorizzatte in un file, cioè i numeri dell'ampiezza del segnale o una sequenza di note vengono organizzati in modo da essere poi letti di programmai di elaborazione e riproduzione o dai sequencer.
L'organizzazione dei dati è spesso molto articolata, perché tra i suoi obbiettivi ha la flessibilità dei parametri della rappresentazione e la robustezza rispetto rispetto a possibili errori di registrazione e trasmissione.
Secondo connesso all'archiviazione, concerne le problematiche relative ai supporti fisici che devono avere ampia capacità, alta velocità di accesso e tempi ridotti di recupero dati.

Convenzioni dell'archiviazione dei dati audio
La digitalizzazione del segnale comporta la definizione dei parametri di campionamento, quantizzazione, codifica.
Per definire un formato queste info devono essere integrate con ulteriori convenzioni:
la modalità di memorizzazione dei canali multipli e la struttura interna dei campioni.

Canali multipli e formati non compressi, occorre decidere come i campioni dei diversi canali vengono alternati nella memorizzazione.
Procedimento: costruzione di gruppi di campioni da tutti i canali presenti secondo uno schema detto interfogliamento (interleaving).
Campione 1 sx         Tutti i primi campioni
Campione 1 dx
Campione 2 sx          Tutti i secondi campioni
Campione 2 dx
…………………...
Campione n sx          Tutti i campioni n-esimi
Campione n dx

I canali sx dx si alternano, prima i canali con il canale sinistro.
Vantaggi della memorizzazione:
- facile sincronizzazione dei canali;
- maggiore velocità nell'archiviazione o trasmissione dei dati;
Svantaggi:
eventuali sprechi di spazio(a volte alcuni canali non trasportano segnale);
difficoltà di effettuare operazioni di elaborazione del segnale che concernono un solo canale;

Struttura interna dei campioni
aspetto di rilievo nell'archiviazione è l'ordine dei byte quando un dato necessita di più di un byte, come nel caso di 16 bit.
I byte vengono memorizzati mediante interi positivi.
Campione di 16 bit è formato da 2 byte:
uno meno significativo (LSB) per i bit da 0 a 7;
uno più significativo (MSB) per i bit da 8 a 15;
Un ordine naturale sarebbe quello di far precedere LSB negli indirizzi in memoria: nel caso, l'indirizzo LSB sarebbe un numero inferiore all'indirizzo MSB.
Ordine naturale: LITTLE-ENDIAN, macchine Intel.
Ma i produttori di hardware hanno perseguito anche la soluzione inversa:
BIG-ENDIAN, processori Motorola, produttori Apple e Sun.
Scambiare dati tra macchine differenti, i dati verrebbero interpretati in modo errato.

I formati dei file audio
Sono stati sviluppati per standardizzare la riproduzione e la distribuzione dei dati audio nei sistemi digitali.
Storicamente, ogni tipo di piattaforma usava un formato proprietario per i dati audio:
alcuni formati sono applicabili in modo più generale,
altri sono tipici di una piattaforma.
Esistono programmi per la conversione tra quasi tutti i programmi  anche se tavolta si ha perdita di informazione.

Parametri che determinano i dati audio sono principalmente tre:
- tasso di campionamento(sampling rate) misurato in campioni/s per canale;
- lunghezza e tipo di codifica della parola binaria: numero di bit per campione;
- numero di canali

Due tipi di formati
Con intestazione(header), detti autodescriventi.
Hanno una forma più flessibile , permette di inserire nell'intestazione i parametri espliciti del formato.
Definisce una famiglia di codifiche per i dati audio:
un parametro dell'intestazione definisce la variante adottata.
L'intestazione inizia spesso con una parola chiave e prosegue con i dati della codifica(segno/senza segno, mono/stereo).
Sono molto diffusi , la maggior parte dei programmi di elaborazione audio riesce a interpretarli e a produrli.
Senza intestazione(headerless - raw).
Parametri sono impliciti e verranno interpretati caso per caso(parametri e codifica fissati a priori).
Definiscono una singola codifica dei dati (anziché una famiglia);
Non ammettono variazione dei parametri;
A volte permettono più frequenze di campionamento, ma può essere un problema ricavare quale è quella giusta attualmente.

Il Formato Wave di Microsoft

estensione .wav, molto versatile e usato anche in altri ambienti.
Supporta: più livelli di quantizzazione, tassi di campionamento e canali.
Si basa sul formato RIFF: prevede la memorizzazione dei dati in sezioni logiche all'interno del file, dette chunk.
Chunk sono di diversi tipi.
Due sono obbligatoriamente presenti:
formato: contiene info sui dati audio(es. tasso di campionamento); "FMT"
dati: contiene i veri e propri campioni della forma d'onda; "data"

L'intestazione dei file RIFF (Formato di File per l'interscambio di Risorse) e i due chunk.
Primi 4 byte: l'identificazione del formato: RIFF
Secondi 4 byte: indicano la lunghezza rimanente del file
Dall'ottavo Byte: vi sono i dati.

Chunk dei dati
primi 4 byte: identificatore del tipo dei dati contenuti nel chunk dati: WAVE
24 byte: chunk del formato, l'intestazione del file Wave
Dal 28 Byte: dati audio veri e propri, campioni.

Chunk del formato: parametri fondamentali della forma d'onda:
identificatore del chunk: "fmt"
Lunghezza del chunk
WformatTAG: formato effettivo dati audio, distinzione principale  riguarda l'eventuale compressione, se si usa la compressione il valore sarà diverso da 1 , ulteriori campi addizionali al fondo del chunk per permettere la giusta decompressione.
Numero di canali
Tasso di campionamento
#Blok align: numero che rappresenta la dimensione in byte di un sample frame. Si calcola moltiplicando numero di canali  per la quntizzazione diviso 8
Q= 16 bit C=1 #BA= 2byte
Q= 16 bit C=2 #BA= 4byte
#AvgByte: quanti byte riprodotti al secondo, stimare la memoria Ram.
Moltiplica tasso di campionamento per #Block Align, che indica i byte per gruppo di campioni.

Chunk dei dati veri e propri
inizia con la stringa "data", prosegue con i 4 byte della lunghezza dei dati e termina con i dati audio, campioni.

I supporti
I campioni del segnale audio digitale possono essere registrati su una moltitudine di supporti, con caratteristiche fisiche e logiche diverse (magnetici, ottici, elettronici).
Dal punto di vista logico ciascun supporto è caratterizzato da uno standard proprio per la struttura dei dati.
Due caratteristiche rilevanti: capacità di contenere i dati e la velocità di lettura/scrittura per garantire una corretta registrazione/riproduzione.

Segnale a qualità CD
Frammento audio stereo di 1 minuto
tasso di campionamento 44.100 hertz
quantizzazione 16 bit (2 byte)

Capacità:
2 canali,
Campioni totali in un secondo sono 88.200 (44.100 x 2)
Campioni totali in un minuto sono 5.292.000(88.200 x 60)
bit per campione sono 16(2 byte)
byte occupati sono 10.584.000(5.292.000 x 2) = oltre 10 Megabyte

Trasferimento:
Campioni totali in un secondo sono 88.200 e ciascuno occupa 2 byte
byte totali che occorre inviare in un secondo sono 176.400 (88.200 x 2 ) = 176 kilobyte/sec

Compact disc (CD)
inizi anni '80, Sony e philips in collaborazione.
Anatomia
Disco in policarbonato  di 12 cm di Diametro, con un buco in mezzo di 1,5 cm.
Parte più interna e esterna non contengono dati. Dati partono da 2,5 cm dal centro per finire a 11,6 cm, scritti dall'interno verso l'esterno, con un percorso a spirale.
Esternamente all'area dati vi sono due aree di info aggiuntive: una di entrata e l'altra di uscita  che si riferiscono alla direzione in cui il disco viene letto.

La memorizzazione dei dati si basa sulle proprietà di riflessione della luce sulla superficie del disco.
Per poter rappresentare gli 0 e 1 occorre modificare delle zone della superficie in modo che la riflessione in tali zone sia differente dal resto della superficie.
Zone dette avvallamenti o pit, procurati mediante la bruciatura sulla superficie mediante un raggio laser intenso.
I pit sono disposti su tracce(sentieri, percorsi) a spirale dal centro verso l'esterno.
Superficie tra pit: land
Pit: larghi 1/2 mm e lunghi da 0,83 a 3,56 mm; profondità tra 0,1 e 0,2 mm
Tra due tracce: 1,6 mm
Dimensioni ridotte
La lunghezza della spirale dei pit si allunga fino a 5 km.
Il policarbonato è ricoperto da un sottile strato di alluminio e da una pellicola protettiva  su cui viene applicata l'etichetta.

La lettura dei pit avviene dal lato opposto al quale sono stati impressi(gobbe più che avvallamenti);
In lettura un raggio laser percorre la traccia di pit e land, la luce riflessa passa attraverso un prisma che la deflette  verso un fotosensore  che genera impulsi di ampiezza proporzionale alla quantità di luce ricevuta.
Gli 1 vengono segnalati dalla lettura del bordo di un pit, quando viene rilevata una differenza di riflessione.
La tecnica della rotazione dei dischi l'unica rimasta possibile è a velocità angolare costante, aumentando la velocità di trasferimento dati: 48x = 7,2 Mb/sec(150 kb/sec x 48), gira a 12.000 giri al minuto(rpm).

Formato di scrittura segue una struttura molto articolata.
Il formato dei CD include i codici di rilevamento e correzione dell'errore , e i dati vengono rimescolati e sottoposti alla codifica EFM.   

Codici di rilevamento e correzione dell'errore(ECC), bit di parità. Idea è di aggiungere dei bit di controllo per rilevare e correggere.
Il rimescolamento dei dati segue una tecnica di interfogliamento , per cui i campioni in un gruppo fissato vengono disposti in modo differente dall'ordine cronologico originale. In caso di errore in lettura, la forma d'onda originale è più facilmente ricostruibile a partire dai frammenti a disposizione.

Processo totale di memorizzazione dei dati su CD
1.Forma d'onda digitalizzata in parole binarie da 16 bit per campione, e i campioni sono interfogliati tra il canale sinistro e quello destro.
2. Si raggruppano i campioni consecutivi in frame, prendendo sei campioni da ciascun canale,        totale=12; 192 bit
3. Ogni campione è di 16 bit, Canali sinistro e destro sono composti da due byte.
Quindi il frame è composto da 24 unità da 1 byte: blocco base dei dati.

Ora aggiungiamo codici per arrivare alla struttura completa del CD.
Contollo degli errori e rimescolamento : Codifica di Reed-Solomon di Interfogliamento  Incrociato CIRC.
1. Rimescolamento: i byte di numero pari ritardati di 2 blocchi, ciò che risulta viene rimescolato.
2. Si aggiungono 4 byte di parità = 32 bit (media di un bit ogni 6 bit di dati )
     Risultato = Blocco di 28 byte (24+4).

3. Rimescomento più sofisticato. Ciascuno dei 28 byte viene riposizionato in un nuovo blocco, calcolato moltiplicando per 4 la posizione del byte.
1 byte: 4 blocchi più avanti
2 byte: 8 blocchi più avanti
3 byte: 12 blocchi più avanti
l'ultimo,24 byte: 112 blocchi più avanti

4.I nuovi blocchi, sempre di 28 byte, sottoposti a una codifica di parità.
 Risultato= + 4 byte, 32 byte
5. Ulteriore spostamento dei byte dispari di un singolo blocco.
6. Si aggiunge 1 byte all'inizio del gruppo di 32 byte. Bit di info aggiuntive. Tutte queste info sono distribuite su tutti i gruppi di 8 bit che accompagnano i frame.

Totale di 33 byte per un frame.

Infine viene aggiunta la codifica EFM
Il nostro frame attuale viene convertito in formato EFM. L'idea è di minimizzare il numero di transizioni 0-1 e 1-0 in lettura,evitando la bruciatura di pit dipiccole dimensioni, che provocano transizioni veloci. I codici di 8 bit diventano di 14 bit.

Da 33 byte da 8 bit ora ci ritroviamo 462 bit (33x14).
Per completare il frame si aggiungono ancora 24 bit di sincronizzazione all'inizio del frame .
Bit del frame sono diventati 486.

Infine a ogni sequenza di 14 bit vengono agganciati 3 bit di intercapedine tra una sequenza di 14 e la successiva, per tenere distinti i codici EFM.
Codici EFM all'interno di un frame ce ne sono 33;
32 gruppi di 3 bit in mezzo e 2 agli estremi per un totale di 34 gruppi di 3 bit.
Totale bit di intercapedine fa 102, 102 + 486 = 588 bit per frame.

Lettore CD legge ogni frame da 588 bit in 136 msec = 4.323.529 bit/sec
1.411.765 bit/sec di puri dati audio (192/588) = 176.471 byte/sec
TC= 44.100
Q= 16 bit
Segnale stereo
Per poter ascoltare la musica tranquillamente
velocità di trasferimento dei bit dal CD audio = 1.411.765 bit/sec (44.100 x 2 x 16)
La velocità del lettore è sufficiente a mantenere il tasso per la riproduzione.(buffer che funge da tampone.)

DVD Digital Versatile Disc
1996 primo standard, dimenticare dei problemi di spazio, mantengo alta la qualità audio/video. 
Differenze con il CD:
1. densità del pit e tracce inferiore, la capacità supera di 4 volte
2. L'informazione è disposta su più livelli, possono essere letti in modo distinto.
3. Possono avere due facce
4. tecniche più efficientidi correzione degli errori, assicurano più spazio per i dati effettivi.

DVD-Audio compete Super Audio CD(Sony e philps),

dvd-audio multicanale codifica il segnale in due gruppi di canali, con differenti tassi di campionamento e quantizzazione.(massimo bit-rate permesso è 9,6 Mbps).
Struttura lógica contiene tutta l'informazione in file: cartelle AUDIO_TS, DVD_TS, l'audio associato al video è sempre compresso.

Super Audio CD prende forma con l'obbiettivo di unificare la tecnologia DVD con la compatibilità verso il CD tradizionale.

Autore: Fabrizio Garis
Licenza Creative Commons
Formati e Supporti by http://lucciolaonline.blogspot.com/2012/03/5-formati-e-supporti.html is licensed under a Creative Commons Attribuzione - Non commerciale 3.0 Italia License.

lunedì 20 febbraio 2012

4. Compressione

E l'arte di minimizzare le risorse per i dati audio.
Gli obbedivi sono: ridurre la memoria occupata e i costi di trasmissione.
Attualmente l'audio compresso fornisce una buona qualità in confronto all'audio non compresso.
Se l'obbiettivo include la qualità del segnale, occorre individuare qual'è il numero minimo di bit per rappresentare il segnale in modo che la riproduzione sia trasparente (anche orecchie sensibili non riescano a distinguere dall'originale).

Motivazioni per la compressione

Il successo dei CD(metà anni 80) porta alla luce i vantaggi dell'audio digitale:
- alta fedeltà del segnale rappresentato;
- l'estesa gamma dinamica offerta;
- la robustezza rispetto a eventuali danneggiamenti del supporto;
Svantaggi:
- alti tassi di trasferimento dati che sono richiesti.

CD-Audio
Tasso di campionamento:  44.100 hz
Quantizzazione: PCM lineare a 16 bit
Tasso di trasferimento dati (bit-rate): 705,6 Kbps MONO e 1,411 Mbps STEREO

L'audio digitale non compresso occupa:
- molto spazio sull'hardisk per la memorizzazione;
- una banda ampia sul canale di trasmissione;

Esempio: brano di 1 min con Qualità CD
Parametri:
Tasso di campionamento: 44.100 c/s
Quantizzazione: 16 bit (2 Byte)
Canali = 2 (Stereo)
Tempo = 1 minuto(60 secondi);

Memoria che risulta occupata è di circa 10 Megabyte:
44.100 c/s x 2 canali x 2 byte/campione x 60 = 10.584.000 byte
10 Mb equivalgono a 80 Megabit (circa 80.000 Kb), il tempo di scaricamento con un modem a 56,6 Kbps è di oltre 20 minuti:
80.000 kb/ 56,6 kbps = 1413.4276/60 sec= 23 min e 33 sec

Nonostante l'accesso e il trasferimento dei dati da CD e DVD e dalla rete siano sempre più veloci non è ancora pensabile attualmente poter trasferire immagini, video, testo  e audio di alta qualità sincronizzati tutti insieme.
L'obiettivo è la riduzione del bit-rate senza compromettere la qualità della riproduzione
A partire dagli anni 80 è stata prodotta una mole di lavoro intorno a schemi di compressione che potessero soddisfare le esigenze presenti, in vari tipi di applicazioni:
Bassa qualità: telefonia;
Alta qualità: colonne sonore videogiochi su CD-ROM, memorie flash per riproduttori portatili, audio su internet, Web radio e Web Tv.

Durante la fase di compressione(Codifica - Encoding), i dati audio digitali vengono prelevati da un file e trasformati in una sequenza di bit in modalità compressa rispetto all'originale.
Durante la fase di decompressione, si ricostruisce il segnale di partenza o si ricostruisce un segnale che suona come l'originale.
La compressione con perdita di informazione(lossy) è in generale più efficace , anche se la qualità non è sempre eccellente.
Notiamo che il flusso di bit (bitstream) non necessariamente rappresenta una sequenza di campioni come nel file originale. La codifica usata dipende dallo schema di compressione e potrebbe richiedere operazioni di ricostruzione dal segnale anche molto complesse.
Gli schemi di compressione vengono implementati in Codec, librerie software istallate su un calcolatore consentono ad applicativi di alto livello di comprimere e decomprimere nella modalità corrispondente.
Descriviamo  alcuni schemi di compressione lossy: semplici e complessi.  La differenza si basa sulla complessità degli algoritmi  di codifica/decodifica (tempo di computazione), efficacia di compressione.

Le Codifiche u-law A-low

Realizzano specifiche contenute nelle raccomandazioni G.711, comitato internazionale per gli standard delle telecomunicazioni.
Codifica u-law: Nord America e Giappone per sevizi di telefonia digitale ISDN.
Codifica a-law: Europa e sul traffico internazionale telefonia ISDN.
Il segnale audio deve essere sufficientemente compresso per poter essere inviato su una linea ISDN che consente un traffico di 64 Kbps ed essere decodificato in tempo reale.
Tasso di campionamento: 8000 c/s;
funziona bene sulle frequenze fino a 3000-4000 hz.
Quantizzazione: è di natura logaritmica, poiché rappresenta con livelli di quantizzazione don uniformi le ampiezza forti e deboli e prevede 8 bit a campione.
Bit-rate: 64 Kbps (8000c/s x 8 bit/c).
Non limitando la frequenza di campionamento, la compressione offerta dalla quantizzazione logaritmica è di bit-per-campione/8:1; se i campioni originali sono di 16 bit, il fattore di compressione è di 2:1.
La quantizzazione logaritmica con 8 bit consente di raggiungere una gamma dinamica pari a quella ottenuta con una quantizzazione lineare a 13-14 bit.(I campioni di ampiezza debole quantizzasti con maggior accuratezza= Rapporto segnale/rumore per il segnale codificato è più uniforme su tutta la gamma delle ampiezze del segnale in input).
u-law
Si comprimono i campioni a 16 bit in modo non lineare su campioni da 8 bit (0-255). Non linearità in cui i campioni di forte intensità vengono compressi in pochi valori di codifica. I valori ottenuti dalla decompressione non sono esattamente quelli codificati, ma delle loro approssimazioni a volte grossolane(esempio: -200 a 16 bit diventa 106 a 8 bit e con la formula inversa -193 a 16 bit).

La compressione ADPCM (PCM differenziale adattiva)

Metodo diffuso e raggiunge un buon compromesso tra velocità di elaborazione, qualità del segnale decodificato e rapporto di compressione.
Due idee alla base dello schema ADPCM:
- la codifica delle differenze tra i campioni;
- l'adattamento delle differenze allo specifico segnale in input;

Nella codifica delle differenze tra campioni(differencing):
ogni elemento della sequenza da comprimere viene sostituito da un bit che indica il segno della differenza (un campione ha un'ampiezza < o > del precedente)  e da alcuni bit che rappresentano il valore assoluto della differenza.
Le differenze hanno una valore ridotto rispetto ai campioni quindi serviranno un numero inferiore di bit (mantengono pero lo stesso segnale/rumore).

Nella decodifica, la ricostruzione del segnale originale si ottiene sommando o sottraendo la differenza dal campione precedentemente decodificato.

L'adattamento delle differenze allo specifico segnale in input.
In genere l'andamento del segnale non subisce segnali drastici, può capitare che quando prevalgono le frequenze vicine alla frequenza di Nyquist, la differenza tra un campione e il successivo assume valori inconsueti --> per evitare un degrado eccessivo del rapporto segnale/rumore occorre adattare la codifica delle differenze ai valori che prevalgono in una certa finestra del segnale.

Lavorare con le differenze ha il vantaggio di ridurre i valori rispetto ai campioni PCM originali.
Le differenze sono sempre di dimensioni ridotte e tendono a ricorrere. Tali carrateristiche suggeriscono l'uso di tabelle di look-up, dove si memorizza un numero finito di valori ricorrenti in un segnale.
I valori di differenza si riducono introducendo una nuova operazione sul campione precedente: la predizione.
Il campione precedente viene usato come base di partenza per predire il campione attuale , sfruttando la conoscenza del segnale precedente, cioè la successione dei campioni fino a questo punto. Il risultato è che si assegna un numero di N di bit che permettono di rappresentare  2 alla N possibili valori di differenza.
 
La predizione basata su una certa differenza a un certo punto può rivelarsi inefficace (aumentare invece che diminuire). Il problema è evidente in uno spettro ricco di alte frequenze e il segnale varia in modo repentino, non concedendo il tempo di stabilizzare le differenze con una certa regolarità.
Differenze elevate (alte frequenze) non si possono rappresentare con un numero piccolo di bit, gli errori introdotti porterebbero a distorsioni sulle alte frequenze.
Considerando il numero di bit fissato per le differenze(N) occorre introdurre una certa adattabilità sul segnale in modo da ampliare o restringere i passi di quantizzazione  a seconda del contenuto  di alte frequenze. Quindi, lasciando inalterato il numero di regioni di quantizzazione per le differenze, le regioni si ampliano o restringono a seconda se c'è da coprire una differenza maggiore o minore.
Le differenze si dicono quindi quantizzate  e a seconda della variazione più o meno repentina del segnale occorre una riquantizzazione nel caso quella corrente sia inadatta a rappresentare l differenze in gioco in un certo frammento del segnale.
Esendo le differenze quantizzate, la compressione ADPCM è lossy.   

Schema Generale ADPCM


Lo schema di codifica ADPCM usa come suo componente lo schema di decodifica per calcolare i valori predetti.
Segnale in input = X[n] n= numero di campione (X[1],X[2]…)
Campioni ricostruiti o predetti = Xp[n]
Differenze = D[n]
Differrenze quantizzate = Dq[n]

Codifica passo passo
X[n] --> campione con segno= +X[n]
+X[n] viene sottratto il campione predetto= Xp[n-1], calcolato a partire dal campione precedente.
+X[n] - Xp[n-1] = differenza = D[n], positiva o negativa.
Quantizer(adattivo) che darà in output una codifica della differenza D[n] in livelli di quantizzazione(
bit) in numero inferiore al segnale di input(compressione).
Quantizer darà anche l'output della codifica = C[n], sequenza compressa composta di differenze quantizzate.
C[n] differenza quantizzata  è ripresa per calcolare il valore predetto che sarà sottratto dal successivo campione.
Requantizer traduce la differenza quantizzata(C[n]) in una nuova quantizzazione richiesta dal Predictor.
Il valore riquantizzato = Dq[n] viene addizionato al campione predetto al passo precedente ricostruendo il campione Xp[n].
Xp[n] viene utilizzato dal Predictor per costruire il valore predetto per il prossimo campione,
valore definito= Xp[n-1].

Decodifica
Il segnale in ingresso = C[n], differenze quantizzate
C[n] viene riquantizzato in Dq[n] con il Requantizer e addizionate a Xp[n-1] prodotto dal Predictor.
Risultato= Xp[n], sequenza ricostruita che suona come X[n].

Per comprendere l'adattatività al segnale in input: l'algoritmo IMA ADPCM.

La compressione IMA ADPCM


IMA consorzio produttori hardware e software per lo sviluppo di standard per dati multimdediali su computer.
L'obbiettivo: algoritmo di compressione in grado di produrre un rapporto discreto di compressione semplice da permettere una decodifica software in tempo reale di un segnale audio stereo a 44.100 c/s  su un 386 a 2 mHz di clock. E semplice da permettere anche la codifica in tempo reale sullo stesso PC.
La semplicità dipende dal Predictor: il valore predetto è il valore decodificato del campione audio precedente(una copia del flusso di input ritardata di un campione).
Il Predictor IMA non è adattivo, è un semplice registro.

I campioni in input sono a 16 bit mentre le differenze sono di 4 bit, riduce 1/4 i dati del segnale.
Predictor ricostruisce il campione predetto a partire dalla predizione precedente e dalla differenza ri-quantizzata.
Viene inserito un modulo, Adattatore ampiezza del passo, che implementa l'adattabilità al segnale in input --> variando l'ampiezza del passo di quantizzazione in modo logaritmico a seconda della differenza rilevata con l'ultimo campione: modulo che influenza Quantizer e Requantizer.
L'algoritmo si adatta al segnale in input variando la dimensione del passo di quantizzazione(regioni di quantizzazione) nel Quantizer delle differenze.
Differenze è piccola = assottigliato passo di quantizzazione
Differenze aumentano = passo viene ampliato per coprire maggiori distanze.

I possibili passi di quantizzazione sono contenuti in una tabella di 89 voci. Ciascun Passo è associato a un indice della tabella.

Funzionamento Quantizer unito adattatore delle ampiezze del passo.

Quantizzazione= differenza trovata viene confrontata con l'ampiezza del passo corrente= 8 possibili regioni rispetto al passo.
Output del Quantizer = espresso in 3 bit(4 segno), indica la codifica della regione selezionata sulla base del confronto.
Prodotto tra il passo e il Moltiplicatore rende il passo più vicino alla differenza effettiva.
La variazione dell'indice determina un nuovo indice sulla tabella dei passi di quantizzazione.

L'algoritmo IMA mantiene un indice sulla tabella dei passi di quantizzazione.
Ampiezza passo < differenza = indice decrementato
Ampiezza passo > differenza = indice aumentato

L'output tabella dei passi usato come dimensione del passo di quantizzazione per il Quantizer.

La codifica è lossy. Produce un fattore di compressione di bit per campione / 4 a 1, Se campioni originali sono a 16 bit fattore di compressione è 4:1 , bit rate a 400 kbps.

Schemi di compressione di tipo percettivo

Operano perlopiù rimuovendo le parti irrilevanti del segnale audio.
La soglia assoluta di udibilità è caratterizzata dalla quantità minima di energia che deve trasportare un suono puro perché un ascoltatore riesca a percepirlo.
Non si conosce a priori i livelli di riproduzione che saranno usati:
I progettisti degli algoritmi di compressione si riferiscono a una curva SPL ottenuta identificando il punto minimo della curva a 4.000 hz con l'energia rappresentata da 1 bit(6dB).

Le bande critiche e mascheramento simultaneo

Orecchio interno è un analizzatore dello spettro del segnale, lavora in modo tonotopico: assegna un suono puro a un'area specifica della membrana basilare.
Regioni distinte della membrana sono "accordate" su differenti bande di frequenza.
L'analisi spettrale non segue una scala lineare sulle frequenze: si possono identificare delle bande di frequenza , bande critiche, al passaggio tra le quali si può osservare un cambiamento repentino della percezione uditiva; se la banda del rumore si estende oltre i confini della banda critica si percepisce un aumento del volume.
Sistema uditivo si può descrive come un banco di filtri passa-banda: bande sono le bande critiche con una larghezza compresa tra 100 e 500 hz e che può arrivare oltre i 5000 hz nelle alte frequenze per un totale di 25 bande critiche.

Mascheramento simultaneo fenomeno per cui un segnale a debole intensità non viene percepito a causa della presenta simultanea di un segnale a intensità superiore.
Condizioni per il mascheramento è che la frequenza dei 2 segnali sia abbastanza vicina, ed è molto efficace se i segnali sono nella stessa banda critica.
Il comportamento di un segnale mascheratore viene descritto da una soglia di mascheramento per cui tutti i segnali che sono sotto questa soglia non si possono udire, ci sono sia parti del segnale dello spettro, sia artifici introdotti con la digitalizzazione.
Le soglie di mascheramento che dipendono da toni mascheratori (mascheramento tonale):
forma: campana;
basse frequenze: curva di ascesa rapida;
alte frequenze: curva di discesa più dolce; vengono mascherate più facilmente.

Rumore, segnale a banda larga, è un mascheratore più efficace dei toni singoli, in quanto la distanza tra mascheratore e mascherato in termini di intensità è inferiore(cioè il mascherato deve avere un'intensità forte) in esperimenti in cui il rumore maschera il tono che viceversa.

Quando nel segnale originale sono presenti più segnali mascheratori, che non si mascherano a vicenda, è possibile costruire una soglia di mascheramento globale a partire dalle singole soglie di mascheramento.

Diagramma  - Bande critiche e mascheramento simultaneo, singolo tono di mascheramento all'interno di una banda critica.
Ascissa: frequenza;
Ordinata: intensità in dB, logaritmica;
Tono genera una soglia di mascheramento, di cui il minimo si trova all'estremo sinistro della banda critica.
Per lavorare senza l'introduzione di distorsioni occorre basarsi su tale soglia minima.
3 possibilità di SNR (rapporto segnale/rumore) per m-1, m, m+1 bit.
1 bit = 6db SNR, per cui man mano che i bit aumentano anche SNR aumenta.
Rapporto SNR su scala logaritmica si può calcolare :
SNR log = log(max_ampiezza) - log(rumore-medio)
max_ampiezza= livello del tono mascheratore, asse delle ordinate.
SNR è la differenza tra il livello del tono mascheratore e il livello del rumore.

SMR: rapporto segnale/maschera, distanza tra il livello del tono mascherature la minima soglia di mascheramento.

NMR; rapporto rumore/maschera, distanza tra il livello del rumore e la minima soglia di mascheramento.

SNR = SMR + NMR

Rapporto SMR è usato dagli algoritmi di compressione nell'allocazione dei bit necessari per la codifica del segnale:
rumore ha intensità < all minima soglia di mascheramento non è percepibile a causa del tono mascheratore basterà allocare il numero di bit necessari per raggiungere il livello SMR, producendo la stessa qualità prodotta dall'SNR.

Mascheramento temporale: segnali transitori repentini (attacchi suoni percussivi) creano delle regioni di mascheramento che precedono e seguono il segnale.
Pre-mascheramento tende a durare : 5msec
Post-Mascheramento: si può estendere tra 50 e 300 msec.

Standard MPEG

Gruppo di  lavoro per lo sviluppo di standard per compressione, decompressione, elaborazione e rappresentazione codificata di video e audio. Più versioni susseguite cronologicamente.

MPEG  1 : memorizzazione/recupero video e audio ('92)
MPEG 2: standard per TV originale, bit-rate 6 Mbps e sourround('94)
MPEG 4: immagini e audio visti come composti da diversi oggetti, per permettere lo sviluppo di applicazioni multimediali.('98)
MPEG 7: rappresentazione del contenuto per la ricerca, filtraggio, gestione di info multimediale('01)
MPEG 21: sicurezza contenuti multimediali ('09)

Una delle caratteristiche è il principio di minimizzare gli elementi normativi all'interno dello standard. Unici elementi imposti sono il formato dell'audio compresso e l'algoritmo di decodifica.
I moduli dell'algoritmo di compressione audio sono lasciati quasi interamente alla creatività degli sviluppatori.
Le specifiche ufficiali rilasciate includono anche una descrizione completa di un encoder.

Standard MPEG 1, universale in molti settori.
codifica del segnale audiovisivo combinato a un bit-rate di circa 1,5 Mbps(1,2 Mbps video e 0,3 Mbps audio, cioè 300 kbps, per l'audio stereo) con qualità inferiore alla TV.
Specifiche audio permesse per il segnale in input sono:
frequenze di campionamento: 32, 44,1 , 48 Khz
numero canali: 1 o 2
modo di funcionamiento: mono, dual mono, stereo, joint-stero
bit-rate segnale output: da 32 a 224 kbps per canale, buona qualità: 192 kbps.
Tre livelli di compressione(layer)
lager I è l'algoritmo di base , II e III migliorano i moduli dello schema producendo migliori compressioni al costo di incrementare la complessità sia del'encoder che del decoder
Layer 1 : più semplice, bit-rate superiore a 128 kbpss
Layer 2: più complesso esattamente di 128 kbps
Layer 3: il più complesso di 64 kbps, molta compressione    

Struttura di base di MPEG 1 ricalca lo schema generale e implementa in modo differente i vari moduli a seconda dei layer.

Analisi-tempo frequenza
[codifica per blocchi, segnali audio reali non variano molto tra un campione e il successivo, si può assumere che lo stesso esponente valga per un buon numero di campioni. Un risparmio consistente si ottiene mantenendo lo stesso esponente per tutto un blocco di campioni, in modo a memorizzarlo una sola volta: all'interno del blocco si sceglie il campione che necessita del maggior numero di bit di esponente, e determinato il numero viene mantenuto per tutto il blocco]

Segnale audio viene segmentato in frame(blocchi), la porzione di segnale all'interno di ciascun blocco viene analizzata nel dominio della frequenza e convertito nelle sue componenti spettrali mediante un banco di filtri. Il banco di filtri che suddivide il segnale audio in 32 sottobande di frequenza della medesima larghezza.(0 a 31, sub-band coding).
[La codifica per sotto-bande divide lo spettro audio in molte bande di frequenza, le singole bande vengono elaborate individualmente. Il vantaggio di questa codifica è che i suoni non distribuiscono l'energia in modo uniforme lungo tutto lo spettro. Le sotto-bande con gamma dinamica ristretta possono essere codificate con un numero minore di bit; il risultato è che i campioni nelle diverse sotto-bande saranno codificati con un numero variabile di bit  e si avrà una riduzione dovuta alla diminuzione dei bit per alcune bande.]
I campioni in ingresso al banco di filtri nel dominio del tempo e i campioni in uscita nel dominio della frequenza sono gli stessi.
La larghezza uniforme delle bande risulta troppo ampia per le basse frequenze  e troppo stretta per le alte frequenze.

Analisi psicoaucustica
[valuta quanta distorsione si può introdurre in un segnale senza causare un'alterazione della percezione, producendo le soglie di mascheramento che permettono di determinare il massimo ammontare di distorsione armonica che si può introdurre nel segnale durante la fase di ri-quantizzazione, senza provocare delle alterazioni udibili nel segnale ricostruito. Calcola il rapporto SMR, rapporto tra l'ampiezza del segnale e la soglia di mascheramento. I rapporti SMR, calcolati per blocco di frequenze, sono utilizzati per decidere quanti bit vengono allocati per la ri-quantizzazione del segnale in ogni banda, in modo da minimizzare il rumore di quantizzazione ]
I banchi di filtri possono introdurre errori di minima entità, per compensare la mancanza di accuratezza del banco di filtri, il segnale viene analizzato mediante una FFT(Trasformata di Fourier veloce) layer 1 = 512 punti, layer 3= 1024 punti. L'output di questa trasformazione è usato dal modello psicoacustico che determina le soglie di  mascheramento e le sovraimpone alle frequenze contenute in ciascuna sotto-banda in modo da fissare il livello di distorsione permesso[Modello psicoacustico controlla l'allocazione dei bit. Calcola i rapporti SMR prendendo in considerazione lo spettro del segnale limitato a un blocco di campioni audio e la conoscenza sul mascheramento del rumore. Modello presente solo nell'encoder.]
I campioni di frequenza vengono raggruppati in blocchi.
Si usano blocchi di dimensione costante, 384 campioni, che corrispondo a blocchi per sotto-banda di 12 campioni ciascuno(12x32), nel layer II e III 1152 campioni, tre blocchi consecutivi del Layer I (384 x 3, 36 x 32= 1152).
Finestra temporale che corrisponde ad un blocco dipende dal tasso di campionamento:
a 48.000 hz, 384 campioni = 8 msec
a 44.100 hz, 384 campioni = 8,7 msec
Blocchi troppo lunghi per permettere di eviatare il pre-mascheramento temporale.

Layer I
I 384 blocchi subiscono una compansion(capitolo 2).
A tutti i campioni di frequenza del blocco viene attribuito un fattore di scala determinato a partire dal valore di picco del blocco.
Si usa un unico fattore di scala  di 6 bit per ciascuna sotto-banda, quindi lo stesso esponente per tutti i 12 campioni nella quantizzazione non uniforme in virgola mobile.
Si considera un passo di quantizzazione di 2 dB sui fattori di scala, con 6 bit si hanno 2 alla6= 64 configurazioni, con una gamma dinamica di oltre 120 dB.
Bit-rate in uscita è fissato a priori e anche le dimensioni della codifica in uscita da un  blocco sono fissate.
[I bit determinano il numero di regioni di quantizzazione. La somma dei bit allocati per ciascuna sottobanda non deve eccedere il massimo bit-rate fissato a priori]
La lunghezza della codifica per ciascuna sotto-banda deve essere tale per cui la somma totale delle codifiche non supera il bit-rate totale per il blocco.
Alcune sotto-bande avranno codifiche più lunghe e altre più corte.

Layer III
Dopo banco di filtri con 32 sottobande viene posto un modulo addizionale basato su una Trasformata discreta del coseno modificata(MDCT): permette una più elevata risoluzione frequentiate, producendo una partizione dello spettro più simile  a quella delle bande critiche nelle basse frequenze.
2 tipi di finestre: lunghe 36 campioni, corte di 12 campioni.
Opera sovrapponendo le finestre, per cui i campioni effettivi per finestra sono meno di quelli indicati.
La sovrapposizione dimezza i campioni: 18 per le finestre lunghe e 6 per le finestre corte.
Risoluzione totale = 576 frequenze per le finestre lunghe(0-575) e 192 frequenze per le finestre corte.
La dimensione delle finestre è utile per differenziare il trattamento del segnalein presenza di materiale stazionario rispetto alla presenza di transitori. In generale lavora la  MDCT a 18 punti.
Nell'analisi psicoacustica l'altissima risoluzione fornita dalla MDCT permette una sagomatura  del rumore più accurata.

Allocazione dei bit, Fase di quantizzazioneo e codifica
[usa i bit allocati per stabilire le dimensioni delle regioni di quantizzazione e codificare il segnale]
assegna alloca bit  e fattore di scala a ogni sotto-banda.

Nel layer I
le sotto-bande sono trattate allo stesso modo, si usano 14 classi di ri-quantizzazione(4 bit).

Layer III
4 elementi nuovi, quantizzazione non uniforme, bande relative a fattori di scala, codifica di Huffman, riserva di bit.
- Quantizzazione non uniforme  che garantisce un miglior rapporto segnale/rumore.
- layer I si può usare un differente fattore di scala per ciascuna sotto-banda, con la MDCT abbiamo una ploliferazione di sotto-bande, quindi si possono raggruppare delle sotto-bande per fattore di scala, raggruppamenti larghi all'incirca come le bande critiche. Fattori di scala distorcono il rumore di quantizzazione per adattarsi alle curve determinate dalle soglie di mascheramento.
- usa i codici di Huffman a lunghezza variabile per codificare i campioni quantizzati e ottenere una maggiore compressione. Dopo la quantizzazione  l'encoder ordina i 576 coefficienti delle sotto-bande per frequenza di occorrenza crescente. Coefficienti grandi alle basse frequenze, alte frequenze coefficienti bassi o addirittura nulli. Codifica i coefficienti attraverso codici di lunghezza variabile, codici brevi a valori frequenti e codici lunghi a coefficienti infrequenti, minimizzando la lunghezza media della codifica.
- bit-stream progettato in modo da soddisfare le richieste variabili di bit per le varie sotto-bande. Finestre sono di 1152 campioni ma i dati codificati non è detto che assumo sempre la stessa lunghezza. Quando il frame presenta un eccesso di bit rispetto bit-rate fissato, quelli extra possono essere messi in serbatoio , da dove possono esse prelevati quando la necessità per la codifica di un frame eccedono la lunghezza media.

L'algoritmo di allocazione dei bit seleziona un passo di quantizzazione che soddisfi il bit-rate e il rapporto SMR.
L'algoritmo inizia con il calcolo del rapporto rumore/maschera NMR, in db:
NMR = SNR - SMR per sottobanda.
SNR = segnale/rumore (1 bit = 6dB)
SMR è il rapporto segnale/maschera calcolato dal modello psicoaucustico.   
Prendendo in considerazione tutti i valori NMR  calcolati per sotto-banda si ricerca la sottobanco con il più basso rapporto NMR e si allocano i bit per quella sotto-banda.
Quando i bit totali del blocco superano i limiti imposti dal bit-rate, l'unità di allocazione dei bit computa una nuova stima del SNR, e il rapporto NMR per le sotto-bande viene ri-calcolato. Processo si ripete finchè non si possono allocare più bit. (Esempio 154, 4.16)

Layer III -  allocazione dei bit.
Sistema di 2 loop di iterazione annidati, che prendono in considerazione codifica Huffman e la riserva di bit.

Loop interno:
controlla il bit-rate, se numero di bit che risultano da una codifica di una dato blocco > del numero di bit a disposizione --> occorre una companding più efficace con un passo di quantizzazione più grande; operazione ripetuta più volte con differenti passi di quantizzazione finchè la richiesta di bit per la codifica Huffman è piccola abbastanza.

Loop esterno:
controlla la presenza di rumore, per fare in modo che il rumore di quantizzazione stia sotto la soglia di mascheramento,
si applicano i fattori a ogni banda, si parte da un fattore default di 1;
se il rumore di quantizzazione in una banda eccede la soglia di mascheramento , si corregge il fattore di scala per ridurre il rumore;
riduzione del rumore =  aumento allocazione bit --> occorre inviare al loop interno se si sta superando il bit-rate.
Continua finchè il rumore non scende sotto la soglia di mascheramento per ogni banda.

Terminazione:    
- rumore scende sotto la soglia di mascheramento;
- non è più possibile applicare il companding all'interno di una banda oltre il massimo consentito;
- l'applicazione riguarderebbe tutte le bande,
- alcuni includono limiti di tempo.

Layer I
A questo punto il blocco in output è composto da 384 campioni nel layer I che hanno codifica di lunghezza diversa a seconda dell'allocazione dei bit che sia ha per una certa sottobanda;
i blocchi vengono inviati/memorizzati in maniera seriale e non si comprende più la divisione interna della codifica.

Layer III
I blocchi codificati possono essere di lunghezza variabile, l'impacchettamento dei dati nel bitstream prevede un intervallo regolare sui pattern di sincronizzazione , ogni tot bit appare il pattern di sincronizzazione. Dopo il pattern si hanno le info aggiuntive.

Per il decider bisogna inserire delle informazioni che permettono la ricostruzione dei campioni all'interno dei blocchi.
Pacchetto(frame):
pattern predefinito di bit che annuncia l'arriva di un nuovo pacchetto;
Header info di sincronizzazione(descrive il tasso di campionamento);
Codici di controllo degli errori, 16 bit per il CRC;
32 allocazioni di 4 bit per ciascuna sottobanda;
Fattori di scala(32 codici di 6 bit ) che dicono come ciascuna banda è trattata dalla compansion.
Campioni divisi in 32 insieme di 12 campioni ciascuno, con variazione dei bit da 0 a 15 per insieme.
Pacchetto viene chiuso da eventuali info aggiuntive.

Decoder
ricostruisce le sequenze per sotto-banda sulla base dei blocchi di 12 campioni prendendo in considerazione l'allocazione dei bit e il fattore di scala.
Se una sottobanco non ha bit allocati , i corrispondenti campioni della sotto-banda sono messi a 0.
Una volta che l'intera sequenza di campioni di ciascuna delle 32 sottobanco è stata recuperata, si applica il banco di filtri in modalità di sintesi, e si calcolano 32 campioni audio in codifica PCM.


Elementi pratici della compressione MPEG


Successo MP3 è la sua versatilità nelle applicazioni,.

Modalità operative
MPEG I lavora con quattro modalità possibili:
segnali mono;
canali duali(due canali indipendenti, stesso parlato in lingue differenti);
segnali stereo;
joint stereo(combinazione dei segnali sinistro e destro in modo efficente);

Più Tassi di campionamento
MPEG I consente la compressione audio di segnali:
32, 44.1, 48 Khz
MPEG II estende alla loro metà
16, 22.05, 24 Khz
Bit-rate
[numero medio di bit consumati da un secondo di dati audio, kbps]
La selezione del bit-rate è lasciato quasi interamente all'implementatore.
Standard definisce una gamma di bit-rate che va da
32 a 320 kbps MPEG.
layer III permette anche la variazione di bit-rate tra i frame, che però deve essere supportata dal decoder.

La qualità del segnale ottenuto dalla decompressione dipende dal valore di bit-rate, cioè dalla forza della compressione.
bit-rate CD Audio è 1411.2 kbps
bit-rate con compressione MP3 per ottenere un segnale di qualità CD per musica pop/rock è 128 kbps.
Fattore di compressione 10-12.
La compressione a 128 kbps occupa all'incirca 1 mb/minuto: buon compromesso tra spazio occupato, velocità di codifica, e qualità del suono.
Musica acustica conviene salire a 192 o 256 kbps, molte armoniche
bit-rate dipende dalle esigenze del singolo progetto, non solo dalla qualità del suono decompresso.

Prestazioni MP3:
- qualità telefonica: compressione 96:1 (larghezza banda 2.5 kHz / mono / bit-rate 8 kbps)
- meglio di AM radio: 24:1 (7.5 kHz / mono / 32 kbps)
- simile a FM radio: 24:1 (11 kHz / stereo /64 kbps)
- quasi-CD: 16:1 (15 kHz / stereo / 96 kbps)
- CD: 12:1 (>15 kHz / stereo / 128kbps)

Programmi che eseguono codifiche: MP3 encoder, decomprimono: MP3 player o decoder.
Alla base vi sono librerie di funzioni che permettono di effettuare codifiche e decodifiche: Codec.

Scelta encoder dipende dalle esigenze.
Genere, più encoder è veloce più si perde in fedeltà audio.
Se necessario creare MP3 con basso bit-rate è opportuno utilizzare encoder lenti, in qualto altrimenti si rischia di perdere ancora qualità(essendo il bit-rate già basso).

Autore: Fabrizio Garis

Licenza Creative Commons
Compressione by Fabrizio Garis is licensed under a Creative Commons Attribuzione - Non commerciale 3.0 Italia License.

mercoledì 8 febbraio 2012

3.La Percezione Uditiva

Fisica e Cognizione
I suoni sono vibrazioni in un mezzo , che possono essere descritte mediante parametri fisici: ampiezza, frequenza, forma dell'onda.
Noi ci esprimiamo a proposito del suono con aggettivi:
- forte, debole (volume)
- alto, basso, acuto, grave (altezza)
- vuoto, pieno (timbro)
Due compiti principali per il sistema uditivo:
- Comprensione del messaggio sonoro: linguaggio, fruizione della musica, riconoscimento della  sorgente.
- Ricostruzione della mappa spaziale delle sorgenti sonore: localizzazione degli oggetti a partire dai suoni emessi in cui l'udito opera in tutte le direzioni.

Fisiologia dell'udito
I sistemi percettivi possono essere analizzati come delle funzioni di input/output.
Nel sistema uditivo l'input è il segnale acustico, le vibrazioni dell'aria che partono dalle sorgenti sonore e arrivano al nostro orecchio;
l'output è la comprensione del messaggio sonoro  e la ricostruzione della mappa spaziale delle sorgenti intorno a noi.

Orecchio, con componenti ridotte protette dalle ossee temporali. Converte le fluttuazioni di pressioni dell'aria in impulsi nervosi elettrochimici elaborati dal cervello.
Il segnale in ingresso mette in vibrazione la membrana del timpano, che trasmette il movimento meccanico agli ossicini e al liquido della coclea, che stimola il nervo uditivo.
La tromba di eustachio connette l'orecchio con la cavità orale , garantendo la stessa pressione sui due lati della membrana permettendo alla membrana di tornare in posizione dopo la vibrazione.
Il segnale propagato dal timpano verso l'interno viene elaborato dalla coclea, dove avviene la trasduzione da segnale acustico a segnale elettrochimico.
Il segnale elettrochimico viaggia lungo le vie nervose uditive, e viene elaborato in stazioni dette nuclei, raggruppamenti di cellule  nervose con specifiche proprietà , dove arrivano e partono i fasci che costituiscono i segmenti delle vie uditive. 
In tali stazioni  il segnale viene anche miscelato con il segnale proveniente dall'altro orecchio(bi-auricolare). La destinazione è la corteccia uditiva, che risiede nel lobo temporale, dove avvengono le elaborazioni di alto livello,  cioè le funzioni superiori  di interpretazione del segnale.

L'orecchio
Tre sezioni: orecchio esterno(padiglione, meato, timpano) medio (ossicini) interno (coclea).
Il segnale entra nel padiglione e percorre il meato. La forma del padiglione è complessa, offre un imbuto per la cattura di segnali ad alta frequenza (superiori a 3 Khz) in quanto la loro lunghezza d'onda è paragonabile alle dimensioni delle pieghe del padiglione.
Frequenze diverse vengono amplificate in modo diverso, a seconda della direzione del suono.
Il meato è il canale che connette il padiglione con il timpano, la sua frequenza naturale di vibrazione è intorno ai 2 khz, le frequenze in quella regione vengono amplificate è arrivano in modo più efficiente al timpano (comprensione del parlato).
L'orecchio medio propaga le vibrazioni dalla membrana del timpano alla coclea.
Propagazione avviene attraverso 3 ossicini, martello, incudine e staffa.
Martello è connesso al timpano, la staffa alla coclea e l'incudine propaga il movimento tra i due.
La staffa è inserita nella coclea attraverso la finestra ovale, che ha una superficie di vibrazione inferiore al timpano.
L'orecchio medio assolve due compiti: risolve i problemi della differente resistenza tra aria e perilinfa, fluido molto denso per cui le vibrazioni minori non avrebbero effetto sulla coclea, gli ossicini permettono di trasformare una vibrazione su un'ampia superficie in una vibrazione della stessa energia  ma distribuita su una piccola superficie. Secondo il principio della leva la forza che agisce sulla finestra ovale viene amplificata permettendo la percezione anche di segnali deboli.
Il secondo scopo è la protezione della coclea da suoni forti a bassa frequenza, che potrebbero danneggiarla.
I due elementi principali dell'orecchio interno sono i canali semicircolari(compiti di equilibrio) e la coclea, tubo avvolto a forma di chiocciola, il cuore della percezione uditiva.
La membrana fondamentale per l'elaborazione del segnale acustico è la membrana basilare su cui è appoggiato l'organo di Corti, che con oltre 20.000 cellule cigliate si occupa della trasduzione dal segnale acustico al segnale elettrochimico, che viene inviato al cervello. Le connessioni nervose delle cellule cigliate sono incanalate nel nervo uditivo.
La membrana basilare occupa la parte centrale della coclea per tutta la sua lunghezza. Stretta e leggera vicino agli ossicini e aumenta lo spessore verso l'altra estremità dove si trova un orifizio circolare detto elicotrema.
La staffa fa vibrare la perlina attraverso la finestra ovale. La vibrazione percorre tutta la coclea: rampa vestibolare, elicotrema e rampa timpanica, dove la finestra rotonda smorza le vibrazioni che altrimenti rimarrebbero in circolo nella coclea. Nelle vibrazioni ad alte frequenze il passaggio avviene in modo diretto attraverso la membrana basilare, quando le cellule cigliate si flettono si stimola la generazione di impulsi elettrochimici verso il cervello.
La membrana basilare distingue tra le frequenze presenti in un suono complesso rispondendo in modo differente a seconda della posizione lungo la membrana. Il diverso spessore e rigidità dalla base all'apice determinano la posizione sulla membrana per ogni frequenza dell'udibile.
Le alte frequenze alla base, le basse frequenze all'apice.
Dato un punto della membrana, la frequenza che presenta il picco in quel punto è detta frequenza caratteristica.
Funzionamento tonotopico della coclea: frequenze diverse stimolano regioni diverse della membrana basilare e dell'organo di Corti.
La regione che vibra in modo più vigoroso stimola un alto numero di cellule cigliate in una determinata area dell'organo di Corti, e quest'area manderà il più alto numero di impulsi al cervello.
Dal sito di provenienza sulla membrana si riesce a riconoscere la frequenza del segnale e quindi la sua altezza.
Per frequenze fino a 3khz: frequenza dello stimolo e posto di provenienza sono indicatori dell'altezza. Nervo uditivo trasporterà informazioni temporali e spaziali. Per alte frequenze solo la localizzazione sulla membrana sembra essere determinante.
L'intensità dei suoni viene determinata a livello della coclea a partire dall'ampiezza della vibrazione  della membrana basilare, cioè quando questa si sposta dalla posizione di riposo, che aumenta con  l'intensità. Più ampia è la vibrazione , più cellule cigliate si flettono  > impulsi nervosi.  

Trasduzione delle vibrazioni acustiche
Le cellule cigliate dell'organo di Corti trasducono le vibrazioni meccaniche in impulsi nervosi elettrochimici. Le cellule cigliate vengono stimolate dalle vibrazioni della membrana basilare.
Quando le ciglia si flettono, i canali degli ioni si aprono, e il voltaggio all'interno varia abbastanza da causare il rilascio di neurotrasmettitori che verranno assorbiti dalle fibre nervose uditive, stimolando l'invio di un segnale elettrico lungo il nervo coclearie. Dopo l'impulso fibre hanno un periodo di stasi. Ogni cellula cigliata ha circa 10 fibre del nervo uditivo connesse ad essa, con soglie di attivazione differenti.
Il cervello rileva le differenze tra il tasso di impulsi spontanei  e il tasso di impulsi dovuti alle vibrazioni.
Le cellule scaricano con tassi più elevati per vibrazioni  più intense, fino a un livello di saturazione:
fibre con tasso spontaneo alto e saturazione rapida: cambi di intensità livelli bassi;
fibre con tasso spontaneo basso e saturazione lenta: cambi di intensità livelli elevati;
Ciascuna fibra ha una sua frequenza caratteristica, che riesce a stimolarla con minima energia.
Temporizzazione degli impulsi:
Per i suoni <3Khz tenderà a seguire la fase  e gli intervalli tra gli impulsi tenderanno a essere multipli del periodo del tono, la membrana funge da discriminatore di frequenza e e rilevatore di fase;
Toni ad alta frequenza diviene debole l'associazione impulso-fase, la membrana non riesce a essere più un rilevatore di fase ma discrimina ancora le frequenze.
Codifica della Frequenza e Intensità di un tono.
La Frequenza in 2 modi: Il posto di eccitazione massima corrisponde a quelle fibre nervose la cui frequenza caratteristica è vicina alla frequenza del tono, che scaricheranno a un tasso superiore rispetto alle altre fibre, quindi la frequenza del tono sarà determinata dal posto sulla membrana da cui partono le fibre che presentano il più alto tasso di attivazione.
L'informazione di temporizzazione  vale per i toni con frequenza < 3Khz  in cui gli impulsi saranno associati al periodo e gli intervalli tra gli impulsi in un fascio di fibre indicheranno direttamente la frequenza del tono.
L'intensità vine codificata in modi diversi a seconda del livelo:
La gamma dinamica coperta dalla maggior parte delle fibre nervose uditive ad ALTO TASSO SPONTANEO  non supera i 100 db codificando i livelli a bassa intensità.
Le fibre con bassi tassi spontanei hanno una gamma più ampia  e codificano i livelli di alta intensità.
In entrambi i casi un gran numero di cellule cigliate controlla una ristretta banda di frequenze o gamma di intensità. Soldati in batteria: mentre alcuni sparano altri si ricaricano.

La Psicologia dell'udito
Il suono è un segnale a livello acustico, sensazione a livello percettivo , interpretato come musica  e parole a livello cognitivo.
L'ampiezza è percepita come volume interpretata come dinamica del suono;
La frequenza percepita come altezza e determina la classificazione del suono in classe di toni;
Lo spettro percepito come timbro e interpretato come identificazione della sorgente;
Le caratteristiche della propagazione del suono percepite come direzionalità  e usate per costruire una mappa spaziale soggettiva delle sorgenti intorno a noi.
Vedremo come la nostra percezione di una grandezza percettiva risulti dalla combinazione di più grandezze fisiche , con contributi differenti.

Volume
L'ampiezza del segnale viene misurata in termini di intensità sonora(SIL) sulla scala logaritmica dei decibel. SIL in db è data da 10xlog I/I0, dove I è l'intensità misurata in watt/m2 e I0 = 10alla-12 watt/m2 che è l'intensità minima alla quale si può udire un suono di 1000hz.
Dalla modalità di identificare I0 si comprende che la nostra percezione dell'ampiezza sia influenzata dalla frequenza del segnale stesso.
La grandezza percettiva del volume deve tener conto della frequenza: l'unità di misura del volume percepito sono i foni.
Un suono ha un volume di x foni, se un suono di 1000 hz che viene percepito con lo stesso volume ha un'intensità di x dB.
Driagramma di Fletcher e Munson(Anni 40, risultato indagine empirica cittadini americani).
Ascissa: frequenze dell'udibile, 20 - 20.000 hz.
Ordinata: intensità sonora, 0 - 140 dB.
Le curve rappresentate , isofone, punti che fanno parte della stessa curva vengono percepite con lo stesso volume.
La nostra sensibilità è massima per suoni compresi tra 2000 e 5000 hz, in questo intervallo le curve raggiungono il loro minimo.
I suono all'estremità dell'udibile hanno bisogno di energia elevata per essere uditi(50 hz: 40dB).
Il diagramma viene utilizzato nelle tecniche di compressione in cui la curva più importante è quella dei 0 foni, suoni al di sotto saranno eliminati senza introdurre distorsione.

Altezza
Il parametro fisico a cui è correlata più da vicino è la frequenza. Frequenze udibili: 20 a 20.00hz.
Sotto i 30 hz suoni difficili da udire: servono intensità elevate e condizioni di isolamento.
In natura abbiamo suoni complessi con molte armoniche.
Il parametro percettivo dell'altezza corrisponde in generale alla nozione di frequenza fondamentale, anche se non sempre è presente nello spettro, ma viene inferita dalle parziali presenti.
Per differenziare tra le altezze in modo percettivo in musica è stato studiato il problema attraverso la nozione di intervallo, cioè la distanza tra due note di differente altezza. Alla base del nostro sistema musicale l'intervallo è quello di ottava, una nota distante un 'ottava da un'altra ha frequenza doppia o dimezzata. Ogni ottava segna un incremento di frequenza di un fattore 2, è una scala logaritmica in base 2.

Timbro
Descrive la qualità di un suono, parametro che permette di distinguere due suoni con stessa altezza e volume.
Il parametro fisico è la forma d'onda, cioè il contenuto armonico del suono, ma anche le caratteristiche dinamiche come l'inviluppo dell'ampiezza sopratutto nella fase di attacco, e i fenomeni di vibrato.
Il contenuto armonico è dato dal numero e dall'intensità relativa delle armoniche superiori presenti.
L'analisi di Fourier eseguita dal nostro apparato uditivo è in grado di determinare il contenuto armonico di un suono, codificato in un timbro.
Importanti fasi di attacco e decadimento. 
forte tromba lontana VS debole tromba vicina: siamo in grado di riconoscere quale dei due sta suonando più forte grazie al timbro derivato dal contenuto armonico delle fasi di attacco e decadimento.
Riconoscimento del timbro poche decine di millisecondi.
Necessari 4db nelle medie e alte armoniche per percepire cambio di timbro,
10 dB nelle basse armoniche.

Risoluzione in frequenza e mascheramento
Il nostro apparato uditivo si comporta come un analizzatore di Fourier, percepisce le componenti individuali di un suono distribuendole lungo la membrana basilare della coclea.
E un dispositivo meccanico di traduzione tra la frequenza del segnale e la posizione del picco di vibrazione sulla membrana(funzionamento tonotopico).
Il picco di vibrazione interessa una regione che ha una dimensione e se più frequenze ravvicinate ricadono in una stessa regione possono causare imprecisioni nella percezione delle singole componenti.
Fenomeno psicoacustico che ci consente di rilevare l'ampiezza di banda dei filtri uditivi  lungo la membrana è detto mascheramento. Fenomeno per cui un segnale forte maschera uno debole.
Sono stati condotti studi con esperimenti di mascheramento: l'ampiezza di banda con cui lavorano i filtri uditivi ha assunto il nome di banda critica (Fletcher).
La banda critica rappresenta la gamma di frequenze all'interno della quale si verificano i fenomeni di mascheramento.
Suoni discriminati perfettamente solo quando ricadono in differenti bande critiche.
Suono complesso, le componenti parziali udite tutte senza problemi se sono in bande critiche differenti.
Nel caso due parziali sono nella stessa banda una potrebbe mascherare l'altra.
La presenza di rumore con un'ampiezza di banda che copre una banda critica contribuisce al mascheramento dei toni presenti in quella banda.
Le bande critiche permettono di misurare la frequenza in modo uniforme dal punto di vista percettivo. L'unità è la larghezza delle bande critiche  Lunghezza costante fino a 500 hz  e oltre  le bande critiche diventano più larghe.
Comportamento dovuto all'inviluppo della vibrazione sulla membrana che assume forme complicate. Inoltre l'estensione della zona della membrana influenzata da una vibrazione cambia con l'intensità.
Soglia di mascheramento di un tono è il livello di intensità al quale esso si riesce ad ascoltare anche in presenza di un altro tono.
Mascheramento tonale: è possibile individuare un tono. Non tonale: no tono specifico(rumore).

La Segregazione del suono
Localizzazione delle sorgenti.
Le onde sonore si combinano per arrivare al nostro orecchio in un'unica forma d'onda complessa che viene analizzata nelle sue parziali che dovranno essere ricombinate in modo opportuno dal nostro apparato.
Occorre re-identificare le sorgenti, cioè assegnare le parziali alle sorgenti sonore di provenienza.
Le parziali sono segregate dalla sorgente che le ha emesse.
Si conoscono alcuni fattori che influenzano la segregazione:
- coerenza/incoerenza  degli attacchi: stessa sorgente parziali coerenti, sorgenti diverse parziali incoerenti.
- condivisione/non condivisione della locazione spaziale: parziali della stessa sorgente condivideranno la direzionalità del movimento.
- differenze nella struttura armonica: parziali in relazione armonica più facilmente appartengono alla stessa sorgente.

Autore: Fabrizio Garis
Licenza Creative Commons
La percezione uditiva by http://lucciolaonline.blogspot.com/2012/02/3la-percezione-uditiva.html is licensed under a Creative Commons Attribuzione - Non commerciale 3.0 Italia License.