Il MIDI Musical Instrument Digital Interface Alvise Vidolin CSC Università di Padova Email: vidolin@dei.unipd.it 4 dicembre 2014 Alvise Vidolin e Paolo Zavagna 1 Protocollo MIDI - Indice Storia Elementi costitutivi Esempio di comunicazione Esempio di applicazione Caratteristiche musicali Tipi di informazione Trasmissione dei messaggi Struttura generale dei messaggi Standard MIDI file General MIDI 4 dicembre 2014 Alvise Vidolin e Paolo Zavagna 2
4 dicembre 2014 Alvise Vidolin e Paolo Zavagna 3 Storia del MIDI Nasce agli inizi degli anni Ottanta (1983) Necessità delle case costruttrici di strumenti musicali di trovare uno standard nella comunicazione fra gli strumenti digitali, naturale evoluzione dei sintetizzatori Nascono il Japan MIDI Standards Committee (JMSC) e la MIDI Manufacturers Association (MMA) 4 dicembre 2014 Alvise Vidolin e Paolo Zavagna 4
Elementi costitutivi del Midi Protocollo seriale di comunicazione (software): codifica i gesti prodotti dall esecutore che suona la musica Esempio: Numero del tasto premuto nella tastiera Velocità di pressione del tasto (Key-velocity) Valore dei controlli (volume, modulazioni, ecc.) Scelta del timbro (Program change) Ecc. Interfaccia MIDI: hardware necessario alla comunicazione Porta fisica Connettori Dispositivi di I/O 4 dicembre 2014 Alvise Vidolin e Paolo Zavagna 5 Esempio di comunicazione MIDI Dati MIDI Modulo di Sintesi audio 1 0 0 1 0 0 0 0 4 dicembre 2014 Alvise Vidolin e Paolo Zavagna 6
slaves Esempio di applicazione Midi out Master Midi Thru Midi in Expander 1 Expander 2 Expander n 4 dicembre 2014 Alvise Vidolin e Paolo Zavagna 7 Caratteristiche musicali del MIDI La qualità del suono generato dal sistema dipende dalla qualità dei sintetizzatori e non dai messaggi MIDI Separazione degli input device (es.: tastiera) dagli output device (es.: campionatori) Separazione fra controllo e sintesi: ogni input può controllare ogni output. Esempio 4 dicembre 2014 Alvise Vidolin e Paolo Zavagna 8
Esempio di possibilità musicali del MIDI software interattivo composizione algoritmica scrittura musicale sequencer qualsiasi output 4 dicembre 2014 Alvise Vidolin e Paolo Zavagna 9 Tipi di informazione Canale: indirizzo dove inviare i dati Il MIDI prevede 16 canali Traccia: flusso strutturato e autonomo di messaggi MIDI Patch: algoritmo o programma di generazione o di elaborazione del suono 4 dicembre 2014 Alvise Vidolin e Paolo Zavagna 10
Trasmissione dei messaggi Hardware: interfaccia operante a 31.25 kbaud (± 1%) con un bit di start (0 = on), 8 bit (1 byte) di dati e 1 bit di stop (1 = off) 10 bit per un periodo di circa 320 microsecondi con una trasmissione di tipo UART (Universal Asyncronous Receiver/Trasmitter per convertire i dati da paralleli a seriali) 4 dicembre 2014 Alvise Vidolin e Paolo Zavagna 11 Struttura generale dei messaggi Formato dei dati Tipi di messaggio Messaggi di voce Messaggi di canale Messaggio di sistema esclusivo 4 dicembre 2014 Alvise Vidolin e Paolo Zavagna 12
Formato dei dati Evento MIDI messaggio formato da uno o più bytes Byte Status Byte [byte di stato] (80H-FFH) [128-255] Data Byte [byte di dati] (00H-7FH) [0-127] 4 dicembre 2014 Alvise Vidolin e Paolo Zavagna 13 Tipi di messaggi MIDI Tipo di messaggio Messaggio di canale Messaggio di sistema di voce di modo esclusivo comune tempo reale Es. Note, Program, Control, Ecc. Omni on/off Mono/Poly 4 dicembre 2014 Alvise Vidolin e Paolo Zavagna 14
Messaggi di voce Messaggi di voce Note_off Note_on Program_change Control_change Channel_pressure (aftertouch) Polyphonic_key_pressure Pitch_bender_change Formato dei messaggi di voce Note_on Program_change Control_change Altri messaggi 4 dicembre 2014 Alvise Vidolin e Paolo Zavagna 15 Formato dei messaggi di voce Stato Dati 1 Dati 2 Lo stato (> 127) individua il tipo di messaggio e il canale (= stato + numero canale). I dati (< 128) possono essere 1 o 2 4 dicembre 2014 Alvise Vidolin e Paolo Zavagna 16
Messaggio di Note on Stato (144) Dati 1 Dati 2 NOTE ON Key Number Key Velocity 144 60 64 Esempio di attivazione nota DO centrale sul canale 1 dinamica mf Il messaggio di Note off ha lo stato = 128 e un solo dato di Key Number. Il messaggio di Note off si ottiene anche con un messaggio di Note on avente la Key Velocity = 0 4 dicembre 2014 Alvise Vidolin e Paolo Zavagna 17 Messaggio di program change Stato (192) Dati 1 Program change Program number 193 12 Esempio di attivazione del programma 12 sul canale 2 4 dicembre 2014 Alvise Vidolin e Paolo Zavagna 18
Messaggio di Control change Stato (176) Dati 1 Dati 2 CONTROL CHANGE Controller Valore 176 7 100 Esempio di assegnazione del valore 100 al controller numero 7 del canale 1. Il controller numero 7 viene normalmente assegnato al volume. 4 dicembre 2014 Alvise Vidolin e Paolo Zavagna 19 Altri messaggi di voce Channel_pressure (aftertouch) Stato (208) Dato1 (pressione) Polyphonic_key_pressure Stato (160) Dato1 (key) Dato2 (pressione) Pitch_bender_change Stato (224) Dato1 (MSB) Dato2 (LSB) 4 dicembre 2014 Alvise Vidolin e Paolo Zavagna 20
Messaggi di canale Specificano una delle 4 modalità di riposta del dispositivo: Mode Omni Poly/mono Descrizione 1 On Poly 2 On Mono 3 Off Poly 4 Off Mono messaggi voce ricevuti da tutti i canali e assegnati polifonicamente messaggi voce ricevuti da tutti i canali e assegnati a una sola voce messaggi voce ricevuti dal canale N e assegnati polifonicamente messaggi voce ricevuti dai canali compresi tra N e N + M -1 (max 16) e assegnati a una sola voce Si attiva con un messaggio di Control change Control Change 4 dicembre 2014 Alvise Vidolin e Paolo Zavagna 21 124 125 126 127 Messaggio di sistema esclusivo Stato Dato 1 Dato 2 Dato n EOX (messaggio di n byte di dati) 240 Dato 1 Dato 2 Dato n 247 Manifacturer ID Es. Yamaha = 67 I Dati vengono ignorati se non si riferiscono al Manifacturer voluto 4 dicembre 2014 Alvise Vidolin e Paolo Zavagna 22
Lo Standard Midi File (SMF) Memorizzare il flusso di dati MIDI SMF di tipo 1, 2 e 3 Meta eventi 4 dicembre 2014 Alvise Vidolin e Paolo Zavagna 23 Memorizzare il flusso di dati MIDI Consente di memorizzare un flusso di dati MIDI in un file (.mid) mantenendo la corretta collocazione temporale degli eventi Il protocollo MIDI non prevede ciò in quanto nella esecuzione dal vivo l esecutore realizza le azioni negli istanti temporali voluti Ogni evento MIDI è preceduto da un numero (timestamp) che rappresenta l intervallo temporale che separa un evento dal precedente Uno SMF è composto da Eventi (i messaggi MIDI), timestamp (intervalli temporali) e da Meta-Eventi (informazioni aggiuntive quali cambi di tempo, nomi di tracce e strumenti, porzioni di testo, ecc.) 4 dicembre 2014 Alvise Vidolin e Paolo Zavagna 24
SMF di tipo 0-1 - 2 Tipo 0: tutte le informazioni sono memorizzate su una unica traccia. E il formato con maggiore compatibilità fra i dispositivi MIDI Tipo 1: consente di definire più tracce autonome e simultanee Tipo 2: è una collezione di sequenze di tipo 0. 4 dicembre 2014 Alvise Vidolin e Paolo Zavagna 25 Meta eventi numero sequenza (opzionale) testo (commento) dati sul copyright nome della sequenza e della traccia nome dello strumento testo della canzone marker cue point prefisso di canale MIDI fine della traccia impostazione Tempo SMPTE offset tempo in chiave armatura in chiave specifico meta evento per sequencer 4 dicembre 2014 Alvise Vidolin e Paolo Zavagna 26
General MIDI Definisce dei preset indipendi dall hardware impiegato Fissa associazioni assolute tra canali, patch e timbri Assegna ad ogni valore di Program Change un timbro prestabilito 4 dicembre 2014 Alvise Vidolin e Paolo Zavagna 27 General MIDI (GM) Dotazioni minime per un sistema MIDI Generatori di suoni sistema di sintesi Numero di voci 24 voci simultanee sia per la melodia sia per le percussioni oppure 16 voci pr la melodia + 8 per le percussioni Canali MIDI supportati tutti 16 i canali MIDI ogni canale può suonare polifonicamente ogni canale può suonare uno strumento diverso le percussioni sono assegnate al canale 10 4 dicembre 2014 Alvise Vidolin e Paolo Zavagna 28
General MIDI (GM) Strumenti minimo 128 strumenti ( GM Sound Set ) minimo 47 percussioni ( GM Percussion Map ) Generatori di suoni (hardware) controllo del volume master connettore MIDI in (out e thru sono opzionali) uscita audio e cuffia stereo GM dotazioni minime del protocollo nota on/off registrazione d ottava: do centrale = nota MIDI 60 tutte le voci rispondono al velocity voci allocate dinamicamente 4 dicembre 2014 Alvise Vidolin e Paolo Zavagna 29 General MIDI (GM) Controller changes: # controller descrizione 1 Modulation 7 Volume 10 Pan 11 Expression 64 Sustain 121 Reset All Controllers 123 All Notes Off 4 dicembre 2014 Alvise Vidolin e Paolo Zavagna 30
MIDI Show Control (MSC) Dialogo con apparecchiature non musicali lighting (illuminazione) sound (suono) machinery (apparecchiature varie) video projection (proiezione) process control (controllori di movimento) pyro (fuoco) all-types (tutti i tipi) 4 dicembre 2014 Alvise Vidolin e Paolo Zavagna 31 MIDI Machine Control (MMC) Comunicare con le apparecchiature tradizionali più comuni per la registrazione e la post-produzione Comandi semplici e complessi Tipi di messaggi più numerosi che protocollo standard Comm (unication ctrl: control evnt: time event triggering gen: time code generator I/O: READ and WRITE sync: TC syncronizing math: TC mathematics MTC proc(edure pre-defined time: TC macchina 4 dicembre 2014 Alvise Vidolin e Paolo Zavagna 32
MIDI Implementation chart 4 dicembre 2014 Alvise Vidolin e Paolo Zavagna 33 Modello Data Versione MIDI Implementation chart Yamaha DX7 II- FD/D 4 dicembre 2014 Alvise Vidolin e Paolo Zavagna 34
Messaggi di canale di modo (categoria dei messaggi di Control Change) All Sound Off Reset All Controllers Local Control All Notes Off Omni Off Omni On Mono On (Poly Off) Poly On (Mono Off) 120 121 122 123 124 125 126 127 4 dicembre 2014 Alvise Vidolin e Paolo Zavagna 35 Messaggi di canale di voce Note-Off Note-On Poly Key Pressure Control Change Program Change Channel Pressure Pitch Bend 8nH 9nH AnH BnH (Table 3) CnH DnH EnH 4 dicembre 2014 Alvise Vidolin e Paolo Zavagna 36
4 messaggi di nota on 'contemporaneamente' 1 nota on = 3 bytes Totale 4 nota on = 120 bit 120 / 31250 = 0,00384 s 1 nota on ogni 1 ms circa 4 dicembre 2014 Alvise Vidolin e Paolo Zavagna 37 Messaggi di sistema comuni MIDI Time Code Quarter Frame Song Position Pointer Song Select Tune Request EOX (End Of Exclusive) F1H F2H F3H F6H F7H 4 dicembre 2014 Alvise Vidolin e Paolo Zavagna 38
Messaggi di sistema in tempo reale Timing Clock Start Continue Stop Active Sensing F8H FAH FBH FCH FEH System Reset FFH 4 dicembre 2014 Alvise Vidolin e Paolo Zavagna 39 4 dicembre 2014 Alvise Vidolin e Paolo Zavagna 40
4 dicembre 2014 Alvise Vidolin e Paolo Zavagna 41 4 dicembre 2014 Alvise Vidolin e Paolo Zavagna 42
4 dicembre 2014 Alvise Vidolin e Paolo Zavagna 43 Bibliografia MMA (ed.), The Complete MIDI 1.0 Detailed Specification, MIDI Manufacturers Association, Los Angeles, 1985-96. Gareth Loy, Musicians Make a Standard: The MIDI Phenomenon, CMJ, 9 (4), 1985. Ezio Rotamartir, MIDI, Muzzio, Padova, 1988. Giulio Clementi, Non solo MIDI, Berben, Ancona, 1989. Christopher Yavelow, Music and Microprocessors: MIDI and the State of the Art, in Curtis Roads (ed.), The Music Machine, MIT Press, Cambridge, 1989. Eric Lipscomb, Introduction into MIDI, North Texas Computing Center Newsletter, "Benchmarks", October 1989. Giovanni Perotti, MIDI Computer e musica, Jackson, Milano, 1990., Reti MIDI, Jackson, Milano, 1992. 4 dicembre 2014 Alvise Vidolin e Paolo Zavagna 44
Argomenti principali MIDI 1.0 Detailed Specification MIDI Time Code Standard MIDI File General MIDI MIDI Show Control MIDI Machine Control 4 dicembre 2014 Alvise Vidolin e Paolo Zavagna 45