INDIETRO
  Digitale
AVANTI

formato che useremo

Nel corso del Laboratorio useremo un formato di file sonori molto semplice, e cioè: Non useremo nessun header.

Per questo motivo se si vuole fare leggere i files ad un programma esterno - se questo lo permette -, occorre fornire la descrizione del file, assegnando la frequenza di campionamento (srate 44100Hz), il numero canali (2), e il tipo di rappresentazione dei numeri (big endian signed short 16bit).

Questo è (a parte la mancanza dei caratteri di padding alla fine del file) il formato naturale con cui sono rappresentati i suoni digitalmente per la scrittura e la lettura nei Compact Disc Digital Audio, e per questo motivo è supportato da quasi tutti i dispositivi audio digitali in commercio.

(Non si pensi che questi dati digitali siano semplicemente scritti sulla superfice dei CD AUDIO ! Nella realizzazione dei CD AUDIO viene usata anche una codifica ridondante e vengono aggiunte molte altre informazioni che servono al sincronismo e al movimento delle testine di lettura.)

In pratica 1 secondo di suono corrisponderà a 44100 records formati ciascuno da 4 Bytes:
 
Destro MSByteDestro LSByteSinistro MSByteSinistro LSByte

Il temini "litte-endian" e "big-endian" si riferiscono all'ordine in cui si scrivono dei numeri espressi da più bytes. MSB = Most Significative Byte. LSB = Least Significative Byte.

"litte-endian" o meglio "litte-endian-first" vuol dire che si scrivono prima i bytes meno significativi. Per esempio quando scriviamo le date mettiamo dd/mm/yy e usiamo in un certo senso una convenzione "litte-endian" ! I processori Intel della famiglia 386 trattano i numeri come "litte-endian".

"big-endian" o meglio "big-endian-first" vuol dire che si scrivono prima i bytes più significativi. Per esempio i giapponesi scrivono le date yy/mm/dd cioè in un certo senso usano una convenzione "big-endian". I processori Motorola della famiglia 6800 e molti RISC trattano i numeri come "big-endian".

Inutile dire che si finisce sempre per trovare anche i "middle-endian" con scrittura d'ordine dei bytes del tipo 3-4-1-2 o 2-1-4-3, come dal resto fanno gli americani con le date nel formato mm/dd/yy !

La rappresentazione degli interi con segno viene fatta con il sistema del complemento a due.
Precisamente:
rappresentazione
interna (esadecimale)
numero intero
con segno
numero intero
senza segno
0x[00][00]00
0x[00][01]11
0x[00][02]22
............
0x[7F][FF]3276732767
0x[80][00]-3276832768
............
0x[FF][FE]-265534
0x[FF][FF]-165535

I numeri interi positivi da 1 a 32767 sono rappresentati nello stesso modo; per rappresentare un numero negativo -x tra -1 e -32768, si calcola 65536 + (-x).
Questo tipo di rappresentazione ha il pregio di permettere di usare essenzialmente la stessa unità di addizione per i due tipi di numeri all'interno del processore.
Per esempio 4 + (-2) si fa addizionando 0x0004 con 0xFFFE e ottenendo 0x10002; il primo bit eccede i 16 bit e viene scartato, e il risultato è 0x0002 cioè 2.  
INDIETRO
Laboratorio Sperimentale di Matematica Computazionale - parte II
Sergio Steffè - AA 2015/2016 - PISA
AVANTI