Come accennato, un messaggio MIDI è composto da una serie di bit ordinati secondo uno schema comune per tutti i messaggi. La figura seguente mostra un tipico messaggio MIDI:
Come si vede il messaggio è composto da tre byte racchiusi tra due bit, uno iniziale di start e uno finale di stop. Il primo dei 3 byte è definito come status byte e ha la funzione indicare il tipo di messaggio. Uno status byte è sempre contrassegnato dal primo bit posto a 1. I bit 2,3, 4 indicano il tipo di messaggio, essendo 3 bit sono disponibili 8 (23) tipi diversi di messaggio. Gli ultimi 4 bit del primo byte identificano il canale midi, dunque abbiamo 16 canali disponibili. Notare che il nybble (un nybble è una sequenza di 4 bit) 0000 identifica il canale 1 e il nibble 1111 (che vale 15 in decimale) identifica il canale 16. Nel nostro messaggio di esempio stiamo trasmettendo dati sul canale 5. Dopo lo status byte abbiamo due data byte ossia due byte che trasportano informazioni numeriche relative al messaggio definito nello status byte. Un data byte ha sempre il primo bit posto a 0. Gli ultimi 7 bit del primo data byte descrivono la nota suonata, con 7 bit possiamo discriminare 128 (27) note (il che generalmente è sufficiente se si pensa che un pianoforte, che è uno degli strumenti con l'estensione maggiore, ha 88 note). Nel nostro esempio stiamo suonando la nota 64 (1000000). Il secondo data byte indica la velocità della nota ossia l'intensità con cui è stata suonata. Tutte le recenti tastiere dotate di interfaccia MIDI possiedono un controllo chiamato soft touch che trasforma in un valore l'intensità con cui si è premuto un determinato tasto. In questo modo è possibile riprodurre il tocco della mano sui tasti ed eseguire distintamente pezzi suonati per esempio in 'pianissimo' o 'forte'. Il valore viene associato alla velocità perché molti sistemi soft touch si basano sulla velocità con cui è premuto un tasto avendo come presupposto che maggiore è la velocità, maggiore è l'intensità. Nel nostro caso il valore della velocità è pari a 90 (1011010). Ovviamente il significato dei dati contenuti nei data byte varia a seconda del tipo di status byte che stiamo considerando. Vediamo ora i differenti tipi di messaggio MIDI.
I channel voice messages sono i seguenti:
Note off: interrompe l'esecuzione di una nota. Ha il seguente formato. I tre bit che identificano il tipo di messaggio sono: 000
[1 0 0 0 c c c c ] [0 n n n n n n n] [0 v v v v v v v]
dove: c = canale midi (4 bit), n = nota suonata (7 bit), v = velocità (7 bit)
Note on: attiva l'esecuzione di una nota. Ha il seguente formato. I tre bit che identificano il tipo di messaggio sono: 001
[1 0 0 1 c c c c ] [0 n n n n n n n] [0 v v v v v v v]
dove: c = canale midi (4 bit), n = nota suonata (7 bit), v = velocità (7 bit)
Polyphonic aftertouch (key pressure ): dopo che un tasto è stato premuto, può essere ancora mosso per creare un effetto vibrato. Questo messaggio trasporta informazioni circa questo movimento. È raramente implementato perché richiede un sensore per ogni tasto e dunque risulta abbastanza costoso. I tre bit che identificano il tipo di messaggio sono: 010
[1 0 1 0 c c c c ] [0 n n n n n n n] [0 p p p p p p p]
dove: c = canale midi (4 bit), n = nota suonata (7 bit), p = pressione (7 bit)
Channel pressure (aftertouch ): come il precedente solo che viene implementato un solo sensore per tutta la tastiera-sintetizzatore. Un movimento su un tasto applicherà una vibrazione a tutte le note suonate in quel momento sul canale in questione. Il controllo può essere applicato anche ad altre grandezze come un tremolo o la frequenza di taglio di un filtro. I tre bit che identificano il tipo di messaggio sono: 101
[1 1 0 1 c c c c ] [0 p p p p p p p ] [0 - - - - - - - ]
Program change : con questo comando è possibile cambiare il suono assegnato ad un canale con un altro suono. I tre bit che identificano il tipo di messaggio sono: 100
[1 1 0 0 c c c c ] [0 p p p p p p p] [0 - - - - - - -]
dove: c = canale midi (4 bit), p = programma - suono (7 bit)
Control change : utilizzato per controllare parametri relativi al canale in questione come: volume, modulazione (applicata dal joystick presente su molte tastiere), pan. Per esempio per realizzare un volume crescente su un certo strumento suonato su un certo canale, possiamo mandare una serie di questi messaggi con valori di volume sempre crescenti. I tre bit che identificano il tipo di messaggio sono: 011
[1 0 1 1 c c c c ] [0 n n n n n n n] [0 v v v v v v v]
dove: c = canale midi (4 bit), n = codice del controllo (volume, pan ecc) (7 bit), v = valore (7 bit)
Pitch bending : permette di eseguire il bending (se non sapete cos'è, chiedete al vostro chitarrista di fiducia) di una nota. In questo caso 128 diverse sfumature di bending sono poche soprattutto in un bending lento e potrebbero generare un effetto 'scaletta'. Per questo vengono impiegati anche i 7 bit del secondo data byte portando la risoluzione del bending a 14 bit ossia a 16384 gradazioni diverse. I tre bit che identificano il tipo di messaggio sono: 110
[1 1 1 0 c c c c ] [0 B B B B B B B] [0 b b b b b b b]
dove: c = canale midi (4 bit), B = primi 7 bit del valore di bending, b = ultimi 7 bit
Relativamente ai Channel Voice Messages di tipo 6 (control change) possiamo avere 127 diversi codici (sono i 7 bit del primo data byte) che prendono il nome di channel mode messages . I primi 120 sono relativi a parametri tipici come volume, pan ecc. Gli ultimi 7 sono messaggi che agiscono sulla modalità di funzionamento di un canale e sono:
121 - Reset all controllers : tutti i parametri del dispositivi vengono posti pari al loro valore iniziale (quello definito all'accensione del dispositivo).
122 - Local control on/off: per spiegare il funzionamento di questo tipo di messaggio riferiamoci alla figura seguente:
In una tastiera dotata di una propria uscita audio, la pressione di un tasto agisce su un circuito che accede ad un suono residente nella memoria e lo trasferisce all'uscita audio dove diventa un suono. Il segnale generato dal tasto verso i circuiti della tastiera-sintetizzatore prende il nome di local control . Se la tastiera-sintetizzatore viene anche collegata via MIDI, alla pressione di un tasto, una copia del segnale, che indica quale tasto è stato premuto viene spedita tramite la porta MIDI Out. Questo segnale però rientra nella tastiera-sintetizzatore dall'ingresso MIDI In andando ad agire di nuovo sul banco dei suoni. In questo modo si genera un fastidioso effetto eco perché l'esecuzione di una nota viene generata da due eventi diversi: direttamente dalla pressione dal tasto della tastiera-sintetizzatore e dallo stesso segnale che però fa il giro passando dall'interfaccia MIDI del sequencer. Come si vede dalla figura, In una connessione MIDI il segnale local control viene disattivato eliminando il problema.
123 - All notes off : su alcuni sequencer viene chiamato anche 'panic' o 'reset devices'. Può accadere che alcuni messaggi MIDI non vengano ricevuti correttamente e dunque per esempio che non venga ricevuto un messaggio di 'note off' lasciando una nota suonare indefinitamente. Questo messaggio manda un segnale di tipo 'note off' a tutte le note.
124-125-126-127: Gli ultimi 4 messaggi definiscono il cosiddetto MIDI mode ossia il modo in cui la tastiera-sintetizzatore interpreta i comandi MIDI.
124-125 Omni mode off-on: questi due messaggi attivano o disattivano la modalità Omni mode . Questa, se attivata, fa in modo che nei messaggi MIDI venga ignorata l'informazione relativa al canale e dunque ogni messaggio viene applicato a tutti i canali. Viceversa, quando la modalità è disattivata, ogni messaggio viene applicato al canale indicato nello status byte.
126-127 Mono On - Poly On: la modalità Mono on impone sul canale la possibilità di eseguire una sola nota per volta. La modalità Poly on consente di eseguire più note contemporaneamente sul singolo canale.
Vale la pena di puntualizzare la differenza tra i termini polifonico e multitimbrico che indicano caratteristiche diverse di una tastiera-sintetizzatore. Con il termine polifonico si intende che la tastiera-sintetizzatore è in grado di suonare più note contemporaneamente sullo stesso canale MIDI. Multitimbrico significa che una tastiera-sintetizzatore è in grado di suonare più di uno strumento contemporaneamente (ovviamente su canali MIDI diversi) mentre monotimbrico significa che può essere suonato un solo strumento alla volta.
i system messages (messaggi di sistema) questi messaggi sono spediti contemporaneamente su tutti i canali MIDI. Il messaggio ha la forma seguente:
[1 1 1 1 t t t t ] [0 d d d d d d d] [0 d d d d d d d]
dove: t = tipo di messaggio di sistema (4 bit), d = dati
Vi sono tre tipi di messaggio di sistema:
Questi comprendono:
MTC : Midi Time Code (temporizzazione), per una dettagliata descrizione di questo argomento riferirsi alla sezione relativa alla sincronizzazione [Vedi: MIDI Time Code].
Song Position Pointer : identificativo temporale di un punto della canzone.
Song select : selezione di una canzone nella memoria del dispositivo.
End of exclusive : fine della trasmissione di dati di sistema, viene descritto più avanti.
I system real time messages sono messaggi brevi (1 byte) che vengono spediti mischiati ai normali messaggi. Servono per mantenere la sincronizzazione tra i sistemi collegati via MIDI. Questi messaggi vengono spediti continuamente ad un ritmo di 24 ogni quarto di nota quindi il numero di messaggi spediti nell'unità di tempo aumenta col bpm del brano. Se la mole di dati MIDI da spedire è ingente, può convenire spedire i messaggi di temporizzazione su un'uscita MIDI separata.
I messaggi di tipo System Exclusive (chiamati anche SysEx ) trasportano dati specifici del dispositivo in uso. Ogni dispositivo MIDI professionale è dotato di questa funzionalità che permette di scaricare via MIDI tutta la memoria (come si dice: eseguire un dump [88]). In questo modo tutti i settaggi che sono stati fatti sul dispositivo per un certo lavoro vengono spediti per esempio su un computer dove vengono memorizzati. Nella necessità di impostare il dispositivo su configurazioni completamente diverse è molto utile e immediato utilizzare i settaggi salvati su computer sotto forma di file ritrasferendoli nel dispositivo sempre via MIDI.

La versione online del Corso Audio Multimediale è distribuita con Licenza
Creative Commons Attribuzione - Non commerciale - Condividi allo stesso modo 3.0 Italia