Vous êtes sur la page 1sur 32

Elementi di Programmazione MIDI Francesca Ortolani

ELEMENTI DI PROGRAMMAZIONE MIDI


(Appunti per le lezioni di HD Recording estratto da Sintesi del Suono Appunti e approfondimenti per i corsi di Music Technology)

Francesca Ortolani

5.1 Introduzione al protocollo MIDI


Al Capitolo 2 abbiamo gi introdotto dal punto di vista storico il protocollo MIDI (Musical Instrument Digital Interface). Riassumiamo brevemente quanto detto. Nel 1981 la Sequential Circuits (Smith/Wood) propone una versione del MIDI, un protocollo di comunicazione tra strumenti musicali, le cui specifiche vengono pubblicate lanno successivo, 1982, come Specification 1.0. Il MIDI viene presentato ufficialmente al pubblico nel 1983 e il primo synth dotato di porte MIDI fu proprio uno strumento della Sequential Circuits, il Prophet 600. Nei mesi a venire i vari produttori scelsero o meno di adattare i propri strumenti secondo le specifiche hardware e software pubblicate nel 1984 a seguito di un accordo tra produttori. Queste specifiche, che garantivano la compatibilit fra le macchine, da allora non subirono sostanziali modifiche e il protocollo MIDI che conosciamo oggi praticamente lo stesso dai lontani primi anni 80. Grazie allesistenza di uno standard, lutente che compra una macchina che ne rispetti le specifiche sicuro che tale dispositivo possa essere integrato in un sistema MIDI compatibile. Linterfaccia MIDI consente la trasmissione seriale di bit alla velocit di 31250 bit/sec. Essendo la trasmissione asincrona, i messaggi MIDI saranno racchiusi fra 2 bit (start/end) che determineranno linizio e la fine della sequenza trasmessa. START BIT STOP BIT =0 =1

Avendo tale velocit di trasmissione, per inviare un byte (= 8 bit) + bit start + bit end occorreranno 320 sec (10/31250). Se si fosse scelta invece una trasmissione di tipo sincrono, ogni dispositivo slave, ovvero che viene pilotato da un master, avrebbe dovuto rispondere al master, che aveva inviato il messaggio, con un feedback di avvenuta ricezione. Essendo il sistema MIDI componibile da tanti dispositivi, tutti questi avrebbero inviato messaggi di feedback continuamente, occupando moltissima banda disponibile. I messaggi MIDI vengono trasmessi in gruppi di 8 bit (quindi ciascun gruppo assume valori possibili tra 0 e 255, perch 28 = 256 . Si ha che 256 possibilit non bastano a coprire la complessit del sistema MIDI, quindi a seconda della precisa disposizione dei bit in un messaggio, la macchina sapr interpretare diversi tipi di messaggi. 1

Elementi di Programmazione MIDI Francesca Ortolani

5.2 Interfaccia MIDI


Linterfaccia MIDI composta da 3 porte (IN, OUT, THRU), attualmente realizzate con connettori femmina DIN o mini DIN a 5 poli.

IN: OUT: THRU:

riceve i dati in ingresso trasmette i dati in uscita trasmette in uscita una copia dei dati ricevuti in ingresso

Al pin 5 del connettore avviene la connessione per il trasferimento dei dati MIDI in ununica direzione. Essendo quindi il collegamento simplex avr bisogno di una porta IN e una porta OUT.
Figura 5.1 Connettore DIN 5 poli. Utilizzato nelle porte MIDI.

Figura 5.2 Porta MIDI IN e porta MIDI THRU

Figura 5.3 Porta MIDI OUT

Elementi di Programmazione MIDI Francesca Ortolani

Figura 5.3: i dati provenienti da un bus UART vengono inviati al pin 5 dalla porta MIDI OUT. Collego quindi con un cavo (consigliato: non pi di 15 mt per evitare riflessioni sulla linea) luscita MIDI (OUT) di un dispositivo allingresso MIDI (IN) di un altro. In questo modo un impulso di corrente scorre nel LED (D2) delloptoisolatore e lo accende eccitando il fototransistor (Q1) che trasferisce in uscita la tensione applicata in ingresso alla porta (che ritroviamo ai capi del diodo D1). Il segnale inviato quindi al bus UART del dispositivo ricevente o alla sua porta MIDI THRU.

Oggi le connessioni MIDI possono avvenire anche attraverso le moderne porte USB di tipo B (tipicamente).

Figura 5.4 Estremit di un cavo USB tipo A/tipo B

Master e Slave In un sistema MIDI alcuni strumenti si comportano come master e altri come slave: MASTER: SLAVE: strumenti che pilotano altri strumenti strumenti che vengono pilotati da altri strumenti

cio i master mandano comandi che gli slave eseguono. Nota: La trasmissione tra master e slave efficace se questi si interfacciano sugli stessi canali. Esempio: Seleziono CH1 su MASTER e CH1 su SLAVE Il master comanda lo slave CH1 su MASTER e CH2 su SLAVE Il master non riesce a comandare lo slave

Utilizzo di strumenti master e slave, esempi


Esempio 1

Figura 5.5 A master sia di B che di C

Elementi di Programmazione MIDI Francesca Ortolani

Esempio 2

Figura 5.6 A master di B; B master di C; A non master di C.

Gli strumenti master sono tutti quei dispositivi dotati di controller, come synth con tastiera muta (master keyboard) oppure controller rotativi, slider Gli strumenti slave sono ad esempio gli expander, i quali sono privi di controller o qualsiasi strumento dotato di una porta di ingresso MIDI che possa essere pilotato in remoto. Soft Thru Il computer pu comportarsi sia come master che come slave e cambiare il proprio comportamento rapidamente. Per evitare che lutente debba ricablare continuamente le proprie macchine a seconda del comportamento desiderato, stata introdotta la porta SOFT THRU. Il seguente esempio spiega il funzionamento di un sistema MIDI in cui sia presente una porta Soft Thru: Il Soft Thru funziona come THRU quando sto suonando la tastiera e voglio sentire quello che sto suonando tramite expander, invece funziona come OUT quando il computer riproduce ci che stato registrato e necessita dellexpander, il quale dotato di uscite audio, per avere un suono in uscita. Attenzione a non confondersi: in questo caso si parla di registrazione nel senso MIDI, ovvero memorizzo una sequenza di comandi (es.suona la nota...sul canale).
Figura 5.7 Esempio di utilizzo della porta SOFT THRU

Elementi di Programmazione MIDI Francesca Ortolani

5.3 Strumenti accessori in una rete MIDI


MIDI Merge Box La Merge Box serve per collegare pi master ad un singolo slave. Il lavoro di questa scatola smistare i messaggi provenienti dai master in modo opportuno.

Figura 5.8 Utilizzo della Merge Box in un sistema MIDI

MIDI Thru Box La MIDI Thru Box indirizza i messaggi di un master verso diversi slave con un collegamento a stella. Questa scatola utile per evitare errori di trasmissione quando nel proprio sistema MIDI sono presenti molti slave. La Thru Box permette anche di velocizzare la trasmissione.

Figura 5.9 Utilizzo della Thru Box in un sistema MIDI

Elementi di Programmazione MIDI Francesca Ortolani

Interfacce MIDI multiporta Le interfacce multiporta si possono utilizzare per connettere il computer al sistema MIDI. Ogni porta viene gestita dal software separatamente. In questo modo ho una moltiplicazione dei canali a disposizione: 16 X n porte. Un utilizzo tipico di questi dispositivi in un sistema in cui siano presenti strumenti multitimbrici che occupano un gran numero di canali.

5.4 Messaggi MIDI


Entriamo nel vivo della programmazione MIDI. Su questo libro si daranno alcuni cenni che, tuttavia, saranno sufficienti per iniziare a lavorare con il protocollo MIDI. Allinterno di un messaggio MIDI esistono 2 tipi di byte MIDI: STATUS BYTE e DATA BYTE. Entrambi status byte e data byte sono composti da 8 bit (inviati tra altri 2 bit di start ed end), ma hanno funzioni diverse. Abbiamo gi detto che con 8 bit possiamo codificare 256 valori diversi. I primi 128 (da 0 a 127) saranno per i DATA BYTE e i secondi 128 (da 128 a 255) per gli STATUS BYTE. Quindi gli STATUS BYTE inizieranno con 1 e i DATA BYTE con 0 (al paragrafo 5.7 si spiegher come funziona il sistema binario). 1xxx xxx 0xxx xxx STATUS BYTE DATA BYTE

(Si dice anche che il MIDI un sistema a 7 bit reali, in quanto il primo di 8 gi determinato. ) Status byte e Data byte I due tipi di byte MIDI si distinguono per la loro diversa funzione allinterno del messaggio: STATUS BYTE: specificano il tipo di messaggio (informazione qualitativa) DATA BYTE: specificano il valore associato a quel tipo di messaggio (informazione quantitativa) Un messaggio MIDI cos strutturato: STATUS DATA 1 DATA 2

Il secondo Data Byte pu non essere sempre presente. Solitamente si hanno 2 Data Byte in un messaggio. Es. Messaggio di Note on: STATUS: comando Note On DATA 1: numero della nota DATA 2: valore velocity 6

Elementi di Programmazione MIDI Francesca Ortolani

5.4.1 Formato dello Status Byte In generale lo STATUS BYTE formato in questo modo: 1xxx nnnn I primi 4 bit (1xxx) si riferiscono allistruzione principale. Il secondo gruppo di 4 bit (nnnn) rappresenta il numero di canale su cui indirizzare listruzione contenuta nel primo gruppo (se si tratta di un messaggio di canale) oppure listruzione di un messaggio di sistema. Nel MIDI ho a disposizione 16 canali, codificati nel gruppo nnnn con i valori da 0 a 15 (0000 1111). Per quanto riguarda il primo gruppo di bit, essendo il primo bit sempre 1, saranno gli altri tre, xxx, a determinare il tipo di messaggio. Ho quindi 23 = 8 possibili combinazioni per il messaggio.

5.4.2 Categorie di messaggi MIDI: messaggi di CANALE e di SISTEMA I messaggi possono essere di CANALE o di SISTEMA. Quelli di CANALE sono inviati ai singoli canali e riguardano lesecuzione musicale. Essi sono individuati dalle prime 7 combinazioni dei bit xxx del primo gruppo di 4 bit come visto al paragrafo precedente. Quelli di SISTEMA sono rivolti al sistema MIDI e sono individuati dallultima combinazione ovvero 1111. Esempio: 1000 1010 = Note On sul canale 11

Attenzione a non sbagliarsi: 1010 in binario si traduce in 10 nel sistema decimale. Allutente per i canali risultano cominciare dal numero 1 (non da 0), perci si ha 10+1 = 11. BIN 1000 1001 1010 1011 1100 1101 1110 1111 HEX 8nH 9Nh AnH BnH CnH DnH EnH FnH MESSAGGIO NOTE OFF NOTE ON AFTERTOUCH POLIFONICO CONTROL CHANGE PROGRAM CHANGE AFTERTOUCH DI CANALE PITCH BEND MESSAGGI DI SISTEMA

nnnn nnnn nnnn nnnn nnnn nnnn nnnn nnnn

Tabella 5.1

Possibili combinazioni 1xxx nnnn

Elementi di Programmazione MIDI Francesca Ortolani

STATUS 8NH (NOTE OFF) 9Nh (NOTE ON) AnH (AFTERTOUCH POL.) BnH (CONTROL CHANGE) CnH (PROGRAM CHANGE) DnH (AFTERTOUCH CH.) EnH (PITCH BEND) FnH (SYSTEM)
Tabella 5.2

DATA 1 NUMERO NOTA NUMERO NOTA NUMERO NOTA NUMERO CONTROLLO NUMERO PROGRAMMA PRESSURE POSITION MSB Vedi dopo

DATA 2 VELOCITY VELOCITY PRESSURE VALORE CONTROLLO POSITION LSB

Significato dello Status Byte e dei Data Byte 1 e 2 nelle 8 combinazioni

I messaggi di canale e i messaggi di sistema si suddividono in sottocategorie:

CHANNEL MESSAGES

CHANNEL VOICE MSG (messaggi di VOCE) CHANNEL MODE MSG (messaggi di MODO)

SYSTEM COMMON MSG SYSTEM MESSAGES REAL-TIME MSG SYSTEM EXCLUSIVE MSG

Channel Messages Lo STATUS BYTE di un messaggio di CANALE sempre 1xxx nnnn. Per quanto riguarda i 3 bit xxx solo le prime 7 di 8 combinazioni sono utilizzate per indicare questa categoria di messaggi. Quando il sistema riconosce dai primi 4 bit del messaggio che si tratta di un messaggio di canale, prende in esame il secondo nibble (4 bit = 1 nibble), che indica su quale canale indirizzato il messaggio. Questi messaggi vengono generati tutte le volte che viene selezionato e variato un controllo o viene suonata una nota, etc Channel Voice Messages Questi messaggi sono generati durante lesecuzione del brano. Tra questi: NOTE ON/OFF, PITCH BEND, CONTROL CHANGE, PROGRAM CHANGE, AFTERTOUCH POLY e di CANALE.

Elementi di Programmazione MIDI Francesca Ortolani

NOTE OFF: messaggio che ordina ad uno slave di smettere di suonare una certa nota su un certo canale: STATUS 8nH 1000 nnnn (Note Off) DATA 1 kkH 0kkk kkkk (Key Num) DATA 2 vvH 0vvv vvvv (Velocity)

Un messaggio di NOTE OFF non interrompe il suono, ma solo il suo invio. Il release del suono comincia al giungere del NOTE OFF. Il numero di nota va da 0 a 127, coprendo un range di 128 note da C-2 a G8 (il DO centrale sarebbe C3. Le lettere indicano la dicitura anglosassone per le note). Si pu trovare uno standard di manifattura diverso, ovvero che va da C-1 a G9 (in questo caso il DO centrale si trova in C4). Attenzione quindi se si utilizzano strumenti che usano standard diversi ad avere la giusta corrispondenza di ottava. Il costruttore fornir allutente le informazioni comprendenti sia la posizione del DO centrale sia leffettivo range (TRUE VOICE) coperto dallo strumento (non necessariamente lintero range di 128 note). Attenzione! Non detto che il suono relativo a C3 abbia frequenza inferiore a C5: dipende da come il timbro usato associato alle note (vedi esempio tipico dei kit percussivi: ogni nota una percussione diversa).

Velocity La Velocity la velocit con cui si preme/rilascia un tasto. usata pi frequentemente per controllare il volume della nota, in realt la velocity pu controllare tanti altri parametri come il cut off di un filtro, pitch, pan Si pu impostare sullo slave quale parametro controllare. Non sempre tutti gli strumenti ricevono/trasmettono la velocity. Uno strumento che non la riceve ignorer il data byte relativo alla velocity, considerando solo gli altri.

Non sempre si trova un messaggio di NOTE OFF a seguire un messaggio di NOTE ON. comune trovare piuttosto un messaggio di NOTE ON con VELOCITY = 0. Running Status Il MIDI supporta il running status, ovvero finch lo STATUS non cambia, si pu evitare di inviarlo nuovamente, limitandosi a trasmettere solo i DATA, risparmiando tempo, memoria e banda.

Elementi di Programmazione MIDI Francesca Ortolani

NOTE ON: messaggio che ordina ad uno slave di suonare una certa nota su un certo canale: STATUS 9nH 1001 nnnn (Note On) DATA 1 kkH 0kkk kkkk (Key Number) DATA 2 vvH 0vvv vvvv (Velocity)

Le tastiere che non sono sensibili alla velocity trasmettono ogni nota con valore della velocity intermedio (64). NOTE ON con Vel = 0 NOTE OFF

AFTERTOUCH POLIFONICO: controllo della pressione esercitata sui tasti in stato di ON (ovvero non si pu rilasciare un tasto e poi usare laftertouch). STATUS AnH 1010 nnnn (Poly Key Pressure) DATA 1 kkH 0kkk kkkk (Key Number) DATA 2 aaH 0aaa aaaa (Pressure Aftertouch)

LAFTERTOUCH controlla vari parametri e funzioni impostabili sullo slave: vibrato, tremolo, volume Laftertouch POLIFONICO fa s che questo controllo sia distinto per ogni singolo tasto. Per fare ci la tastiera necessita di un sensore per ogni tasto. Il DATA BYTE 2 si riferisce alla quantit di pressione esercitata sul tasto.

AFTERTOUCH DI CANALE: vale quanto detto per quello polifonico, ma non necessita di un sensore per ogni singolo tasto, piuttosto di uno globale per lintera tastiera: STATUS DnH 1101 nnnn (Channel Pressure) DATA 1 aaH 0aaa aaaa (Pressure Aftertouch)

Questo messaggio invia la stessa informazione di pressione esercitata per tutto il canale (Nota: c un solo DATA BYTE per la pressione).

10

Elementi di Programmazione MIDI Francesca Ortolani

PROGRAM CHANGE: messaggio che ordina ad uno slave di cambiare programma tra una serie di 128 preset: STATUS CnH 1100 nnnn (Program Change) DATA 1 ppH 0ppp pppp (Preset Number)

Questi preset cambiano a seconda del tipo di strumento. Originariamente per programma si intendeva solo un certo timbro di un certo synth. Oggi invece si intende una generica configurazione di funzione, che pu essere anche un effetto su un DSP, i livelli di un mixer, lo split di una master keyboard Dato che 128 un numero limitato, sono stati introdotti i BANCHI selezionabili tramite BANK SELECT e comprendenti fino a 128 preset.

PITCH BEND: messaggio che ordina ad uno slave di alterare il pitch in modo continuo (glissato) per simulare leffetto bending (es. come sulla chitarra): STATUS EnH 1110 nnnn (Pitch Bender Change) DATA 1 mmH 0mmm mmmm (Bender Position MSB) DATA 2 llH 0lll llll (Bender Position LSB)

Il messaggio di PITCH BEND pu essere inviato tramite joystick o rotella (wheel) bidirezionale con ritorno a molla. Il PITCH BEND (o PITCH BENDER CHANGE) indica in pratica la posizione del controller del pitch (rotella, joystick). Il range frequenziale dipende dallo strumento slave e da come esso impostato (il vincolo meccanico della rotella non conta). Solitamente di default troviamo un range di 2 semitoni, ma possiamo impostare fino a 24 semitoni (il range aggiustabile tramite un controller RPN leggi di seguito). I DATA BYTE sono due: POSITION MSB e POSITION LSB. Avendone due si fornisce al pitch bender una risoluzione migliore (14 bit invece di 7). In questo modo leffetto sar pi continuo e meno a scatti. Con 14 bit possiamo discretizzare 214 = 16384 livelli di pitch.

11

Elementi di Programmazione MIDI Francesca Ortolani

CONTROL CHANGE: messaggio che ordina ad uno slave di cambiare controllo: STATUS BnH 1011 nnnn (Control Change) DATA 1 ccH 0ccc cccc (Control Number) DATA 2 ppH 0ppp pppp (Control Position)

Siccome bisogna stabilire sia QUALE controllo sia QUANTO controllo si deve applicare, il CONTROL CHANGE utilizza anche il primo DATA BYTE per trasmettere uninformazione qualitativa (funzione che invece sarebbe tipica di uno STATUS BYTE). Il secondo DATA BYTE invece svolge la sua tipica funzione quantitativa. Nel 1985 la MMA (MIDI Manufactures Association) ha definito una tabella che assegna in modo univoco un numero a ciascun controller. I controller si suddividono in CONTROLLI CONTINUI e CONTROLLER AD INTERRUTTORE. Un CONTROLLER CONTINUO pu assumere ciascun valore di 128 inviabili nel DATA BYTE 2. I CONTROLLER AD INTERRUTTORE sono OFF da 0 a 63 e ON da 64 a 127. Per quanto riguarda il primo DATA BYTE, i controller: 0 63 sono continui 64 95 sono ad interruttore (ad eccezione di 70-74, 91-95 che sono continui a 7 bit) 96 101 sono riservati alla trasmissione dei messaggi di MODO.

I controller continui da 0 a 63 sono a 14 bit. Questo vuol dire che serviranno due DATA BYTE per fornire linformazione quantitativa. Per questo i controller continui sono ripetuti due volte: 0 31 MSB (Most Significant Byte) 32 63 LSB (Least Significant Byte)

Channel Mode Messages Questi messaggi riguardano il controllo generale di un dispositivo e non dei singoli parametri: in pratica definiscono la risposta dello strumento ai VOICE MESSAGES. I messaggi di MODO sono richiamati da uno STATU BYTE di Control Change e dai DATA BYTE che si riferiscono ai controller da 120 (78) a 127 (7F). Tra questi messaggi troviamo: ALL SOUND OFF, RESET ALL CONTROLLERS

12

Elementi di Programmazione MIDI Francesca Ortolani

ALL SOUND OFF: messaggio che silenzia tutte le note che suonano, che erano state attivate con NOTE ON, ma non ancora rimosse con NOTE OFF: STATUS BnH 1011 nnnn (Control Change) DATA 1 78H 0111 1000 (All Sound Off) DATA 2 00H 0000 0000 (ignorato)

Precisamente questo messaggio non silenzia in assoluto TUTTE le note: quelle in ingresso MIDI IN (es. da tastiera) continuano a suonare. ALL NOTES OFF: messaggio che silenzia TUTTE le note in assoluto (anche MIDI IN !!): STATUS BnH 1011 nnnn (Control Change) DATA 1 7BH 0111 1011 (Reset) DATA 2 00H 0000 0000 (ignorato)

Questo messaggio una specie di Panic Button: funziona soprattutto per sbloccare le note che non smettono di suovare. LOCAL CONTROL: messaggio che attiva/disattiva la tastiera localmente, facendo in modo che i parametri del synth siano controllati attraverso MIDI IN da uno strumento esterno: STATUS BnH 1011 nnnn (Control Change) DATA 1 7AH 0111 1010 (Local Ctrl) DATA 2 OFF: 00H 0000 0000 ON: 80H 1000 0000

(Attenzione! Il DATA BYTE ON inizia con 1 !!) OMNI MODE OFF: (All Notes Off) in questo modo il dispositivo risponder solo ai messaggi VOICE su un numero limitato di canali, di solito uno solo (Base Channel): STATUS BnH 1011 nnnn (Control Change) DATA 1 7CH 0111 1101 (Omni Mode Off) DATA 2 00H 0000 0000 (ignorato)

13

Elementi di Programmazione MIDI Francesca Ortolani

OMNI MODE ON: (All Notes On) in questo modo, senza riguardo di quale canale riceva il messaggio, lo strumento risponder comunque al messaggio (ovvero risponde a tutti e 16 i canali): STATUS BnH 1011 nnnn (Control Change) DATA 1 7DH 0111 1100 (Omni Mode On) DATA 2 00H 0000 0000 (ignorato)

MONO MODE ON: (Poly Off) in questo modo si comunica ad uno slave di selezionare il modo MONO. Il DATA BYTE 2 indica su quali canali devono essere ricevute/trasmesse le voci monofoniche: STATUS BnH 1011 nnnn (Control Change) DATA 1 7EH 0111 1110 (Mono Mode) DATA 2 mmH 0000 mmmm (Channel Allocation)

Dato il canale N saranno interessati al MONO i canali N+M-1 (<16). Se il valore del DATA BYTE 2 0, allora MONO sar allocato su tutti i canali. POLY MODE ON: (Mono Off) in questo modo si comunica ad uno slave di attivare il POLYMODE. Lo strumento risponde polifonicamente alle informazioni MIDI: STATUS BnH 1011 nnnn (Control Change) DATA 1 7FH 0111 1111 (Poly Mode On) DATA 2 00H 0000 0000 (ignorato)

System Messages Questi messaggi sono ricevuti da tutto il sistema MIDI, ovvero da tutti gli strumenti collegati, e non contengono informazioni di canale.

14

Elementi di Programmazione MIDI Francesca Ortolani

SYSTEM COMMON MSG SYSTEM MESSAGES SYSTEM REAL TIME MSG SYSTEM EXCLUSIVE MSG

Il formato per questi messaggi il seguente: 1111 xxxx (ho quindi 2 4 = 16 diversi messaggi possibili)

System Exclusive Messages Questi messaggi sono usati per mandare informazioni specifiche ad un certo modello di strumento o classe compatibile, servono per comunicare con la macchina, per fare il backup della memoria, per impostare dei parametri Si usano poco, soprattutto si usano per macchine hardware. I Virtual Instruments di solito non li ricevono. Sono formati quasi sempre da 4 sezioni: START ID DATA END F0 Pu indicare lidentificativo della macchina Pu indicare un parametro da modificare e un valore F7

Esistono 4 tipi di Sys-Ex: 1. Commercial: usato per tutte le macchine messe in commercio. - ID: Manufacturer ID 00 7C xx case storiche (41 Roland, 47 Akai) 00 xx xx altre case (00 00 7E Alesis, 00 01 06 Presonus) Device ID Identificativo della macchina (nel caso ci fossero macchine uguali in un sistema, lutente pu impostare questo parametro per distinguerle). Default 00 (Roland 01) Model ID Identificativo del modello (es. Roland A-37)

15

Elementi di Programmazione MIDI Francesca Ortolani

2. Non Commercial: usato per macchine MIDI che non vengono messe in commercio. - ID: 7D Universal Non Commercial. 3. Universal Non-Real Time: usato per i messaggi che non necessitano di una risposta immediata. - ID: ID 7E Universal Non-Real Time. Channel Number 00 7F (7F = GLOBAL) Sub ID Varie funzioni. 4. Universal Real Time: usato per Sincronizzazione MIDI Time Code). - ID: ID 7F Universal Real Time. Channel Number 00 7F (7F = GLOBAL) Sub ID Varie funzioni. i messaggi in tempo reale (vedi

System Common Messages I System Common sono messaggi che riguardano il timecode, laccordatura degli oscillatori, la selezione di una song, tra questi: QUARTER FRAME, SONG POSITION, SONG SELECT, TUNE REQUEST.

System Real Time Messages Questi messaggi sono formati dal solo STATUS BYTE. Possono essere inviati in qualsiasi momento, anche tra byte di altri messaggi interrompendo il flusso in corso. Si tratta di una serie di vari messaggi di sincronizzazione delle macchine: CLOCK START, CONTINUE, STOP, ACTIVE SENSING, SYSTEM RESET. Es. CLOCK Il CLOCK un segnale di sincronismo tra diversi dispositivi ed inviato almeno 24 volte ogni nota da 1/4. Per questo si chiama anche PPQN (Pulse per Quarter Note) oppure CPQN (Clock per Quarter Note). Il PPQN la risoluzione di timing (temporizzazione) di un sequencer MIDI e indica il numero di divisioni in cui una nota da 1/4 stata suddivisa relazionandosi quindi direttamente con la capacit del sequencer di rappresentare fini variazioni ritmiche. I vecchi synth arrivavano a 96 PPQN; ora si arriva anche a 768 PPQN. 16

Elementi di Programmazione MIDI Francesca Ortolani

Trucco: con un PPQN basso, raddoppiando il tempo di una song e suonando a met tempo si avr un effettivo raddoppio della risoluzione. Vedi di seguito Sincronizzazione per approfondimenti.

17

Elementi di Programmazione MIDI Francesca Ortolani

Figura 5.10 Tabella riassuntiva dei Messaggi System Exclusive [P. Guaccero]

18

Elementi di Programmazione MIDI Francesca Ortolani

SINCRONIZZAZIONE Limportanza della sincronizzazione di fare in modo che due macchine che intendiamo far lavorare insieme, suonino a tempo, ovvero siano daccordo per quanto riguarda il tempo, la posizione del cursore nella song e ci che correlato a tutto questo. Quando si parla di sincronizzazione ci sono sempre un MASTER e uno SLAVE. Il master di regola sempre la macchina pi lenta (es. macchina analogica master su macchina digitale). Questo perch lo slave deve rispondere ai comandi del master. Se il master troppo veloce, pi veloce dello slave, questultimo non riesce a rispondere a tutti i comandi. MIDI CLOCK La sincronizzazione MIDI CLOCK basata sul tempo musicale (invece il MIDI Time Code basata su SMPTE: hh:mm:ss:ff). Il MIDI Clock non universale, ma si pu utilizzare solo su macchine dotate di un sequencer, ovvero che ragionano in termini musicali. Tutti i messaggi che riguardano la sincronizzazione sono messaggi di sistema. Funzioni principali: - Start/Stop (Start equivale a Locate 0) - Scorrimento Sincrono (serve per far andare di pari passo master e slave) - Locate 1. Start/Stop sono gestite da 3 messaggi di sistema real time (1 solo byte): START FAH 11111010 impone play/rec dallinizio della song. CONTINUE FBH 11111011 impone di riprendere il play/rec dallultimo stop. STOP FCH 11111100 impone linterruzione di play/rec. 2. Scorrimento sincrono gestita da 1 messaggio di sistema real time (1 solo byte): TIMING CLOCK F8H 11111000 Viene inviato 24 volte ogni nota da (risoluzione MIDI base), per cui si parla di Clock Per Quarter Note (o Pulse Per Quarter Note). Osserva che 24 divisibile per 2, 3, 4, 8, quindi il 24 si presta bene alle devisioni in terzine. Con questa suddivisione si arriva ad una risoluzione fino alla terzina di sessantaquattresimi (con il Time Code la sincronizzazione ancora pi precisa). Se ho ad esempio 60bpm -> 60*24 = 1440 msg/min. 3. Locate gestita da un messaggio di sistema comune: SONG POSITION POINTER STATUS F2H + DATA LSB hhH + DATA MSB mmH Permette di associare un indirizzo assoluto ad ogni beat della sequenza. Posiziona lo slave nel punto dove si posiziona il master. Lunit di misura del Song Position Pointer il sedicesimo: 1/16 musicale. Il master dice allo slave quanti sedicesimi sono passati dallinizio della song. Con 14 bits di risoluzione, se ho battute da 4/4, ottengo dallo start 16384 sedicesimi in totale e quindi 1024 battute a disposizione per una song.
Esempio pratico in Cubase: Utilizzando una sincronizzazione MIDI Clock, Cubase pu essere solo master, mentre con il Time Code anche slave. Nel men Transport, trovo la voce Sync Setup. Selezionandola si apre una finestra per la gestione della sincronizzazione. Posso aprire la stessa cliccando con CTRL su Sync sulla Transport Bar. Nella finestra trovo il riquadro MIDI Clock Destinations, dove selezione a quali uscite deve essere inviato il MIDI Clock: MIDI Clock Follows Project Position: si utilizza quando voglio che lo slave segua il master nel caso

19

Elementi di Programmazione MIDI Francesca Ortolani

Always Send Start Message:

Send MIDI Clock in Stop Mode

voglia fare un loop, un locate, un salto, altrimenti lo slave continuerebbe per la sua strada. Nota che alcuni dispositivi reagiscono al cambiamento di posizione brutalmente. si utilizza con macchine che non conoscono il messaggio CONTINUE. Selezionando questa opzione il master invia soltanto Start e ignora Continue. utile per i sistemi che ad esempio hanno un arpeggiatore che continua ad arpeggiare anche se la macchina in stop.

MIDI TIME CODE SMPTE Si esprime in hh:mm:ss:ff:bb Ogni frame ci sono 80 subframe. Frames per second CINEMA PAL - SECAM NTSC B/N NTSC COLOR

24 fps 25 fps 30 fps 29,97 fps = 30 drop frame

Spiegazioni Sono sufficienti 24 fotogrammi al secondo per dare lillusione a chi guarda lo schermo che limmagine sia continua. Questo dipende dalla persistenza dellimmagine sulla retina dellocchio. 24 fotogrammi al secondo oltre il limite di percezione della retina. Il drop frame deriva dalle correzioni effettuate sulla sottoportante del chroma affinch le armoniche superiori del chroma non interferiscano con laudio che si trova pi s in frequenza. La sottoportante del chroma stata quindi abbassata, di conseguenza il frame rate. Le frequenze di semiquadro 50 e 60 sfps hanno lo stesso valore delle rispettive frequenze di rete (Europa, USA), perch una volta era difficile fare degli oscillatori per la frequenza di quadro (o semiquadro) stabili a lungo termine. Dato che la frequenza di rete stabile poich generata da macchine elettriche (alternatori) di grande inerzia meccanica, allora si deciso di agganciare gli oscillatori alla frequenza di rete.

Master e Slave devono avere la stessa risoluzione in frame impostata. Nota che per il MTC 29,97 e 30d non sono distinguibili. Esistono 3 tipi di TIME CODE: LTC (Longitudinal Time Code) un segnale digitale codificato come Manchester Bifase che si pu registrare anche su nastro sotto forma di onda quadra modulata. In pratica il timecode si trova sotto forma di segnale audio. VITC (Vertical Interval Time Code) Viene scritto fra i fotogrammi del video in un paio di linee non visibili durante il ritorno di quadro verticale. Quando visibile si mostra come dei quadratini bianchi su sfondo nero. MTC (MIDI Time Code) Il segnale viene codificato in messaggi MIDI e trasmesso su cavi MIDI. ADAT SYNC Utilizzato solo con lASIO Positioning Protocol.

20

Elementi di Programmazione MIDI Francesca Ortolani

MTC Quarter Frame un messaggio chiamato in questo modo perch viene inviato 4 volte ogni frame. Nel MTC la funzione START accorpata con lo SCORRIMENTO SINCRONO. un messaggio di SISTEMA comune: STATUS BYTE (F1) + 1 DATA BYTE. Il primo nibble del Data Byte serve a indicare linformazione qualitativa. Nota che siccome un DATA BYTE deve cominciare per 0, quindi il valore massimo sarebbe 7. Si utilizza una Configurazione LSNibble + MSNibble. Lultima combinazione del primo nibble dice inoltre che si tratta di un codice SMPTE. Il MTC non utilizza i sub frame. QUARTER FRAME STATUS BYTE F1H System Common Status Byte (= QUARTER FRAME) DATA BYTE 0nnn dddd (0nnn = tipo di messaggio; dddd = campo per i dati di tempo) 0nnn = tipo di messaggio 0 = frames LSnibble 1 = frames MSnibble 2 = seconds LSnibble 3 = seconds MSnibble 4 = minutes LSnibble 5 = minutes MSnibble 6 = hours LSnibble 7 = hours MSnibble

La trasmissione di una word di messaggio SMPTE richiede linvio di 8 messaggi Quarter Frame numerati progressivamente, uno per ogni quarto di frame. Quindi lo slave ricostruisce il timecode con un ritardo di 2 frame (4 messaggi + 4 messaggi = 8 totale). Sarebbe anche meglio che il clock sia comune al master e allo slave e meglio ancora se fornito da un dispositivo dedicato a questo scopo. Altro problema sono le latenze diverse delle varie schede utilizzate. MTC Full Frame un SYS-EX Real Time, comincia quindi per F0 e finisce con F7. Si scelto questo tipo di messaggio perch servono tanti byte per comunicare le informazioni con precedenza assoluta. una specie di autolocator e consente a tutte le macchine del sistema di posizionarsi in un determinato punto della sequenza con la precisione del frame. START ID Universal RealTime Channel Number Sub-ID Long Form MTC (MTC Full Frame) hh+fps (type) mm ss ff END F0 7F 7F 01 01 xx xx xx xx F7

Esempio pratico: impostazione su Cubase del Timecode Men Transport -> Synchronization Setup (oppure sulla Transport Bar SYNC+Click). Cubase per il Timecode pu essere sia master che slave.

21

Elementi di Programmazione MIDI Francesca Ortolani

Cubase Master Timecode source: Internal Timecode MIDI TimeCode Destination: Scegliere porta MIDI Cubase Slave Timecode source: MIDI TimeCode Source:

MIDI TimeCode Scegliere sorgente per il Timecode

Se il Timecode arriva da una macchina analogica: opzioni su Machine Control Master. Application: Lock Frames: Drop out Frames:

Inhibit Restart ms: MIDI TimeCode Follows Project Time:

imposta numero di frame su slave da bloccare prima che lo slave parta. imposta numero di frame che lo slave deve aspettare prima di sganciarsi (se per N frame lo slave non riceve il timecode si sgancia). Nota che il timecode su una macchina analogica ad esempio crea problemi in quanto un segnale audio che deve essere convertito in forma di messaggi MIDI. si pu inibire il restart per un certo numero di ms. selezionabile anche per Timecode come visto per MIDI Clock e funziona ugualmente male.

OFFSET Su Cubase proprio riferito allo START della sessione (vedi Project Setup). LOffset il punto in cui si aggancia lo slave. Tasto SYNC Se utilizzo Cubase come slave devo attivare il tasto SYNC sulla Transport Bar (solo nel caso SLAVE). Compare la scritta Idle (in attesa). Non appena arriva il segnale compare la scritta Lock xx.

MIDI MACHINE CONTROL (MMC) Il MMC una parte del protocollo MIDI che serve per controllare i comandi di trasporto, ad esempio, di un registratore a nastro (che deve quindi avere uninterfaccia MIDI a questo punto).
Esempio pratico in Cubase: Cubase pu comportarsi sia da Master che da Slave per il MMC ed ha una barra di trasporto dedicata al MMC. Ricordarsi di premere ONLINE su questa barra, altrimenti non funziona. Colleghiamo Cubase ad un registratore esterno: si vede che il Midi Machine Control da solo non funziona. Praticamente ho bisogno di un segnale di MTC proveniente dal registratore verso cubase. Cubase (MASTER) MMC Registratore (SLAVE) Registratore (MASTER) MTC Cubase (SLAVE) Quindi, si noti che, anche se sembra che sia Cubase a controllare la macchina, in realt Cubase agganciato al trasporto della macchina, ovvero al suo Timecode. Anche per questo Cubase ha lMMC Master a parte. Cubase pu anche armare/disarmare le tracce sullo slave (vedi impostazioni Master su Synchronization Setup -> MMC).

22

Elementi di Programmazione MIDI Francesca Ortolani

5.5 Controlli
Controlli Continui
(tra parentesi il numero nel sistema esadecimale) 0 (00) BANK SELECT MSB e 32 (20) BANK SELECT LSB:: Questo controller richiama un banco. I banchi contengono fino a 128 programmi. I valori MSB e LSB saranno forniti dal costruttore. 0 (00) 32 (20) Banchi sopra al #129 Banchi da #1 a #128

1 (01) MODULATION WHEEL: controlla le modulazioni, Vibrato, Tremolo, a seconda di come programmato lo slave ed inviato da una rotella UNIDIREZIONALE e senza ritorno a molla o da un joystick. 2 (02) BREATH CONTROLLER: introdotto dalla Yamaha, mandato da un controller che rileva la pressione del fiato. In questo modo si cerca di simulare la sensazione data da uno strumento a fiato. I parametri pi controllati con BREATH sono Volume e Pitch. 3 (03) UNDEFINED: Non ancora definito. Disponibile per applicazioni future. 4 (04) FOOT CONTROLLER: inviato da controller a pedale. La sua funzione dipende da come programmato lo slave (pu essere la stessa di un Modulation Wheel o Breath). 5 (05) PORTAMENTO TIME: regola il tempo di portamento, ovvero il tempo di variazione in frequenza continua fra due note (glissato). Nota: il portamento avviene quando levento della seconda nota stato effettivamente letto. Vedi PORTAMENTO CONTROLLER per impostare la nota di sorgente. 6 (06) DATA ENTRY: cambia il valore dei parametri delle funzioni di strumenti esterni (expander, synth, computer), attivate tramite un messaggio RPN, NRPN. Si pu trovare sotto forma di fader, slider, manopola. 7 (07) MAIN VOLUME: regola il volume principale del canale. poco comune trovare strumenti che lo trasmettono, mentre quasi tutti invece lo ricevono.

23

Elementi di Programmazione MIDI Francesca Ortolani

8 (08) BALANCE: controlla il bilanciamento di un segnale STEREO. 0 = LEFT 64 = CENTER 127 = RIGHT 10 (0A) PAN: regola il posizionamento di un segnale MONO. 0 = LEFT 64 = CENTER 127 = RIGHT 11 (0B) EXPRESSION: impostato il MAIN VOLUME range, EXPRESSION regola il volume allinterno del range impostto. 16 19 (10 13) GENERAL PURPOSE: sono controller definiti dai costruttori e descritti nei manuali operativi degli strumenti.

Controlli Continui a 7 bit


84 (54) PORTAMENTO CONTROLLER: fornisce le informazioni aggiuntive a realizzare il portamento (Vedi controller 5). Indica da quale nota la nota successiva deve fare il glissato. 70 74 (46 4A) SOUND CONTROLLERS: modificano i parametri del suono. Sound Variation: controlla qualsiasi parametro associato allo strumento che genera il suono. Es. se il dispositivo usa dei campioni, questo controller pu modificare ad esempio la sample rate. controlla il filtro VCF dello strumento. regola il tempo di release/attack controllando il VCA dello strumento. controlla la frequenza di cut off del filtro VCF dello strumento.

Sound Timbre: Sound Release/Attack: Sound Brightness:

91 95 (5B 5F) EFFECTS DEPTH: controllano i processori di segnale e gli effetti, definendo la quantit di effetto da applicare (TREMOLO, CHORUS, CELESTE, PHASER, EXTERNAL FX). 24

Elementi di Programmazione MIDI Francesca Ortolani

Controlli ad Interruttore
64 (40) SUSTAIN - DAMPER PEDAL: se attivato, prolunga i suoni anche dopo il rilascio del tasto. 65 (41) PORTAMENTO: ON/OFF portamento. 66 (42) SOSTENUTO: ON/OFF sustain. 67 (43) SOFT PEDAL: Simula leffetto della sordina di un pianoforte. 68 (44) LEGATO FOOTSWITCH: ON/OFF legato. Se attivo, le note vengono suonate legate (non staccate). In pratica viene modificato in automatico (attenuato) lattacco delle note. 69 (45) HOLD 2: duplica il tempo di rilascio delle note suonte. A differenza di SUSTAIN, che allunga il tempo di rilascio permanentemente.

Controlli per Dati


96 97 (60 61) DATA INCREMENT/DECREMENT: incrementa/decrementa il valore di un parametro asociatio a NRPN/RPN. 98 99 (62 63) NRPN: (LSB/MSB) indica un parametro che un dispositivo MIDI pemette di controllare tramite DATA ENTRY/INCREMENT/DECREMENT. Siccome ogni dispositivo pu definire un particolare NRPN, possibile che due macchine diverse interpretino lo stesso numero in due modi diversi, creando un conflitto. Un buon dispositivo dovrebbe poter permettere di disabilitare la ricezione di NRPN. Questi parametri non sono registrati da MMA, ma liberamente definiti dal costruttore. Funzionano come gli RPN. 100 101 (64 65) RPN: (LSB/MSB) indica un parametro che un dispositivo MIDI permette di controllare tramite DATA ENTRY/INCREMENT/DECREMENT. La MMA assegna RPN a specifiche funzioni.

Applicazioni ed esempi
Con i CC RPN mi servono 1 STATUS BYTE + 2 DATA BYTE per indicare quale controllo voglio selezionare. Per impostare la quantit di controllo mi serve il CC DATA ENTRY.

25

Elementi di Programmazione MIDI Francesca Ortolani

Come detto, gli RPN sono MSB e LSB: 101 (64H) 100 (65H). Le funzione gestite con RPN sono: Pitch Bend Range, Channel Fine Tuning (accordatura fine), Channel Coarse Tuning (accordatura grezza, per semitoni)1. La combinazione dei DATA BYTE 2 dellRPN MSB e LSB determina la funzione (ricorda, il DATA BYTE 1 determina il tipo di CC, MSB o LSB). Pitch Bend Range Channel Fine Tuning MSB LSB MSB LSB 00H 00H 00H 01H

Channel Coarse Tuning

MSB 00H LSB 02H MSB 7FH LSB 7FH

RPN NULL

Nota che, una volta inviato un RPN, basta inviare solo DATA ENTRY. RPN NULL serve se per caso vengono inviati DATA ENTRY indesiderati. Questo RPN annulla quindi lazione dei DATA ENTRY successivi. Per quanto riguarda il CC DATA ENTRY MSB (LSB si usa raramente) il DATA BYTE 2 che determina la quantit di controllo. Pitch Bend Range 00H = no pitch bend 01H = 1 semitono Etc. 40H = accordatura standard (064) 00H = -1 semitono (000) 7FH = +1 semitono (127) 40H = accordatura standard (064) Lescursione di 4 ottave 48 semitoni (da 16 a 112 in decimale) Aggiungo/Diminuisco = semitono

Channel Fine Tuning (max 1 semitono)

Channel Coarse Tuning (max 48 semitoni)

Channel Fine Tuning e Channel Coarse Tuning possono ancora trovarsi con il loro vecchio nome Master Fine Tuning e Master Coarse Tuning

26

Elementi di Programmazione MIDI Francesca Ortolani

Figura 5.11 Tabella riassuntiva dei CC RPN [P. Guaccero]

27

Elementi di Programmazione MIDI Francesca Ortolani

5.6 Tavole Riassuntive TAVOLA DEI MESSAGGI MIDI


MESSAGGI DI CANALE MESSAGGIO NOTE OFF NOTE ON AFTERTOUCH POLIFONICO CONTROL CHANGE PROGRAM CHANGE AFTERTOUCH DI CANALE PITCH BEND STATUS BYTE 8n 9n An Bn Cn Dn En PRIMO DATA BYTE Numero di Nota Numero di Nota Numero di Nota Numero di Controllo Numero di Programma Quantit di Pressione LSB SECONDO DATA BYTE Velocity Velocity Quantit di Pressione Valore del Controllo MSB

MESSAGGI DI SISTEMA Messaggi Comuni al Sistema MESSAGGIO SYSTEM EXCLUSIVE SONG POSITION POINTER SONG SELECT TUNE REQUEST END OF EXCLUSIVE STATUS BYTE F0 F1 F2 F3 F4, F5 F6 F7 PRIMO DATA BYTE Codice Fabbricante LSB Numero della Song SECONDO DATA BYTE ??? MSB

Messaggi in Tempo Reale MESSAGGIO TIMING CLOCK START CONTINUE STOP ACTIVE SENSING SYSTEM RESET STATUS BYTE F8 F9 FA FB FC FD FE FF PRIMO DATA BYTE SECONDO DATA BYTE

28

Elementi di Programmazione MIDI Francesca Ortolani

TAVOLA DEI CONTROLLI MIDI


CONTROLLI CONTINUI DEC 0 1 2 3 4 5 6 7 8 9 10 11 12-15 16-19 20-31 32 33-63 HEX 00 01 02 03 04 05 06 07 08 09 0A 0B 0C-0F 10-13 14-1F 20 21-3F CONTROLLER Bank Select MSB (Banks above #129) Modulation Wheel or Lever Breath Controller Undefined Foot Controller Portamento Time Data Entry MSB Main Volume Balance (0 = left, 64 = center, 127 = right) Undefined Pan (0 = left, 64 = center, 127 = right) Expression (0 = lower volume, 64 = same, 127 = higher) Undefined General Purpose Controllers (#s 1-4) Undefined Bank Select LSB (Banks #1 #128) LSB for controllers 1-31

CONTROLLI AD INTERRUTTORE DEC 64 65 66 67 68 69 70 71 72 73 74 75-79 HEX 40 41 42 43 44 45 46 47 48 49 4A 4B-4F 29 CONTROLLER Damper Pedal (Sustain) Portamento Sostenuto Soft Pedal Legato Footswitch (0-3F = Normal, 40-7F = Legato) Hold 2 Sound Controller #1 (Sound Variation) Sound Controller #2 (Timbre/Harmonic Intensity) Sound Controller #3 (Release Time) Sound Controller #4 (Attack Time) Sound Controller #5 (Brightness) Undefined

Elementi di Programmazione MIDI Francesca Ortolani

80-83 84 91 92 93 94 95

50-53 54 5B 5C 5D 5E 5F

General Purpose Controllers (#s 5-8) Portamento Controller (PTC) (n = channel, v = source note) Effects Depth #1 (External Effects Depth) Effects Depth #2 (Tremolo Depth) Effects Depth #3 (Chorus Depth) Effects Depth #4 (Celeste Detune - Depth ) Effects Depth #5 (Phaser Depth)

CONTROLLI PER DATI DEC 96 97 98 99 100 101 102-119 HEX 60 61 62 63 64 65 66-77 CONTROLLER Data Increment Data Increment Non-Registered Parameter Number LSB Non-Registered Parameter Number MSB Registered Parameter Number LSB Registered Parameter Number MSB Undefined

MESSAGGI DEL MODO DI CANALE DEC 120 121 122 123 124 125 126 127 HEX 78 79 7A 7B 7C 7D 7E 7F CONTROLLER All Sound Off Reset All Controllers Local Control All Notes Off Omni Mode Off Omni Mode On Mono Mode On (Poly Off) Poly Mode On (Mono Off)

30

Elementi di Programmazione MIDI Francesca Ortolani

5.7 Sistemi numerici


Sistema Binario (BIN) BASE 2 : {0, 1} nel sistema binario posso avere solo le due cifre 0 e 1. potenze di 2.

20 21 22 23 2 4 25 26 27 1 2 4 8 16 32 64 128

Esempio 1:

1 1

0 1 = 13

Esempio 2:

0 1 1 1 1

0 1

= 122

23 22 21 20 8 4 0 1

27 26 25 24 23 2 2 21 20 0 64 32 16 8 0 2 0

Posso procedere anche al contrario, partendo da una cifra decimale:

99 = 01100011

Sistema Esadecimale (HEX) BASE 16 : {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F} significato: A = 10, F = 15

160 = 1, 161 = 16, 162 = 256


Esempio 1:

69 H = 105 6 16 + 9 1

Esempio 2:

A0 H = 10 16 + 0 1 = 160

Esempio 3:

BEH = 1116 + 14 1 = 190

Posso procedere anche al contrario, partendo da una cifra decimale. Voglio rappresentare il numero decimale 234 in esadecimale: Eseguo la divisione

234 . Come risultato otterr un quoziente Q e un resto R. 16

In questo caso si ha Q = 14, R = 10 , perci in definitiva si avr per 234 QRH = EAH .

Conversione di un byte da BIN a HEX e poi a DEC (esempio):

31

Elementi di Programmazione MIDI Francesca Ortolani

Per prima cosa divido il byte in 2 nibble da trattare separatamente. Fatto questo ricavo il valore in esadecimale dei singoli nibble e procedo in questo modo:

1011 | 1100 11 B 12 C BCH = 11 16 + 12 1 = 188

Posso procedere al contrario, partendo dal numero decimale. Ad esempio per il numero 133:

133 = 8 | 5 1000 | 0101

32

Vous aimerez peut-être aussi