Musical Instrument Digital Interface

Da Wikipedia, l'enciclopedia libera.

Con l'acronimo MIDI (Musical Instrument Digital Interface) si indica il protocollo standard per l'interazione degli strumenti musicali elettronici (anche tramite un computer).

Indice

[modifica] Le specifiche MIDI standard

[modifica] Introduzione

Il MIDI è, da una parte, un linguaggio informatico, ossia una serie di specifiche che danno vita al protocollo; dall'altra, un'interfaccia hardware che consente il collegamento fisico tra vari strumenti.

Entrambi questi aspetti sarebbero probabilmente sostituibili da sistemi più performanti, nonostante ciò, il MIDI, nato negli anni ottanta, è rimasto pressoché inalterato ed è intensamente utilizzato nella produzione di musica digitale. I motivi risiedono probabilmente nel ruolo di standard, pressoché incontrastato, che il MIDI ha assunto nell'ambito musicale, e nella cura riposta dai progettisti nella stesura delle prime specifiche.

Di fatto, il MIDI ha peculiarità interessanti su più fronti:

  • La qualità e la praticità del sistema. L'integrazione tra eventi Audio ed eventi MIDI ha dimostrato di essere una mossa vincente, confermando l'importanza di questo standard nella realizzazione di musica digitale.
  • La leggerezza dei file MID (in termini di kB). Tramite Internet ed i software multimediali, il MIDI diventa un media di uso comune non più appannaggio esclusivo dei musicisti.
  • La diffusione di basi di livello qualitativo sempre maggiore. Fatto che ha permesso a molti musicisti di svolgere con facilità e qualità il proprio lavoro.
  • Il costo. Molti produttori hardware e software puntano sulla multimedialità dei propri prodotti. Con un investimento minimo, o ricorrendo a programmi freeware, è possibile per ognuno disporre di un computer in grado di realizzare produzioni musicali di buon livello.

[modifica] Cenni storici

Il protocollo MIDI nacque all'inizio degli anni ottanta.

Il prototipo per il MIDI venne presentato da due progettisti della Sequential Circuit (SCi), Dave Smith e Chet Wood, che nel 1981 proposero le prime specifiche del MIDI in un documento pubblicato sotto il nome di "The complete SCI MIDI".

Il MIDI nacque come risposta all'esigenza di far comunicare diversi strumenti musicali elettronici tra loro, tenendo conto delle diverse caratteristiche di ognuno di essi.

Diversi costruttori, ad esempio Oberheim e Roland, offrivano già sui propri strumenti alcuni sistemi di interfacciamento. Queste interfacce però, basate su algoritmi proprietari, garantivano il proprio funzionamento solo su strumenti dello stesso costruttore, il protocollo di Smith e Wood si presentava invece come un sistema in grado di superare questo limite.

Per garantire la piena compatibilità tra i vari strumenti, al di là della casa produttrice, ogni costruttore fu invitato a partecipare alla stesura definitiva delle prime specifiche MIDI. SCI, Roland, Yamaha e Kawai furono i primi produttori di strumenti digitali ad aderire alla definizione e alla diffusione del MIDI.

Il progetto terminato, comunque, apparve solo due anni dopo: nell'agosto del 1983 le specifiche MIDI furono presentate al pubblico alla fiera del National Association of Music Merchants - NAMM, tenutasi a Los Angeles.

L'immediata popolarità dello standard creò divisioni all'interno del comitato fondatore: i produttori americani si unirono nella MMA (MIDI Manufactures Association) mentre quelli giapponesi fondarono la JMA (Japan MIDI Association). Benché lavorassero su un terreno comune, i due consorzi svilupparono delle caratteristiche non sempre pienamente compatibili tra loro. Queste divergenze furono risolte nel 1985, quando la IMA (International MIDI Association) pubblicò la versione 1.0 delle specifiche MIDI, istituendo di fatto lo standard del protocollo.

I costruttori che supportano il protocollo MIDI sono perciò riuniti in due associazioni: MMA (costruttori Americani ed Europei) e JMSC (costruttori Giapponesi). Le modifiche da apportare allo standard MIDI vengono discusse ed approvate da queste due associazioni. La diffusione delle specifiche MIDI spetta all'IMA (International Midi Association).

Il primo synth dotato di interfaccia MIDI fu presentato nel 1983: si trattava del PROPHET 600 della SCI.

[modifica] Connessioni elettriche

Porte e cavi MIDI.

Lo standard MIDI consiste in un protocollo per lo scambio di messaggi progettato per l'uso con strumenti musicali elettronici e della relativa interfaccia fisica. Un collegamento MIDI consiste in una connessione seriale unidirezionale (simplex) a loop di corrente, che funziona ad una velocità di trasmissione di 31,250 bps (bit al secondo).

Il loop viene tenuto a massa solo da un lato mentre l'altra estremità è libera (flottante) per evitare ronzii e interferenze audio indotte dalla formazione di anelli di massa. Il loop di corrente dal lato del trasmettitore pilota il LED di un accoppiatore ottico dal lato del ricevitore. Ciò vuol dire, in pratica, che i due dispositivi sono optoisolati. L'accoppiatore ottico deve essere molto veloce (un dispositivo molto usato è lo Sharp PC900) ma i tempi di commutazione asimmetrici che caratterizzano la maggior parte degli accoppiatori (tempi di risposta diversi per la chiusura e l'apertura del circuito) sono comunque causa di distorsioni. Nel caso di connessione in cascata (daisy-chain) di più dispositivi MIDI attraverso le rispettive porte MIDI-THRU e MIDI-IN la distorsione del segnale si fa via via più rilevante, fino alla comparsa di errori di trasmissione.

Lo standard MIDI prevede l'uso di connettori circolari a standard DIN a 5 pin, molto diffusi in Europa per ogni genere di connessioni audio fino agli anni novanta. successivamente, per la maggior parte delle applicazioni sono stati sostituiti dai più pratici phono jack RCA. Anche in altre applicazioni in cui erano usati, quali il collegamento delle tastiere dei personal computer, sono stati adottati i connettori mini-DIN. I cavi MIDI, dotati di connettori DIN 5 a pin maschi ad entrambe le estremità, sono dunque rimasti una delle poche applicazioni per questo genere di connettori.

Esiste anche una versione dello standard che sfrutta il collegamento USB ed è in corso di sviluppo da parte della IETF una versione per il trasporto di segnali MIDI su Ethernet e Internet.

[modifica] L’interfaccia hardware

Gli strumenti e/o le attrezzature MIDI per poter comunicare, devono essere fisicamente connessi fra loro. A questo scopo lo standard MIDI prevede l'uso di una triade di connettori DIN a 5 poli (anche se solo i 3 poli centrali vengono utilizzati) che tramite un cavo pentapolare consentono il collegamento fisico tra gli strumenti.

I tre connettori vengono distinti come:

  • IN (consente allo strumento di ricevere informazioni).
  • OUT (consente la trasmissione delle informazioni).
  • THRU (consente allo strumento di ritrasmettere i dati ricevuti dal proprio MIDI IN verso un altro strumento).

I dati sono trasmessi dal Midi Out della tastiera, attraverso la presa Midi In vengono ricevuti dall'expander A il quale li reindirizza verso l'expander B attraverso la presa Midi Thru.

La reale configurazione dei connettori, per numero e presenza, dipende dalle funzioni per le quali uno strumento viene costruito. Su una "master keyboard" ad esempio, è frequente trovare 2 o 3 MIDI OUT e nessun MIDI THRU, visto che ciò che ci si aspetta da uno strumento del genere è la massima flessibilità nella trasmissione dei dati verso altre attrezzature.

[modifica] L'interfaccia software: il linguaggio midi

Una delle caratteristiche fondamentali del MIDI è l'essere un'interfaccia multicanale.

Grazie a delle applicazioni software chiamate sequencer, installabili sia in unità hardware specifiche, sia in normali personal computer, si possono registrare performance musicali sotto forma di messaggi MIDI, per poterle successivamente modificare e ri-ascoltare.

Il compito di sincronizzare le varie sequenze MIDI è delegato al "codice temporale MIDI", standard mondiale per la sincronizzazione della musica digitale, che costituisce un'implementazione del codice temporale SMPTE.

Un file MIDI è un file che contiene dati comunicabili tramite il protocollo MIDI. Il MIDI supporta fino 16 canali (1-16). Per spiegare cosa si intende per "canale midi" ("midi channel") utilizziamo una metafora. Pensiamo di dover inviare un messaggio ad un collega che pernotta in una delle 16 stanze a disposizione di un hotel. Oltre all'indirizzo dell'hotel, dovremo specificare il numero di stanza del nostro collega se vogliamo che il nostro messaggio sia recapitato correttamente. Pensiamo ora di avere, collegato in MIDI alla nostra tastiera, un modulo sonoro con la possibilità di suonare fino a 16 suoni diversi contemporaneamente (ossia multitmbrico a 16 parti), come facciamo a far eseguire la nostra musica ad uno solo di questi suoni? Facendo sì che nei nostri messaggi (midi) sia specificato il numero di canale (la stanza dell'hotel) e che quest'ultimo coincida con il canale midi impostato per lo strumento (o la parte di esso), destinato a rispondere al messaggio.

Le modalità per ottenere tutto ciò variano a seconda della tipologia degli strumenti utilizzati.

Tramite il formato .kar (abbreviazione di karaoke), estensione del MIDI, è anche possibile sincronizzare il testo di una canzone con la musica.

I messaggi midi indirizzabili tramite l'indicazione numerica di canale vengono chiamati "Channel Messages". Appartengono a questa famiglia due specie di messaggi i Channel Voices Messages e i Channel Mode Messages.

[modifica] Data type

Status bytes: gli status bytes sono numeri di otto cifre binarie in cui il bit più significativo (Most Significant Bit - MSB) è posto a 1. Questi byte servono ad identificare il tipo di messaggio, ovvero lo scopo dei data byte che li seguono; ad eccezione dei real-time messages, un nuovo Status byte obbligherà il ricevitore ad adottare un nuovo stato, anche se l'ultimo messaggio non è ancora stato completato.

Data bytes: a seguire gli Status Bytes (ad eccezione dei Real-time messages) ci possono essere uno o due Data Bytes che trasportano il contenuto del messaggio. I Data bytes sono numeri di otto cifre binarie in cui il bit più significativo (Most Significant Bit - MSB) è posto a 0. Per ogni Status byte deve sempre essere spedito il corretto numero di Data Bytes corrispondente; nel lato ricevitore, l'azione corrispondente al messaggio deve aspettare fino a quando non sono stati ricevuti tutti i Data bytes richiesti dallo Status byte corrispondente.

Running Status: solo per Voice e Mode Messages. quando uno Status byte viene ricevuto ed elaborato, in ricevitore rimarrà in quello stato fino alla ricezione di differente Status Byte; quindi, se lo stesso Status Byte si dovesse ripetere, esso può essere omesso in modo che ci sia bisogno di spedire solo i Data Byte. E allora, con il Running Status, un messaggio completo consiste unicamente di Data Bytes; il Running Status è particolarmente utile quando si devono spedire lunge stringhe di Note On/Off, dove "Note On con velocità 0" è usato come Note Off.

[modifica] Channel message

Un Channel message usa quattro bit nello Status Byte per indirizzare il messaggio ad uno dei sedici canali MIDI e quattro bit per definire tale messaggio. I channel message sono quindi usati dai ricevitori in un sistema il cui numero di canali corrisponde al numero di canali codificato all'interno dello Status Byte.

Uno strumento può ricevere messaggi MIDI da più di un canale. Il canale sul quale riceve le istruzioni principali è detto "Basic channel". Uno strumento può essere impostato in modo da ricevere dati di esecuzione (performance data) su canali multipli (incluso il basic channel). A questi ci si riferisce come "Voice channels".

Ci sono due tipi di Channel Message:

  • MODE per definire la risposta degli strumenti ai Voice messages. I mode messages sono spediti sul basic channel di uno strumento.
  • VOICE per controllare le voci di uno strumento. I voice messages sono spediti sui Voice channels;

[modifica] Channel mode

NB: un singolo strumento fisico può fungere da diversi strumenti virtuali. In questa trattazione, "strumento" si riferisce ad uno strumento virtuale.

I sintetizzatori ed altri strumenti contengono elementi di generazione del suono chiamati "voices". L'assegnamento delle voices è il processo algoritmico di instradare i note On/Off data dai messaggi MIDI in arrivo alle voices stesse, in modo che le note siano correttamente suonate.

Sono disponibili quattro Mode messages per definire le relazioni tra i sedici canali MIDI e i voice assignment dello strumento. Le quattro modalità sono determinate dalle proprietà Omni (On/Off), Poly and Mono. Poly e Mono sono mutuamente esclusive. Omni, quando on, abilita il ricevitore a ricevere Voice messages su tutti i Voice Channels. Quando off, il ricevitore accetterà solo i Voice Messages che provengono da Voice Channels selezionati.

Mono, quando on, riduce l'assegnamento di Voices a solo una Voice per Voice Channel (monophonic). Quando off (Poly on), un certo numero di Voices può essere allocato dal normale algoritmo di Voice assignment del ricevitore.

Un ricevitore o un trasmettitore MIDI operano con un solo Channel Mode alla volta. Dal momento che un singolo strumento può funzionare come un insieme di strumenti virtuali, esso può avere diversi Basic Channels. Tale strumento si comporta come se fosse più di un ricevitore ed ogni ricevitore può essere impostato con un differente Basic Channel. Ognuno di questi ricevitori può inoltre essere impostato con diversi Mode, sia attraverso il pannello dei controlli dello strumento sia attraverso Mode messages ricevuti sul Basic channel. Sebbene non sia un vero MIDI mode, questa maniera di operare è detta "Multi Mode".

[modifica] Channel voice

I channel voices messages consistono nel carico di informazioni trasmesse tra gli strumenti MIDI. Includono Note On, Note Off, program change, pitch-wheel change, aftertouch pressure e controller changes.

Un singolo Note On message consiste di 3 bytes, che richiedono 960 microsecondi per la trasmissione. Quando molte note sono suonate allo stesso tempo, i diversi Note On possono richiedere diversi millisecondi per essere trasmessi. Questo può rendere complicato per il MIDI rispondere ad un grande numero di eventi simultanei senza provocare un ritardo lieve ma udibile. Questo problema si riduce usando il Running Status mode.

[modifica] Control Rpn & Nrpn

Sono controlli che permettono di gestire estensioni specifiche per il dispositivo o l'applicazione da controllare. I controlli RPN sono specificati dallo standard MIDI, quelli NRPN sono specifici per ogni dispositivo e devono quindi essere documentati nel manuale in dotazione. Sono implementati come successione di Control Change.

[modifica] NRPN, Non-Registered Parameter Number

Il parametro da modificare è designato tramite i Controller 98 e 99, il valore da inserire è specificato da:

  • Controller 6 (Data Entry MSB)
  • Controller 38 (Data Entry LSB)

In alternativa si può usare:

  • Controller 96 (Data Increment)
  • Controller 97 (Data Increment)

[modifica] RPN, Registered Parameter Number

Il parametro da modificare è designato tramite i Controller 100 e 101, il valore da inserire è specificato dagli stessi controller degli NRPN.

[modifica] System message

I System messages non sono codificati con i numeri di canale. Ci sono tipicamente tre tipi di System Messages.

  • System Common messages: I common messages riguardano tutti i ricevitori in un sistema, senza riguardo per il canale.
  • System Real messages: Sono usati per la sincronizzazione e sono destinati a tutte le unità basate sul clock (clock-based) in un sistema; contengono solamente lo status byte - non ci sono data bytes.
  • System Exclusive messages: Possono contenere un numero qualsiasi di data bytes e possono terminare sia con un "End Of Exclusive" (EOX) o con un qualsiasi status byte ad eccezione dei RealTime messages.

[modifica] Tavole MIDI

[modifica] Voci correlate

[modifica] Collegamenti esterni

  • musica Portale Musica: accedi alle voci di Wikipedia che trattano di musica
Strumenti personali