Lezione 5
Messaggi Control Change
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)
5. Messaggi Control Change
Collocazione logica dei messaggi Control Change
Messaggi
MIDI
Channel
Voice
Messages
Note On
Channel
Mode
Messages
Note Off
Control
Change 0
…
…
Programmazione MIDI (Prof. Luca A. Ludovico)
5. Messaggi Control Change
System
Common
Messages
System Real
Time
Messages
System
Exclusive
Messages
Control
Change
Control
Change 119
Control
Change 120
…
Control
Change 127
Collocazione logica dei messaggi Control Change
Channel Voice
Channel Mode
I Byte
Byte di stato
II Byte
I Byte di dati
III Byte
II Byte di dati
(1)011cccc2
(0)00000002 = 010
…
…
…
…
(1)011cccc2
(0)11101112 = 11910
…
(1)011cccc2
(0)11110002 = 12010
…
…
…
…
(1)011cccc2
(0)11111112 = 12710
…
Programmazione MIDI (Prof. Luca A. Ludovico)
5. Messaggi Control Change
Struttura dei 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
II Byte di dati
I Byte di dati
Byte di stato
Val. di controllo
[0..127]10
Specificatore
[0..127]10
Control Change
1011cccc2
Programmazione MIDI (Prof. Luca A. Ludovico)
5. Messaggi Control Change
MIDI In
Osservazione sui 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 Off
Byte di stato: 1000cccc2
Note On
Note On
Byte di stato: 1001cccc2
• In questo caso, invece, tali bit identificano un generico
Control Change che viene poi specificato tramite il
I Byte di dati
Programmazione MIDI (Prof. Luca A. Ludovico)
5. Messaggi Control Change
Control Change
Byte di stato: 1011cccc2
Le categorie di 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]
Channel Voice
• Switch Controller
Controller a interruttore
I Byte di dati [64..69]
• Control Change Controller
Channel Mode
Controller per messaggi Channel Mode
I Byte di dati [120..127]
•
Osservazione: Alcuni identificatori numerici non sono stati attribuiti
Programmazione MIDI (Prof. Luca A. Ludovico)
5. Messaggi Control Change
Sezione 5.1
CONTROL CHANGE DI TIPO CHANNEL VOICE
Programmazione MIDI (Prof. Luca A. Ludovico)
5. Messaggi Control Change
Continuous Controller (Channel Voice)
• 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
Programmazione MIDI (Prof. Luca A. Ludovico)
5. Messaggi Control Change
Controller continui ad alta risoluzione
•
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
II Byte di dati
I Byte di dati
Byte di stato
Val. di controllo
[0..127]10
Specificatore
[0..127]10
Control Change
1011cccc2
Programmazione MIDI (Prof. Luca A. Ludovico)
5. Messaggi Control Change
MIDI In
Controller continui ad alta risoluzione
• 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
Messaggio 2
MIDI Out
o
MIDI Thru
Messaggio 1
II Byte di dati
I Byte di dati
Byte di stato
II Byte di dati
I Byte di dati
Byte di stato
Ultimi 7 bit
Specificatore
(LSB)
Control Change
1011cccc2
Primi 7 bit
Specificatore
(MSB)
Control Change
1011cccc2
Programmazione MIDI (Prof. Luca A. Ludovico)
5. Messaggi Control Change
MIDI In
Controller continui ad alta risoluzione
• 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
Programmazione MIDI (Prof. Luca A. Ludovico)
5. Messaggi Control Change
Esercizio sui controller ad alta risoluzione
• 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?
Programmazione MIDI (Prof. Luca A. Ludovico)
5. Messaggi Control Change
Soluzione
• 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
Messaggio 2
MIDI Out
o
MIDI Thru
II Byte di dati
I Byte di dati
Messaggio 1
Byte di stato
7 bit meno sign. Bank Select (LSB) Control Change
010010002
001000002
101100002
Programmazione MIDI (Prof. Luca A. Ludovico)
5. Messaggi Control Change
II Byte di dati
I Byte di dati
Byte di stato
7 bit più sign. Bank Select (MSB) Control Change
000000012
000000002
101100002
MIDI In
Principali Continuous Controller ad alta risoluzione
•
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)
Programmazione MIDI (Prof. Luca A. Ludovico)
5. Messaggi Control Change
Controller continui a bassa risoluzione
• 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)
Programmazione MIDI (Prof. Luca A. Ludovico)
5. Messaggi Control Change
Controller a interruttore (switch)
• 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)
Programmazione MIDI (Prof. Luca A. Ludovico)
5. Messaggi Control Change
Sezione 5.2
CONTROL CHANGE DI TIPO CHANNEL MODE
Programmazione MIDI (Prof. Luca A. Ludovico)
5. Messaggi Control Change
All Sound Off
• 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
II Byte di dati
I Byte di dati
Byte di stato
Valore di default
000000002 = 010
All Sound Off
011110002=12010
Control Change
1011cccc2
Programmazione MIDI (Prof. Luca A. Ludovico)
5. Messaggi Control Change
MIDI In
All Notes Off
• 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
II Byte di dati
I Byte di dati
Byte di stato
Valore di default
000000002 = 010
All Notes Off
011110112=12310
Control Change
1011cccc2
Programmazione MIDI (Prof. Luca A. Ludovico)
5. Messaggi Control Change
MIDI In
All Sound Off vs All Notes Off
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
Programmazione MIDI (Prof. Luca A. Ludovico)
5. Messaggi Control Change
Reset All Controllers
• 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
II Byte di dati
I Byte di dati
Valore di default Reset All Controllers
000000002 = 010
011110012=12110
Programmazione MIDI (Prof. Luca A. Ludovico)
5. Messaggi Control Change
Byte di stato
Control Change
1011cccc2
MIDI In
Local Control On/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: 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
II Byte di dati
I Byte di dati
Off: 000000002 = 010
Local Control
On: 011111112 = 12710 011110102=12210
Programmazione MIDI (Prof. Luca A. Ludovico)
5. Messaggi Control Change
Byte di stato
Control Change
1011cccc2
MIDI In
Local Control On/Off
• 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.
Local Control On
MIDI Out
Local Control Off
MIDI Out
Programmazione MIDI (Prof. Luca A. Ludovico)
5. Messaggi Control Change
MIDI In
MIDI Out
Local Control Off
Esempio di Local Control Off
•
Come evitare replicazione nella sintesi dei suoni della tastiera in una
configurazione sequencer, controller+synth, synth.
MIDI In
Local Control On
Eventi ripetuti
MIDI Out
Local Control On
MIDI Out
MIDI In
MIDI Thru
MIDI In
MIDI In
MIDI Out
Local Control Off
Eventi non ripetuti
Local Control Off
MIDI Out
Programmazione MIDI (Prof. Luca A. Ludovico)
5. Messaggi Control Change
MIDI In
MIDI Thru
MIDI In
Osservazioni sul II 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
L’appartenenza dei messaggi a questa famiglia impone la presenza di 2
byte di dati. Però il II Byte viene utilizzato in modo variabile, a seconda
dello specifico messaggio:
–
–
–
–
può portare un valore significativo ed essere perfettamente dimensionato
(controller a granularità grossolana)
può essere insufficiente a discriminare tra i valori richiesti (controller a
granularità raffinata)
può dover discriminare solo tra On/Off, caso in cui si sceglie una coppia di valori
di default tra i 128 possibili (switch controller, Local Control)
può essere del tutto superfluo, caso in cui si compila con un valore di default,
tipicamente 0 (All Sound Off, All Notes Off,…)
Programmazione MIDI (Prof. Luca A. Ludovico)
5. Messaggi Control Change
Collocazione logica dei messaggi Control Change
Messaggi
MIDI
Channel
Voice
Messages
Note On
Channel
Mode
Messages
Note Off
Control
Change 0
…
…
Programmazione MIDI (Prof. Luca A. Ludovico)
5. Messaggi Control Change
System
Common
Messages
System Real
Time
Messages
System
Exclusive
Messages
Control
Change
Control
Change 119
Control
Change 120
…
Control
Change 127
La sotto-categoria di Channel Mode
• Intervallo: [120..127]10
• Primi 4 messaggi
–
–
–
–
All Sound Off
Reset All Controllers
Local control On/Off
All Notes Off
(I
(I
(I
(I
Byte di dati
Byte di dati
Byte di dati
Byte di dati
=
=
=
=
12010)
12110)
12210)
12310)
• Altra parte di messaggi Control Change che rientrano nella famiglia
Channel Mode: prossima lezione
–
–
–
–
Omni Mode Off
Omni Mode On
Poly Mode Off
Poly Mode On
Programmazione MIDI (Prof. Luca A. Ludovico)
5. Messaggi Control Change
(I
(I
(I
(I
Byte di dati
Byte di dati
Byte di dati
Byte di dati
=
=
=
=
12410)
12510)
12610)
12710)
Scarica

Presentazione del corso