Lezione 3 Messaggi MIDI Programmazione MIDI (Prof. Luca A. Ludovico) Messaggi MIDI • Sono mattoni per costruire performance • Apparecchiature MIDI comunicano tra di loro scambiandosi messaggi MIDI • Ogni jack MIDI Out in uso deve essere collegato con un MIDI In, mentre il MIDI In può ricevere messaggi da MIDI Out o da MIDI Thru Programmazione MIDI (Prof. Luca A. Ludovico) 3. Messaggi MIDI Protocollo di trasmissione • MIDI usa trasmissione seriale a 31250 bps • Parola: 8 bit (+2 bit per il controllo di errore) • Combinazioni possibili: 2^8 = 256 • Ciascuna parola può rappresentare un valore compreso tra 0 e 255 Programmazione MIDI (Prof. Luca A. Ludovico) 3. Messaggi MIDI Struttura dei messaggi MIDI • Ogni messaggio si compone di una o più parole, ed è costruito nel seguente modo: – – Byte di stato (obbligatorio), seguito da Byte di dati (0..n, a seconda del byte di stato) MIDI Out o MIDI Thru II Byte di dati Programmazione MIDI (Prof. Luca A. Ludovico) 3. Messaggi MIDI I Byte di dati Byte di stato MIDI In Byte di stato • Identifica il tipo di informazione inviata tramite il MIDI • Bit più significativo (MSB, most significant bit) posto a 1 – Valori ammissibili: [1000 0000..1111 1111]2 ossia [128..255]10 MIDI Out o MIDI Thru II Byte di dati Programmazione MIDI (Prof. Luca A. Ludovico) 3. Messaggi MIDI I Byte di dati Byte di stato MIDI In Byte di stato • Il primo bit è riservato a distinguere il byte di stato dai byte di dati. • I 3 bit seguenti identificano la funzione MIDI – 8 combinazioni possibili • I 4 bit restanti identificano il canale MIDI – 16 combinazioni possibili (canale 1 > canale 16) 1 funzione Programmazione MIDI (Prof. Luca A. Ludovico) 3. Messaggi MIDI canale Funzioni • • • • • • • • (1)000 (1)001 (1)010 (1)011 (1)100 (1)101 (1)110 (1)111 > > > > > > > > Note Off Note On Polyphonic Key Pressure (Aftertouch) Control change e Channel mode Program change Channel Pressure (After-touch) Pitch Wheel Change Funzioni di sistema comuni, in tempo reale ed esclusive 1 funzione Programmazione MIDI (Prof. Luca A. Ludovico) 3. Messaggi MIDI Byte di stato 0000 0001 0010 0011 … 1110 1111 > > > > Canale Canale Canale Canale 1 2 3 4 > Canale 15 > Canale 16 1 Programmazione MIDI (Prof. Luca A. Ludovico) 3. Messaggi MIDI canale Byte di dati • Contiene valori numerici il cui significato dipende dal Byte di stato. • Bit più significativo (MSB, most significant bit) posto a 0 – Valori ammissibili: [0000 0000..0111 1111]2 ossia [0..127]10 MIDI Out o MIDI Thru II Byte di dati Programmazione MIDI (Prof. Luca A. Ludovico) 3. Messaggi MIDI I Byte di dati Byte di stato MIDI In Altezza delle note (vedi prossima lezione) • Tipicamente, l’altezza delle note (pitch) è un parametro che viene passato come byte di dati. • Quanti sono i valori disponibili? 2(8-1) = 27 = 128 corrispondenti al range [0..127]10 • Significato semantico? Al Do centrale è associato il valore 6010 = (0)01111002 Al Do# = Reb è associato il valore 6110 = (0)01111012 … Programmazione MIDI (Prof. Luca A. Ludovico) 3. Messaggi MIDI Esempi • Sul canale trasmissivo: 20010, 110, 12010 MIDI Out o MIDI Thru 01111000 120 00000001 1 10111000 200 MIDI In Control change • Sul canale trasmissivo: 25510, 21310, 9810 MIDI Out o MIDI Thru 01100010 98 11010101 213 11111111 255 Channel aftertouch System reset Programmazione MIDI (Prof. Luca A. Ludovico) 3. Messaggi MIDI MIDI In Categorie di funzioni MIDI • Channel Voice Messages – Eventi MIDI essenziali per la performance musicale (es.: Note On, Note Off) • Channel Mode Messages – Comunicano ai dispositivi il modo di inviare o ricevere informazioni (es.: spegnimento di tutte le note) • System Common Messages – Messaggi comuni a tutti i dispositivi HW/SW della configurazione MIDI (es.: riferimento al MIDI Time Code, accordatura) • System Real Time Messages – Messaggi in tempo reale (es.: start e stop) • System Exclusive Messages – Impostazioni specifiche per il dispositivo (es.: trasferimento campioni) Programmazione MIDI (Prof. Luca A. Ludovico) 3. Messaggi MIDI Channel vs System • I messaggi di canale sono rivolti a tutti i dispositivi in ascolto su quel dato canale. • I messaggi di sistema sono rivolti potenzialmente a tutti i dispositivi presenti sulla catena MIDI • Non è detto che tutti i dispositivi siano in ascolto su un certo canale, anche se ricevono (e propagano su MIDI Thru) i 16 canali – Ad esempio, un messaggio di accensione della nota (NoteOn) è un Channel Voice Message che per definizione viene gestito solo dai synth in ascolto su quel canale • Non è detto che tutti i dispositivi della catena siano in grado di interpretare un messaggio di sistema – Ad esempio, un messaggio di ri-calibrazione degli oscillatori analogici (Tune Request) è un messaggio System Common, ma solo i synth analogici lo possono gestire correttamente Programmazione MIDI (Prof. Luca A. Ludovico) 3. Messaggi MIDI