Messaggi System Exclusive

Slides:



Advertisements
Presentazioni simili
Una calcolatrice del XV° secolo
Advertisements

Dipartimento di Ingegneria Idraulica e Ambientale - Universita di Pavia 1 Caduta non guidata di un corpo rettangolare in un serbatoio Velocità e rotazione.
1 Tutto su liceoclassicojesi.it 1° Incontro sulla gestione di liceoclassicojesi.it.
Informatica Generale Susanna Pelagatti
Fondamenti di Informatica
Programmazione assembler
Lezione 18 MIDI e XML Programmazione MIDI (Prof. Luca A. Ludovico)
Esercitazione su SMF Lezione 14
Messaggi System Common e System Real Time
MIDI e computer Lezione 17
Sistemi di numerazione
RTP MIDI – parte 2 Lezione 16
Network Musical Performance: RTP MIDI
Concetti fondamentali
Messaggi Control Change
Programmazione MIDI Presentazione del corso
Messaggi Channel Voice
Sincronizzazione Lezione 8
PHP.
1 Processi e Thread Meccanismi di IPC, Inter Process Communication (1)
SEQUENZA DI COMPILAZIONE 00Registrati 01Entra nellAREA RISERVATA 02Leggi lINTRODUZIONE della home page 03Fai clic su Progetti Organizzazione nel menu di.
La rete in dettaglio: rete esterna (edge): applicazioni e host
Interfaccia del file system
Programmazione Procedurale in Linguaggio C++
Implementazione dell algortimo di Viterbi attraverso la soluzione del problema di cammino mi- nimo tramite software specifico. Università degli studi di.
Reti di Calcolatori Domande di riepilogo Quarta Esercitazione
Canale A. Prof.Ciapetti AA2003/04
Corso di Informatica (Programmazione)
1 Corso di Laurea in Biotecnologie Informatica (Programmazione) Rappresentazione dellinformazione su calcolatore Anno Accademico 2009/2010.
Corso di Informatica (Programmazione)
Tecniche di automazione Corso: Tecniche di automazione – prof.ssa Laura ZUCCHI DDE Data Dynamic Exchange Appunti lezioni Classi 1C e 1H – gruppo A.
Corso di Informatica per Giurisprudenza
Criticità sui dati (1° esempio)
Criticità sui dati (esempio da fare on line)
Laboratorio di Informatica
2) Sistemi operativi Lab. Calc. AA2004/05 - cap.2.
Sistema Geomonitor Schema di funzionamento generale
Gestione della tastiera
Supporto per servizi di File Hosting Presentazione di progetto per lesame di Reti di Calcolatori LS Valerio Guagliumi
Corso di Informatica per Giurisprudenza Lezione 7
Gli utenti esterni, (delegati, datori di lavoro, agenzie per il lavoro, enti, ecc), individuati con il ruolo di master è consentito gestire, la propria.
> Remote Authentication Dial In User Service
RAPPRESENTAZIONE DELL'INFORMAZIONE
Test Reti Informatiche A cura di Gaetano Vergara Se clicchi sulla risposta GIUSTA passi alla domanda successiva Se clicchi sulla risposta ERRATA passi.
Codici QR Presentazione 1.6
Dispositivi MIDI in Java
Protocollo informatico: interoperabilità e PEC
DDE Data Dynamic Exchange Appunti lezioni Classi 1C e 1H – gruppo A
QUIZ – PATENTE EUROPEA – ESAME WORD
Corso Drupal 2013 Andrea Dori
1 Ripassino Reti di Computer Carasco 19/02/ Che cosa è una rete informatica? Una rete informatica è un insieme di computer connessi tra di loro.
Introduzione al controllo derrore. Introduzione Quando dei dati vengono scambiati tra due host, può accadere che il segnale venga alterato. Il controllo.
Modulo n – U.D. n – Lez. n Nome Cognome – titolo corso.
Sviluppare un programma in C che, dato un array da 100 elementi interi caricato con numeri casuali compresi tra [10,100], sia in grado di cercare il valore.
L’architettura a strati
a cura di Francesco Lattari
Rappresentazione delle durate Lezione 7 Programmazione per la Musica | Prof. Luca A. Ludovico.
Web Form Presentazione 2.3 Comunicazione integrata in rete| Prof. Luca A. Ludovico.
Il nucleo del Sistema Operativo
1 Esercitazione Sistemi distribuiti: sistemi che risisedono su più calcolatori interconnessi da una rete di comunicazione Algoritmi distribuiti: programmi.
Reti di computer Condivisione di risorse e
Progetto di Linguaggi e modelli computazionali M Prof. Enrico Denti Progetto di: Francesco Paci.
Informatica Generale Marzia Buscemi
TEMPI? Dalle 08:00 del 22 gennaio alle 20:00 del 22 febbraio 2016; CON QUALE MODALITA’? On Line – secondo le indicazioni del Ministero dell’Istruzione.
Comunicazione Seriale Prof. Antonino Mazzeo Corso di Laurea Specialistica in Ingegneria Informatica.
Messaggi System Exclusive
Transcript della presentazione:

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

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

Invio di un SysEx a un dispositivo specifico MIDI Thru MIDI In MIDI Out Yamaha MU-80 Roland SD-50 Roland 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 Programmazione MIDI (Prof. Luca A. Ludovico) 10. Messaggi System Exclusive

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 … … MIDI Out o MIDI Thru Byte di stato Fine SysEx 111101112 F716 Byte di stato Inizio SysEx 111100002 F016 MIDI In Programmazione MIDI (Prof. Luca A. Ludovico) 10. Messaggi System Exclusive

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

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

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

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

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 pagina http://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

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 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 1 byte 1 byte ? 3 byte 1 byte 1 byte 1 byte 1 o 3 byte 1 byte MIDI Out o MIDI Thru Byte di stato Fine SysEx 111101112 Valore di somma di controllo Roland Valore dei dati Indirizzo iniziale Comando Invio Ricezione ID modello ID dispositivo ID produttore Byte di stato Inizio SysEx 111100002 MIDI In Programmazione MIDI (Prof. Luca A. Ludovico) 10. Messaggi System Exclusive

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 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 1 byte 1 byte ? 3 byte 1 byte 1 byte 1 byte 1 o 3 byte 1 byte MIDI Out o MIDI Thru Byte di stato Fine SysEx 111101112 Valore di somma di controllo Roland Valore dei dati Indirizzo iniziale Comando Invio Ricezione ID modello ID dispositivo ID produttore Byte di stato Inizio SysEx 111100002 MIDI In Programmazione MIDI (Prof. Luca A. Ludovico) 10. Messaggi System Exclusive

Utilizzati per estensioni allo standard MIDI 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

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

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) Parti 7 6 5 4 3 2 1 1 byte ? 1 byte 1 byte 1 byte 1 byte 1 byte MIDI Out o MIDI Thru Byte di stato Fine SysEx 111101112 Valore dei dati Sub-ID 2 Sub-ID 1 ID dispositivo o ID canale Non real-time o Byte di stato Inizio SysEx 111100002 MIDI In Programmazione MIDI (Prof. Luca A. Ludovico) 10. Messaggi System Exclusive

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

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 MIDI Out o MIDI Thru Byte di stato Fine SysEx 111101112 Valore dei dati Sub-ID 2 Sub-ID 1 ID dispositivo o ID canale Non real-time o Byte di stato Inizio SysEx 111100002 MIDI In Programmazione MIDI (Prof. Luca A. Ludovico) 10. Messaggi System Exclusive

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

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

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: 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 universale Parte 3: <device ID> ID del dispositivo destinatario Parte 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 Programmazione MIDI (Prof. Luca A. Ludovico) 10. Messaggi System Exclusive

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: F016 7F16 <device ID> 0616 command F716 Parte 1: F0 Status byte di inizio SysEx Parte 2: 7F SysEx Real-Time universale Parte 3: <device ID> ID del dispositivo destinatario 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

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

Esempio di Goto in MMC 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 universale Parte 3: <device ID> ID del dispositivo destinatario 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) 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 Programmazione MIDI (Prof. Luca A. Ludovico) 10. Messaggi System Exclusive

Approfondimenti Libreria di messaggi SysEx del produttore compilata da utenti http://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 SysEx http://www.2writers.com/eddie/TutSysEx.htm SysEx relativi al MIDI Machine Control http://en.wikipedia.org/wiki/MIDI_Machine_Control Programmazione MIDI (Prof. Luca A. Ludovico) 10. Messaggi System Exclusive