Messaggi Control Change

Slides:



Advertisements
Presentazioni simili
Messaggi System Common e System Real Time
Advertisements

Concetti fondamentali
Messaggi Control Change
Messaggi Channel Voice
Table View. Problemi ricorrenti Una situazione ricorrente è quella in cui il controller potrebbe avere un’altezza superiore a quella dello schermo. In.
1 Variabili. 2 Tipi di variabili Una variabile è qualche proprietà di un evento che è stata misurata. Le variabili sono attributi dei fenomeni e pertanto.
PRIMI CONCETTI ESEMPI INTRODUTTIVI DEFINIZIONI INTRODUZIONE ALLE FUNZIONI.
Creare e modificare suoni
ASSOCIAZIONE RADIOAMATORI ITALIANI NOZIONI DI RADIOCOMUNICAZIONI
IL SOFTWARE (FPwin 6.0).
(analisi della scena uditiva musicale)
TECNICA E PROGRAMMAZIONE
“Vivere insieme” – Lezione4
GPIO: General Purpose Input Output I parte
La rappresentazione delle informazioni
1 Grandezze e unità 1.1 grandezza
Dal problema al processo risolutivo
Confronto fra 2 popolazioni
Dispositivi MIDI in Java
Trasmettitori e ricevitori
Dal problema al processo risolutivo
ELEMENTI DI DINAMICA DELLE STRUTTURE
Laboratorio II, modulo Elettronica digitale (2a parte) (cfr.
Web MIDI API - Esempi Lezione 24
GPT Vs. MBR Vantaggi introdotti dalla formattazione con la tabella delle partizioni GPT.
Excel 1 - Introduzione.
Mezzi trasmissivi I mezzi trasmissivi utilizzati nelle reti di calcolatori si suddividono attualmente in tre categorie mezzi elettrici onde radio detti.
Programmazione a oggetti
Organizzazione fisica
INSEGUITORE SOLARE CON ARDUINO
Alimentazione esterna
Informatica A.A. 2016/17 Prof. Italo Epicoco
La Statistica Istituto Comprensivo “ M. G. Cutuli”
analizzatore di protocollo
SUBNETTING E SUPERNETTING
Introduzione L’8254 è un interval timer event/counter, progettato per risolvere i problemi del controllo del timing, comuni ad ogni microcomputer. E’ costituito.
Rappresentazione dei Numeri
A/D seconda parte.
Access.
Circuiti digitali Architettura © Roberto Bisiani, 2000
CONVERTITORE DIGITALE-ANALOGICO(DAC)
Scheduling in Linux (Kernel 2.4 e 2.6)
Programmazione e Laboratorio di Programmazione
Lettura di input MIDI da Web MIDI API
© 2007 SEI-Società Editrice Internazionale, Apogeo
Downloadable Sounds (DLS)
Lezione 16 Web MIDI API Programmazione MIDI (Prof. Luca A. Ludovico)
Standard MIDI File: eventi MTrk
Lezione 7 Laboratorio 1 Programmazione MIDI (Prof. Luca A. Ludovico)
Messaggi System Exclusive
Messaggi Channel Mode Lezione 5
Sincronizzazione Lezione 6
Processi e thread in Windows 2000
Web MIDI API - Esempi Lezione 17
Messaggi System Common e System Real Time
Standard MIDI File Lezione 10
Esercitazione su SMF Lezione 12
Introduzione a PowerPoint
Esercizi sulla Web MIDI API
Collegamento di input e output tramite Web MIDI API
I battimenti Il terzo suono di tartini
Excel 3 - le funzioni.
Processi decisionali e funzioni di controllo
Uno step sequencer Lezione 18
Ing. Maurizio Bassani LOGISTICA - Capitolo 3 - Modulo 1
PowerShell di Windows PowerShell è un shell che mette a disposizione un prompt interattivo e un interprete a riga di comando , per le sue caratteristiche.
Algoritmi.
ALGORITMO E’ una successione finita di passi che consente di risolvere tutti i problemi di una classe e di determinare il risultato. Caratteristiche: Finito.
Programmazione e Laboratorio di Programmazione
Transcript della presentazione:

Messaggi Control Change Lezione 4 Messaggi Control Change 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) 4. Messaggi Control Change

Collocazione logica dei messaggi Control Change Messaggi MIDI Channel Voice Messages Note On Note Off … Channel Mode Messages Control Change Control Change 0 Control Change 119 Control Change 120 Control Change 127 System Common Messages System Real Time Messages System Exclusive Messages Programmazione MIDI (Prof. Luca A. Ludovico) 4. Messaggi Control Change

Collocazione logica dei messaggi Control Change I Byte Byte di stato II Byte I Byte di dati III Byte II Byte di dati (1)011cccc2 (0)00000002 = 010 … Channel Voice (0)11101112 = 11910 (0)11110002 = 12010 Channel Mode (0)11111112 = 12710 Programmazione MIDI (Prof. Luca A. Ludovico) 4. Messaggi Control Change

Struttura dei messaggi Control Change Insieme di 128 eventi o azioni trasmessi attraverso il MIDI. Ciascun evento viene identificato da un proprio numero, espresso nel I Byte di dati. Il Byte di stato identifica un (qualsiasi) messaggio Control Change tramite la combinazione 1011cccc2 = [176..191]10 Il messaggio è formato poi da 2 Byte di dati I Byte di dati: Control Change da eseguire II Byte di dati: valore per il Control Change selezionato MIDI Out o MIDI Thru II Byte di dati Val. di controllo [0..127]10 I Byte di dati Specificatore [0..127]10 Byte di stato Control Change 1011cccc2 MIDI In Programmazione MIDI (Prof. Luca A. Ludovico) 4. Messaggi Control Change

Osservazione sui messaggi Control Change Analizzando la struttura dei messaggi fin qui descritti, si nota che in generale l’identificativo del messaggio è codificato tramite il secondo, terzo e quarto bit più significativi del Byte di stato. Esempio: Note Off Note On In questo caso, invece, tali bit identificano un generico Control Change che viene poi specificato tramite il I Byte di dati Note Off Byte di stato: 1000cccc2 Note On Byte di stato: 1001cccc2 Control Change Byte di stato: 1011cccc2 Programmazione MIDI (Prof. Luca A. Ludovico) 4. Messaggi Control Change

Le categorie di Control Change Continuous Controller Controller continui I Byte di dati [0..101] Due categorie: Ad alta risoluzione [0..19]  [32..51] A bassa risoluzione [70..101] Switch Controller Controller a interruttore I Byte di dati [64..69] Control Change Controller Controller per messaggi Channel Mode I Byte di dati [120..127] Nella lezione odierna si vedranno solo i primi 4 Osservazione: alcuni identificatori numerici non sono attribuiti Vedi tabella dei Control change su midi.org Channel Voice Channel Mode Programmazione MIDI (Prof. Luca A. Ludovico) 4. Messaggi Control Change

Control Change di tipo channel voice Sezione 4.1 Control Change di tipo channel voice Programmazione MIDI (Prof. Luca A. Ludovico) 4. Messaggi Control Change

Continuous Controller (Channel Voice) Inviano informazioni di posizione sui controller con continuità. Esempi di controller: slider, wheel (rotelle), wheel con richiamo in posizione centrale, joystick, pedali sensibili alla pressione, ecc. Generano gran numero di dati per indicare i cambiamenti nel tempo al fine di aggiornare i dispositivi in ricezione. Due famiglie: A bassa risoluzione – Sfruttano solo 128 possibili valori (che possono poi corrispondere a livelli, posizioni, …) Ad alta risoluzione – Permettono se richiesto di ampliare il numero di possibili valori (livelli, posizioni, …); richiedono uno stratagemma nella rappresentazione del messaggio Programmazione MIDI (Prof. Luca A. Ludovico) 4. Messaggi Control Change

Controller continui ad alta risoluzione Controller ad alta risoluzione: permettono di disporre di un numero più alto di valori, ove richiesto. Logica dell’MSB e dell’LSB: se 128 valori non sono sufficienti, si estende l’intervallo a 128 x 128 = 16384 valori Attenzione: non necessariamente tutti in uso Problema: la struttura del messaggio Control Change non può cambiare, e si dispone sempre di un solo byte per i valori veri e propri (II Byte di dati) MIDI Out o MIDI Thru II Byte di dati Val. di controllo [0..127]10 I Byte di dati Specificatore [0..127]10 Byte di stato Control Change 1011cccc2 MIDI In Programmazione MIDI (Prof. Luca A. Ludovico) 4. Messaggi Control Change

Controller continui ad alta risoluzione Stratagemma: spezzare il valore su 2 messaggi MIDI in serie, entrambi di tipo Control Change, con il I Byte di dati differente: Messaggio 1 per il valore più grossolano, o MSB (Most Significant Byte) Messaggio 2 per il valore più fine, o LSB (Least Significant Byte) Il concatenamento di MSB e LSB fornisce nel complesso 14 bit per la rappresentazione di un singolo valore Messaggio 2 Messaggio 1 MIDI Out o MIDI Thru II Byte di dati Ultimi 7 bit I Byte di dati Specificatore (LSB) Byte di stato Control Change 1011cccc2 II Byte di dati Primi 7 bit I Byte di dati Specificatore (MSB) Byte di stato Control Change 1011cccc2 MIDI In Programmazione MIDI (Prof. Luca A. Ludovico) 4. Messaggi Control Change

Controller continui ad alta risoluzione corrispondenti (+32) diversi uguali MIDI Out o MIDI Thru II Byte di dati Ultimi 7 bit I Byte di dati Specificatore (LSB) Byte di stato Control Change 1011cccc2 II Byte di dati Primi 7 bit I Byte di dati Specificatore (MSB) Byte di stato Control Change 1011cccc2 MIDI In Messaggio 2 Messaggio 1 I messaggi abbinati per i controller ad alta risoluzione sono caratterizzati da Byte di stato uguale, I Byte di dati che identifica i due messaggi corrispondenti (id + 32), II Byte di dati diverso in quanto contiene il valore a 14 bit spezzato in due parti. Programmazione MIDI (Prof. Luca A. Ludovico) 4. Messaggi Control Change

Non sempre la granularità fine è supportata Osservazioni Non sempre la granularità fine è supportata Se il dispositivo master non supporta i controller [32..63], la controparte di valore LSB per i controller [0..31] non potrà mai essere generata e trasmessa Se il dispositivo master supporta i controller [32..63] ma il dispositivo slave no, la controparte LSB per i controller MSB [0..31] sarà trasmessa ma lo slave ignorerà tali messaggi Se tanto il master quanto lo slave gestiscono i controller [32..63], questo tipo di Control Change avrà una risoluzione fine Programmazione MIDI (Prof. Luca A. Ludovico) 4. Messaggi Control Change

Esercizio sui controller ad alta risoluzione Si consideri un modulo sonoro multitimbrico che dispone di 200 banchi da 128 timbri ciascuno. Si ipotizzi di inviargli messaggi sul canale 1. E’ sufficiente utilizzare il controller continuo di Bank Select con granularità grossolana? Come devono essere valorizzati i messaggi da inviare sul canale trasmissivo? Programmazione MIDI (Prof. Luca A. Ludovico) 4. Messaggi Control Change

Soluzione Non è possibile utilizzare solo il messaggio Control Change di Bank Select a risoluzione grossolana in quanto consentirebbe di indirizzare solo 27 = 128 banchi. E’ richiesto l’utilizzo di Bank Select con MSB e LSB. 20010 = 110010002 che significa (0)00000012 (0)10010002 Messaggio 2 Messaggio 1 MIDI Out o MIDI Thru II Byte di dati 7 bit meno sign. 010010002 I Byte di dati Bank Select (LSB) 001000002 Byte di stato Control Change 101100002 II Byte di dati 7 bit più sign. 000000012 I Byte di dati Bank Select (MSB) 000000002 Byte di stato Control Change 101100002 MIDI In Programmazione MIDI (Prof. Luca A. Ludovico) 4. Messaggi Control Change

Esempi di Continuous Controller ad alta risoluzione Bank Select (0 grossolano, 32 fine): utilizzato per scegliere tra i vari banchi di suoni di cui sono dotati i sintetizzatori Modulation Wheel (1 grossolano, 33 fine): attivato dal controller detto modulation wheel, che può avere diverse funzioni, ad esempio modulare un LFO per produrre l’effetto di vibrato. Breath Control (2 grossolano, 34 fine): originariamente concepito per i controller a fiato, per tenere conto della variazione di intensità nel soffio Portamento Time (5 grossolano, 37 fine): controlla il portamento tra due note consecutive sullo stesso canale Channel Volume (7 grossolano, 39 fine): controlla il volume generale associato al canale corrente Balance (8 grossolano, 40 fine): controlla il bilanciamento tra canale sinistro e destro, tipicamente per timbri stereofonici Pan (10 grossolano, 42 fine) ): controlla il bilanciamento tra canale sinistro e destro, tipicamente per timbri monofonici Programmazione MIDI (Prof. Luca A. Ludovico) 4. Messaggi Control Change

Controller continui a bassa risoluzione Non ammettono granularità fine, quindi non necessitano di un secondo messaggio associato. Controllano (a distanza) alcuni parametri del suono che tipicamente si potrebbero impostare manualmente tramite pomelli sul modulo sonoro Esempi notevoli: Sound Controller 3 o Release Time (controller 72) Sound Controller 4 o Attack Time (controller 73) Sound Controller 5 o Brightness (controller 74) Portamento Control (controller 84) Tremolo Level (controller 92) Chorus Level (controller 93) Programmazione MIDI (Prof. Luca A. Ludovico) 4. Messaggi Control Change

Controller a interruttore (switch) Provengono da controller On/Off e richiedono solo 2 valori. Convenzionalmente: Off = 0 (o qualsiasi valore <= 63) On = 127 (o qualsiasi valore >= 64) Esempi notevoli: Damper Pedal o Sustain (controller 64) Portamento On/Off (controller 65) Sostenuto (controller 66) Soft Pedal (controller 67) Programmazione MIDI (Prof. Luca A. Ludovico) 4. Messaggi Control Change

Control Change di tipo channel MODE Sezione 4.2 Control Change di tipo channel MODE Programmazione MIDI (Prof. Luca A. Ludovico) 4. Messaggi Control Change

All Sound Off Silenzia tutti i suoni correntemente in esecuzione sul canale selezionato (ad es. Note On non conclusi dai corrispettivi Note Off) Il Byte di stato identifica un messaggio Control Change tramite la combinazione 1011cccc2 = [176..191]10 Il messaggio è formato poi da 2 Byte di dati con valori di default I Byte di dati: 12010 (identifica questo messaggio Control Change) II Byte di dati: 0 (valore di default) MIDI Out o MIDI Thru II Byte di dati Valore di default 000000002 = 010 I Byte di dati All Sound Off 011110002=12010 Byte di stato Control Change 1011cccc2 MIDI In Programmazione MIDI (Prof. Luca A. Ludovico) 4. Messaggi Control Change

All Notes Off Impone messaggi di Note Off per tutte le note correntemente in esecuzione (ossia Note On non ancora conclusi da Note Off) Il Byte di stato identifica un messaggio Control Change tramite la combinazione 1011cccc2 = [176..191]10 Il messaggio è formato poi da 2 Byte di dati con valori di default I Byte di dati: 12310 (identifica questo messaggio Control Change) II Byte di dati: 0 (valore di default) MIDI Out o MIDI Thru II Byte di dati Valore di default 000000002 = 010 I Byte di dati All Notes Off 011110112=12310 Byte di stato Control Change 1011cccc2 MIDI In Programmazione MIDI (Prof. Luca A. Ludovico) 4. Messaggi Control Change

All Sound Off vs All Notes Off Differenza All Notes Off impone messaggi Note Off per tutte le note attualmente in esecuzione. Il comportamento conseguente non è l’automatica interruzione del suono, ma dipende da altri fattori Esempi: pressione dell’Hold Pedal, rilascio naturale delle note All sound Off tacita istantaneamente il suono prodotto dal dispositivo. Spesso è usato dai sequencer per tacitare in modo istantaneo tutti i suoni quando l’utente schiaccia il tasto "Stop" durante l’esecuzione Programmazione MIDI (Prof. Luca A. Ludovico) 4. Messaggi Control Change

Reset All Controllers Ripristino di tutti i controller del dispositivo ad uno stato iniziale ideale Es.: Modulation wheel a 0, pedali in posizione di riposo, ecc. Il Byte di stato identifica un messaggio Control Change tramite la combinazione 1011cccc2 = [176..191]10 Il messaggio è formato poi da 2 Byte di dati con valori di default I Byte di dati: 12110 (identifica questo messaggio Control Change) II Byte di dati: 0 (valore di default) MIDI Out o MIDI Thru II Byte di dati Valore di default 000000002 = 010 I Byte di dati Reset All Controllers 011110012=12110 Byte di stato Control Change 1011cccc2 MIDI In Programmazione MIDI (Prof. Luca A. Ludovico) 4. Messaggi Control Change

Local Control On/Off Il Byte di stato identifica un messaggio Control Change tramite la combinazione 1011cccc2 = [176..191]10 Il messaggio è formato poi da 2 Byte di dati con valori di default I Byte di dati: 12210 (identifica questo messaggio Control Change) II Byte di dati: 010 per Off, 12710 per On Il secondo Byte di dati emula un interruttore On/Off. MIDI Out o MIDI Thru II Byte di dati Off: 000000002 = 010 On: 011111112 = 12710 I Byte di dati Local Control 011110102=12210 Byte di stato Control Change 1011cccc2 MIDI In Programmazione MIDI (Prof. Luca A. Ludovico) 4. Messaggi Control Change

Local Control On/Off Abilita/disabilita il controllo locale in quei dispositivi che integrano un controller e un modulo sonoro. Esempio: tastiera con funzioni di sintesi In entrambi i casi (Local Control On e Off), i circuiti elettrici o i generatori di suono ricevono comunque i messaggi Channel Voice dal MIDI In. Se Local Control è On, li ricevono anche dal controller, se Local Control è Off, solo dal MIDI In. Local Control On Local Control Off Local Control Off MIDI In MIDI Out MIDI Out MIDI Out Programmazione MIDI (Prof. Luca A. Ludovico) 4. Messaggi Control Change

Esempio di Local Control Off Come evitare replicazione nella sintesi dei suoni della tastiera in una configurazione sequencer, controller+synth, synth. Local Control On Eventi ripetuti Local Control Off Eventi non ripetuti MIDI Thru MIDI In Local Control On MIDI Out MIDI Thru MIDI In Local Control Off MIDI Out MIDI Out MIDI In Programmazione MIDI (Prof. Luca A. Ludovico) 4. Messaggi Control Change

Osservazioni sul II Byte di dati Il Byte di stato identifica un (qualsiasi) messaggio Control Change tramite la combinazione 1011cccc2 = [176..191]10 Il messaggio è formato poi da 2 Byte di dati I Byte di dati: Control Change da eseguire II Byte di dati: valore per il Control Change selezionato L’appartenenza dei messaggi a questa famiglia impone la presenza di 2 Byte di dati. Però il II Byte viene utilizzato in modo variabile, a seconda dello specifico messaggio: può portare un valore significativo ed essere perfettamente dimensionato (controller a granularità grossolana) può essere insufficiente a discriminare tra i valori richiesti (controller a granularità raffinata) può dover discriminare solo tra On/Off, caso in cui si sceglie una coppia di valori di default tra i 128 possibili (switch controller, Local Control) può essere del tutto superfluo, caso in cui si compila con un valore di default, tipicamente 0 (All Sound Off, All Notes Off,…) Programmazione MIDI (Prof. Luca A. Ludovico) 4. Messaggi Control Change

Collocazione logica dei messaggi Control Change Messaggi MIDI Channel Voice Messages Note On Note Off … Channel Mode Messages Control Change Control Change 0 Control Change 119 Control Change 120 Control Change 127 System Common Messages System Real Time Messages System Exclusive Messages Programmazione MIDI (Prof. Luca A. Ludovico) 4. Messaggi Control Change

La sotto-categoria di Channel Mode Intervallo: [120..127]10 Primi 4 messaggi All Sound Off (I Byte di dati = 12010) Reset All Controllers (I Byte di dati = 12110) Local control On/Off (I Byte di dati = 12210) All Notes Off (I Byte di dati = 12310) Altra parte di messaggi Control Change che rientrano nella famiglia Channel Mode: prossima lezione Omni Mode Off (I Byte di dati = 12410) Omni Mode On (I Byte di dati = 12510) Poly Mode Off (I Byte di dati = 12610) Poly Mode On (I Byte di dati = 12710) Programmazione MIDI (Prof. Luca A. Ludovico) 4. Messaggi Control Change