La struttura di un file Midi
Il file Midi è strutturato in blocchi (chunk) coerenti di dati, ciascuno dei quali rappresenta una "Traccia" Midi (Midi Track).
In particolare il file Midi è composto da almeno due blocchi di dati.
Il blocco d'Intestazione
Il primo blocco di dati, costituente il file Midi, è sempre la cosidetta "Traccia Midi d'Intestazione", anche rappresentata nel file con l'acronimo MThd.
Questo blocco è sempre costituito complessivamente da 14 byte, così distinti:
a) i primi 4 byte individuano univocamente il blocco d'intestazione con i valori ASCII delle lettere "MThd";
b) seguono altri 4 byte che specificano in ordine Big-Endian la quantità di byte restanti del blocco d'Intestazione, ossia sempre 6 byte;
c) seguono altri 2 byte che specificano in ordine Big-Endian il tipo di file Midi (0, 1 oppure 2);
d) seguono altri 2 byte che specificano in ordine Big-Endian la quantità di tracce oltre quella d'Intestazione presenti nel file Midi;
e) seguono altri 2 byte che specificano in ordine Big-Endian la risoluzione del Tempo Delta (PPQN).
Mostriamo un esempio di blocco d'Intestazione:
4D 54 68 64 00 00 00 06 00 01 00 04 01 80 a b c d e
Tali dati esemplificativi di blocco MThd ci dicono che:
a) intende essere un blocco d'intestazione, infatti i primi 4 byte corrispondono alla rappresentazione ASCII dei caratteri M T h d ;
b) dopo gli iniziali 8 byte del blocco restano soltanto altri 6 byte;
c) il file è di tipo 1;
d) oltre il blocco MThd sono presenti a seguire altre 4 tracce di dati Midi;
e) la risoluzione del Tempo Delta è 384 pulsazioni per nota da un quarto.
Il tipo di file Midi
Nel tempo il file Midi è stato modificato nella sua strutturazione interna. In particolare esso ha subito tre grandi modifiche, che si sono comunque conservate come "Tipi" del file Midi, identificandosi con i numeri 0, 1 e 2.
Il tipo "0" di file Midi prevede il blocco d'Intestazione e una sola traccia contenente i dati degli eventi Midi secondo la loro sequenza temporale esecutiva, mescolandosi così i vari canali degli eventi Midi previsti.
Il tipo "1", il più comune, prevede il blocco d'Intestazione e almeno una traccia di dati degli eventi Midi. Poiché questo tipo può supportare molte tracce, si è soliti (seppur non obbligatorio) porre in ciascuna traccia di dati gli eventi Midi appartenenti al medesimo canale Midi.
Il tipo "2" è la più recente ed è usato rarissimamente.
Pagina in costruzione !