Appunti‎ > ‎Protocollo MIDI‎ > ‎

Channel Messages

I Channel Voice Messages contengono l’informazione del canale cui appartengono, in modo da poter essere trasmessi separatamente su 16 canali MIDI, e sono di 7 classi:

  • Note On, messaggio che trasmette il numero di nota MIDI premuto (1-128), il canale 
  • MIDI (1-16) e l’informazione della velocità MIDI (1-128) con cui è stato premuto 
  • Note Off, messaggio che “spegne” una nota e che trasmette il numero di nota MIDI da chiudere (1-128), il canale MIDI (1-16) e l’informazione della velocità MIDI (1-128) con cui il tasto è stato rilasciato 
  • Control Changes, messaggio che trasmette il canale MIDI (1-16), il numero del controllo MIDI adoperato (1-128) e il valore assunto dal controllo (1-128) 
  • Program Changes, messaggio che trasmette il canale MIDI (1-16) ed il numero del programma MIDI scelto (1-128), le 128 locazioni sono poi state estese in combinazione con i bank select, ctrl 0 e 32, rendendo possibile la selezione di 16384 banchi di 128 suoni, che per il momento sono ancora sufficienti 
  • Channel After-Touch, messaggio che trasmette il canale MIDI (1-16) ed il valore della pressione esercitata sulla tastiera (1-128), globale per tutto il canale (da qui Channel AT) 
  • Poly After-Touch, messaggio che trasmette il canale MIDI (1-16), il numero di nota MIDI interessato dalla pressione (1-128) ed il valore della pressione esercitata su quel tasto (1-128), detto polifonico appunto perchè dà un valore discreto separato per ogni nota 
  • Pitch-Bend, messaggio che trasmette il canale MIDI (1-16) ed il valore assunto dalla rotella del pitch, rappresentato da due bytes consecutivi (che trasportano 7 bit di informazione ciascuno, troppo pochi da soli per rappresentare con sufficiente continuità l’escursione completa del controllo), per raggiungere una precisione a 14 bit si usano solo per questo messaggio due bytes, quindi Byte 1 (1-128) e Byte 2 (1-128)

Da questo schema si evince il formato dei messaggi MIDI: i primi 4 bit dello Status Byte identificano il tipo di Channel Voice Message (note on, control change, etc) mentre gli ultimi 4 bit rappresentano il numero di canale MIDI cui appartiene il messaggio, va dal valore 0000=canale MIDI 1 (=0) al valore 1111=canale MIDI 16 (=15), mentre gli altri due byte rappresentano il numero dell’entità interessata dal messaggio ed il valore che assume tramite lo stesso, in tutti i casi possiamo notare come queste informazioni siano rappresentate con 7 bit, sufficienti a rappresentare 128 livelli discreti; solo nel caso del Pitch-Bend vengono utilizzati due bytes per raggiungere una risoluzione di 14 bit, in grado di rappresentare 16384 livelli.
Al fine di limitare il traffico di dati ridondante all’interno dello flusso MIDI sono state usate due tecniche. La prima riguarda l’adozione del cosiddetto Running Status, che consiste nel rendere lo Status Byte “sottinteso” fino ad un seguente cambio di status: se prendiamo ad esempio una composizione per pianoforte in cui ci sono soltanto note con pedale sustain, con il Running Status, dopo il primo messaggio di nota tutte gli eventi nota seguenti non avranno lo Status Byte fino al primo evento Sustain (CC 64), dopo di che di nuovo basterà lo Status Byte del primo evento nota fino al prossimo evento Sustain, e così via. La seconda tecnica è quella di sostituire il corrispondente evento nota-off con un evento nota-on a velocity 0, e possiamo intuire che l’uso congiunto di queste due tecniche consente l’abbattimento di 1/3 dei dati con gli eventi che ricorrono con grande frequenza (gli eventi nota per l’appunto).
I messaggi di Control Change meritano un’approfondimento particolare in quanto sono la classe di messaggi che più contribuisce ad accrescere la potenza espressiva del MIDI.
I controlli che vanno dal numero 1 al 63 sono configurati come controlli continui e possono assumere una gamma di valori che va da 1 a 128, mentre i controlli che vanno dal numero 64 al 121 sono configurati come controlli switch, come un interruttore, per cui possono assumere solo due valori: on e off. Così i valori che vanno da 0 a 63 equivalgono al valore logico off, mentre i valori 64-127 corrispondono al valore on. Inoltre alcuni numeri di Control Change sono “legati” a determinate funzioni prese come valore di default, in modo che alla modulation sia sempre associato il CC 1, al volume il CC 7, al panpot il CC 10, all’expression il CC 11, al portamento il CC 5, al sustain il CC 64, solo per citarne alcuni).

I Control Change che vanno dal numero 122 al 127 rappresentano i Channel Mode Message, secondo la seguente tabella.


I Control Change RPN/NRPN sono messaggi che, combinati con un altro messaggio Control Change, estendono enormemente il numero di controlli ottenibili via MIDI, ben oltre il tetto dei 128, con la stessa tecnica usata per il Pitch-Bend. Questi sono CC 6 (Data Entry), CC 96 (Data Increment), CC 97 (Data Decrement), CC 98 (Registered Parameter Number LSB), CC 99 (Registered Parameter Number MSB), CC 100 (Non- Registered Parameter Number LSB), e CC 101 (Non-Registered Parameter Number MSB).

I Channel Mode Message controllano, come abbiamo già accennato, il modo di funzionamento delle voci di uno strumento, vanno di solito inviati sul basic channel dello strumento ricevente: OMNI(on= CC 125 off= CC 124), MONO ON(CC 126),POLY OFF(CC 127), ALL NOTES OFF(CC 123), LOCAL CONTROL (CC 122). Rimane di dubbia utilità pratica la possibilità di settare a distanza di questi parametri, considerato che l’esperienza insegna che spesso messaggi errati o generati per errore dal sequencer possono portare a risultati imprevedibili di ardua soluzione, considerazione che vale soprattutto per il comando Local Off!

I quattro modi di funzionamento dei generatori sonori comandati dai CC 124-127:

  • Omni On, Poly On (Mode 1): Il sintetizzatore risponde polifonicamente a messaggi su qualunque canale MIDI in entrata.
  • Omni On, Mono (Mode 2): Il sintetizzatore suona la nota più recente su qualunque canale MIDI in entrata. 
  • Omni Off, Poly (Mode 3): Il sintetizzatore suona polifonicamente sui 16 canali MIDI.
  • Omni Off, Mono (Mode 4): Il sintetizzatore suona la nota più recente per ogni canale.