Lezione 8 Messaggi System Exclusive Programmazione MIDI Prof

  • Slides: 25
Download presentation
Lezione 8 Messaggi System Exclusive Programmazione MIDI (Prof. Luca A. Ludovico)

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

Categorie di funzioni MIDI • Channel Voice Messages – Eventi MIDI essenziali per la

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) 8. Messaggi System Exclusive

Messaggi System Exclusive • Tutti i messaggi finora analizzati si rivolgono a un qualsiasi

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) 8. Messaggi System Exclusive

Invio di un Sys. Ex a un dispositivo specifico MIDI In MIDI Out Sys.

Invio di un Sys. Ex a un dispositivo specifico MIDI In MIDI Out Sys. Ex per Roland SD-50 MIDI In Roland V MIDI Thru Programmazione MIDI (Prof. Luca A. Ludovico) 8. Messaggi System Exclusive Sys. Ex per Roland SD-50 MIDI In Yamaha MU-80 MIDI Thru Sys. Ex per Roland SD-50 Roland MIDI In SD-50

Struttura generale dei messaggi • Tutti i messaggi Sys. Ex iniziano e terminano in

Struttura generale dei messaggi • Tutti i messaggi Sys. Ex iniziano e terminano in modo standard, tramite una coppia di messaggi Sys. Ex – End of Sys. Ex – – 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 … MIDI Out o MIDI Thru … Byte di stato Fine Sys. Ex 111101112 F 716 Inizio Sys. Ex 111100002 F 016 Programmazione MIDI (Prof. Luca A. Ludovico) 8. Messaggi System Exclusive MIDI In

Messaggi System Exclusive • Alcuni parametri dei dispositivi MIDI non possono essere impostati e

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 Sys. Ex. Piè di pagina: spazio libero per eventuale nome struttura o altro

Categorie di Sys. Ex 1. Sys. Ex del produttore 2. Sys. Ex universali 1.

Categorie di Sys. Ex 1. Sys. Ex del produttore 2. Sys. Ex universali 1. In tempo reale 2. Non in tempo reale • In entrambi i casi, i Sys. Ex 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

Struttura dei messaggi Sys. Ex del produttore • I messaggi Sys. Ex contengono 8

Struttura dei messaggi Sys. Ex del produttore • I messaggi Sys. Ex 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 Parti MIDI Out o MIDI Thru 9 (8) 1 byte ? Byte di stato Valore di somma di controllo Roland Valore dei dati Fine Sys. Ex 111101112 7 Programmazione MIDI (Prof. Luca A. Ludovico) 8. Messaggi System Exclusive 6 5 4 3 3 byte 1 byte Indirizzo iniziale Comando Invio Ricezione ID modello ID dispositivo 2 1 o 3 byte 1 1 byte ID Byte di stato produttore Inizio Sys. Ex 111100002 MIDI In

Esempio • La parte 2 distingue un prodotto Korg da un prodotto Yamaha •

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 Parti MIDI Out o MIDI Thru 9 (8) 1 byte ? Byte di stato Valore di somma di controllo Roland Valore dei dati Fine Sys. Ex 111101112 7 Programmazione MIDI (Prof. Luca A. Ludovico) 8. Messaggi System Exclusive 6 5 4 3 3 byte 1 byte Indirizzo iniziale Comando Invio Ricezione ID modello (Model ID) ID dispositivo nella catena (Device ID) 2 1 o 3 byte 1 1 byte ID Byte di stato produttore Inizio Sys. Ex 111100002 MIDI In

Identificazione del produttore • Qualsiasi azienda lo desideri può ottenere un ID univoco per

Identificazione del produttore • Qualsiasi azienda lo desideri può ottenere un ID univoco per messaggi Sys. Ex, assegnato dal MIDI Manufacturer’s Association (MMA) • L’elenco completo è disponibile alla pagina https: //www. midi. org/specifications/item/manufactu rer-id-numbers • Esempio: i byte della parte 2 in esadecimale valgono – 4116 per Roland (1 byte) – 4216 per Korg (1 byte) – 0016 7 A 16 per Nvidia (3 byte) Piè di pagina: spazio libero per eventuale nome struttura o altro

Identificazione dell’id del dispositivo e del modello • Dedicando 1 byte di dati a

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

Patch change in un synth GS di Roland • Messaggio (in esadecimale, raggruppato in

Patch change in un synth GS di Roland • Messaggio (in esadecimale, raggruppato in parti) F 016 4116 1016 4216 1216 40 11 0016 08 0116 2616 F 716 Parte Parte 1: 2: 3: 4: 5: 6: 7: 8: F 0 41 10 42 12 40 11 00 08 01 26 Parte 9: F 7 MIDI Out o MIDI Thru Status byte di inizio Sys. Ex ID del produttore Roland ID del dispositivo nella catena ID del modello: generico synth GS ID del comando Send o Dump; 12 per l’invio, 11 per la richiesta Indirizzamento del parametro Dati da inviare: patch change 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 128 Nell’esempio: 64 + 17 + 0 + 8 + 1 = 90; 90 / 128 = 0 con resto 90; 128 – 90 = 38 10 = 2616 Status byte di fine Sys. Ex 1 byte ? 3 byte 1 byte Byte di stato Valore di somma di controllo Roland Valore dei dati Indirizzo iniziale Comando Invio Ricezione ID modello ID dispositivo Fine Sys. Ex 111101112 Programmazione MIDI (Prof. Luca A. Ludovico) 8. Messaggi System Exclusive 1 o 3 byte 1 byte ID Byte di stato produttore Inizio Sys. Ex 111100002 MIDI In

Tipo di riverbero in un Roland JV-1080 • Messaggio (in esadecimale, raggruppato in parti)

Tipo di riverbero in un Roland JV-1080 • Messaggio (in esadecimale, raggruppato in parti) F 016 4116 1016 6 A 16 1216 01 00 00 2816 0616 5116 F 716 Parte Parte 1: 2: 3: 4: 5: 6: 7: 8: F 0 41 10 6 A 12 01 00 00 28 06 51 Parte 9: F 7 MIDI Out o MIDI Thru Status byte di inizio Sys. Ex ID del produttore Roland ID del dispositivo nella catena ID del modello JV-1080 ID del comando Send o Dump; 12 per l’invio, 11 per la richiesta Indirizzamento del parametro di riverbero Rispettivamente tipo di riverbero (28 -> delay) e valore da impostare 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 128 Nell’esempio: 1 + 0 + 40 + 6 = 47; 47 / 128 = 0 con resto 47; 128 – 47 = 81 10 = 5116 Status byte di fine Sys. Ex 1 byte ? 3 byte 1 byte Byte di stato Valore di somma di controllo Roland Valore dei dati Indirizzo iniziale Comando Invio Ricezione ID modello ID dispositivo Fine Sys. Ex 111101112 Programmazione MIDI (Prof. Luca A. Ludovico) 8. Messaggi System Exclusive 1 o 3 byte 1 byte ID Byte di stato produttore Inizio Sys. Ex 111100002 MIDI In

Sys. Ex universali • Comuni a tutti i produttori, quindi non riservati ad alcun

Sys. Ex universali • Comuni a tutti i produttori, quindi non riservati ad alcun produttore specifico e utilizzabili da qualsiasi dispositivo MIDI adeguato • Sono comunque Sys. Ex in quanto delimitati all’inizio e alla fine da byte F 0 (Start Sys. Ex) e F 7 (End Sys. Ex) • Utilizzati per estensioni allo standard MIDI • L’elenco completo è disponibile all’indirizzo: https: //www. midi. org/specifications/item/table-4 universal-system-exclusive-messages Piè di pagina: spazio libero per eventuale nome struttura o altro

Esempi d’uso di Sys. Ex universali • Abilitare/disabilitare la modalità GM (General MIDI) nei

Esempi d’uso di Sys. Ex 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

Struttura dei messaggi Sys. Ex universali • Non è più necessario nella parte 2

Struttura dei messaggi Sys. Ex universali • Non è più necessario nella parte 2 identificare il produttore; il primo byte di dati si imposta a 7 E per i messaggi non real-time e a 7 F per i messaggi real-time • Sub-ID 1 definisce la categoria della funzione Sys. Ex, mentre Sub-ID 2 aggiunge precisione a tale funzione; il valore da impostare si trova nella parte successiva (parte 6) Parti 7 MIDI Out o MIDI Thru 6 5 4 3 2 1 1 byte ? 1 byte 1 byte Byte di stato Valore dei dati Sub-ID 2 Sub-ID 1 ID dispositivo o ID canale Fine Sys. Ex 111101112 Programmazione MIDI (Prof. Luca A. Ludovico) 8. Messaggi System Exclusive Non Byte di stato real-time o Inizio Sys. Ex real-time 111100002 MIDI In

Valori per Sub-ID 1 (in esadecimale) • Non in real-time – – – –

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 7 B End of File 7 C Wait 7 D Cancel 7 E NAK (ricezione errata) 7 F ACK (ricezione corretta) Programmazione MIDI (Prof. Luca A. Ludovico) 8. Messaggi System Exclusive • 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

Esempio: modalità General Midi On su dispositivi XG • Messaggio (in esadecimale, raggruppato in

Esempio: modalità General Midi On su dispositivi XG • Messaggio (in esadecimale, raggruppato in parti) F 016 7 E 16 7 F 16 0916 0116 F 716 Parte Parte 1: 2: 3: 4: 5: 6: 7: F 0 7 E 7 F 09 01 --F 7 Status byte di inizio Sys. Ex non Real-Time universale Risposta del dispositivo su tutti i canali, ossia nessun filtraggio General MIDI Abilitato (in alternativa: 00 Disabilitato) Si noti l’assenza di una Parte 6 Status byte di fine Sys. Ex Parti 7 MIDI Out o MIDI Thru 6 5 4 3 2 1 1 byte ? 1 byte 1 byte Byte di stato Valore dei dati Sub-ID 2 Sub-ID 1 ID dispositivo o ID canale Fine Sys. Ex 111101112 Programmazione MIDI (Prof. Luca A. Ludovico) 8. Messaggi System Exclusive Non Byte di stato real-time o Inizio Sys. Ex real-time 111100002 MIDI In

Registrazione messaggi Sys. Ex • Dove? Tipicamente in un sequencer • Perchè? Due finalità:

Registrazione messaggi Sys. Ex • 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. Programmazione MIDI (Prof. Luca A. Ludovico) 8. Messaggi System Exclusive

Esempio di bulk tuning dump (richiesta) • Richiesta da parte di un dispositivo sorgente

Esempio di bulk tuning dump (richiesta) • Richiesta da parte di un dispositivo sorgente a un dispositivo destinatario di inviare le informazioni sul tuning (accordatura fine) • Bulk tuning dump request: F 016 7 E 16 <device ID> 0816 0016 tt F 716 Parte Parte 1: 2: 3: 4: 5: 6: 7: F 0 7 E <device ID> 08 00 tt F 7 Status byte di inizio Sys. Ex non Real-Time universale ID del dispositivo destinatario Sub-ID#1 MIDI Tuning Sub-ID#2 bulk dump request Numero del programma di tuning [0. . 127] Status byte di fine Sys. Ex • Il dispositivo destinatario risponde come mostrato nella slide successiva Programmazione MIDI (Prof. Luca A. Ludovico) 8. Messaggi System Exclusive

Esempio di bulk tuning dump (risposta) • Il messaggio di risposta include valori di

Esempio di bulk tuning dump (risposta) • Il messaggio di risposta include valori di frequenza espressi su 3 byte inviati ordinatamente per ciascuno dei 128 pitch MIDI • Bulk tuning dump reply: F 016 7 E 16 <device ID> 0816 0116 tt tn [xx yy zz] chksum F 716 Parte 1: F 0 Status byte di inizio Sys. Ex Parte Parte Sys. Ex non Real-Time universale ID del dispositivo destinatario Sub-ID#1 MIDI Tuning Sub-ID#2 bulk dump reply Numero del programma di tuning [0. . 127] 16 caratteri ASCII per definire il nome dell’accordatura dati sulla frequenza di ogni singola nota (ripetuti 128 volte) somma di controllo Status byte di fine Sys. Ex 2: 3: 4: 5: 6: 7 E <device ID> 08 01 tt tn [xx yy zz] chksum Parte 7: F 7 Programmazione MIDI (Prof. Luca A. Ludovico) 8. Messaggi System Exclusive

Esempio: comandi MMC • MIDI Machine Control: protocollo per mettere in comunicazione dispositivi di

Esempio: comandi MMC • MIDI Machine Control: protocollo per mettere in comunicazione dispositivi di registrazione basati su SMPTE con sequencer MIDI (vedi lezione 8) • Formato standard: F 016 7 F 16 <device ID> 0616 command F 716 Parte 1: F 0 Status byte di inizio Sys. Ex Parte Parte Sys. Ex Real-Time universale ID del dispositivo destinatario General Information 2: 3: 4: 5: 6: 7: 7 F <device ID> 06 command F 7 Vedi slide successiva Status byte di fine Sys. Ex Programmazione MIDI (Prof. Luca A. Ludovico) 8. Messaggi System Exclusive

Esempio: comandi MMC • • • • 01 Stop 02 Play 03 Deferred Play

Esempio: comandi MMC • • • • 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 0 A Eject 0 B Chase 0 D MMC Reset 40 Write 44 Locate/Go to 47 Shuttle Programmazione MIDI (Prof. Luca A. Ludovico) 8. Messaggi System Exclusive

Esempio di Goto in MMC • Il messaggio serve a posizionare la riproduzione/registrazione in

Esempio di Goto in MMC • Il messaggio serve a posizionare la riproduzione/registrazione in un punto specifico, codificato in SMPTE • F 016 7 F 16 <device. ID> 0616 4416 0616 0116 hr mn sc fr ff F 716 Parte 1: F 0 Status byte di inizio Sys. Ex Parte Parte Sys. Ex Real-Time universale ID del dispositivo destinatario Sub-ID#1 General Information 2: 3: 4: 5: 6: 7 F <device ID> 06 44 06 01 hr mn sc fr ff Parte 7: F 7 Comando LOCATE Numero di byte seguenti Sottocomando TARGET ore, da 0 a 23 (in base 10) minuti, da 0 a 59 (in base 10) secondi, da 0 a 59 (in base 10) fotogrammi, da 0 a 29 (in base 10) sottoframe o frazioni di fotogramma, da 0 a 99 (in base 10) Status byte di fine Sys. Ex Programmazione MIDI (Prof. Luca A. Ludovico) 8. Messaggi System Exclusive

Approfondimenti • Uso di Sys. Ex universali per il micro-tuning (accordatura degli strumenti per

Approfondimenti • Uso di Sys. Ex universali per il micro-tuning (accordatura degli strumenti per scale differenti da quelle del sistema temperato): vedi file PDF allegato alla lezione, tratto da midi. org • Libreria di messaggi Sys. Ex del produttore compilata da utenti (da valutare con attenzione!) http: //www. sysexdb. com • Tutorial sui Sys. Ex http: //www. 2 writers. com/eddie/Tut. Sys. Ex. htm • Sys. Ex relativi al MIDI Machine Control http: //en. wikipedia. org/wiki/MIDI_Machine_Control Programmazione MIDI (Prof. Luca A. Ludovico) 8. Messaggi System Exclusive