Il protocollo MIDI - Istituto Superiore di Studi Musicali Vincenzo Bellini

Transcript

Il protocollo MIDI - Istituto Superiore di Studi Musicali Vincenzo Bellini
Il protocollo MIDI
___________________________________________________________________________
Il protocollo MIDI
Introduzione
pag 1
La Struttura e connessioni
pag 2
La struttura dei messaggi MIDI
pag 5
I messaggi MIDI fondamentali
pag 7
Il Local control
pag 11
I messaggi di Sistema
pag 12
Gli standard MIDI
pag 15
Introduzione
Con un computer dedicato, costituente, insieme alla scheda audio, al sistema di
ascolto, alla tastiera musicale e ai software, un sistema di informatica musicale,
registriamo, elaboriamo ed esportiamo principalmente due tipi di dati: audio e MIDI.
Quest'ultima tipologia consente ad un utente di trasferire e registrare al computer le
informazioni relative alla sua esecuzione musicale utilizzando un particolare strumento
costituito da una tastiera musicale riproducente quella di un pianoforte.
Il MIDI (Musical Instrument Digital Interface) è un protocollo formato da un insieme di
messaggi e di regole per la comunicazione tra strumenti tipicamente musicali e non
solo.
Il MIDI venne realizzato agli inizi degli anni '80 soprattutto per facilitare il gravoso
compito dei tastieristi, obbligati ad utilizzare molti sintetizzatori contemporaneamente
a causa delle difficoltà dell'allora tecnologia nel realizzare frasi polifoniche e
soprattutto nell'utilizzare suoni complessi multi timbrici. Infatti, in un periodo che
intravedeva la possibilità di un impiego del digitale, i sintetizzatori offrivano poche
note di polifonia e pochi preset mono timbrici.
Nel 1981 Dave Smith e Chet Wood, progettisti della società americana Sequential
Circuit che produceva i sintetizzatori Prophet, iniziarono a definire le linee per un
protocollo di comunicazione in grado di controllare la polifonia e la timbricità. Durante
la fiera NAMM (North American Music Manufacturers) a Los Angeles nell'estate del
1983 venne presentato il primo sintetizzatore (un Prophet 600) dotato di protocollo
MIDI e di porte di comunicazione. L'interesse e il successo furono tali che
praticamente
tutti
Silvio Relandini 1
i
più
grandi
costruttori
di
sintetizzatori
aderirono
alla
Il protocollo MIDI
___________________________________________________________________________
commercializzazione del protocollo e nel 1985 l'IMA (International MIDI Association)
pubblicò le specifiche tecniche del protocollo MIDI 1.0 in modo da renderlo uno
standard definitivo.
Nonostante svariati tentativi di modificare il protocollo, la sua struttura è rimasta
praticamente la stessa a conferma che è un linguaggio molto potente, facile da
programmare e che non richiede una tecnologia complessa e di difficile reperibilità.
Struttura e connessioni
Il protocollo è costituito da centinaia di messaggi ognuno dei quali è formatoi da
parole (word) di uno o più byte (ricordando che un byte è una stringa di otto bit) che
trasferiscono le intenzioni tecniche ed espressive musicali che un esecutore esegue su
uno strumento musicale, definito master, ad un altro, chiamato slave, il cui unico
scopo è quello di fornire il supporto timbrico. Pertanto, le azioni tipiche quali “hai
suonato una nota sulla tastiera” o “hai premuto il pedale del sustain” vengono
associate ad un univoco messaggio MIDI (nel primo caso a quello detto di NOTA ON
mentre nel secondo caso al messaggio SUSTAIN). Insistiamo nel precisare che i
messaggi MIDI non portano informazioni audio ma solamente una codifica delle azioni
che il musicista compie sul controller (una tastiera MIDI). Sarà poi lo slave a fornire il
segnale audioovvero il timbro.
I computer, i mixer digitali, gli strumenti musicali elettronici, i processori di segnale
audio, i controller, i sistemi DAW, hanno tutti o quasi in dotazione un’interfaccia
hardware per poter comunicare tramite il protocollo MIDI. Questa interfaccia è dotata
di porte MIDI per ricevere e trasmettere i messaggi MIDI. Funzionalmente esistono tre
tipologie di porte MIDI:
- La porta MIDI IN, utilizzata per ricevere i messaggi inviati da un’altra macchina
- La porta MIDI OUT, impiegata per inviare i messaggi ad altri strumenti
- La porta MIDI THRU, consente di reindirizzare un messaggio proveniente alla porta
MIDI IN verso un altro strumenti.
Ricapitolando, utilizzando un cavo MIDI, la porta OUT va collegata ad una porta IN
mentre la porta THRU ancora ad una porta IN. Se ad esempio avessimo una tastiera
musicale master e due strumenti slave, la configurazione MIDI sarebbe quella riporta
nella figura seguente:
Silvio Relandini 2
Il protocollo MIDI
___________________________________________________________________________
Suonando una nota sulla tastiera Master, un messaggio MIDI viene inviato alla porta
OUT; da qui raggiunge il primo Slave e, tramite il collegamento THRU, anche il
secondo.
Non è raro, anzi è la norma, volere che alcuni messaggi siano interpretabili solamente
dallo Slave 1 mentre altri solamente dal secondo. In che modo possiamo realizzare
questa volontà? Semplicemente utilizzando una proprietà dei messaggi MIDI: il
canale. Esistono 16 canali indipendenti dove è possibile far viaggiare i messaggi MIDI:
in tal modo possiamo assegnare ogni singolo messaggio su un canale specifico ed
impostare la ricezione MIDI dello slave su quel canale in modo da ignorare tutti i
messaggi indirizzati sugli altri canali. Ogni strumento musicale elettronico dotato di
interfaccia MIDI ha delle pagine di editing dove è possibile impostare il canale di
ricezione (MIDI Receive, Rx) e quello di trasmissione (MIDI Transmit, Tx) per cui
basta far riferimento al manuale d’utilizzo dello strumento per trovare le pagine di
editing. Se ad esempio impostiamo in ricezione lo Slave 1 sul canale MIDI 2 e lo Slave
2 sul canale 6, quando inviamo dalla Master un messaggio sul canale 6, questo giunge
allo Slave 1 che però lo ignora, mentre è inviato contemporaneamente allo Slave 2
(tramite la porta THRU) che invece lo interpreta.
Il collegamento appena illustrato, costituito cioè dalle sequenze MIDI OUT -> IN,
THRU -> IN, THRU ->….. è chiamato a cascata o seriale. Sebbene sia semplice è
sconsigliato se si devono collegare numerosi dispositivi Slave ad un’unica Master in
quanto insorgono problemi di latenza (ritardo del segnale). I messaggi MIDI vengono
trasmessi in maniera seriale e asincrona (ovvero occorrono 1 bit di start e uno di stop)
alla velocità di 31.250 bit al secondo.
Nel caso si devono collegare numerosi strumenti è il caso di utilizzare un collegamento
detto a stella realizzabile tramite una THRU Box, un harware costituito da una porta
IN e da 2 o più porte THRU (fino ad un massimo di 16). Nell’immagine seguente è
illustrato un tipico schema di collegamento a stella.
Silvio Relandini 3
Il protocollo MIDI
___________________________________________________________________________
Quando si utilizza anche un computer, sul quale è installato un sequencer ovvero un
software in grado di ricevere, registrare e trasmettere i messaggi MIDI, il suo
inserimento nel routing (flusso) del segnale MIDI avviene tra il Master e gli Slave.
Poiché le interfacce MIDi dei computer sono dotate di sole porte IN e OUT, queste
ultime si comportano anche come delle porte TRHU (l’opzione può essere nominata
“patch thru”, “echo thru”, “thru on/off”) rendendo possibile controllare gli Slave dalla
passando attraverso il sequencer.
Ultimamente esistono controller in grado di inviare al computer messaggi MIDI tramite
le porte USB, Lan e Firewire. Inoltre, da qualche anno, esistono inoltre dei Virtual
Instrument, dei semplici programmi residenti nel computer, ovvero degli “slave
virtuali” i cui collegamenti MIDI sono di natura virtuale (logica) e che quindi vengono
gestiti direttamente all’interno del sequencer senza necessità di cablaggi hardware.
Silvio Relandini 4
Il protocollo MIDI
___________________________________________________________________________
La struttura dei Messaggi MIDI
Il messaggio MIDI è costituito da una sequenza di byte divisi in due tipologie: lo
Status Byte e il Data Byte. Lo Status Byte oltre a definire il comando MIDI e a
rappresentare il tipo di informazione (nota suonata, volume, pitch bend, ecc.), indica il
numero di canale su cui viaggia il messaggio complessivo. Il Data Byte rappresenta
invece il valore richiesto per il parametro specificato nello Status Byte.
Come è possibile disstinguere lo Status dal Data byte? Tutti gli Status hanno il bit più
significativo pari ad 1, i Data pari a 0; per di più, un messaggio deve sempre iniziare
con uno Status byte.
Questa è la struttura di uno Status Byte.
Il byte è diviso in due nibble (gruppo di 4 bit) chiamati MSB (Most Significant Bit) e
LSB. Nel primo è presente il bit più significativo, utilizzato per il riconoscimento dello
Status, mentre i tre rimanenti bit, indicati con la lettera V sono utilizzati per
specificare i vari messaggi. Poiché con 3 bit è possibile avere otto combinazioni
possibili (in quanto 23=8) illustrate nell’immagine seguente.
Silvio Relandini 5
Il protocollo MIDI
___________________________________________________________________________
I messaggi MIDI si dividono in due grandi categorie: Channel Voice Message
(messaggi di Canale) e System Message (messaggi di sistema). I primi possono
essere indirizzati su uno dei 16 canali MIDI e sono divisi a loro volta in Voice Message
e Mode Message. I secondi non contengono informazioni di canale ma sono indirizzati
globalmente all’intero sistema di strumenti collegati nel nostro network musicale e si
dividono in Common Message, Real Time Message e Exclusive Message.
Il secondo nibble (LSB), quando è utilizzato nei messaggi di canale, serve ad indicare
il canale MIDI. Avendo a disposizione 4 bit, possiamo disporre di 16 combinazioni
(24=16) elencate di seguito:
Quando abbiamo a che fare con i messaggi di sistema, il Least Significant Bit LSB
attualmente rappresenta 12 messaggi (quattro combinazioni non sono ancora
utilizzate).
Silvio Relandini 6
Il protocollo MIDI
___________________________________________________________________________
La struttura di un Data Byte invece è la seguente:
In questo caso, sono a disposizione sette bit e quindi 128 possibili valori (27=128)
che, a seconda dei casi, sono esprimibili come intervallo 1 – 128 o come 0 – 127.
I Messaggi MIDI fondamentali
NOTA ON – se si preme un nota sulla tastiera della Master, viene inviato un messaggio
di Nota On (nota premuta) che, oltre allo status byte, è costituito da due data byte, il
primo relativo all’altezza della nota (pitch), il secondo alla velocity ovvero alla forza
con cui è stato premuto il tasto.
NOTA OFF – se si rilascia il tasto di nota premuto in precedenza, viene generato
questo messaggio costituito anch’esso da due data byte; il primo specifica quale nota
viene rilasciata, il secondo con quale velocity, ovvero con quale intensità di rilascio del
tasto.
Silvio Relandini 7
Il protocollo MIDI
___________________________________________________________________________
CHANNEL PRESSURE – trasmette in tempo reale eventuali variazioni di pressione
esercitate su una nota premuta in precedenza. Questa pressione, unica per tutta la
tastiera, è genericamente chiamata After Touch e di solito ad essa viene assegnata
una funzione che può modificare alcune caratteristiche del suono (la modulazione,
l’intonazione, il volume, ecc.). Non ha il secondo data byte.
POLYPHONIC KEY PRESSURE – è simile al precedente ma si riferisce al più costoso – e
quindi molto più raro – utilizzo di sensori di pressione indipendenti per ciascuna nota.
Il primo data è riferito alla nota e il secondo al valore di after touch.
PROGRAM CHANGE – viene utilizzato per cambiare o impostare il timbro da utilizzare
per la sequenza MIDI. Non ha il secondo data byte.
Silvio Relandini 8
Il protocollo MIDI
___________________________________________________________________________
PITCH BENDER – le tastiere master sono provviste di slider o joystick con le quali è
possibile variare l’altezza di una nota in esecuzione. Occorrono due data byte per
definire ivalori di incremento o diminuzione dell’altezza sufficientemente fluidi e privi
di zippering (salti) all’ascolto. I due data byte forniscono in totale 16384 valori
possibili.
CONTROL CHANGE – questo messaggio in realtà dà accesso ad una lista di 128
combinazioni che si riferiscono alle informazioni di espressione e che sono appunto
chiamati control change. Il primo data indica il numero del controller (tra i 128
disponibili) mentre il secondo ne specifica il valore.
L’immagine seguente mostra la lista attualmente implementata. Alcuni non sono stati
definiti, e la loro attribuzione è genericamente rispettata anche se, in determinate
situazioni, costruttori diversi possono utilizzarli per modificare qualche parametro delle
proprie macchine.
Silvio Relandini 9
Il protocollo MIDI
___________________________________________________________________________
Osservando più da vicino i controlli elencati soffermiamoci sugli ultimi quattro che si
riferiscono
ai
Channel
Mode
Message,
messaggi
che
stabiliscono
configurazioni di funzionamento per gli strumenti MIDI, ottenute
possibili
in base alla
combinazione di tre stati operatibi:
- OMNI: indica che lo strumento è in grado di rispondere a tutti i messaggi inviati
indifferentemente sui 16i canali MIDI.
- POLY: lo strumento gestisce le proprie voci rispettando richieste polifoniche tese alla
realizzazione di accordi.
- MONO: lo strumento lavora in monofonia.
I quattro modi disponibili, combinando i tre stadi operativi, sono:
-Modo 1: Omni On/Poly – lo slave interpreta tutti i messaggi su tutti i canali e in
maniera polifonica – è il cosidetto modo operativo a prova di idiota: lo slave suona in
ogni caso ed in ogni condizione.
-Modo 2: Omni On/Mono – lo slave risponde su tutti i canali ma monofonicamente e
chiaramente non è una condizione operativa molto funzionale.
-Modo 3: Omni Off/Poly – lo slave risponde in maniera polifonica solamente ai
messaggi che giungono sul suo canale MIDI (specificato in ricezione). E’ detto
Silvio Relandini 10
Il protocollo MIDI
___________________________________________________________________________
sinteticamente Poly ed è utilizzato tipicamente nei sistemi MIDI connessi a cascata,
come abbiamo visto in precedenza.
-Modo 4: Omni Off/Mono – lo slave risponde monofonicamente ai messaggi che
giungono sul suo canale MIDI. E’ detto sinteticamente Mono.
Questi messaggi hanno solamente un data byte.
Local Control
Tra i diversi control change, ne esiste uno molto particolare chiamato Local Control
che è utilizzato quando la master possiede al suo interno un modulo sonoro. In tal
caso, per evitare che la tastiera musicale invii il messaggio di Nota On anche al
generatore di suoni interno, ocorre impostare la master su Local OFF (vedere il
manuale operativo della tastiera). Di conseguenza, il messaggio MIDI sarà inviato
solamente alla porta MIDI Out come mostrato in figura.
In questa modalità, il generatore interno di suoni si comporta esattamente come uno
slave e pertanto potrà essere sfruttato rinviando da un sequencer il messaggio nella
porta MIDI In della master. La struttura del messaggio è la seguente:
Silvio Relandini 11
Il protocollo MIDI
___________________________________________________________________________
System Message
I messaggi di sistema si dividono, come abbiamo, visto in tre categorie:
1) Common Message, quattro in totale, danno istruzioni generali a tutto il sistema:
- MIDI Time Code Quarter Frame, è un messaggio di time code nel formato
ore:minuti:secondi:frame. Ogni otto messaggi di MIDI Time Code (MTC) identificano
una locazione del codice SMPTE. È quindi un messaggio utilizzato per sincronizzare
macchine differenti.
- Song Position Pointer, indica la posizione che il cursore deve assumere durante la
riproduzione di un file MIDI.
Silvio Relandini 12
Il protocollo MIDI
___________________________________________________________________________
- Song Select, consente di selezionare una song all’interno di un sequencer. E’
costituito da un solo data byte che indica il numero della song.
- Tune Request: viene utilizzato per accordare lo strumento. E’ sprovvisto di data
byte.
2) Real Time, sono 6 messaggi di sincronizzazione privi di Data Byte:
- MIDI Clock, utilizzato per sincronizzare strumenti MIDI; viene inviato 24 volte per
ogni nota del valore di un quarto.
- Start, viene utilizzato per portare tutti gli strumenti esterni alla posizione iniziale della song e a
farle partire in riproduzione o registrazione.
- Continue, permette di riprendere la song dal punto in cui è stata interrotta.
Silvio Relandini 13
Il protocollo MIDI
___________________________________________________________________________
- Stop, utilizzato per fermare la registrazione o la riproduzione degli strumenti
collegati al sequencer.
- Active Sensing, inviato ogni 300 millisecondi, è utilizzato per tenere attiva la
connessione tra master e slave.
- System Reset, ripristina le condizioni di default dello slave
3) System Exclusive (SysEx), sono messaggi che riguardano le funzionalità globali di
ogni strumento e sono utilizzati a seconda delle esigenze proprie degli sviluppatori. I
codici di sistema esclusivo possono essere interpretati solo da categorie di apparecchi
compatibili tra loro. Se lo strumento non è in grado di interpretare uno o più messaggi
di sistema esclusivo, restituirà un messaggio di errore. Sono costituiti da una
sequenza il cui inizio è rappresentato dal seguente messaggio:
Il messaggio di inizio è seguito da un byte contenente il Manufacter ID, che identifica
il costruttore; La sequenza può essere lunga o breve a seconda delle necessità e della
complessità di quanto si trasmette ma in ogni caso, viene sempre conclusa dal
messaggio end of exclusive.
Silvio Relandini 14
Il protocollo MIDI
___________________________________________________________________________
I parametri di una macchina che si possono modificare tramite il sistema esclusivo
sono generalmente indicati nel manuale fornito con lo strumento, nella sezione
chiamata MIDI Implementation Chart, ma se non sono disponibili esistono programmi
di utilità in grado di produrre la sequenza di sistema esclusivo che si ottiene
collegando lo strumento alle porte MIDI e variandone i parametri.
Gli standard MIDI
Il General MIDI è stato introdotto nel 1991 per semplificare le operazioni di riproduzione delle
sequenze MIDI tramite gli stessi timbri. Successivamente, i timbri sono stati ordinati all’interno una
lista i cui numeri sono associati al messaggio di Program Change rispettando sempre la stessa
posizione, a prescindere dalla marca dello strumento. In questo modo, è molto semplice riprodurre
una sequenza MIDI che necessita di timbri particolari, basta attivare il banco General MIDI e
iniziare a leggere la sequenza MIDI per caricare automaticamente i timbri (in quanto all’inizio di
ogni sequenza si trovano appunto i messaggi di program change). Inoltre, per convenzione, lo
standard dedica il canale MIDI numero 10 ai suoni di batteria e percussione.
Roland ha creato lo standard GS (General System) che permette di utilizzare un numero superiore
di timbri rispetto ai 128 del General MIDI grazie all’introduzione di nuovi messaggi MIDI (Control
Change) come il Bank Select che consente di selezionare i vari banchi dove sono memorizzati i
timbri. Nel 1994 Yamaha introdusse lo standard XG in grado di controllare maggiori banchi e
strumenti nonché drum kit ed effetti con la piena compatibilità con il General MIDI.
MIDIFile
Un midifile è una sequenza di dati MIDI costituiti da diversi messaggi distribuiti nei
vari canali in grado di essere interpretata da qualsiasi strumento dotato di porte MIDI.
Lo standard midifile (SMF) è stato realizzato nel 1986 dalla Opcode System ed ha
come estensione .mid. E’ un file di testo codificato ASCII e pertanto occupa poco
spazio. Lo standard midifile è diviso in tre formati:
formato 0: racchiude tutti i dati MIDI su un’unica traccia.
formato 1: propone i vari dati MIDI su più tracce.
formato 2: raro da incontrare ma molto potente in quanto consente di mantenere una
certa indipendenza metrica sui dati conservati nelle singole tracce.
Silvio Relandini 15