Transcript
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