Il Protocollo MIDI

15
Il protocollo MIDI ___________________________________________________________________________ Silvio Relandini 1 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 i più grandi costruttori di sintetizzatori aderirono alla

description

ebook

Transcript of Il Protocollo MIDI

Page 1: Il Protocollo MIDI

Il protocollo MIDI ___________________________________________________________________________

Silvio Relandini 1

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 i più grandi costruttori di sintetizzatori aderirono alla

Page 2: Il Protocollo MIDI

Il protocollo MIDI ___________________________________________________________________________

Silvio Relandini 2

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:

Page 3: Il Protocollo MIDI

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

Page 4: Il Protocollo MIDI

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

Page 5: Il Protocollo MIDI

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

Page 6: Il Protocollo MIDI

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

Page 7: Il Protocollo MIDI

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

Page 8: Il Protocollo MIDI

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

Page 9: Il Protocollo MIDI

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

Page 10: Il Protocollo MIDI

Il protocollo MIDI ___________________________________________________________________________

Osservando più da vicino i controlli elencati soffermiamoci sugli ultimi quattro che si

riferiscono ai Channel Mode Message, messaggi che stabiliscono possibili

configurazioni di funzionamento per gli strumenti MIDI, ottenute 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

Page 11: Il Protocollo MIDI

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

Page 12: Il Protocollo MIDI

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

Page 13: Il Protocollo MIDI

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

Page 14: Il Protocollo MIDI

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

Page 15: Il Protocollo MIDI

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