Messaggi Control Change Lezione 5 Programmazione MIDI (Prof. Luca A. Ludovico)
-
Upload
mariano-cosentino -
Category
Documents
-
view
221 -
download
2
Transcript of Messaggi Control Change Lezione 5 Programmazione MIDI (Prof. Luca A. Ludovico)
![Page 1: Messaggi Control Change Lezione 5 Programmazione MIDI (Prof. Luca A. Ludovico)](https://reader034.fdocuments.in/reader034/viewer/2022052522/5542eb4b497959361e8b7c43/html5/thumbnails/1.jpg)
Messaggi Control Change
Lezione 5
Programmazione MIDI (Prof. Luca A. Ludovico)
![Page 2: Messaggi Control Change Lezione 5 Programmazione MIDI (Prof. Luca A. Ludovico)](https://reader034.fdocuments.in/reader034/viewer/2022052522/5542eb4b497959361e8b7c43/html5/thumbnails/2.jpg)
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)5. Messaggi Control Change
![Page 3: Messaggi Control Change Lezione 5 Programmazione MIDI (Prof. Luca A. Ludovico)](https://reader034.fdocuments.in/reader034/viewer/2022052522/5542eb4b497959361e8b7c43/html5/thumbnails/3.jpg)
Collocazione logica dei messaggi Control Change
Programmazione MIDI (Prof. Luca A. Ludovico)5. Messaggi Control Change
![Page 4: Messaggi Control Change Lezione 5 Programmazione MIDI (Prof. Luca A. Ludovico)](https://reader034.fdocuments.in/reader034/viewer/2022052522/5542eb4b497959361e8b7c43/html5/thumbnails/4.jpg)
Collocazione logica dei messaggi Control Change
Programmazione MIDI (Prof. Luca A. Ludovico)5. Messaggi Control Change
I ByteByte di stato
II ByteI Byte di dati
III ByteII Byte di dati
(1)011cccc2 (0)00000002 = 010 …
Channel Voice
… … …
(1)011cccc2 (0)11101112 = 11910
…
(1)011cccc2 (0)11110002 = 12010
…
Channel Mode
… … …
(1)011cccc2 (0)11111112 = 12710
…
![Page 5: Messaggi Control Change Lezione 5 Programmazione MIDI (Prof. Luca A. Ludovico)](https://reader034.fdocuments.in/reader034/viewer/2022052522/5542eb4b497959361e8b7c43/html5/thumbnails/5.jpg)
Struttura dei messaggi Control Change
Programmazione MIDI (Prof. Luca A. Ludovico)5. Messaggi Control Change
• Insieme di 128 eventi o azioni trasmessi attraverso il MIDI. Ciascun evento viene identificato da un proprio numero, espresso nel I Byte di dati.
• Il Byte di stato identifica un (qualsiasi) messaggio Control Change tramite la combinazione 1011cccc2 = [176..191]10
• Il messaggio è formato poi da 2 Byte di dati– I Byte di dati: Control Change da eseguire– II Byte di dati: valore per il Control Change selezionato
MIDI Out o
MIDI Thru
MIDI InII Byte di dati
Val. di controllo[0..127]10
I Byte di dati
Specificatore[0..127]10
Byte di stato
Control Change1011cccc2
![Page 6: Messaggi Control Change Lezione 5 Programmazione MIDI (Prof. Luca A. Ludovico)](https://reader034.fdocuments.in/reader034/viewer/2022052522/5542eb4b497959361e8b7c43/html5/thumbnails/6.jpg)
Osservazione sui messaggi Control Change
Programmazione MIDI (Prof. Luca A. Ludovico)5. Messaggi Control Change
• Analizzando la struttura dei messaggi fin qui descritti, si nota che in generale l’identificativo del messaggio è codificato tramite il secondo, terzo e quarto bit più significativi del Byte di stato.
• Esempio: Note Off Note On
• In questo caso, invece, tali bit identificano un generico Control Change che viene poi specificato tramite il I Byte di dati
Control ChangeByte di stato: 1011cccc2
Note OnByte di stato: 1001cccc2
Note OffByte di stato: 1000cccc2
![Page 7: Messaggi Control Change Lezione 5 Programmazione MIDI (Prof. Luca A. Ludovico)](https://reader034.fdocuments.in/reader034/viewer/2022052522/5542eb4b497959361e8b7c43/html5/thumbnails/7.jpg)
Le categorie di Control Change
Programmazione MIDI (Prof. Luca A. Ludovico)5. Messaggi Control Change
• Continuous Controller Controller continui I Byte di dati [0..101]Due categorie:– Ad alta risoluzione [0..19] [32..51]– A bassa risoluzione [70..101]
• Switch Controller Controller a interruttore I Byte di dati [64..69]
• Control Change Controller Controller per messaggi Channel ModeI Byte di dati [120..127]
• Osservazione: Alcuni identificatori numerici non sono stati attribuitiChannel Voice
Channel Mode
![Page 8: Messaggi Control Change Lezione 5 Programmazione MIDI (Prof. Luca A. Ludovico)](https://reader034.fdocuments.in/reader034/viewer/2022052522/5542eb4b497959361e8b7c43/html5/thumbnails/8.jpg)
CONTROL CHANGE DI TIPO CHANNEL VOICE
Sezione 5.1
Programmazione MIDI (Prof. Luca A. Ludovico)5. Messaggi Control Change
![Page 9: Messaggi Control Change Lezione 5 Programmazione MIDI (Prof. Luca A. Ludovico)](https://reader034.fdocuments.in/reader034/viewer/2022052522/5542eb4b497959361e8b7c43/html5/thumbnails/9.jpg)
Continuous Controller (Channel Voice)
Programmazione MIDI (Prof. Luca A. Ludovico)5. Messaggi Control Change
• Inviano informazioni di posizione sui controller con continuità
• Esempi di controller: slider, wheel (rotelle), wheel con richiamo in posizione centrale, joystick, pedali sensibili alla pressione, ecc.
• Generano gran numero di dati per indicare i cambiamenti nel tempo al fine di aggiornare i dispositivi in ricezione
• Due famiglie: – A bassa risoluzione – Sfruttano solo 128 possibili valori (livelli, posizioni, …)– Ad alta risoluzione – Permettono, ove possibile e richiesto, di ampliare il numero di possibili valori (livelli, posizioni, …); richiedono uno stratagemma nella
rappresentazione del messaggio
![Page 10: Messaggi Control Change Lezione 5 Programmazione MIDI (Prof. Luca A. Ludovico)](https://reader034.fdocuments.in/reader034/viewer/2022052522/5542eb4b497959361e8b7c43/html5/thumbnails/10.jpg)
Controller continui ad alta risoluzione
Programmazione MIDI (Prof. Luca A. Ludovico)5. Messaggi Control Change
• Controller ad alta risoluzione: permettono di disporre di un numero più alto di valori, ove richiesto.
• Logica dell’MSB e dell’LSB: se 128 valori non sono sufficienti, si estende l’intervallo a 128 x 128 = 16384 valori – Attenzione: non necessariamente tutti in uso
• Problema: la struttura del messaggio Control Change non può cambiare, e si dispone sempre di un solo byte per i valori veri e propri (II Byte di dati)
MIDI Out o
MIDI Thru
MIDI InII Byte di dati
Val. di controllo[0..127]10
I Byte di dati
Specificatore[0..127]10
Byte di stato
Control Change1011cccc2
![Page 11: Messaggi Control Change Lezione 5 Programmazione MIDI (Prof. Luca A. Ludovico)](https://reader034.fdocuments.in/reader034/viewer/2022052522/5542eb4b497959361e8b7c43/html5/thumbnails/11.jpg)
Controller continui ad alta risoluzione
Programmazione MIDI (Prof. Luca A. Ludovico)5. Messaggi Control Change
• Stratagemma: spezzare il valore su 2 messaggi MIDI in serie, entrambi di tipo Control Change, con il I Byte di dati differente:– Messaggio 1 per il valore più grossolano, o MSB (Most Significant Byte)– Messaggio 2 per il valore più fine, o LSB (Least Significant Byte)
• L’unione di MSB e LSB fornisce nel complesso 14 bit per la rappresentazione di un singolo valore
MIDI Out o
MIDI Thru
MIDI InII Byte di dati
Primi 7 bit
I Byte di dati
Specificatore(MSB)
Byte di stato
Control Change1011cccc2
II Byte di dati
Ultimi 7 bit
I Byte di dati
Specificatore(LSB)
Byte di stato
Control Change1011cccc2
Messaggio 2
Messaggio 1
![Page 12: Messaggi Control Change Lezione 5 Programmazione MIDI (Prof. Luca A. Ludovico)](https://reader034.fdocuments.in/reader034/viewer/2022052522/5542eb4b497959361e8b7c43/html5/thumbnails/12.jpg)
Controller continui ad alta risoluzione
Programmazione MIDI (Prof. Luca A. Ludovico)5. Messaggi Control Change
• Non sempre la granularità fine è supportata
– Se il dispositivo master non supporta i controller [32..63], la parte di valore LSB per i controller [0..31] non potrà mai essere generata e trasmessa
– Se il dispositivo master supporta i controller [32..63] ma il dispositivo slave no, la controparte LSB per i controller MSB [0..31] sarà trasmessa ma lo slave ignorerà tali messaggi
– Se tanto il master quanto lo slave gestiscono i controller [32..63], questo tipo di Control Change avrà una risoluzione fine
![Page 13: Messaggi Control Change Lezione 5 Programmazione MIDI (Prof. Luca A. Ludovico)](https://reader034.fdocuments.in/reader034/viewer/2022052522/5542eb4b497959361e8b7c43/html5/thumbnails/13.jpg)
Esercizio sui controller ad alta risoluzione
Programmazione MIDI (Prof. Luca A. Ludovico)5. Messaggi Control Change
• Si consideri un modulo sonoro multitimbrico che dispone di 200 banchi da 128 timbri ciascuno. Si ipotizzi di inviargli messaggi sul canale 1.
E’ sufficiente utilizzare il controller continuo di Bank Select con granularità grossolana?
Come devono essere valorizzati i messaggi da inviare sul canale trasmissivo?
![Page 14: Messaggi Control Change Lezione 5 Programmazione MIDI (Prof. Luca A. Ludovico)](https://reader034.fdocuments.in/reader034/viewer/2022052522/5542eb4b497959361e8b7c43/html5/thumbnails/14.jpg)
Soluzione
Programmazione MIDI (Prof. Luca A. Ludovico)5. Messaggi Control Change
• Non è possibile utilizzare solo il messaggio Control Change di Bank Select a risoluzione grossolana in quanto consentirebbe di indirizzare solo 2^7 = 128 banchi. E’ richiesto l’utilizzo di Bank Select con MSB e LSB.
• 20010 = 110010002 che significa (0)0000001 (0)1001000
MIDI Out o
MIDI Thru
MIDI InII Byte di dati
7 bit più sign.000000012
I Byte di dati
Bank Select (MSB)000000002
Byte di stato
Control Change101100002
II Byte di dati
7 bit meno sign.010010002
I Byte di dati
Bank Select (LSB)001000002
Byte di stato
Control Change101100002
Messaggio 2
Messaggio 1
![Page 15: Messaggi Control Change Lezione 5 Programmazione MIDI (Prof. Luca A. Ludovico)](https://reader034.fdocuments.in/reader034/viewer/2022052522/5542eb4b497959361e8b7c43/html5/thumbnails/15.jpg)
Principali Continuous Controller ad alta risoluzione
Programmazione MIDI (Prof. Luca A. Ludovico)5. Messaggi Control Change
• Bank Select (0 grossolano, 32 fine)
• Modulation Wheel (1 grossolano, 33 fine)
• Breath Control (2 grossolano, 34 fine)
• Foot Controller (4 grossolano, 36 fine)
• Portamento Time (5 grossolano, 37 fine)
• Channel Volume (7 grossolano, 39 fine)
• Balance (8 grossolano, 40 fine)
• Pan (10 grossolano, 42 fine)
![Page 16: Messaggi Control Change Lezione 5 Programmazione MIDI (Prof. Luca A. Ludovico)](https://reader034.fdocuments.in/reader034/viewer/2022052522/5542eb4b497959361e8b7c43/html5/thumbnails/16.jpg)
Controller continui a bassa risoluzione
Programmazione MIDI (Prof. Luca A. Ludovico)5. Messaggi Control Change
• Non ammettono granularità fine, quindi non necessitano di alias
• Controllano (a distanza) alcuni parametri del suono che si potrebbero impostare manualmente tramite pomelli sul modulo sonoro
• Esempi notevoli: – Sound Controller 3 o Release Time (controller 72)– Sound Controller 4 o Attack Time (controller 73)– Sound Controller 5 o Brightness (controller 74)– Portamento Control (controller 84)– Tremolo Level (controller 92)– Chorus Level (controller 93)
![Page 17: Messaggi Control Change Lezione 5 Programmazione MIDI (Prof. Luca A. Ludovico)](https://reader034.fdocuments.in/reader034/viewer/2022052522/5542eb4b497959361e8b7c43/html5/thumbnails/17.jpg)
Controller a interruttore (switch)
Programmazione MIDI (Prof. Luca A. Ludovico)5. Messaggi Control Change
• Provengono da controller On/Off e richiedono solo 2 valori. Convenzionalmente: – Off = 0 (o qualsiasi valore <= 63)– On = 127 (o qualsiasi valore >= 64)
• Esempi notevoli: – Damper Pedal o Sustain (controller 64)– Portamento On/Off (controller 65)– Sostenuto (controller 66)– Soft Pedal (controller 67)
![Page 18: Messaggi Control Change Lezione 5 Programmazione MIDI (Prof. Luca A. Ludovico)](https://reader034.fdocuments.in/reader034/viewer/2022052522/5542eb4b497959361e8b7c43/html5/thumbnails/18.jpg)
CONTROL CHANGE DI TIPO CHANNEL MODE
Sezione 5.2
Programmazione MIDI (Prof. Luca A. Ludovico)5. Messaggi Control Change
![Page 19: Messaggi Control Change Lezione 5 Programmazione MIDI (Prof. Luca A. Ludovico)](https://reader034.fdocuments.in/reader034/viewer/2022052522/5542eb4b497959361e8b7c43/html5/thumbnails/19.jpg)
All Sound Off
Programmazione MIDI (Prof. Luca A. Ludovico)5. Messaggi Control Change
• Silenzia tutti i suoni correntemente in esecuzione (ad es. Note On non conclusi dai corrispettivi Note Off)
• Il Byte di stato identifica un messaggio Control Change tramite la combinazione 1011cccc2 = [176..191]10
• Il messaggio è formato poi da 2 Byte di dati con valori di default– I Byte di dati: 12010 (identifica questo messaggio Control Change)
– II Byte di dati: 0 (valore di default)
MIDI Out o
MIDI Thru
MIDI InII Byte di dati
Valore di default000000002 = 010
I Byte di dati
All Sound Off011110002=12010
Byte di stato
Control Change1011cccc2
![Page 20: Messaggi Control Change Lezione 5 Programmazione MIDI (Prof. Luca A. Ludovico)](https://reader034.fdocuments.in/reader034/viewer/2022052522/5542eb4b497959361e8b7c43/html5/thumbnails/20.jpg)
All Notes Off
Programmazione MIDI (Prof. Luca A. Ludovico)5. Messaggi Control Change
• Impone messaggi di Note Off per tutte le note correntemente in esecuzione (ossia Note On non ancora conclusi da Note Off)
• Il Byte di stato identifica un messaggio Control Change tramite la combinazione 1011cccc2 = [176..191]10
• Il messaggio è formato poi da 2 Byte di dati con valori di default– I Byte di dati: 12310 (identifica questo messaggio Control Change)
– II Byte di dati: 0 (valore di default)
MIDI Out o
MIDI Thru
MIDI InII Byte di dati
Valore di default000000002 = 010
I Byte di dati
All Notes Off011110112=12310
Byte di stato
Control Change1011cccc2
![Page 21: Messaggi Control Change Lezione 5 Programmazione MIDI (Prof. Luca A. Ludovico)](https://reader034.fdocuments.in/reader034/viewer/2022052522/5542eb4b497959361e8b7c43/html5/thumbnails/21.jpg)
All Sound Off vs All Notes Off
Programmazione MIDI (Prof. Luca A. Ludovico)5. Messaggi Control Change
Differenza
• All Notes Off impone messaggi Note Off per tutte le note attualmente in esecuzione. Il comportamento conseguente non è l’automatica interruzione del suono, ma dipende da altri fattori – Esempi: pressione dell’Hold Pedal, rilascio naturale delle note
• All sound Off tacita istantaneamente il suono prodotto dal dispositivo. – Spesso è usato dai sequencer per tacitare in modo istantaneo tutti i suoni quando l’utente schiaccia il tasto "Stop" durante
l’esecuzione
![Page 22: Messaggi Control Change Lezione 5 Programmazione MIDI (Prof. Luca A. Ludovico)](https://reader034.fdocuments.in/reader034/viewer/2022052522/5542eb4b497959361e8b7c43/html5/thumbnails/22.jpg)
Reset All Controllers
Programmazione MIDI (Prof. Luca A. Ludovico)5. Messaggi Control Change
• Ripristino di tutti i controller del dispositivo ad uno stato iniziale ideale– Es.: Modulation wheel a 0, pedali in posizione di riposo, ecc.
• Il Byte di stato identifica un messaggio Control Change tramite la combinazione 1011cccc2 = [176..191]10
• Il messaggio è formato poi da 2 Byte di dati con valori di default– I Byte di dati: 12110 (identifica questo messaggio Control Change)
– II Byte di dati: 0 (valore di default)
MIDI Out o
MIDI Thru
MIDI InII Byte di dati
Valore di default000000002 = 010
I Byte di dati
Reset All Controllers011110012=12110
Byte di stato
Control Change1011cccc2
![Page 23: Messaggi Control Change Lezione 5 Programmazione MIDI (Prof. Luca A. Ludovico)](https://reader034.fdocuments.in/reader034/viewer/2022052522/5542eb4b497959361e8b7c43/html5/thumbnails/23.jpg)
Local Control On/Off
Programmazione MIDI (Prof. Luca A. Ludovico)5. Messaggi Control Change
• Il Byte di stato identifica un messaggio Control Change tramite la combinazione 1011cccc2 = [176..191]10
• Il messaggio è formato poi da 2 Byte di dati con valori di default– I Byte di dati: 12210 (identifica questo messaggio Control Change)
– II Byte di dati: 010 per Off, 12710 per On
• Il secondo Byte di dati emula un interruttore On/Off.
MIDI Out o
MIDI Thru
MIDI InII Byte di dati
Off: 000000002 = 010
On: 011111112 = 12710
I Byte di dati
Local Control011110102=12210
Byte di stato
Control Change1011cccc2
![Page 24: Messaggi Control Change Lezione 5 Programmazione MIDI (Prof. Luca A. Ludovico)](https://reader034.fdocuments.in/reader034/viewer/2022052522/5542eb4b497959361e8b7c43/html5/thumbnails/24.jpg)
Local Control On/Off
Programmazione MIDI (Prof. Luca A. Ludovico)5. Messaggi Control Change
• Abilita/disabilita il controllo locale in quei dispositivi che integrano un controller e un modulo sonoro.– Esempio: tastiera con funzioni di sintesi
• In entrambi i casi (Local Control On e Off), i circuiti elettrici o i generatori di suono ricevono comunque i messaggi Channel Voice dal MIDI In. Se Local Control è On, li ricevono anche dal controller, se Local Control è Off, solo dal MIDI In.
MIDI Out
Local Control On
MIDI Out
Local Control Off
MIDI Out
Local Control OffMIDI In
![Page 25: Messaggi Control Change Lezione 5 Programmazione MIDI (Prof. Luca A. Ludovico)](https://reader034.fdocuments.in/reader034/viewer/2022052522/5542eb4b497959361e8b7c43/html5/thumbnails/25.jpg)
Esempio di Local Control Off
Programmazione MIDI (Prof. Luca A. Ludovico)5. Messaggi Control Change
• Come evitare replicazione nella sintesi dei suoni della tastiera in una configurazione sequencer, controller+synth, synth.
Local Control OnEventi ripetuti
Local Control OffEventi non ripetuti
MIDI In MIDI Thru MIDI In
Local Control Off
MIDI Out
MIDI In
MIDI Thru MIDI In
Local Control On
MIDI InMIDI Out
MIDI In MIDI Out
MIDI Out
![Page 26: Messaggi Control Change Lezione 5 Programmazione MIDI (Prof. Luca A. Ludovico)](https://reader034.fdocuments.in/reader034/viewer/2022052522/5542eb4b497959361e8b7c43/html5/thumbnails/26.jpg)
Osservazioni sul II Byte di dati
Programmazione MIDI (Prof. Luca A. Ludovico)5. Messaggi Control Change
• AAA
![Page 27: Messaggi Control Change Lezione 5 Programmazione MIDI (Prof. Luca A. Ludovico)](https://reader034.fdocuments.in/reader034/viewer/2022052522/5542eb4b497959361e8b7c43/html5/thumbnails/27.jpg)
Collocazione logica dei messaggi Control Change
Programmazione MIDI (Prof. Luca A. Ludovico)5. Messaggi Control Change
![Page 28: Messaggi Control Change Lezione 5 Programmazione MIDI (Prof. Luca A. Ludovico)](https://reader034.fdocuments.in/reader034/viewer/2022052522/5542eb4b497959361e8b7c43/html5/thumbnails/28.jpg)
La sotto-categoria di Channel Mode
Programmazione MIDI (Prof. Luca A. Ludovico)5. Messaggi Control Change
• Intervallo: [120..127]10
• Primi 4 messaggi– All Sound Off (I Byte di dati = 12010)
– Reset All Controllers (I Byte di dati = 12110)
– Local control On/Off (I Byte di dati = 12210)
– All Notes Off (I Byte di dati = 12310)
• Altra parte di messaggi Control Change che rientrano nella famiglia Channel Mode: prossima lezione– Omni Mode Off (I Byte di dati = 12410)
– Omni Mode On (I Byte di dati = 12510)
– Poly Mode Off (I Byte di dati = 12610)
– Poly Mode On (I Byte di dati = 12710)