Differenze tra le versioni di "Musical Instrument Digital Interface"

m
Bot: fix citazione web (v. discussione)
m (Bot: fix citazione web (v. discussione))
 
=== Cenni storici ===
Il protocollo MIDI nacque all'inizio degli [[anni 1980|anni ottanta]]: il prototipo fu 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''. Esso era risposta all'esigenza di far comunicare tra loro diversi strumenti musicali elettronici, tenendo conto delle caratteristiche di ognuno. Diversi costruttori, ad esempio [[Oberheim]] e [[Roland Corporation|Roland]], offrivano già sui propri strumenti alcuni sistemi di interfacciamento. Queste interfacce, però, basate su algoritmi proprietari, garantivano il funzionamento solo su strumenti dello stesso costruttore. Il protocollo di Smith e Wood si presentava, invece, come un sistema in grado di garantire il funzionamento su strumenti di costruttori diversi. Per garantire la compatibilità tra strumenti, di case produttrici diverse, ogni costruttore fu invitato a partecipare alla stesura delle prime specifiche MIDI. SCI, Roland, [[Yamaha Corporation|Yamaha]] e [[Kawai]] furono i primi produttori di strumenti digitali ad aderire alla definizione e alla diffusione del MIDI.
 
Il progetto terminato 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 e approvate da queste due associazioni. La diffusione delle specifiche MIDI spetta all'IMA (International Midi Association).
Il file MIDI, o più formalmente ''Standard Midi File'' (SMF), è un archivio contenente dati, informazioni espresse in uno o più byte. Tali informazioni organizzano, pertanto, un sistema compiuto di regole: il protocollo (o codice) MIDI . Esse sono comprensibili dai programmi-lettori MIDI (sequencer), che le riconoscono e le interpretano come ''istruzioni'' da eseguire.
 
Le specifiche dello SMF furono sviluppate dalla ''MIDI Manufacturers Association'' (MMA).
 
Il file MIDI è composto da complesse strutture, tecnicamente chiamate: '''Track Chunk''' (''Blocco-traccia''), formate da un certo numero di byte (informazioni-istruzioni). Questi Blocchi che – come si è detto – sono costituiti da insiemi di byte, sono parti fondamentali, costitutive e, pertanto, necessarie del file MIDI. Ogni Blocco è un insieme di informazioni che conferisce a questa struttura un senso compiuto ai fini del riconoscimento e della esecuzione del file MIDI da parte del sequencer MIDI.
I principali Dati Meta:
 
'''FF 58 04 xx yy 60 08''' – ''Metro della misura'' (Tempo di Suddivisione della misura):
 
* FF: definisce il tipo di evento (ossia che è un Dato Meta);
 
* 58: identifica il tipo di Dato Meta (il Dato Meta che definisce la ''suddivisione della misura'');
* 04: quantità di byte contenuti nella parte seguente (''sempre'' 4);
 
* 0x: (byte variabile) numeratore del rapporto della suddivisione della misura (inserire il corrispondente numero in esadecimale: ad esempio per ¾ = 03),
* 04: quantità di byte contenuti nella parte seguente (''sempre'' 4);
* 0y: denominatore (il numero da inserire è quello, espresso in esadecimali, della potenza necessaria per elevare il numero 2 al numero del denominatore prescelto):
 
* 0x: (byte variabile) numeratore del rapporto della suddivisione della misura (inserire il corrispondente numero in esadecimale: ad esempio per ¾ = 03),
 
* 0y: denominatore (il numero da inserire è quello, espresso in esadecimali, della potenza necessaria per elevare il numero 2 al numero del denominatore prescelto):
 
: · per indicare i quarti: y = 2 (poiché 2<sup>2</sup> = 4);
: · per indicare i sedicesimi: y = 4 (poiché 2<sup>4</sup> = 16 );
 
però
 
: · per indicare i mezzi (ad esempio {{frazione|3|2}}): y = 1 (poiché 2<sup>1</sup> = 2 );
: · per indicare l’unità (ad esempio {{frazione|2|1}}): y = 0;
 
* 60: definisce che ci sono 96 clock midi in una nota da ¼;
 
* 08: definisce che ci sono 8 note da {{frazione|1|32}} in una nota ¼.
 
 
'''FF 51 03 xx xx xx''' – ''Tempo metronomico'' (velocità del brano; evento che indica quanti microsecondi ci debbono essere in un quarto di nota):
 
* FF: definisce il tipo di evento (ossia che è un Dato Meta);
 
* 51: identifica il tipo di Dato Meta (Dato Media che definisce il Tempo metronomico);
* 03: quantità di byte contenuti nella parte seguente del Dato Meta (sempre 3);
 
* 03: quantità di byte contenuti nella parte seguente del Dato Meta (sempre 3);
 
* xx xx xx: il tempo metronomico prescelto ottenuto rispetto alle possibili suddivisioni di misura sempre secondo i seguenti calcoli:
 
 
In caso di cambio di suddivisione della misura si deve ''sempre'' ricalcolare il tempo metronomico della nuova suddivisione sulla base della precedente tabella.
 
 
'''FF 59 02 xx yy''' – ''Chiave di Tonalità'' (indica la Tonalità della scala):
 
* FF: definisce il tipo di evento (ossia che è un Dato Meta);
 
* 59: identifica il tipo di Dato Meta (Dato Media che definisce il Tempo metronomico);
 
* 02: quantità di byte contenuti nella parte seguente (sempre 2);
 
* xx: numero di [[Alterazione (musica)|accidenti]] in [[Armatura (musica)|chiave]]:
 
 
* FF: definisce il tipo di evento (ossia che è un Dato Meta);
 
* 03: identifica il tipo di Dato Meta (Dato Meta che definisce il Nome della Traccia);
 
* ll: la lunghezza in byte dell’evento (esprime la quantità di caratteri presenti nella stringa alfanumerica che dà il nome alla traccia);
 
* xxxx: il testo reale che sarà visualizzato presso la traccia evidenziata del sequencer.
 
 
* FF: definisce il tipo di evento (ossia che è un Dato Meta);
 
* 05: identifica il tipo di Dato Meta (Dato Meta che esprime il testo del canto presente in un brano musicale);
 
* ll: la lunghezza in byte dell’evento (esprime la quantità di caratteri presenti nella stringa alfanumerica);
 
* xxxx: il testo reale che può essere formato da una sola ed intera stringa alfanumerica (di qualunque lunghezza), priva all’interno di spazi fra i caratteri che la compongono; oppure contenente spazi fra i caratteri.
 
 
* 4D 54 68 64 : <small>intestazione di 4 byte del ''MIDI Track header chunk''</small>
 
* 00 00 00 06 : <small>questi 4 byte informano che seguiranno 6 byte di dati sino alla fine di questo ''chunk header''</small>
 
* 00 01 : <small>questi 2 byte informano che il file MIDI è del formato (tipo) 1</small>
 
* 00 02 : <small>questi 2 byte informano che dopo il MThd seguiranno 2 blocchi di traccia ''MTrk''</small>
 
* 01 80 : <small>informazione che specifica la risoluzione in impulsi per quarto di nota PPQN (in questo caso per ogni nota da un quarto vi sono 384 impulsi).</small>
 
 
* 4D 54 72 6B : <small>intestazione di 4 byte del ''MIDI Track chunk'' (informano che il blocco è una traccia successiva al MThd e che si tratta dunque di una '''MTrk''')</small>
 
* 00 00 00 19 : <small>questi 4 byte informano che seguiranno 25 byte di dati fino alla fine di questa traccia (''track chunk'')</small>
 
* 00 : <small>Tempo Delta. Questi 2 byte informano che il successivo evento rispetto al precedente si verificherà dopo zero PPQN, quindi immediatamente (senza alcun ritardo)</small>
 
* FF 58 04 03 02 60 08 : <small>evento Meta Dato. Questo Meta evento informa che le misure delle tracce musicali saranno suddivise in ¾</small>
 
* 00 : <small>Tempo Delta pari a zero PPQN. Il prossimo evento (FF 51 03 09 27 C0) avverrà dopo una quantità di tempo zero PPQN rispetto all’evento precedente (FF 58 04 03 02 60 08)</small>
 
* FF 51 03 09 27 C0 : <small>evento Meta Dato. Questo Meta evento informa che la velocità metronomica del brano midi è impostata a 100 battiti al minuto</small>
 
* 00 : <small>Tempo Delta pari a zero PPQN</small>
 
* FF 59 02 01 00 : <small>evento Meta Dato. Questo Meta evento informa che la tonalità della scala musicale possiede un diesis in chiave (SOL maggiore)</small>
 
* 00 : <small>Tempo Delta pari a zero PPQN</small>
 
* FF 2F 00 : <small>questi tre byte informano che ha termine il blocco traccia</small>
 
 
* 4D 54 72 6B : <small>intestazione di 4 byte del ''MIDI Track chunk'' (informano che il blocco è una traccia successiva al MThd e che si tratta dunque di una '''MTrk''')</small>
 
* 00 00 00 2A : <small>questi 4 byte informano che seguiranno 51 byte di dati fino alla fine di questa traccia (''track chunk'')</small>
 
* 00 : <small>Tempo Delta pari a zero PPQN</small>
 
* B0 07 64 : <small>Evento Midi: Control Change n. 7 (Volume). Questo dato di Control Change di tre byte informa che il volume generale delle note presenti nella traccia è impostato da questo momento a 64 (100 in decimale)</small>
 
* 00 : <small>Tempo Delta pari a zero PPQN</small>
 
* B0 0A 30 : <small>Evento Midi: Control Change n. 10 (Panpot). Questo dato di Control Change di tre byte informa che il Pan (ossia il bilanciamento dei volumi tra i due canali stereo è impostato da questo momento e per questa traccia a 30 [48 decimale])</small>
 
* 00 : <small>Tempo Delta pari a zero PPQN</small>
 
* B0 5B 40 : <small>Evento Midi: Control Change n. 91 (Riverbero). Questo dato di Control Change di tre byte informa che il Riverbero è impostato da questo momento e per questa traccia a 40 (64 decimale)</small>
 
* B0 5D 10 : <small>Evento Midi: Control Change n. 93 (Chorus). Questo dato di Control Change di tre byte informa che il Chorus è impostato da questo momento e per questa traccia a 10 (16 decimale)</small>
 
* 00 : <small>Tempo Delta pari a zero PPQN</small>
 
* C0 04 : <small>Evento MIDI: Program Change n. 4. Questo dato di Program Change di due byte informa che da quel momento sarà usato come strumento musicale presente al num. 4 (Piano Elettrico 1) della lista degli strumenti del Program Change</small>
 
* 00 : <small>Tempo Delta pari a zero PPQN</small>
 
* 90 45 64 : <small>Evento MIDI: ''NOTE ON''. Questo dato di tre byte informa che deve essere accesa (cominciare a suonare) la nota num. 45 esad. (LA) con una velocity (''velocità di pressione'') avente valore pari a 64 (100 decimale)</small>
 
* 86 00 : <small>Tempo Delta pari a 86 00 PPQN (con risoluzione 01 80 quello è il TΔ della minima)</small>
 
* 80 45 64 : <small>Evento MIDI: ''NOTE OFF''. Questo dato di tre byte informa che deve essere spenta (cessare di suonare) la nota num. 45 esad. (LA) con una velocity (velocità di pressione) avente valore pari a 64 (100 decimale)</small>
 
* 81 40 : <small>Tempo Delta pari a 81 40 PPQN (è il TΔ della croma)</small>
 
* 90 42 64 : <small>Evento MIDI: ''NOTE ON''. Questo dato di tre byte informa che deve essere accesa (cominciare a suonare) la nota numero 42 esadecimale (FA♯) con una velocity (''velocità di pressione'') avente valore pari a 64 (100 decimale)</small>
 
* 81 40 : <small>Tempo Delta pari a 81 40 PPQN (è il TΔ della croma)</small>
 
* 80 42 64 : <small>Evento MIDI: NOTE OFF. Questo dato di tre byte informa che deve essere spenta (cessare di suonare) la nota numero 42 esadecimale (FA♯) con una velocity (velocità di pressione) avente valore pari a 64 (100 decimale)</small>
 
* 00 : <small>Tempo Delta pari a zero PPQN</small>
 
* FF 2F 00 : <small>questi tre byte informano che ha termine il blocco traccia.</small>
 
* [[Steinberg Nuendo]]
* [[Guitar Pro]], Multipiattaforma
* [{{cita web|http://midi.brels.com |BRELS MIDI Editor (GNU/GPL)]}}
* [[MuseScore]], con licenza GNU GPL [http://www.musescore.com]
 
2 812 671

contributi