Il protocollo Midi
Il M.I.D.I. (Musical Instrument Digital Interface) è un protocollo di trasmissione seriale di dati alla velocità di 31250 bit al secondo.
Tali dati Midi vengono trasmessi uno dopo l'altro (in modo seriale, in sequenza), e ricevuti dal dispositivo ricevente nell'ordine sequenziale in cui sono stati trasmessi.
Un insieme di due o tre byte, previsto dal protocollo Midi e corrispondenti a un elemento costitutivo di un brano musicale, rappresentano un Messaggio Midi. Ogni Messaggio Midi è anche considerato un Evento musicale Midi, in quanto esso "accade" nel tempo.
Indice
Byte di Stato e byte di Dati
Si è detto che ogni Messaggio Midi è costituito da due o tre byte. Va precisato che riguardo al significato dei byte, costituenti il Messaggio Midi, essi vanno considerati considerati, e non come un unico valore numerico formato da due o tre byte. Pertanto ogni singolo byte del Messaggio Midi apporta una propria specifica informazione.
Da ciò deriva che ogni signola informazione è scritta utilizzando i valori rappresentabili da 8 bit (un Byte), ossia da 0 a 255 per un totale - come si sa - di 256 combinazioni possibili.
Il primo byte costituente il Messaggio Midi è chiamato byte di "Stato" (ma anche Messaggio di Stato); il seguente o i seguenti sono chiamati byte di "Dati" (ma anche Messaggio di Dati).
Pertanto la sequenza di invio da un dispositivo Midi trasmittente a un altro ricevente avviene in sequenza come mostrato:
|PORTA | |PORTA | |USCITA|---> 2° Byte di Dati ---> 1° Byte di Dati ---> Byte di Stato ---> |ENTRATA| |Midi | |Midi |
Il primo Byte a uscire dal dispositivo Midi trasmittente è il Byte di Stato, poi esce il 1° Byte di Dati e infine esce il 2° Byte di Dati. Analogamente, il primo Byte a entrare nel dispositivo Midi ricevente è il Byte di Stato, poi entra il 1° Byte di Dati e infine il 2° Byte di Dati.
I byte di Stato e i byte di Dati strutturalmente si differenziano per l'ambitus di valori rappresentati dal loro Byte. In particolare i byte di Stato utilizzando i valori da 128 a 255, mentre i byte di Dati utilizzano i valori compresi tra 0 e 127.
Ciò significa che nei byte di Stato il bit più significativo [nota 1] è sempre posto a 1, mentre nei byte di Dati il bit più significativo è posto sempre a 0 .
Il byte di Stato
Il Byte di Stato informa in dispositivo ricevente sul tipo di Messaggio (sulla sua funzione) e sul Canale al quale appartiene.
Per conferire queste due informazioni, il Byte di Stato divide in tre gruppi i bit costituenti il suo Byte, come appresso specificato:
1 b b b b b b b
Il primo bit, sempre posto a 1, specifica che si tratta genericamente appunto di un Byte di Stato.
I seguenti tre Byte sono utilizzati per definire il tipo di Messaggio Midi di appartenenza.
Gli ultimi quattro bit specificano il Canale, al quale il Messaggio Midi appartiene.
Va però detto che il tipo di Messaggio Midi è comunque definito sulla base dei primi 4 bit più significativi appartenenti al Byte di Stato, ossia che il valore che specifica il tipo di Messaggio Midi comprende anche il bit più significativo.
Il Canale Midi
Il Canale Midi è un'impostazione presente in ciascun evento Midi che permette a un dispositivo, sintonizzato [nota 2] su un determinato Canale, di filtrare gli eventi Midi elaborando soltanto quelli appartenenti a quel Canale. [nota 3]
Esempio di byte di Stato
Mostriamo un esempio di byte di Stato:
1 0 0 1 1 0 0 1
I bit suddetti specificano che è un Byte di Stato, che individua un Messaggio Midi di tipo "Note-On", appartenente al Canale "10". il valore complessivo associato a questo esempio di Byte di Stato è pertanto "&h99".
Il Byte di Dati
I Byte di Dati apportano informazioni fondamentali aggiuntive di dettaglio associate al Messaggio Midi inviato. I Messaggi Midi - a seconda del tipo - possono avere uno o due Byte di Dati.
Come è stato già detto, nel Byte di Dati il bit più significativo è sempre posto a 0. Pertanto il Byte di Dati può assumere esclusivamente valori compresi fra 0 e 127.
Tipologia dei Messaggi Midi
Ogni Evento (Messaggio) Midi è considerato un elemento fondamentale nella dinamica musicale, o perché costitutivo del brano (si pensi ad esempio all'esecuzione di una nota), o perché influenza in modo determinante l'esecuzione musicale (si pensi ad esempio allo strumento utilizzato).
I Messaggi Midi si suddividono secondo la seguente tipologia:
Channel Voice Messages;
Channel Mode Messages;
System Common Messages;
System Real Time Messages;
System Exclusive Messages.
In questa pagina prenderemo inconsiderazione solo i Channel Voice Messages e i System Exclusive Messages.
Per comprendere meglio l'associazione dei valori ai singoli Byte (di Stato e di Dati) appartenenti essenzialmente ai Messaggi Midi, è opportuno immaginare l'azione del dito di un esecutore su un pianoforte o su una tastiera elettronica con tasti dinamici.
I Messaggi Channel Voice
I Messaggi Midi di tipo Channel Voice sono:
Note Off
Il Messaggio di Note Off viene inviato per istruire che la l'esecuzione di una nota, precedentemente attivata, deve essere disattivata. Facendo l'esempio del pianoforte, il Messaggio Midi di Note Off corrisponde in sostanza all'istruzione di rilasciare un tasto ancora premuto.
Il suo Byte di Stato, a seconda del Canale attribuito, può assumere valori da &h80 a &h8F.
Il primo Byte di Dati individua il numero di nota, che deve ovviamente corrispondere al numero di una nota la cui esecuzione sia stata precedentemente attivata.
Il secondo Byte di Dati rappresenta la Velocità (Velocity) di pressione può essere posto a 0.
Va detto che il Messaggio Midi di Note Off corrisponde sostanzialmente al Messaggio Midi di Note On con il valore del secondo Byte di Dati posto a 0.
Esempio di Messaggio di Note Off:
80 48 00
Note On
Il Messaggio di Note On viene inviato per istruire di attivare una determinata nota. Nell'esempio del pianoforte il Messaggio Midi di Note On corrisponde all'istruzione di premere un tasto.
Il suo Byte di Stato, a seconda del Canale attribuito, può assumere valori da &h90 a &h9F.
Il primo Byte di Dati individua il numero della nota che deve essere attivata.
Il secondo Byte di Dati rappresenta la Velocità (Velocity) di pressione può assumere un valore da 0 a 127. Come già accennato sopra, il Messaggio Midi di Note On con il valore del secondo Byte di Dati posto a 0 corrisponde in sostanza a un Messaggio Midi di Note Off.
Più in particolare la Velocità rappresenta la velocità con cui un tasto del pianoforte viene premuto. [nota 4]
Esempio di Messaggio di Note Off:
90 48 64
Polyphonic Key Pressure
Il Messaggio di Polyphonic Key Pressure, anche chiamato Aftertouch Polyphonic, rappresenta l'ulteriore pressione che si assegna a una o più note già attivate mediante il Note On.
Il suo Byte di Stato, a seconda del Canale attribuito, può assumere valori da &hA0 a &hAF.
Il primo Byte di Dati individua il numero della nota la nota oggetto dell'effetto dell'Aftertouch.
Il secondo Byte di Dati rappresenta il valore di Aftertouch Polyphonic aggiuntivo da eseguire.
Esempio di Messaggio di Note Off:
A0 48 80
Control Change
Il Messaggio di Control Change rappresenta una quantità di circa 127 informazioni che incidono sull'esecuzione delle note.
Il suo Byte di Stato, a seconda del Canale attribuito, può assumere valori da &hB0 a &hBF.
Il primo Byte di Dati individua il tipo di Controllo da attivare.
Il secondo Byte di Dati rappresenta il valore da assegnare al Controllo prescelto.
Program Change
Il Messaggio di Program Change istrusce il dispositivo del numero identificativo di strumento musicale, con il quale eseguire uno o più Messaggi di Note On che seguono.
Questo Messaggio Midi è costituito soltanto da 2 byte.
Il suo Byte di Stato, a seconda del Canale attribuito, può assumere valori da &hC0 a &hCF.
Il primo (e unico) Byte di Dati rappresenta il valore da assegnare al Program Change, ossia il numero identificativo dello strumento musicale all'interno del file soundbank utilizzato.
Channel Pressure
Il Messaggio di Channel Pressure, anche chiamato Channel Aftertouch, viene inviato quando c'è un cambiamento nella pressione generale applicata a tutte le note di un canale e non solo su una singola o singole note.
Questo Messaggio Midi è costituito soltanto da 2 byte.
Il suo Byte di Stato, a seconda del Canale attribuito, può assumere valori da &hD0 a &hDF.
Il primo (e unico) Byte di Dati rappresenta il valore di Channel Aftertouch aggiuntivo da eseguire.
Pitch Wheel
Il Messaggio di Pitch Wheel, anche chiamato Pitch Bend, rappresenta l'effetto glissato.
Il suo Byte di Stato, a seconda del Canale attribuito, può assumere valori da &hE0 a &hFF.
Riguardo poi ai due Byte di Dati va precisato quanto segue:
1) poiché l'effetto del glissato può avvenire sia in basso che in alto rispetto alla tonalità originaria della nota, il valore minimo è rappresentato da 0, quello originario (che sarà dunque intermedio) è rappresentato da &h64, mentre il malore massimo è rappresentato da &h7F;
il Messaggio di Pitch Bend utilizza entrambi i suoi Byte di Dati per determinate con precisione il valore della variazione di tono per il glissato.
Il primo Byte di Dati è quello meno significativo, e lo si può pensare come portatore di un'informazione di alta risoluzione, poiché contiene i 7 bit meno significativi del valore di glissato.
Il secondo Byte di Dati è quello più significativo, e lo si può pensare come portatore di un'informazione di risoluzione grossolana, poiché contiene i 7 bit più significativi del valore diglissato.
Più in particolare va detto che nel messaggio di Pitch Bend, per ottenere il valore effettivo dell'effetto glissato, bisogna combinare i due Byte di Dati (LSB e MSB), creando così un unico valore di 14 bit (esclusi ovviamente i "bit" più significativi di entrambi i Byte di Dati) con un intervallo compreso tra 0 e 16.383. La combinazione viene effettuata secondo la seguente formula:
(MSB << 7) OR LSB = risultato
I bit del valore del 2° Byte di Dati (quello più significativo) vanno spostati a sinistra di 7 posti; il risultato di tale spostamento va combinato con il 2° Byte di Dati (quello meno significativo) mediante l'operatore "OR".
Infatti, combinando i valori massimi (&h7F) di entrambi i Byte di Dati, si ottiene: (127 << 7) OR 127 = 16383
I Messaggi System Exclusive
Brevemente, i Messaggi Midi di System Exclusive
Note
[1] Il bit "più significativo" è quello più a sinistra all'interno del Byte, e al quale è associato il valore 128:
1 0 0 0 0 0 0 0
[2] In generale quando un dispositivo è impostato per elaborare soltanto le informazioni assegnate a uno specifico Canale, si parla di " sintonizzazione ". Così, se il dispositivo è impostato per prendere in conderazione i dati appartenenti al Canale 3, si dice che tale dispositivo è sintonizzato sul Canale 3.
[3] L'eccezione a questa regola generale è la modalità "Omni": un dispositivo impostato per ricevere in modalità "Omni" accetterà e risponderà a tutti i Messaggi Midi indipendentemente dal numero del Canale, al quale il Messaggio è associato. La modalità "Omni" può essere impostata assegnando il valore &h7D al 1° Byte di Dati del Messaggio Midi di tipo "Control Change".
[4] Va precisato che la Velocità di pressione non corrisponde al volume del suono di una nota, il quale è definito mediante il valore &h07 del 1° Byte di Dati del Messaggio Midi di Control Change.
xxxx
Pagina in costruzione !