messaggi system exclusive lezione 10 programmazione midi (prof. luca a. ludovico)

25
Messaggi System Exclusive Lezione 10 Programmazione MIDI (Prof. Luca A. Ludovico)

Upload: bertina-rubino

Post on 01-May-2015

227 views

Category:

Documents


2 download

TRANSCRIPT

Page 1: Messaggi System Exclusive Lezione 10 Programmazione MIDI (Prof. Luca A. Ludovico)

Messaggi System Exclusive

Lezione 10

Programmazione MIDI (Prof. Luca A. Ludovico)

Page 2: Messaggi System Exclusive Lezione 10 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)10. Messaggi System Exclusive

Page 3: Messaggi System Exclusive Lezione 10 Programmazione MIDI (Prof. Luca A. Ludovico)

Messaggi System Exclusive

• Tutti i messaggi finora analizzati si rivolgono a un qualsiasi dispositivo MIDI compatibile

• I messaggi System Exclusive si utilizzano per inviare dati specifici a determinati dispositivi MIDI, per funzioni generalmente subordinate al produttore

• I messaggi sono detti System Exclusive perché tutti gli altri dispositivi risultano esclusi dalla comunicazione– Il dispositivo ricevente può processare il messaggio, se lo riconosce come indirizzato a se stesso; in caso contrario lo ignora

Programmazione MIDI (Prof. Luca A. Ludovico)10. Messaggi System Exclusive

Page 4: Messaggi System Exclusive Lezione 10 Programmazione MIDI (Prof. Luca A. Ludovico)

Invio di un SysEx a un dispositivo specifico

Programmazione MIDI (Prof. Luca A. Ludovico)10. Messaggi System Exclusive

MIDI Thru MIDI InMIDI InMIDI Out

MIDI In MIDI Out

MIDI Thru MIDI In

Yamaha MU-80 Roland SD-50Roland V

SysEx per Roland SD-

50

SysEx per Roland SD-

50

SysEx per Roland SD-

50

SysEx per Roland SD-

50

SysEx per Roland SD-

50

SysEx per Roland SD-

50

Page 5: Messaggi System Exclusive Lezione 10 Programmazione MIDI (Prof. Luca A. Ludovico)

Struttura generale dei messaggi

• Tutti i messaggi SysEx iniziano e terminano in modo standard, tramite una coppia di messaggi SysEx – End of SysEx– Gli identificativi sono messaggi System Common– Non c’è informazione di canale (identificativo del comando occupa i 7 bit, come per tutti i messaggi System Common)

• Tra l’invio di questa coppia di byte di stato può essere spedito un qualsiasi numero di byte di dati (a 7 bit), da qualche unità a migliaia.– Attenzione: la sequenza (lunga?) non può essere interrotta

Programmazione MIDI (Prof. Luca A. Ludovico)10. Messaggi System Exclusive

MIDI Out o

MIDI Thru

MIDI InByte di stato

Inizio SysEx111100002

F016

Byte di stato

Fine SysEx111101112

F716

Page 6: Messaggi System Exclusive Lezione 10 Programmazione MIDI (Prof. Luca A. Ludovico)

Messaggi System Exclusive

• Alcuni parametri dei dispositivi MIDI non possono essere impostati e non sono identificabili tramite messaggi dello standard MIDI– perché sono specifici di un dispositivo o di una certa

implementazione del dispositivo da parte di un determinato produttore

– perché lo standard MIDI originario non aveva previsto di impostarli e/o identificarli tramite messaggi convenzionali

• In questi casi, la soluzione è adottare messaggi MIDI System Exclusive. Per rispondere alle due esigenze sopra esposte, esistono due categorie di SysEx.

Piè di pagina: spazio libero per eventuale nome struttura o altro

Page 7: Messaggi System Exclusive Lezione 10 Programmazione MIDI (Prof. Luca A. Ludovico)

Categorie di SysEx

1. SysEx del produttore

2. SysEx universali1. In tempo reale2. Non in tempo reale

• In entrambi i casi, i SysEx si usano per veicolare informazioni non incluse in altri messaggi MIDI. La prima categoria si rivolge a uno specifico dispositivo, mentre la seconda (potenzialmente) a tutti i dispositivi nel sistema.

Piè di pagina: spazio libero per eventuale nome struttura o altro

Page 8: Messaggi System Exclusive Lezione 10 Programmazione MIDI (Prof. Luca A. Ludovico)

Struttura dei messaggi SysEx del produttore

• I messaggi SysEx contengono 8 parti (nel caso di Roland 9 parti), ciascuna con un ruolo specifico

• Nel diagramma sotto riportato, il riquadro con angoli arrotondati non identifica (come di consueto) un singolo byte di dati, ma un insieme di byte di dati la cui numerosità è scritta all’interno

Programmazione MIDI (Prof. Luca A. Ludovico)10. Messaggi System Exclusive

1 byte

1 o 3

byteMIDI Out

oMIDI Thru

MIDI InByte di stato

Inizio SysEx111100002

Byte di stato

Fine SysEx111101112

1 byte

1 byte

1 byte

3 byte?1

byte1

byte

9 (8) 7 6 5 4 3 2 1

IDproduttore

IDdispositivo

IDmodello

ComandoInvio

Ricezione

Indirizzoiniziale

Valore deidati

Valore disomma dicontrolloRoland

Parti

Page 9: Messaggi System Exclusive Lezione 10 Programmazione MIDI (Prof. Luca A. Ludovico)

Esempio

• La parte 2 distingue un prodotto Korg da un prodotto Yamaha• La parte 3 distingue il primo dispositivo Yamaha dal secondo dispositivo Yamaha

nella catena (i valori di ID dispositivo possono essere impostati in fase di setup del sistema)

• La parte 4 distingue il Roland JV-1080 dal Roland D-50 • La parte 8 esiste solo per i dispositivi Roland

Programmazione MIDI (Prof. Luca A. Ludovico)10. Messaggi System Exclusive

1 byte

1 o 3

byteMIDI Out

oMIDI Thru

MIDI InByte di stato

Inizio SysEx111100002

Byte di stato

Fine SysEx111101112

1 byte

1 byte

1 byte

3 byte?1

byte1

byte

9 (8) 7 6 5 4 3 2 1

IDproduttore

IDdispositivo

nella catena(Device ID)

IDmodello

(Model ID)

ComandoInvio

Ricezione

Indirizzoiniziale

Valore deidati

Valore disomma dicontrolloRoland

Parti

Page 10: Messaggi System Exclusive Lezione 10 Programmazione MIDI (Prof. Luca A. Ludovico)

Identificazione del produttore

• Qualsiasi azienda lo desideri può ottenere un ID univoco per messaggi SysEx, assegnato dal MIDI Manufacturer’s Association (MMA)

• L’elenco completo è disponibile alla paginahttp://www.midi.org/techspecs/manid.php

• Esempio: i byte della parte 2 in esadecimale valgono– 4116 per Roland (1 byte)

– 4216 per Korg (1 byte)

– 0016 0016 7A16 per Nvidia (3 byte)

Piè di pagina: spazio libero per eventuale nome struttura o altro

Page 11: Messaggi System Exclusive Lezione 10 Programmazione MIDI (Prof. Luca A. Ludovico)

Identificazione dell’id del dispositivo e del modello

• Dedicando 1 byte di dati a ciascuna delle informazioni, teoricamente si possono indirizzare solo 128 dispositivi nella catena, e 128 modelli per produttore.

• Esistono però dei valori standard:– Ad esempio, Roland di default assegna a tutti i

dispositivi Device ID = 1016

– Ad esempio, Roland di default assegna ai propri synth con standard GS un Model ID = 4216

Piè di pagina: spazio libero per eventuale nome struttura o altro

Page 12: Messaggi System Exclusive Lezione 10 Programmazione MIDI (Prof. Luca A. Ludovico)

Patch change in un synth GS di Roland

• Messaggio (in esadecimale, raggruppato in parti)F016 4116 1016 4216 1216 40 11 0016 08 0116 2616 F716

Parte 1: F0 Status byte di inizio SysExParte 2: 41 ID del produttore RolandParte 3: 10 ID del dispositivo nella catenaParte 4: 42 ID del modello: generico synth GSParte 5: 12 ID del comando Send o Dump; 12 per l’invio, 11 per la richiestaParte 6: 40 11 00 Indirizzamento del parametroParte 7: 08 01 Dati da inviare: patch changeParte 8: 26 Somma di controllo Roland. Algoritmo:

Sommare tutti i valori delle parti 6 e 7, convertite in base 10, Effettuare la divisione intera per 128 e sottrarre il resto ottenuto da 128Nell’esempio: 64 + 17 + 0 + 8 + 1 = 90; 90 / 128 = 0 con resto 90; 128 – 90 = 38 10 = 2616

Parte 9: F7 Status byte di fine SysEx

Programmazione MIDI (Prof. Luca A. Ludovico)10. Messaggi System Exclusive

1 byte

1 o 3

byteMIDI Out

oMIDI Thru

MIDI InByte di stato

Inizio SysEx111100002

Byte di stato

Fine SysEx111101112

1 byte

1 byte

1 byte

3 byte?1

byte1

byte

IDproduttore

IDdispositivo

IDmodello

ComandoInvio

Ricezione

Indirizzoiniziale

Valore deidati

Valore disomma dicontrolloRoland

Page 13: Messaggi System Exclusive Lezione 10 Programmazione MIDI (Prof. Luca A. Ludovico)

Tipo di riverbero in un Roland JV-1080

• Messaggio (in esadecimale, raggruppato in parti)F016 4116 1016 6A16 1216 01 00 00 2816 0616 5116 F716

Parte 1: F0 Status byte di inizio SysExParte 2: 41 ID del produttore RolandParte 3: 10 ID del dispositivo nella catenaParte 4: 6A ID del modello JV-1080Parte 5: 12 ID del comando Send o Dump; 12 per l’invio, 11 per la richiestaParte 6: 01 00 00 Indirizzamento del parametro di riverberoParte 7: 28 06 Rispettivamente tipo di riverbero (28 -> delay) e valore da impostareParte 8: 51 Somma di controllo Roland. Algoritmo:

Sommare tutti i valori delle parti 6 e 7, convertite in base 10, Effettuare la divisione intera per 128 e sottrarre il resto ottenuto da 128Nell’esempio: 1 + 0 + 0 + 40 + 6 = 47; 47 / 128 = 0 con resto 47; 128 – 47 = 81 10 = 5116

Parte 9: F7 Status byte di fine SysEx

Programmazione MIDI (Prof. Luca A. Ludovico)10. Messaggi System Exclusive

1 byte

1 o 3

byteMIDI Out

oMIDI Thru

MIDI InByte di stato

Inizio SysEx111100002

Byte di stato

Fine SysEx111101112

1 byte

1 byte

1 byte

3 byte?1

byte1

byte

IDproduttore

IDdispositivo

IDmodello

ComandoInvio

Ricezione

Indirizzoiniziale

Valore deidati

Valore disomma dicontrolloRoland

Page 14: Messaggi System Exclusive Lezione 10 Programmazione MIDI (Prof. Luca A. Ludovico)

SysEx universali

• Comuni a tutti i produttori, quindi non riservati ad alcun produttore specifico e utilizzabili da qualsiasi dispositivo MIDI adeguato

• Sono comunque SysEx in quanto delimitati all’inizio e alla fine da byte F0 (Start SysEx) e F7 (End SysEx)

• Utilizzati per estensioni allo standard MIDI

• L’elenco completo è disponibile all’indirizzo:http://www.midi.org/techspecs/midimessages.php#4

Piè di pagina: spazio libero per eventuale nome struttura o altro

Page 15: Messaggi System Exclusive Lezione 10 Programmazione MIDI (Prof. Luca A. Ludovico)

Esempi d’uso di SysEx universali

• Abilitare/disabilitare la modalità GM (General MIDI) nei moduli sonori compatibili

• Impostare il volume master dei dispositivi multitimbrici – Per il volume dei singoli canali, esiste il messaggio Control Change 7

• Comunicare lo schema di connessione con altri dispositivi

• Scambiare dati relativi a forme d’onda di audio digitale tra campionatori

Piè di pagina: spazio libero per eventuale nome struttura o altro

Page 16: Messaggi System Exclusive Lezione 10 Programmazione MIDI (Prof. Luca A. Ludovico)

Struttura dei messaggi SysEx universali

• Non è più necessario nella parte 2 identificare il produttore; il primo byte di dati si imposta a 7E per i messaggi non real-time e a 7F per i messaggi real-time

• Sub-ID 1 definisce la categoria della funzione SysEx, mentre Sub-ID 2 aggiunge precisione a tale funzione; il valore da impostare si trova nella parte successiva (parte 6)

Programmazione MIDI (Prof. Luca A. Ludovico)10. Messaggi System Exclusive

1 byte

1byte

MIDI Out o

MIDI Thru

MIDI InByte di stato

Inizio SysEx111100002

Byte di stato

Fine SysEx111101112

1 byte

1 byte

1 byte?1

byte

7 6 5 4 3 2 1

Non real-time

oreal-time

IDdispositivoo ID canale

Sub-ID 1Sub-ID 2Valore deidati

Parti

Page 17: Messaggi System Exclusive Lezione 10 Programmazione MIDI (Prof. Luca A. Ludovico)

Valori per Sub-ID 1 (in esadecimale)

• Non in real-time– 01 Sample dump header– 02 Sample data packet– 03 Sample dump request– 04 MTC for cueing purpose– 05 Sample dump extensions– 06 General information– 07 File dump– 08 MIDI tuning standard– 09 General MIDI– 7B End of File– 7C Wait– 7D Cancel– 7E NAK (ricezione errata)– 7F ACK (ricezione corretta)

• In real-time– 01 MTC full message– 02 MIDI Show Control– 03 Notation Information– 04 Device control– 05 Real-time MTC cueing– 06 MMC (MIDI Machine

Control) commands– 07 MMC responses– 08 MIDI tuning standard

Programmazione MIDI (Prof. Luca A. Ludovico)10. Messaggi System Exclusive

Page 18: Messaggi System Exclusive Lezione 10 Programmazione MIDI (Prof. Luca A. Ludovico)

Esempio: modalità General Midi On su dispositivi XG

Programmazione MIDI (Prof. Luca A. Ludovico)10. Messaggi System Exclusive

• Messaggio (in esadecimale, raggruppato in parti)F016 7E16 7F16 0916 0116 F716

Parte 1: F0 Status byte di inizio SysEx

Parte 2: 7E SysEx non Real-Time universale

Parte 3: 7F Risposta del dispositivo su tutti i canali, ossia nessun filtraggio

Parte 4: 09 General MIDI

Parte 5: 01 Abilitato (in alternativa: 00 Disabilitato)

Parte 6: --- Si noti l’assenza di una Parte 6

Parte 7: F7 Status byte di fine SysEx

1 byte

1byte

MIDI Out o

MIDI Thru

MIDI InByte di stato

Inizio SysEx111100002

Byte di stato

Fine SysEx111101112

1 byte

1 byte

1 byte?1

byte

7 6 5 4 3 2 1

Non real-time

oreal-time

IDdispositivoo ID canale

Sub-ID 1Sub-ID 2Valore deidati

Parti

Page 19: Messaggi System Exclusive Lezione 10 Programmazione MIDI (Prof. Luca A. Ludovico)

Registrazione messaggi SysEx

Programmazione MIDI (Prof. Luca A. Ludovico)10. Messaggi System Exclusive

• Dove? Tipicamente in un sequencer

• Perchè? Due finalità:1. Salvare tutti i dati del setup corrente per

ripristinare in un secondo momento lo stato del/i dispositivo/i (bulk dump)

2. Memorizzare codici per istruire lo strumento a cambiare uno dei propri parametri durante l’esecuzione

• Esempio: frequenza di taglio di un filtro, decay di un riverbero, ecc.

Page 20: Messaggi System Exclusive Lezione 10 Programmazione MIDI (Prof. Luca A. Ludovico)

Esempio di bulk tuning dump (richiesta)

Programmazione MIDI (Prof. Luca A. Ludovico)10. Messaggi System Exclusive

• Richiesta da parte di un dispositivo sorgente a un dispositivo destinatario di inviare le informazioni sul tuning (accordatura fine)

• Bulk tuning dump request: F016 7E16 <device ID> 0816 0016 tt F716

Parte 1: F0 Status byte di inizio SysEx

Parte 2: 7E SysEx non Real-Time universale

Parte 3: <device ID> ID del dispositivo destinatario

Parte 4: 08 Sub-ID#1 MIDI Tuning

Parte 5: 00 Sub-ID#2 bulk dump request

Parte 6: tt Numero del programma di tuning [0..127]

Parte 7: F7 Status byte di fine SysEx

• Il dispositivo destinatario risponde come mostrato nella slide successiva

Page 21: Messaggi System Exclusive Lezione 10 Programmazione MIDI (Prof. Luca A. Ludovico)

Esempio di bulk tuning dump (risposta)

Programmazione MIDI (Prof. Luca A. Ludovico)10. Messaggi System Exclusive

• Il messaggio di risposta include valori di frequenza espressi su 3 byte inviati ordinatamente per ciascuno dei 128 pitch MIDI

• Bulk tuning dump reply: F016 7E16 <device ID> 0816 0116 tt tn [xx yy zz] chksum F716

Parte 1: F0 Status byte di inizio SysEx

Parte 2: 7E SysEx non Real-Time universaleParte 3: <device ID> ID del dispositivo destinatarioParte 4: 08 Sub-ID#1 MIDI Tuning Parte 5: 01 Sub-ID#2 bulk dump reply

Parte 6: tt Numero del programma di tuning [0..127] tn 16 caratteri ASCII per definire il nome dell’accordatura

[xx yy zz] dati sulla frequenza di ogni singola nota (ripetuti 128 volte) chksum somma di controllo

Parte 7: F7 Status byte di fine SysEx

Page 22: Messaggi System Exclusive Lezione 10 Programmazione MIDI (Prof. Luca A. Ludovico)

Esempio: comandi MMC

Programmazione MIDI (Prof. Luca A. Ludovico)10. Messaggi System Exclusive

• MIDI Machine Control: protocollo per mettere in comunicazione dispositivi di registrazione basati su SMPTE con sequencer MIDI (vedi lezione 8)

• Formato standard: F016 7F16 <device ID> 0616 command F716

Parte 1: F0 Status byte di inizio SysEx

Parte 2: 7F SysEx Real-Time universaleParte 3: <device ID> ID del dispositivo destinatarioParte 4: 06 General InformationParte 5: -

Parte 6: command Vedi slide successivaParte 7: F7 Status byte di fine SysEx

Page 23: Messaggi System Exclusive Lezione 10 Programmazione MIDI (Prof. Luca A. Ludovico)

Esempio: comandi MMC

Programmazione MIDI (Prof. Luca A. Ludovico)10. Messaggi System Exclusive

• 01 Stop • 02 Play • 03 Deferred Play • 04 Fast Forward • 05 Rewind • 06 Record Strobe (Punch In) • 07 Record Exit (Punch out) • 08 Record Ready (Record Pause)• 09 Pause• 0A Eject• 0B Chase • 0D MMC Reset• 40 Write • 44 Locate/Go to• 47 Shuttle

Page 24: Messaggi System Exclusive Lezione 10 Programmazione MIDI (Prof. Luca A. Ludovico)

Esempio di Goto in MMC

Programmazione MIDI (Prof. Luca A. Ludovico)10. Messaggi System Exclusive

• Il messaggio serve a posizionare la riproduzione/registrazione in un punto specifico, codificato in SMPTE

• F016 7F16 <deviceID> 0616 4416 0616 0116 hr mn sc fr ff F716

Parte 1: F0 Status byte di inizio SysEx

Parte 2: 7F SysEx Real-Time universaleParte 3: <device ID> ID del dispositivo destinatario

Parte 4: 06 Sub-ID#1 General InformationParte 5: -

Parte 6: 44 Comando LOCATE 06 Numero di byte seguenti

01 Sottocomando TARGET hr ore, da 0 a 23 (in base 10) mn minuti, da 0 a 59 (in base 10) sc secondi, da 0 a 59 (in base 10) fr fotogrammi, da 0 a 29 (in base 10) ff sottoframe o frazioni di fotogramma, da 0 a 99 (in base 10)

Parte 7: F7 Status byte di fine SysEx

Page 25: Messaggi System Exclusive Lezione 10 Programmazione MIDI (Prof. Luca A. Ludovico)

Approfondimenti

Programmazione MIDI (Prof. Luca A. Ludovico)10. Messaggi System Exclusive

• Libreria di messaggi SysEx del produttore compilata da utentihttp://www.sysexdb.com

• Uso di SysEx universali per il micro-tuning (accordatura degli strumenti per scale differenti da quelle del sistema temperato)http://www.midi.org/techspecs/midituning.php

• Tutorial sui SysExhttp://www.2writers.com/eddie/TutSysEx.htm

• SysEx relativi al MIDI Machine Controlhttp://en.wikipedia.org/wiki/MIDI_Machine_Control