Il termine MIDI è l’acronimo di Musical Instrument Digital Interface. Esso nacque nei primi anni ’80, dall’intenzione di stabilire un protocollo capace di risolvere le incompatibilità tra differenti dispositivi e di permettere loro di lavorare in modo sincronizzato.

Le porte IN, OUT e THRU

MidiIN, OUT, THRUIl termine MIDI indica sia un linguaggio digitale per la comunicazione di dati di interesse musicale sia un’interfaccia hardware, ossia le porte utili per ricevere e inviare le informazioni MIDI. Queste porte sono: IN, OUT e THRU.

  • IN è la porta attraverso cui entrano i dati MIDI.
  • La porta OUT permette l’uscita dei dati MIDI.
  • THRU trasmette ad un altro dispositivo tutti i dati in ingresso nella porta MIDI IN. Attraverso l’entrata THRU si possono collegare a cascata più dispositivi tra loro.

Quest’hardware ha però un limite, l’eventualità del Traffic Jam: visto che la portata del cavo MIDI è molto ristretta rispetto alla quantità di dati che potenzialmente ci si potrebbe trovare a dover trasmettere, vi è la possibilità di disperdere informazioni utili.

I messaggi di canale

Molti dei messaggi previsti dal protocollo MIDI sono di canale (sono assegnati a uno dei 16 canali disponibili). Il dispositivo hardware o software che emette il segnale MIDI e quello che lo riceve devono essere settati sullo stesso canale per comunicare correttamente. In caso il ricevente fosse settato su un canale diverso dall’emittente ignorerebbe semplicemente tutti i messaggi di canale in ingresso.

Si possono controllare contemporaneamente tramite un singolo cavo MIDI fino a 16 moduli sonori diversi, uno per ogni canale (uno per il suono di batteria, uno per il suono di basso, uno per il suono di violino ecc.). Si noti che questo vale per suoni diversi; per lo stesso suono possiamo eseguire più note contemporaneamente. Dunque un pezzo di pianoforte complicatissimo suonato a due mani è riproducibile utilizzando un solo canale MIDI.

MIDI, bit e byte

Il MIDI è un linguaggio digitale, basato quindi sul sistema binario (in cui si hanno solo due cifre, 0 e 1). I dati trasmessi sono organizzati in gruppi di 2 o 3 byte (1 byte corrisponde a 8 bit).

Il primo byte è chiamato Status byte, e identifica il tipo di messaggio, ad esempio l’inizio o la fine di una nota. Nel caso dei messaggi di note-on e note-off lo Status byte si divide in due parti, la prima comunica il tipo di nota, la seconda parte ci indica il canale MIDI. I successivi dati sono i Data byte, i quali ci indicano (sempre nel caso dei messaggi di note-on e note-off) il numero di nota e il suo valore di velocity (che corrisponde idealmente all’energia con cui è stata pronunciata la nota – velocity di note-on, o alla rapidità con cui si solleva il dito dal tasto del controller – velocity di note-off, sostanzialmente mai implementata in realtà).

Per distinguere uno Status byte da un Data byte basta guardare il primo bit: se ha valore 1 si tratterà di uno Status Byte; se il valore è 0 sarà un Data Byte.

Ogni byte può portare un massimo di 128 valori.

Per ricavare una cifra decimale da una stringa binaria si deve tener conto dei valori delle potenze di 2:

  • 1 bit -> 2 (21) valori
  • 2 bit -> 4 (22) valori
  • 3 bit -> 8 (23) valori
  • 4 bit -> 16 (24) valori
  • […]
  • 8 bit/1 byte -> 128 (28) valori

Nello Status Byte i bit 2,3,4 ci indicano il tipo di messaggio e dunque, essendo tre bit, avremo 8 diversi tipi di messaggio (il primo bit viene “perso” in quanto serve solo a distinguere Status da Data Byte). Gli ultimo quattro bit del primo byte identificano il canale MIDI, pertanto abbiamo 16 canali disponibili. Nei Data Byte, con sette bit (8 meno 1, vedi sopra), possiamo trasmettere un massimo di 128 valori. Per questo nel MIDI i valori sono sempre da 0 a 127 (128 in totale).

Ogni Data byte ha un massimo di 128 valori, e i data byte sono due. Normalmente o funziona uno solo dei due o si dividono le informazioni da fornire, oppure, in casi particolari, il secondo Data byte scompone ogni valore del primo Data byte in 128 parti, aumentando gli step, generando una transizione molto graduale e fluida tra valori minimi e massimi (si hanno in totale 128x128 valori possibili).

Una soluzione per ridurre il problema di Traffic jam è quella di evitare di rimandare lo status byte se questo non cambia per una serie di messaggi. Sarà necessario inviare lo Status Byte solo quando il tipo di messaggio cambia.

Un altro tipo di messaggio MIDI di canale è l’Aftertouch (la pressione applicata ai tasti dopo l’inizio della/e nota/e). Esso può essere monofonico o polifonico. Nel monofonico c’è solo una barra che rileva la pressione, il polifonico (key pressure) rileva le variazioni di pressione applicate ad ogni singolo tasto.

C’è poi il Il Pitch Bend, anch’esso un messaggio MIDI di canale. Esso permette di effettuare il bending di una nota, ossia di alterare una nota musicale di partenza fino a portarla a una di arrivo più alta o bassa in modo graduale (si parla anche di glide o portamento).

I MIDI Control Change (CC) sono una serie di controlli continui. Ci sono 128 CC e ciascuno può assumere un valore da 0 a 127. Anche i CC sono messaggi di canale.

Nonostante ci siano funzioni standard per la maggior parte dei CC, in realtà se il dispositivo che trasmette e il dispositivo che riceve i CC sono “d’accordo” sulla funzione da associare a ciascun CC questi sono diventano sostanzialmente intercambiabili.


Testo di Laura Sicignano