Lezione 9
Messaggi System Common
e System Real Time
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)
9. Messaggi System Common e System Real Time
Caratteristiche comuni
• Sono messaggi «system» e non «channel»: non è
richiesta l’informazione di canale.
I 4 bit meno significativi servono ad identificare lo
specifico messaggio, anziché il canale
• Il Byte di stato inizia con 1111
 Attenzione: in un certo senso anche per i messaggi System Exclusive
• Potenzialmente si tratta di 16 messaggi, ma in realtà
sono 6 system common + 6 real-time
 Quattro combinazioni risultano indefinite
Programmazione MIDI (Prof. Luca A. Ludovico)
9. Messaggi System Common e System Real Time
Sezione 9.1
MESSAGGI SYSTEM COMMON
Programmazione MIDI (Prof. Luca A. Ludovico)
9. Messaggi System Common e System Real Time
Messaggi System Common
• Pensati come messaggi di sistema e non in relazione a
un canale specifico
• Complessivamente 6 messaggi, il cui Byte di stato ha
struttura (1)111 0 xxx (manca informazione sul canale)
• Il numero di byte di dati è eterogeneo: 0, 1 o 2 a
seconda dello specifico messaggio
…
MIDI Out
o
MIDI Thru
Programmazione MIDI (Prof. Luca A. Ludovico)
9. Messaggi System Common e System Real Time
Byte di stato
11110xxx2
MIDI In
MIDI Time Code (MTC)
• Versione MIDI di SMPTE Time Code (vedi lezione 8)
• Struttura del messaggio:
–
–
1 byte di stato (1)1110001
1 byte di dati, per rappresentare parte dell’indirizzo temporale
e il time code usato
MIDI Out
o
MIDI Thru
I Byte di dati
Byte di stato
Indirizzo
[0..127]10
MTC Quarter Frame
111100012
Programmazione MIDI (Prof. Luca A. Ludovico)
9. Messaggi System Common e System Real Time
MIDI In
Song Position Pointer
• Imposta la posizione di riproduzione di un brano, in
risposta a comandi Start, Stop e Continue (vedi
messaggi Real Time).
–
Attenzione: dopo il posizionamento, non avvia la riproduzione
• Struttura del messaggio:
–
–
1 byte di stato (1)1110010
2 byte di dati, per rappresentare la posizione su 14 bit in termini
di LSB e MSB
MIDI Out
o
MIDI Thru
II Byte di dati
I Byte di dati
Byte di stato
Posizione MSB
[1..127]10
Posizione LSB
[0..127]10
111100102
Programmazione MIDI (Prof. Luca A. Ludovico)
9. Messaggi System Common e System Real Time
MIDI In
Song Position Pointer
• Come si rappresenta la posizione? Tramite al più
214 = 16.384 valori, che corrispondono a.. ?
• Timing Clock: viene inviato 24 volte per ogni pulsazione
 24 tick per pulsazione
• Nella logica SPP uno step corrisponde a 6 tick, quindi si
hanno 24/6 = 4 step per pulsazione
–
Facendo corrispondere convenzionalmente la pulsazione al
valore ritmico di un quarto, ogni step SPP corrisponde a un
sedicesimo
Programmazione MIDI (Prof. Luca A. Ludovico)
9. Messaggi System Common e System Real Time
pulsazione
pulsazione
pulsazione
Song Position Pointer
step
step
step
step
step
Durata della battuta in 2/2, 4/4, ecc.
Durata della battuta in 3/4, 6/8, ecc.
• L’indicazione di tempo non è rilevante per il MIDI, che
ragiona a numero di pulsazioni e step
–
–
In MIDI ha senso parlare di «n-esimo step della m-esima
pulsazione», non di «n-esima figura ritmica della m-esima
battuta» (ad esempio terzo ottavo di battuta 5)
Si può comunque passare dalla seconda definizione alla prima, a
patto di conoscere l’indicazione di tempo (ad esempio il terzo
ottavo di battuta 5 nel tempo di 6/8)
Programmazione MIDI (Prof. Luca A. Ludovico)
9. Messaggi System Common e System Real Time
Esempi
• Esempi
–
–
2 byte di dati, ossia 14 bit corrispondono a un massimo di 16.384
valori da un sedicesimo in un brano, pari a 4.096 pulsazioni da un
quarto
In un tempo di 4/4 (o 2/2, …) sono 1024 battute, in 3/4 sono circa
1635 battute.
•
Si consideri che il primo movimento della V Sinfonia di Mahler, in tempo 2/2,
consta di 416 battute.
• Osservazione
–
Le song MIDI vengono convenzionalmente fatte iniziare sul beat
numerato 0.
Dunque, se il valore ricevuto per la Song Position è 8, il
dispositivo punta al primo sedicesimo del terzo quarto.
Programmazione MIDI (Prof. Luca A. Ludovico)
9. Messaggi System Common e System Real Time
Esercizio [5 min]
•
Come fare in modo che un sequencer (o un altro dispositivo MIDI)
punti a battuta 33, inizio della seconda pulsazione in un brano in 4/4?
•
Risultato: SPP deve puntare allo step 516. Infatti:
32 x 4 x 4
4
516
+
=
(1)1110010
SPP
•
(numero di step in 32 battute)
(numero di step della prima pulsaz.)
(0)0000100
LSB
(0)0000100
MSB
Non si conta il primo sedicesimo della seconda pulsazione perché la
numerazione parte da 0.
Programmazione MIDI (Prof. Luca A. Ludovico)
9. Messaggi System Common e System Real Time
Song Select
• Carica nella memoria di un sequencer (e dei dispositivi
collegati) il brano dal numero selezionato, a partire da
un set di song MIDI.
• Struttura del messaggio:
–
–
1 byte di stato (1)1110011
1 byte di dati, per rappresentare il numero del brano. Quindi un
set può comprendere fino a 128 song
MIDI Out
o
MIDI Thru
I Byte di dati
Byte di stato
Numero del
brano
[0..127]10
Song Select
111100112
Programmazione MIDI (Prof. Luca A. Ludovico)
9. Messaggi System Common e System Real Time
MIDI In
Tune Request
• Il dispositivo ricevente avvia una procedura di autoaccordatura per calibrare i propri oscillatori
–
Tipico dei moduli sonori con circuiti elettrici analogici
• Struttura del messaggio:
–
1 byte di stato (1)1110110
MIDI Out
o
MIDI Thru
Programmazione MIDI (Prof. Luca A. Ludovico)
9. Messaggi System Common e System Real Time
Byte di stato
Tune Request
111101102
MIDI In
System Exclusive (SysEx) & End of Exclusive (EOX)
• Coppia di messaggi per iniziare/concludere un
messaggio System Exclusive (si veda la prossima lezione)
• Struttura del messaggio SysEx:
1 byte di stato (1)1110000, seguito da n byte di dati che
rappresentano il vero e proprio messaggio System
Exclusive
• Struttura del messaggio End of Exclusive:
1 byte di stato (1)1110111
Programmazione MIDI (Prof. Luca A. Ludovico)
9. Messaggi System Common e System Real Time
Riassunto
• Parte fissa | Flag
•
•
•
•
•
•
•
•
(1)1110000
(1)1110001
(1)1110010
(1)1110011
(1)1110100
(1)1110101
(1)1110110
(1)1110111
(0 = System Common)
| Parte variabile
SysEx
MIDI Time Code Quarter Frame
Song Position Pointer
Song Select
Reserved
Reserved
Tune Request
End of Exclusive
Programmazione MIDI (Prof. Luca A. Ludovico)
9. Messaggi System Common e System Real Time
Sezione 9.2
MESSAGGI SYSTEM REAL TIME
Programmazione MIDI (Prof. Luca A. Ludovico)
9. Messaggi System Common e System Real Time
Messaggi Real Time
• Controllano in tempo reale tutti i dispositivi del sistema,
e sono indipendenti dal canale. Si usano per
sincronizzare i dispositivi basati sul clock (es. sequencer
e batterie elettroniche)
• Vengono inviati con stringenti requisiti temporali
–
–
Messaggi snelli, costituiti da un unico byte (byte di stato)
Possono interpolarsi ai byte di altri messaggi (vedi prossima
slide)
• Complessivamente 6 messaggi, il cui Byte di stato ha
struttura (1)111 1 xxx (manca informazione sul canale)
Programmazione MIDI (Prof. Luca A. Ludovico)
9. Messaggi System Common e System Real Time
Interpolazione di messaggi
• Esempio: interpolazione messaggi generici
(ad es. Note On e Note On, o Note Off e Control Change)
–
Il mittente lo sa, ma il destinatario non li può ricostruire
?
?
?
?
• Esempio: interpolazione di un messaggio generico con un
Real Time
–
Il mittente lo sa, il destinatario lo riconosce ed estrapola
Programmazione MIDI (Prof. Luca A. Ludovico)
9. Messaggi System Common e System Real Time
(MIDI) Timing Clock
• Segnale di sincronizzazione basato sul tempo (BPM)
• Invio di 24 tick per pulsazione (vedi lezione 8), che si
comportano come impulsi
• Sincronizzazione tramite il solo byte di stato, posto a
(1)1111000
MIDI Out
o
MIDI Thru
Programmazione MIDI (Prof. Luca A. Ludovico)
9. Messaggi System Common e System Real Time
Byte di stato
Timing Clock
111110002
MIDI In
Start, Stop e Continue
• Controllano una sequenza MIDI in uno o più slave.
–
–
–
–
Start: portarsi a Song Position 0 (inizio della sequenza)
Stop: fermare la riproduzione mettendola in pausa
Continue: riprendere la riproduzione dal punto di interruzione
Un eventuale messaggio SPP permetterà di riposizionare il
punto di riproduzione
MIDI Out
o
MIDI Thru
Programmazione MIDI (Prof. Luca A. Ludovico)
9. Messaggi System Common e System Real Time
Byte di stato
Start: 111110102
Continue: 111110112
Stop: 111111002
MIDI In
Esercizio [10 min]
• Si voglia caricare da un set la song numerata 12, mandarla in
esecuzione dall’inizio, metterla in pausa, riavviarne la riproduzione
dal punto corrente, portarsi all’inizio del terzo quarto di battuta 1
ed eseguirla da quel punto.
Si mostri la sequenza di messaggi MIDI richiesti.
1.
2.
3.
4.
5.
6.
7.
Song select
Start
Stop
Continue
Stop
Song Position Pointer
Continue
Programmazione MIDI (Prof. Luca A. Ludovico)
9. Messaggi System Common e System Real Time
(1)1110011 (0)0001100
(1)1111010
(1)1111100
(1)1111011
(1)1111100
(1)1110010 (0)0001000 (0)0000000
(1)1111011
Active Sensing
• Abilita la funzionalità di Active Sensing sui dispositivi
riceventi, che da quel momento si attendono almeno un
messaggio MIDI ogni 300 ms
–
–
Se alla porta MIDI ricevente non viene spedito alcun evento per 270 ms, il
mittente sa di dover mandare un nuovo messaggio Active Sensing
Se il destinatario non riceve nulla, considera chiusa tale porta di connessione e
invia un comando All Notes Off al modulo sonoro
• Si tratta di una caratteristica opzionale dei dispositivi,
non sempre implementata
MIDI Out
o
MIDI Thru
Programmazione MIDI (Prof. Luca A. Ludovico)
9. Messaggi System Common e System Real Time
Byte di stato
Active Sensing
111111102
MIDI In
System Reset
• Riporta tutti i parametri di un dispositivo MIDI ai valori
preimpostati (valori di fabbrica, o valori all’istante di
accensione)
• Viene ricevuto da tutti i dispositivi, su tutti i canali
MIDI Out
o
MIDI Thru
Programmazione MIDI (Prof. Luca A. Ludovico)
9. Messaggi System Common e System Real Time
Byte di stato
System Reset
111111112
MIDI In
Riassunto
• Parte fissa | Flag
•
•
•
•
•
•
•
•
(1)1111000
(1)1111001
(1)1111010
(1)1111011
(1)1111100
(1)1111101
(1)1111110
(1)1111111
(1 = System Real Time)
Timing Clock
Reserved
Start
Continue
Stop
Reserved
Active Sensing
System Reset
Programmazione MIDI (Prof. Luca A. Ludovico)
9. Messaggi System Common e System Real Time
| Parte variabile
CONCLUSIONI
Programmazione MIDI (Prof. Luca A. Ludovico)
9. Messaggi System Common e System Real Time
Considerazione generale sui messaggi MIDI
• Come riconoscere l’ID di un messaggio MIDI? Il
riferimento iniziale è dato in generale dal II, III e IV bit
più significativo dello Status byte.
• A seconda di tali valori (e di conseguenza della famiglia
di messaggi), l’ID dello specifico messaggio è codificato:
–
–
esclusivamente in tali bit per tutti i messaggi Channel Voice, ad
eccezione dei Control Change
nel I Byte di dati per tutti i messaggi Control Change (parte dei
Channel Voice e tutti i Channel Mode)
Status byte: 1011cccc ove cccc identifica il canale
–
tramite il V, VI, VII e VIII bit dello Status Byte per i messaggi
System Common, System Real Time (e System Exclusive)
Status byte: 1111xxxx ove xxxx identifica il messaggio
Programmazione MIDI (Prof. Luca A. Ludovico)
9. Messaggi System Common e System Real Time
I 3 bit identificativi del messaggio
•
•
•
•
•
•
•
•
(1)
(1)
(1)
(1)
(1)
(1)
(1)
(1)
000
001
010
011
100
101
110
111
cccc
cccc
cccc
cccc
cccc
cccc
cccc
xxxx
Note Off
Note On
Polyphonic Key Pressure (Aftertouch)
Control Change
Program Change
Channel Pressure (After-touch)
Pitch Wheel Change
System Common messages
System Real Time messages
System Exclusive messages
Programmazione MIDI (Prof. Luca A. Ludovico)
9. Messaggi System Common e System Real Time
Scarica

Messaggi System Common