1 / 25

Messaggi System Exclusive

Lezione 10. Messaggi System Exclusive. 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

Download Presentation

Messaggi System Exclusive

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


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

  2. 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

  3. 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

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

  5. Struttura generale dei messaggi … … MIDI Out oMIDI Thru Byte di stato Inizio SysEx 111100002 F016 MIDI In Byte di stato Fine SysEx 111101112 F716 • 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

  6. 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

  7. Categorie di SysEx • SysEx del produttore • SysEx universali • In tempo reale • 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

  8. Struttura dei messaggi SysEx del produttore Parti 9 (8) 7 6 5 4 3 2 1 ? 3 byte 1 byte 1 byte 1 byte 1 o 3 byte 1 byte 1 byte 1 byte Byte di stato Fine SysEx 111101112 MIDI In MIDI Out oMIDI Thru Valore disomma dicontrolloRoland Valore deidati Indirizzo iniziale Comando InvioRicezione ID modello ID dispositivo ID produttore Byte di stato Inizio SysEx 111100002 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

  9. Esempio Parti 9 (8) 7 6 5 4 3 2 1 ? 3 byte 1 byte 1 byte 1 byte 1 o 3 byte 1 byte 1 byte 1 byte Byte di stato Fine SysEx 111101112 MIDI In MIDI Out oMIDI Thru Valore disomma dicontrolloRoland Valore deidati Indirizzo iniziale Comando InvioRicezione ID modello(Model ID) ID dispositivo nella catena (Device ID) ID produttore Byte di stato Inizio SysEx 111100002 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

  10. 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

  11. 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

  12. Patch change in un synth GS di Roland ? 3 byte 1 byte 1 byte 1 byte 1 o 3 byte 1 byte 1 byte 1 byte Byte di stato Fine SysEx 111101112 MIDI In MIDI Out oMIDI Thru Valore disomma dicontrolloRoland Valore deidati Indirizzo iniziale Comando InvioRicezione ID modello ID dispositivo ID produttore Byte di stato Inizio SysEx 111100002 • 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 SysEx Parte 2: 41 ID del produttore Roland Parte 3: 10 ID del dispositivo nella catena Parte 4: 42 ID del modello: generico synth GS Parte 5: 12 ID del comando Send o Dump; 12 per l’invio, 11 per la richiesta Parte 6: 40 11 00 Indirizzamento del parametro Parte 7: 08 01 Dati da inviare: patch change Parte 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 128 Nell’esempio: 64 + 17 + 0 + 8 + 1 = 90; 90 / 128 = 0 con resto 90; 128 – 90 = 3810 = 2616 Parte 9: F7 Status byte di fine SysEx Programmazione MIDI (Prof. Luca A. Ludovico)10. Messaggi System Exclusive

  13. Tipo di riverbero in un Roland JV-1080 ? 3 byte 1 byte 1 byte 1 byte 1 o 3 byte 1 byte 1 byte 1 byte Byte di stato Fine SysEx 111101112 MIDI In MIDI Out oMIDI Thru Valore disomma dicontrolloRoland Valore deidati Indirizzo iniziale Comando InvioRicezione ID modello ID dispositivo ID produttore Byte di stato Inizio SysEx 111100002 • 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 SysEx Parte 2: 41 ID del produttore Roland Parte 3: 10 ID del dispositivo nella catena Parte 4: 6A ID del modello JV-1080 Parte 5: 12 ID del comando Send o Dump; 12 per l’invio, 11 per la richiesta Parte 6: 01 00 00 Indirizzamento del parametro di riverbero Parte 7: 28 06 Rispettivamente tipo di riverbero (28 -> delay) e valore da impostare Parte 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 128 Nell’esempio: 1 + 0 + 0 + 40 + 6 = 47; 47 / 128 = 0 con resto 47; 128 – 47 = 8110 = 5116 Parte 9: F7 Status byte di fine SysEx Programmazione MIDI (Prof. Luca A. Ludovico)10. Messaggi System Exclusive

  14. 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

  15. 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

  16. Struttura dei messaggi SysEx universali Parti 7 6 5 4 3 2 1 ? 1 byte 1 byte 1 byte 1 byte 1 byte 1 byte Byte di stato Fine SysEx 111101112 MIDI In MIDI Out oMIDI Thru Valore deidati Sub-ID 2 Sub-ID 1 ID dispositivo o ID canale Non real-time o real-time Byte di stato Inizio SysEx 111100002 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

  17. 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

  18. Esempio: modalità General Midi On su dispositivi XG • 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 Parti 7 6 5 4 3 2 1 ? 1 byte 1 byte 1 byte 1 byte 1 byte 1 byte Byte di stato Fine SysEx 111101112 MIDI In MIDI Out oMIDI Thru Valore deidati Sub-ID 2 Sub-ID 1 ID dispositivo o ID canale Non real-time o real-time Byte di stato Inizio SysEx 111100002 Programmazione MIDI (Prof. Luca A. Ludovico)10. Messaggi System Exclusive

  19. Registrazione messaggi SysEx • Dove? Tipicamente in un sequencer • Perchè? Due finalità: • Salvare tutti i dati del setup corrente per ripristinare in un secondo momento lo stato del/i dispositivo/i (bulk dump) • 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)10. Messaggi System Exclusive

  20. 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: 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 Programmazione MIDI (Prof. Luca A. Ludovico)10. Messaggi System Exclusive

  21. Esempio di bulk tuning dump (risposta) • Il messaggio di risposta include valori di frequenzaespressisu 3 byte inviatiordinatamente per ciascunodei 128 pitch MIDI • Bulk tuning dump reply: F016 7E16 <device ID> 0816 0116tttn [xx yyzz] chksum F716 Parte 1: F0 Status byte di inizio SysEx Parte 2: 7E SysEx non Real-Time universale Parte 3: <device ID> ID del dispositivodestinatario Parte 4: 08 Sub-ID#1  MIDI Tuning Parte 5: 01 Sub-ID#2  bulk dump reply Parte 6: ttNumero del programma di tuning [0..127] tn 16 caratteri ASCII per definireilnomedell’accordatura [xx yyzz] datisullafrequenza di ognisingola nota (ripetuti 128 volte) chksumsomma di controllo Parte 7: F7 Status byte di fine SysEx Programmazione MIDI (Prof. Luca A. Ludovico)10. Messaggi System Exclusive

  22. Esempio: comandi MMC • MIDI Machine Control: protocollo per mettere in comunicazionedispositivi di registrazionebasatisu SMPTE con sequencer MIDI (vedilezione 8) • Formato standard: F016 7F16 <device ID> 0616command F716 Parte 1: F0 Status byte di inizio SysEx Parte 2: 7F SysEx Real-Time universale Parte 3: <device ID> ID del dispositivodestinatario Parte 4: 06 General Information Parte 5: - Parte 6: command Vedi slide successiva Parte 7: F7 Status byte di fine SysEx Programmazione MIDI (Prof. Luca A. Ludovico)10. Messaggi System Exclusive

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

  24. Esempio di Goto in MMC • Il messaggio serve a posizionare la riproduzione/registrazione in un puntospecifico, codificato in SMPTE • F0167F16 <deviceID> 0616 4416 0616 0116hrmn sc frff F716 Parte 1: F0 Status byte di inizio SysEx Parte 2: 7F SysEx Real-Time universale Parte 3: <device ID> ID del dispositivodestinatario Parte 4: 06 Sub-ID#1  General Information Parte 5: - Parte 6: 44 Comando LOCATE 06 Numero di byte seguenti 01 Sottocomando TARGET hr ore, da 0 a 23 (in base 10) mnminuti, da 0 a 59 (in base 10) scsecondi, da 0 a 59 (in base 10) frfotogrammi, da 0 a 29 (in base 10) ffsottoframe o frazioni di fotogramma, da 0 a 99 (in base 10) Parte 7: F7 Status byte di fine SysEx Programmazione MIDI (Prof. Luca A. Ludovico)10. Messaggi System Exclusive

  25. Approfondimenti • 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 Programmazione MIDI (Prof. Luca A. Ludovico)10. Messaggi System Exclusive

More Related