Lezione 4 Messaggi Channel Voice Programmazione MIDI (Prof. Luca A. Ludovico) 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) 4. Messaggi Channel Voice Note On • Generato alla pressione di un tasto – Stretto legame del MIDI con i primi controller a tastiera • Struttura del messaggio: – – 1 byte di stato (1)001cccc 2 byte di dati, rispettivamente per esprimere l’altezza (pitch) della nota e la sua intensità (velocity) MIDI Out o MIDI Thru II Byte di dati I Byte di dati Byte di stato Velocity [1..127]10 Pitch [0..127]10 1001cccc2 Programmazione MIDI (Prof. Luca A. Ludovico) 4. Messaggi Channel Voice MIDI In Codifica del pitch: notazione scientifica • La notazione scientifica associa al nome della nota (e agli eventuali accidenti) un numero arabo indicante l'ottava – Definizione proposta dall'Acoustical Society of America nel 1939 • Nomi delle note secondo il sistema letterale anglosassone C D E F G A B in luogo di Do Re Mi Fa Sol La Si • C0 è il Do nella regione della più bassa frequenza udibile (corrisponde a una frequenza di circa 16 Hz); C4 è il Do centrale Programmazione MIDI (Prof. Luca A. Ludovico) 4. Messaggi Channel Voice Il pitch nella teoria musicale Programmazione MIDI (Prof. Luca A. Ludovico) 4. Messaggi Channel Voice Frequenza ISO delle note Programmazione MIDI (Prof. Luca A. Ludovico) 4. Messaggi Channel Voice Codifica del pitch nel MIDI • Obiettivi e origini storiche del MIDI • Sistema temperato, per cui Do# ha la stessa frequenza di Reb, ecc. • Nei sistemi MIDI le note sono numerate da 0 (corrispondente a C-1 in notazione scientifica) a 127 (corrispondente a G9 in notazione scientifica) – Range di valori rappresentabili superiore a quello considerato dalla notazione scientifica Programmazione MIDI (Prof. Luca A. Ludovico) 4. Messaggi Channel Voice Mappatura sulla tabella ISO di MIDI e pianoforte Programmazione MIDI (Prof. Luca A. Ludovico) 4. Messaggi Channel Voice Le ottave nel MIDI • A seconda del software e dell'hardware in uso, può capitare che convenzionalmente: – – – Si utilizzi la notazione scientifica [Do centrale è C4] Si consideri come "ottava 0" quella che comincia dalla nota dal pitch MIDI 0, cioè da C-1 in notazione scientifica Calcolo dell’ottava o a partire dal MIDI pitch mp: o = mp / 12 [Do centrale è C5] Si usi la numerazione convenzionale per la musicologia, che numera l’ottava centrale come terza ottava, quindi la nota più bassa del range MIDI è C-2 [Do centrale è C3] • Ma importa davvero? No, perché le specifiche fissano il Do centrale (261.63 Hz) sul pitch 60. Programmazione MIDI (Prof. Luca A. Ludovico) 4. Messaggi Channel Voice Codifica della velocity • Velocity sfrutta il range [0..127] Notazione musicale Indicazione di intensità Assente Intervallo di velocity MIDI 0 ppp Più che pianissimo 1..15 pp Pianissimo 16..31 p Piano 32..47 mp Mezzo piano 48.63 mf Mezzo forte 64..79 f Forte 80..95 ff Fortissimo 96..111 fff Più che fortissimo 112..127 Programmazione MIDI (Prof. Luca A. Ludovico) 4. Messaggi Channel Voice Codifica della velocity • Non tutti i controller sono in grado di leggere questo valore, non tutti i dispositivi di ricezione lo sanno interpretare – – Valore di default: 64 Esempio: tastiere pesate • La velocity è concettualmente differente dal volume: influisce su come viene generato il suono, ma non è necessariamente un aumento del volume – Esempio: suoni più brillanti, o uso di campioni differenti Programmazione MIDI (Prof. Luca A. Ludovico) 4. Messaggi Channel Voice Note Off • Generato al rilascio di un tasto (precedentemente premuto). • Non significa automaticamente interruzione del suono • Struttura del messaggio – – 1 byte di stato (1)000cccc 2 byte di dati, rispettivamente per esprimere l’altezza (pitch) della nota da rilasciare e la velocità del gesto (release velocity) MIDI Out o MIDI Thru II Byte di dati I Byte di dati Byte di stato Release Velocity [0..127]10 Pitch [0..127]10 1000cccc2 Programmazione MIDI (Prof. Luca A. Ludovico) 4. Messaggi Channel Voice MIDI In Note Off • Variante adottata da molti dispositivi: utilizzare un messaggio Note On con velocity pari a 0. Non ha ripercussioni sulla polifonia. • Cosa avviene se si rilascia una nota mai generata con un messaggio Note On? Nulla! • Cosa avviene se non viene mai ricevuto un messaggio Note Off corrispondente a un Note On? Esiste un messaggio di controllo All Notes Off per rilasciare tutte le note per cui il dispositivo non ha ricevuto messaggi Note Off. Programmazione MIDI (Prof. Luca A. Ludovico) 4. Messaggi Channel Voice Esempio • Messaggio 100100100011111001000000 (1)0010010 Byte di stato (0)0111110 I Byte di dati (0)1000000 II Byte di dati Note On su canale 3 Pitch 62 (Re dell’ottava centrale) Velocity 64 (mf) Programmazione MIDI (Prof. Luca A. Ludovico) 4. Messaggi Channel Voice Esercizio • Messaggio 100100110100010101001111 (1)0010011 Byte di stato (0)1000101 I Byte di dati (0)1001111 II Byte di dati Note On su canale 4 Pitch 69 (La dell’ottava centrale) Velocity 79 (mf, f) Programmazione MIDI (Prof. Luca A. Ludovico) 4. Messaggi Channel Voice Esercizio • Messaggio 100100000011001100000000 (1)0010000 Byte di stato (0)0110011 I Byte di dati (0)0000000 II Byte di dati Note On su canale 1 Pitch 51 (Re# sotto ottava centrale) Velocity 0 (Note Off) Programmazione MIDI (Prof. Luca A. Ludovico) 4. Messaggi Channel Voice Channel Pressure (o Channel Aftertouch) • Generato quando varia la pressione di un tasto già premuto. • Struttura del messaggio – – 1 byte di stato (1)101cccc 1 byte di dati, che rappresenta la variazione di pressione rispetto a quella iniziale MIDI Out o MIDI Thru Programmazione MIDI (Prof. Luca A. Ludovico) 4. Messaggi Channel Voice Byte di dati Byte di stato Pressure [0..127]10 1101cccc2 MIDI In Channel Pressure (o Channel Aftertouch) • Comportamento dei sintetizzatori? Può variare. – Ad es.: effetto vibrato. • Cosa avviene in caso di polifonia (su uno stesso canale)? La variazione di pressione più forte (su una delle note) influenza l’intensità di tutte le restanti note, oppure se ne considera il valore medio. Programmazione MIDI (Prof. Luca A. Ludovico) 4. Messaggi Channel Voice Polyphonic Aftertouch • Generato quando varia la pressione di un tasto già premuto, in un contesto potenzialmente polifonico. Ogni nota può avere un proprio valore indipendente. • Struttura del messaggio – – 1 byte di stato (1)010cccc 2 byte di dati, rispettivamente per esprimere l’altezza (pitch) della nota e la variazione di pressione MIDI Out o MIDI Thru II Byte di dati I Byte di dati Byte di stato Pressure [0..127]10 Pitch [0..127]10 1010cccc2 Programmazione MIDI (Prof. Luca A. Ludovico) 4. Messaggi Channel Voice MIDI In Esempio di channel vs polyphonic aftertouch Byte di stato I Byte di dati II Byte di dati Battuta.Suddivisione Note On, ch. 3 C5 64 1.1 Note On, ch. 3 A4 64 1.1 Ch. Aftertouch, ch. 3 64 - 2.1 Ch. Aftertouch, ch. 3 127 - 3.3 Ch. Aftertouch, ch. 3 64 - 4.3 Ch. Aftertouch, ch. 3 0 - 6.1 Note On, ch. 3 C5 0 7.1 Note On, ch. 3 A4 0 7.1 Programmazione MIDI (Prof. Luca A. Ludovico) 4. Messaggi Channel Voice Esempio di channel vs polyphonic aftertouch Byte di stato I Byte di dati II Byte di dati Battuta.Suddivisione Note On, ch. 3 C5 64 1.1 Note On, ch. 3 A4 64 1.1 Poly. Aftertouch, ch. 3 C5 32 2.1 Poly. Aftertouch, ch. 3 A4 64 2.1 Poly. Aftertouch, ch. 3 C5 78 3.3 Poly. Aftertouch, ch. 3 A4 127 3.3 Poly. Aftertouch, ch. 3 C5 32 4.3 Poly. Aftertouch, ch. 3 A4 64 4.3 Poly. Aftertouch, ch. 3 C5 0 6.1 Poly. Aftertouch, ch. 3 A4 0 6.1 Note On, ch. 3 C5 0 7.1 Note On, ch. 3 A4 0 7.1 Programmazione MIDI (Prof. Luca A. Ludovico) 4. Messaggi Channel Voice Problemi legati al channel e al polyphonic aftertouch • I dispositivi in grado di leggere il comportamento del musicista devono essere dotati di sensori e meccanismi intrinsecamente più complessi, quindi più costosi. – Ad esempio, tra il 1992 e il 2010 non è stato realizzato alcun controller MIDI in grado di inviare messaggi di polyphonic aftertouch (che tipicamente venivano gestiti tramite sequencer). Più di recente è stato implementato sui modelli Infinite Response VAX77 e Rhodes MK 7 AM Series Electric Piano. • Messaggi di questo tipo tendono a saturare facilmente il canale trasmissivo, dato che vengono inviati in grande quantità per inseguire il comportamento del musicista. Programmazione MIDI (Prof. Luca A. Ludovico) 4. Messaggi Channel Voice Program Change • Generato quando si richiede a un modulo sonoro la variazione di un timbro, o a un generico dispositivo il caricamento di un preset • Struttura del messaggio – – 1 byte di stato (1)100cccc 1 byte di dati, pari al nuovo numero di programma MIDI Out o MIDI Thru Byte di dati Byte di stato Num. di programma [0..127]10 1100cccc2 Programmazione MIDI (Prof. Luca A. Ludovico) 4. Messaggi Channel Voice MIDI In Program Change • Attenzione: in un modulo per la sintesi sonora, cambiare il programma è diverso da cambiare il banco di suoni – – Il programma determina un timbro tra tanti timbri contenuti nel banco Il banco è una determinata collezione di timbri, e viene variato con un messaggio Sound Bank Control Change • Nei moduli sonori, si è adottato uno standard che fa corrispondere allo stesso numero di Program lo stesso timbro: General MIDI Programmazione MIDI (Prof. Luca A. Ludovico) 4. Messaggi Channel Voice Pitch Bend Change • Generato da un controller che fa variare “morbidamente” la frequenza base della nota, con effetto di glissando • Struttura del messaggio – – 1 byte di stato (1)110cccc 2 byte di dati, per graduare accuratamente l’intervallo 27+7 = 214 = 16384 tacche, divise in 8192 inf. e 8191 sup. MIDI Out o MIDI Thru II Byte di dati I Byte di dati Most Significant Least Significant Byte (MSB) Byte(LSB) [0..127]10 [0..127]10 Programmazione MIDI (Prof. Luca A. Ludovico) 4. Messaggi Channel Voice Byte di stato 1110cccc2 MIDI In Pitch Bend Change • Valore centrale: (0)1000000 (0)0000000 = 819210 – – I byte dati (LSB) = 0 II byte dati (MSB) = 64 • Una tacca sopra: (0)1000000 (0)0000001 = 819310 – – I byte dati (LSB) = 1 II byte dati (MSB) = 64 • Una tacca sotto: (0)0111111 (0)1111111 = 819110 – – I byte dati (LSB) = 127 II byte dati (MSB) = 63 Programmazione MIDI (Prof. Luca A. Ludovico) 4. Messaggi Channel Voice Pitch Bend Change • La quantità di pitch bend in termini assoluti (Pitch Wheel Range) dipende da come è configurato il modulo sonoro • Le specifiche MIDI raccomandano la copertura di [-2..+2] semitoni • Se il dispositivo lo consente, è possibile riconfigurare questo parametro per far variare l’intonazione ad es. su un’intera ottava Programmazione MIDI (Prof. Luca A. Ludovico) 4. Messaggi Channel Voice