| Messaggi MIDI
- CHANNEL MESSAGES
Abbiamo parlato fino ad ora di messaggi MIDI contenenti informazioni relative all'esecuzione musicale, per esempio: "suona il DO della quarta ottava, con velocità 100%". Questi messaggi appartengono alla famiglia dei CHANNEL MESSAGES (messaggi di canale). I messaggi di canale possono essere riconosciuti solo dagli strumenti "sintonizzati" su quel canale. All'interno di un messaggio di canale è dunque specificato un numero (da 1 a 16) che indica su quale canale quel messaggio va ricevuto.
I messagghi di canale ci permettono di trasmettere contemporaneamente sullo stesso cavo MIDI le informazioni relative all'esecuzione musicale (note, velocità, pitch bender, cambi di programma ecc.) mantenendole distinte per ogni canale per far suonare i vari moduli del nostro sistema, ognuno predisposto sul canale più adatto.
I messaggi di canale si dividono in due famiglie: VOICE MESSAGES e MODE MESSAGES, messaggi di voce e messaggi di modo.
VOICE MESSAGES- NOTE ON
- Questo messaggio serve ad "accendere" una certa nota. Ogni volta che su una tastiera MIDI viene
premuto un tasto, la tastiera genere (ed invia tramite la sua porta MIDI OUT) un messaggio NOTE ON che contiene le seguenti informazioni :
- Numero di canale MIDI
- Numero di nota MIDI
- Velocità di attacco
Nella codifica MIDI i numeri di nota trasmessi e riconosciuti vanno da 0 a 127, e sono equivalenti ad una ipotetica tastiera di 128 tasti. Le tastiere di cui normalmente gli strumenti musicali elettronici sono dotati hanno 61 tasti (5 ottave). Usando le sigle inglesi delle note, in una normale tastiera a 61 tasti il DO più basso e denominato con "C1" (equivalente al numero di nota 36 nella codifica MIDI) mentre il più alto è "C6" (equivalente al numero 96). Il DO centrale è "C3" (numero di nota 60). Utilizzando la stessa terminologia, potremo dire che l'estensione della ipotetica tastiera formata dalle note MIDI va da "C2" (pari a 0 nella codifica MIDI) a "G8" (127)
La "Velocità di Attacco" (detta anche "Velocity") è il parametro con il quale viene descritta la velocità con cui è stato premuto un tasto. Anche in questo caso vengono utilizzati i numeri da 0 a 127.
Alcune tastiere non sono sensibili alla dinamica, cioè non riescono a capire con quale velocità sono stati premuti i tasti. Anche queste tastiere devono trasmettere il parametro "velocità di attacco" che però è sempre fisso e pari a 64.
- Nota :
I range numerici da 0 a 127 sono abbastanza ricorrenti nella codifica MIDI. Il linguaggio MIDI è un linguaggio digitale binario. L'alfabeto binario è molto povero, infatti le sue lettere, dette "bit", sono solo due: 0 e 1. Tutto ciò che si vuole esprimere via MIDI è basato su parole composte da una serie di bit, cioè da una serire di 0 e di 1. Poichè nel MIDI si utilizzano parole della lunghezza fissa di 8 bit (dette byte), il numero più basso esprimibile in questo modo è "00000000" (pari a 0), mentre il più alto è "11111111" (pari a 127).
- NOTE OFF
Col messaggio NOTE OFF non è comunicata la durata della nota, cioè il tempo per il quale il tasto da noi scelto è stato premuto. Per "spegnere" una nota "accesa", quando un tasto premuto in precedenza viene rilasciato, viene inviato un altro messaggio (NOTE OFF) con le seguenti informazioni:
- Numero di canale MIDI
- Numero di nota MIDI
- Velocità di rilascio
Le prime due informazioni sono analoghe a quelle viste per il messaggio "note on", la terza esprime invece la velocità con cui il tasto viene rilasciato (cioè con la quale le dita vengono sollevate dalla tastiera). Questa informazione viene trasmessa solo da pochissime tastiere sensibili anche alla velocità di rilascio, mentre tutte le altre trasmettono un valore fisso pari a 64.
Esiste anche un altro metodo per "spegnere" una nota: invece di inviare un messaggio NOTE OFF, molte tastiere inviano nuovamente un messaggio NOTE ON, quest volta però con velocità di attacco uguale a 0.
Può capitare a volte che, in caso di malfunzionamenti MIDI, il messaggio NOTE OFF (o il NOTE ON con velocità nulla) non venga trasmesso o non venga ricevuto. La nota interessata continuerà a suonare anche se il tasto corrispondente è stato rilasciato. Per "spegnere" una nota rimasta "accesa" si può intervenire in vari modi:
- dalla tastiera Master, provando a inviare un messaggio MIDI di cambio programma o prememndo un pulsante
chiamato MIDI PANIC, se essa ne è dotata - direttamente dallo strumento che genera il suono, cambiando il programma impostato o, nei casi estremi,
spegnendolo e riaccendendolo. Se si adotta questa ultima soluzione è bene ricordare che, dopo aver spento un qualunque strumento elettronico, è sempre consigliabile aspettare qualche secondo prima di riaccenderlo.
- CHANNEL PRESSURE e POLY KEY PRESSURE
Sulla tastiera di molti strumenti elettronici è possibile, dopo aver premuto il tasto per suonare, esercitare una ulteriore pressione sullo stesso, completamente diversa e indipendente dalla velocità con cui il tasto è stato premuto. Questa pressione viene chiamata aftertouch. Questa informazione, una volta ricevuta da uno strumento abilitato a riconoscerla, viene utilizzata per produrre delle variazioni o modulazioni sul suono (per esempio aggiungere un vibrato). Non tutte le tastiere sono sensibili a questo tipo di controllo. Generalmente, quando si parla semplicememnte di AFTERTOUCH, si intende definire la pressione di canale o CHANNEL PRESSURE. In pratica la tastiera genera un solo messaggio di pressione determinato dalla pressione più forte esercitata sui tasti premuti in quel momento. Questo parametro influenza però allo stesso modo tutte le note che in quel momento sono "accese" sul canale MIDI, quindi anche le note corrispondenti a tasti abbassati sui quali non viene esercitata alcuna pressione o a quelli non più abbassati ma mantenuti in "Sustain" con l'apposito pedale. Le informazione trasmesse dal messaggio di CHANNEL PRESSURE sono:
- Numero di canale MIDI
- Pressione (che può assumere valori da 0 a 127)
Alcune tastiere possono trasmettere un'informazione di pressione più sofisticata : la POLY KEY PRESSURE, detta anche "pressione polifonica" o "aftertouch polifonico". In questo caso, l'informazione di pressione viene trasmessa per singolo tasto, quindi rispetto alla pressione di canale la Poly Key Pressure comporta l'aggiunta dell'indicazione del numero di nota interessata alla pressione, quindi il messaggio è così composto:
- Numero di canale MIDI
- Numero di nota MIDI
- Pressione
È da sottolineare che, una volta stabilito se la nostra tastiera Master è capace di trasmettere una pressione polifonica o una pressione di canale, bisogna assicurarsi che anche gli expander collegati siano abilitati al riconoscimento di questo tipo di messaggi. Normalmente, gli expander dell'ultima generazione sono in grado di riconoscere entrambi i tipi di pressione: il riconoscimento però deve essere abilitato all'interno dello strumento, solitamente mediante un menù denominato "MIDI". Inoltre, se un expander è abilitato a riconoscere solo una pressione di canale (o una pressione polifonica) la ricezione dell'altro tipo di messaggio non causerà nessun effetto.
- PROGRAM CHANGE
Tutti i moderni strumenti elettronici offrono la possibilità di ottenere svariati suoni chiamati anche patch o preset. Ad esempio un sintetizzatore permette normalmente di utilizzare timbri di pianoforte, organo, chitarra ecc. Per cambiare il suono (preset) impostato si può normalmente azionare un opportuno comando di Cambio Programma sul pannello di controllo dello strumento. Questo comandopuò essere trasmesso via MIDI mediante un messaggio di PROGRAM CHANGE, che contiene le seguenti informazioni:
- Numero di canale MIDI
- Numero di Programma
Affinchè un comando di PROGRAM CHANGE possa essere ricevuto è necessario che lo strumento ricevente sia abilitato alla sua ricezione: solitamente, all'interno del menù MIDI, ci deve essere un parametro PROGRAMCHANGE=ON.
Il MIDI codifica i numeri di Program Change da 0 a 127. All'interno degli strumenti musicali però esistono vari metodi per riconoscere questo tipo di informazione, essi dipendono dal tipo di organizzazione interna dei preset dello strumento. Alcuni strumenti presentano i propri preset raggruppati in "banchi". Questi banchi possono avere varie grandezze, le più utilizzate sono 64 e 128.
Per esempio, in uno strumento dotato di due "banchi" formati ognuno da 64 preset, i PROGRAM CHANGE da 0 a 63 serviranno a selezionare i suoni del primo banco, quelli da 65 a 128 i suoni del secondo banco. In uno strumento dotato di più di 128 preset le cose sono un pò differenti, infatti i numeri da 0 a 127 non sono sufficienti a selezionare tutti i suoni offerti dallo strumento.
Per risolvere questo problema esistono vari metodi:
- l'utilizzo della Program Change Table, cioè di tabelle di cambi programma, definite all'interno
dello strumento ricevente (per esempio per associare al "program change 95" il preset numero 251); per poter selezionare un qualunque preset dello strumento, occorrerà allora attivare in precedenza una adeguata tabella - un secondo metodo è quello di utilizzare, oltre al messaggio di cambio programma, un secondo messaggio
per impostare un cambio di banco.
- Nota:
Questo messaggio, chiamato BANK SELECT, è stato codificato nel linguaggio MIDI, all'interno delle specifiche del GENERAL MIDI. Se si possiedono strumenti dotati di più di 128 preset e si desidera capire la modalità di selezione via MIDI dei vari banchi, è consigliabile consultare i relativi manuali.
- CONTROL CHANGE
Significa "modifica di un controllo": non si tratta di un singolo messaggio, ma di una intera famiglia di messaggi strutturati come segue:
- Numero di canale MIDI
- numero di Control Change
- Valore
Il numero di Control Change può assumere un valore compreso tra 0 e 120, mentre il Valore è un numero compreso tra 0 e 127.
Con i messaggi di CONTROL CHANGE è possibile descrivere qualsiasi operazione compiuta sulla tastiera Master tramite un qualsiasi Controller: azionare il pedale del Sustain, muovere un cursore, una rotella, ecc. I vari Controller presenti su un sintetizzatore o su una Master Keyboard sono dunque numerati con dei numeri compresi tra 0 e 127. Il valore invece indica la posizione assunta dal Controller.
Alcui Controller comportano l'invio di informazioni molto semplici, per esempio i Controller tipo INTERRUTTORE ON/OFF (come il pedale del Sustain). In questo caso, trasmettendo un Valore compreso tra 64 e 127 si indica la posizione ON (per esempio: pedale premuto), mentre con un Valore tra 0 e 63 si indica la posizione OFF (per esempio: rilascio pedale).
Altri Controller, chiamati continui, necessitano invece di maggiori dettagli. Infatti, ad ogni posizione di un Controller continuo (per esempio il pedale del Volume ola ruota di MODULATION) corrisponde un numero compreso tra 0 e 127.
Inoltre esistono alcuni Controller continui per i quali occorre una precisione ancora maggiore di quella esprimibile con un range di valori da 0 a 127. In questi casi il MIDI permette di differenziare la trasmissione inviando due messaggi, uno relativo alla "macro-posizione" (0...127) ed uno per la "micro-posizione" (0...127).
Come è possibile osservare nella tabella qui sotto non tutti i numeri di Controller sono definiti. In questo modo il MIDI permette di lasciare spazio a nuovi tipi di Controller che verranno definiti in seguito, oppure di personalizzare la tabella: ogni casa costruttrice può utilizzare le posizioni General Purpose per controllare delle particolari funzioni di un nuovo strumento.
TABELLA DEI CONTROL CHANGE| 0 | undefined | 66 | SOSTENUTO | | 1 | MODULATION | 67 | SOFT PEDAL | | 2 | BREATH | 68 | undefined | | 3 | undefined | 69 | HOLD 2 | | 4 | FOOT | 70-79 | undefined | | 5 | PORTAMENTO TIME | 80-83 | GENERAL PURPOSE | | 6 | DATA ENTRY MSB | 84-90 | undefined | | 7 | MAIN VOLUME | 91 | EXTERNAL EFFECT DEPTH | | 8 | BALANCE | 92 | TREMOLO DEPTH | | 9 | undefined | 93 | CHORUS DEPTH | | 10 | PANPOT | 94 | CELESTE DEPTH | | 11 | EXPRESSION | 95 | PHASER DEPTH | | 12-15 | undefined | 96 | DATA INCREMENT | | 16-19 | GENERAL PURPOSE | 97 | DATA DECREMENT | | 20-31 | undefined | 98 | Non-Registered Parameter Number LSB | | 32 | BANK SELECT | 99 | Non-Registered Parameter Number LSB | | 33-63 | LSB for Values 0-31 | 100 | Registered Parameter NUmber LSB | | 64 | DAMPER PEDAL | 101 | Registered Parameter Number LSB | | 65 | PORTAMENTO | 102-121 | undefined |
- PITCH BENDER
Il messaggio Pitch Bender serve a fornire la posizione dell'omonima rotella o joystick. Questo controllo viene utilizzato per fornire una variazione momentanea dell'intonazione delle note in quel momento "accese" sul canale. La variazione è momentanea perchè dura fino a quando la rotella di Pitch Bender non ritorna nella sua posizione di riposo.
Anche il controllo di PITCH BENDER necessita di una descrizione molto fine, infatti l'orecchio umano è molto sensibile alle variazioni di intonazione di un suono. Non essendo sufficiente un range di valori da 0 a 127 per descrivere questa variazione, anche per il Pitch Bender vengono utilizzati due parametri di descrizione dello spostamento della rotella (o del joystick).
Il contenuto del messaggio di PITCH BENDER è il seguente:
- Numero di canale MIDI
- Entità di Spostamento 1
- Entità di Spostamento 2
Entrambi i parametri Entità di Spostamento possono assumere valori da 0 a 127.
MODE MESSAGES
I messaggi di modo vengono trasmessi a tutti gli effetti come dei messaggi di "Control Change", ma vengono da questi separati per la differenza concettuale tra i primi e i secondi. Infatti, mentre i messaggi di "Control Change" interessano un singolo parametro, come del resto tutti gli altri VOICE MESSAGES (note, program change, ecc.), i messaggi di modo servono ad impostare una condizione operativa del canale o dell'intero strumento.
I messaggi di modo vengono trasmessi allo stesso modo dei Control Change: per essi si utilizzano i Control Change con numerazione da 121 a 127.
I messaggi di modo sono 7 e precisamente:
- RESET ALL CONTROLLERS - n.121
Serve ad effettuare un reset di tutti i controllers di un certo canale MIDI. È utile per "azzerare" determinati controllers (per esempio una rotella di modulation) per i quali, a causa di un malfunzionamento MIDI o altre cause, non sia stato inviato un messaggio che li riportasse alla posizione di riposo.
- LOCAL CONTROL - n.122
Imposta la condizione LOCAL OFF/LOCAL ON su un determinato strumento. Tale condizione serve a determinare se la sezione di generazione sonora di un certo strumento può essere pilotata direttamente dalla tastiera dello strumento stesso (LOCAL ON) oppure solo via MIDI (LOCAL OFF). In modo LOCAL OFF normalmente la tastiera dello strumento continua a funzionare come Master Keyboard, cioè genera i messaggi MIDI che verranno poi inviati all'esterno tramite la porta MIDI OUT.
- ALL NOTES OFF -n.123
Serve a "spegnere" tutte le note rimaste "accese" su un certo canale (in caso di malfunzionamento o di errori MIDI).
- OMNI MODE OFF/OMNI MODE ON - n.124/125
Questi due messaggi servono ad impostare i rispettivi modi MIDI OMNI OFF e OMNI ON.
- MONO MODE ON/POLY MODE ON - n.126/127
Questi due messaggi servono ad impostare i rispettivi modi MIDI MONO ON e POLY ON.
<!-- ------------------------------------------------------------------------- --> - SYSTEM MESSAGES
I SYSTEM MESSAGES o messaggi di sistema si differenziano dai Channel Messages perchè possono essere ricevuti da tutti i moduli che compongono il nostro sistema MIDI, indipendentemente dal canale sul quale i moduli siano "sintonizzati". All'interno di questi messaggi infatti non è specificato un numero di canale di trasmissione. La loro funzione è quella di trasmettere informazioni che devono essere ricevute da tutti gli strumenti di una catena MIDI.
I System Messages si dividono in tre famiglie: REAL TIME MESSAGES (messaggi in tempo reale), COMMON MESSAGES (messaggi comuni) e SYSTEM EXCLUSIVE.
Si potrebbe considerare anche una quarta famiglia chiamata SAMPLE DUMP STANDARD derivata da SYSTEM EXCLUSIVE. Questi messaggi vengono utilizzati per effettuare scambi di dati digitali (campioni) tra campionatori di marche anche diverse fra loro.
- REAL TIME MESSAGES
- CLOCK
È un segnale di sincronismo: praticamente permette di sincronizzare tra loro tutti i dispositivi quali Sequencer, batterie elettroniche ecc. Questo segnale viene inviato da uno solo dei dispositivi (Master), che genera il Clock e perciò al suo interno il parametro MIDI CLOCK dovrà essere impostato su "internal" (MIDI CLOCK=INT). Per sincronizzare tutti gli altri dispositivi (Slave) col MASTER, bisognerà impostare, in ognuno di essi, il parametro MIDI CLOCK=MIDI.
- START
È il segnale che serve a far partire tutti i dispositivi sincronizzati. Ogni volta che il segnale di START viene ricevuto, tutti i dispositivi cominciano l'esecuzione (o la registrazione) della song (o della sequenza) impostata, partendo dalla prima battuta.
- STOP
Questo messaggio ferma tutti i dispositivi sincronizzati.
- CONTINUE
Come il messaggio di Start, anche questo serve a far partire tutti i dispositivi sincronizzati però, a differenza del primo, serve a far riprendere l'esecuzione della song (o della sequenza) dal punto esatto in cui era stata interrotta mediante un messaggio di STOP.
- SYSTEM RESET
Mediante questo messaggio è possibile ordinare a tutti gli strumenti collegati di effettuare un reset, ripristinando così le condizioni che dovrebbero essere impostate in ogni strumento al momento della sua accensione.
<!-- ------------------------------------------------------------------------- --> - COMMON MESSAGES
- SONG SELECT
Questo messaggio permette la selezione di una particolare song tra quelle contenute nella memoria di un Sequencer o di una batteria elettronica. La song selezionata tramite SONG SELECT sarà quella che partirà in conseguenza di un successivo messaggio di START.
- SONG POSITION POINTER
È un indice del punto attualmente raggiunto nell'esecuzione di una song. Viene utilizzato per facilitare le operazioni di sincronismo.
- EOX
END OF EXCLUSIVE: è un messaggio di sistema comune che viene utilizzato per chiudere l'invio di una serie di dati System Exclusive.
<!-- ------------------------------------------------------------------------- --> - SYSTEM EXCLUSIVE
Questa famiglia di messaggi serve ad effettuare le più sofisticate operazioni di programmazione o di controllo su un certo strumento. Tramite questi messaggi (chiamati anche "SysEx") è possibile effettuare il dump di uno strumento, ovvero inviare all'esterno, tramite MIDI OUT, l'intero contenuto della memoria dello strumento, tutti i parametri interni, il setup, i programmi caricati, ecc. Il dump così effettuato può essere salvato su un cosiddetto "registratore dati SysEx" (normalmente un Sequencer o un computer), per poter essere rimandato allo strumento quando lo si desideri, ripristinando così il suo stato al momento del salvataggio dei dati.
Inoltre è possibile, utilizzando determinati programmi su computer chiamati EDITOR, controllare i singoli parametri che caratterizzano il suono di un determinato strumento: ad esempiovariare l'apertura di un filtro, cambiare i parametri di inviluppo ecc.
È evidente che i messaggi System Exclusive, estremamente legati all'architettura interna di un determinato strumento, sono personalizzati, cioè possono essere compresi solo dallo strumento che li ha generati, gli altri strumenti si limiteranno ad ignorarli. All'interno di un qualsiasi messaggio SysEx deve dunque essere contenuto un codice di intestazione in cui è dichiarato il nome del destinatario del messaggio.
- Nota:
Il codice di intestazione viene trasmesso mediantel'invio di un byte chiamato ID. In realtà, non viene trasmesso un codice per ogni strumento esistente, in quanto il numero di ID differenti dovrebbe essere troppo elevato. Il protocollo MIDI si limita ad identificare il costruttore dello strumento, mediante una tabella che associa ad ogni costruttore un suo numero ID. La prima cosa che uno strumento fa, non appena ricevuto un messaggio SysEx, è cercare di riconoscere il codice ID in esso contenuto; se tale codice è quello relativo al proprio costruttore, lo strumento continua ad analizzare il messaggio, altrimenti lo trascura. All'interno del messaggio vero e proprio, ogni costruttore è abbastanza libero di utilizzare una propria codifica, sia per individuare, tra i propri, lo strumento interessato dal messaggio, sia per codificare i vari parametri dello strumento.
© by Remo Rombi |