
Lo scambio d'informazioni fra diverse apparecchiature (tastiere,
expander, computers, mixer midi ecc), avviene in forma digitale,
e cioè in bit, (8 bit equivalgono ad un byte).
Ora, per rendere decifrabile questo flusso di bit, si delineano,
a seconda delle necessità, delle funzioni e dell'hardware,
delle regole per la trasmissione e la ricezione, appunto il protocollo.
Con il protocollo midi di determinano quali e quanti byte servono per effettuare istruzioni riconoscibili dalle apparecchiature collegate, quale deve essere la velocità con la quale viaggiano i bit, che circuito deve avere l'interfaccia, insomma tutto quello che serve per effettuare una comunicazione corretta.
Per la comunicazione dei messaggi vengono impiegati i byte, bisogna comunque distinguere gli status byte (byte di stato) dai data byte (byte di dati). Gli status byte sono quelli inviati per primi e servono a decifrare i data byte successivi, senza possibilità di errori.
Dato che, sia i byte di stato che i byte di dati sono numeri compresi tra 0 e 255, nel protocollo viene specificato che i byte di stato devono essere numeri compresi tra 128 e 255, mentre i byte di data tra 0 e 127.
Descrizione del protocollo midi riferita ai byte di stato, DEC=decimale, HEX=esadecimale
| DEC | HEX | NOTE OFF - Evento nota spenta |
|---|---|---|
| 128 | 80 | canale midi 1 |
| 129 | 81 | canale midi 2 |
| 130 | 82 | canale midi 3 |
| 131 | 83 | canale midi 4 |
| 132 | 84 | canale midi 5 |
| 133 | 85 | canale midi 6 |
| 134 | 86 | canale midi 7 |
| 135 | 87 | canale midi 8 |
| 136 | 88 | canale midi 9 |
| 137 | 89 | canale midi 10 |
| 138 | 8A | canale midi 11 |
| 139 | 8B | canale midi 12 |
| 140 | 8C | canale midi 13 |
| 141 | 8D | canale midi 14 |
| 142 | 8E | canale midi 15 |
| 143 | 8F | canale midi 16 |
| DEC | HEX | NOTE ON - Evento nota accesa |
|---|---|---|
| 144 | 90 | canale midi 1 |
| 145 | 91 | canale midi 2 |
| 146 | 92 | canale midi 3 |
| ecc.. | ecc.. | ecc. |
| 159 | 9F | canale midi 16 |
| DEC | HEX | AFTER TOUCH - Variazione della pressione di un tasto |
|---|---|---|
| 160 | A0 | canale midi 1 |
| 161 | A1 | canale midi 2 |
| 162 | A2 | canale midi 3 |
| ecc.. | ecc.. | ecc. |
| 175 | AF | canale midi 16 |
| DEC | HEX | CONTROL CHANGE - Variazione della posizione di un controllo es. Modulazione, Volume, Panpot, ecc. |
|---|---|---|
| 176 | B0 | canale midi 1 |
| 177 | B1 | canale midi 2 |
| 178 | B2 | canale midi 3 |
| ecc.. | ecc.. | ecc. |
| 191 | BF | canale midi 16 |
| DEC | HEX | PROGRAM CHANGE - Cambio di programma es. voce, path, performans, ecc. |
|---|---|---|
| 192 | C0 | canale midi 1 |
| 193 | C1 | canale midi 2 |
| 194 | C2 | canale midi 3 |
| ecc.. | ecc.. | ecc. |
| 207 | CF | canale midi 16 |
| DEC | HEX | AFTER TOUCH (sul canale midi) - Variazione della pressione di un tasto riferita al canale midi |
|---|---|---|
| 208 | D0 | canale midi 1 |
| 209 | D1 | canale midi 2 |
| 210 | D2 | canale midi 3 |
| ecc.. | ecc.. | ecc. |
| 223 | DF | canale midi 16 |
| DEC | HEX | PITCH BENDER - Variazione della posizione del pitch bender |
|---|---|---|
| 224 | E0 | canale midi 1 |
| 225 | E1 | canale midi 2 |
| 225 | E2 | canale midi 3 |
| ecc.. | ecc.. | ecc. |
| 239 | EF | canale midi 16 |
Quelli fino ad ora descritti sono detti anche messaggi di canale, e possono essere indirizzati attraverso i canali midi, esclusivamente a specifiche apparecchiature.
I seguenti messaggi invece fanno parte dei messaggi di sistema, e sono ricevuti da tutte le apparecchiature collegate.
| DEC | HEX | Descrizione |
|---|---|---|
| 240 | F0 | SYSTEM EXCLUSIVE - Sistema esclusivo |
| 241 | F1 | MIDI TIME CODE (MTC) |
| 242 | F2 | SONG POSITION - Posizione della song |
| 243 | F3 | SONG SELECT - Numero della song |
| 246 | F6 | TUNE REQUEST - Richiesta di accordatura |
| 247 | F7 | END OF EXCLUSIVE - Fine dei messggi di sistema esclusivo |
| 248 | F8 | MIDI CLOCK - Sincronismo midi |
| 250 | FA | START - Posiziona a capo della song |
| 251 | FB | CONTINUE - Riprende dal punto interrotto |
| 252 | FC | STOP - Ferma la song |
| 255 | FF | RESET - Inizializza le apparecchiature |
La sintassi
Il primo esempio di messaggio midi, suoniamo una nota
| Byte di stato | --- | Byte di dati 1 | --- | Byte di dati 2 |
| NOTE ON Nota accesa 144 (90H) |
--> | KEY NUMBER Numero di nota 60 (3CH) |
--> | KEY VELOCTY Pressione del tasto 64 (40H) |
Decriviamo questo primo esempio formato da 3 byte, con il primo
(byte di stato) si determina che èstato premuto un tasto,
mentre con gli altri due (byte di dati) il numero di nota e la
velocità.
Analizzando i numeri dei byte, vediamo che il 144 (90H) H=esadecimale,
corrisponde per il protocollo midi all'evento nota accesa e si
riferisce specificatamente al canale midi n. 1, il secondo, numero
60 (3CH) al Do centrale (Do3), ed il terzo 64 (40H) alla pressione
che corrisponde al volume con il quale suonerà la nota.
Dopo questo messaggio la tastiera l'expander o altro che sia, suonerà la nota Do centrale fino a che non si inviarà il seguente messaggio, smettiamo di suonare una nota
| Byte di stato | --- | Byte di dati 1 | --- | Byte di dati 2 |
| NOTE OFF Nota spenta 128 (80H) |
--> | KEY NUMBER Numero di nota 60 (3CH) |
--> | ATTACK VELOCTY Rilascio del tasto 64 (40H) |
Ammettiamo che dopo aver premuto un tasto (note on), invece di rilasciarlo (note off) esercitassimo una pressione maggiore, seguirebbe il messaggio
| Byte di stato | --- | Byte di dati 1 |
| AFTER TOUCH Pressione del tasto 208 (D0H) |
--> | AFTER TOUCH NUMBER Numero di variazione 64 (40H) |
Nell'esempio è stato indicato un solo byte di dati, ma ce ne potrebbero essere molti altri per definire le variazioni della pressione esercitata.
| 1) Il protocollo e la sintassi | 6) Le apparecchiature |
| 2) La sintassi parte seconda | 7) I collegamenti |
| 3) I messaggi di sistema | 8) Midifile: struttura e formato |
| 4) I canali midi | 9) Midifile: Standard GM e GS |
| 5) I messaggi di modo |
|
|
|
|
|
|
|
|