messaggi channel voice lezione 4 programmazione midi (prof. luca a. ludovico)
TRANSCRIPT
Messaggi Channel Voice
Lezione 4
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
Programmazione MIDI (Prof. Luca A. Ludovico)4. Messaggi Channel Voice
MIDI Outo
MIDI Thru
MIDI InII Byte di dati
Velocity[1..127]10
I Byte di dati
Pitch[0..127]10
Byte di stato
1001cccc2
• 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)
Codifica del pitch: notazione scientifica
Programmazione MIDI (Prof. Luca A. Ludovico)4. Messaggi Channel Voice
• 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
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
Programmazione MIDI (Prof. Luca A. Ludovico)4. Messaggi Channel Voice
• 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
Le ottave nel MIDI
Programmazione MIDI (Prof. Luca A. Ludovico)4. Messaggi Channel Voice
• 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
[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é Do centrale è sempre a 261.63 Hz ed è sempre numerato come pitch 60
Codifica della velocity
Programmazione MIDI (Prof. Luca A. Ludovico)4. Messaggi Channel Voice
• Velocity sfrutta il range [0..127]
Notazione musicale
Indicazione di intensità
Intervallo di velocity MIDI
Assente 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
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
Programmazione MIDI (Prof. Luca A. Ludovico)4. Messaggi Channel Voice
MIDI Outo
MIDI Thru
MIDI InII Byte di dati
Release Velocity[0..127]10
I Byte di dati
Pitch[0..127]10
Byte di stato
1000cccc2
• 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)
Note Off
Programmazione MIDI (Prof. Luca A. Ludovico)4. Messaggi Channel Voice
• 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.
Esempio
Programmazione MIDI (Prof. Luca A. Ludovico)4. Messaggi Channel Voice
• Messaggio100100100011111001000000
(1)0010010 (0)0111110 (0)1000000Byte di stato I Byte di dati II Byte di dati
Note On su canale 3
Pitch 62 (Re dell’ottava centrale)
Velocity 64 (mf)
Esercizio
Programmazione MIDI (Prof. Luca A. Ludovico)4. Messaggi Channel Voice
• Messaggio100100110100010101001111
(1)0010011 (0)1000101 (0)1001111Byte di stato I Byte di dati II Byte di dati
Note On su canale 4
Pitch 69 (La dell’ottava centrale)
Velocity 79 (mf, f)
Esercizio
Programmazione MIDI (Prof. Luca A. Ludovico)4. Messaggi Channel Voice
• Messaggio100100000011001100000000
(1)0010000 (0)0110011 (0)0000000Byte di stato I Byte di dati II Byte di dati
Note On su canale 1
Pitch 51 (Re# sotto ottava centrale)
Velocity 0 (Note Off)
Channel Pressure (o Channel Aftertouch)
Programmazione MIDI (Prof. Luca A. Ludovico)4. Messaggi Channel Voice
MIDI Outo
MIDI Thru
MIDI InByte di dati
Pressure[0..127]10
Byte di stato
1101cccc2
• 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
Channel Pressure (o Channel Aftertouch)
Programmazione MIDI (Prof. Luca A. Ludovico)4. Messaggi Channel Voice
• 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.
Polyphonic Aftertouch
Programmazione MIDI (Prof. Luca A. Ludovico)4. Messaggi Channel Voice
• 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 Outo
MIDI Thru
MIDI InII Byte di dati
Pressure[0..127]10
I Byte di dati
Pitch[0..127]10
Byte di stato
1010cccc2
Esempio di channel vs polyphonic aftertouch
Programmazione MIDI (Prof. Luca A. Ludovico)4. Messaggi Channel Voice
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
Esempio di channel vs polyphonic aftertouch
Programmazione MIDI (Prof. Luca A. Ludovico)4. Messaggi Channel Voice
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
Program Change
Programmazione MIDI (Prof. Luca A. Ludovico)4. Messaggi Channel Voice
MIDI Outo
MIDI Thru
MIDI InByte di dati
Num. di programma[0..127]10
Byte di stato
1100cccc2
• 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
Program Change
Programmazione MIDI (Prof. Luca A. Ludovico)4. Messaggi Channel Voice
• 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
Pitch Bend Change
Programmazione MIDI (Prof. Luca A. Ludovico)4. Messaggi Channel Voice
MIDI Outo
MIDI Thru
MIDI InII Byte di dati
Most Significant Byte (MSB)[0..127]10
I Byte di dati
Least Significant Byte(LSB)[0..127]10
Byte di stato
1110cccc2
• 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.
Pitch Bend Change
Programmazione MIDI (Prof. Luca A. Ludovico)4. Messaggi Channel Voice
• 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
Pitch Bend Change
Programmazione MIDI (Prof. Luca A. Ludovico)4. Messaggi Channel Voice
• 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