MIDI Reset, come e dove.

Pubblicato: ottobre 20, 2010 in MIDI, Strumenti Musicali
Tag:, ,


Alcuni giorni fa ho ricevuto un’e-mail da un lettore il quale mi sottoponeva un problema molto comune tra gli utilizzatori di basi MIDI.
Il nostro amico utilizza un pc collegato ad una tastiera ( una Korg i5s ) via midi tramite un interfaccia ( ovviamente MIDI) della Edirol.
Durante l’esecuzione casuale di brani MIDI ( mandati in esecuzione sul PC con Vanbasco), capitava a volte che la sua tastiere inizia ad emettere “suoni stonati” o che alcune tracce del midifile non vengano più riprodotte.
L’unico modo per tornare ad una condizione di normalità è quella di spegnere e riaccendere la tastiera. Scartando a priori problemi dovuti al software di riproduzione MIDI o all’interfaccia di collegamento ( anche se problemi e bug potrebbero anche annidarsi in questi elementi ), con molta probabilità tali malfunzionamenti possono essere dovuti ad un mancato reset dei parametri MIDI tra una base e l’altro o a qualche comando MIDI ( sistema esclusivo, control change, etc.. ) che manda in TILT il generatore sonoro della tastiere MIDI collegata al PC.

MIDI, una successione di eventi.
La natura di questi problemi va ricercata nell’essenza stessa della comunicazione MIDI.
Quest’ultima infatti non è altro che una trasmissione “seriale” ( vuol dire che le informazioni fluiscono una dopo l’altra ) di eventi e comandi stabiliti e codificati agli inizi degli anni 80 da un consorzio di aziende produttrici di strumenti musicali.
L’idea che probabilmente è stata alla base dello sviluppo di questo protocollo è stata quella di far suonare due strumenti musicali all’unisono.
Quando su uno di essi si premeva una nota, quest’ultimo doveva mandare un’informazione al secondo per dirgli: “suona anche tu la nota numero xx” (nota On).
Quando successivamente si rilasciava il tasto premuto in precedenza, questo “evento” doveva essere tradotto in un comando che informava la seconda tastiera che si doveva interrompere (Nota Off) la riproduzione della nota numero xx.
Per i più curiosi, poniamo l’attenzione sul fatto che come già detto, la comunicazione MIDI è “seriale” per cui quando si premono tre note contemporaneamente ( un accordo ad esempio ) le note transitano da una macchina all’altra in modo sequenziale ( una dopo l’altra ) impiegando ognuna circa 960 micro secondi ( circa un millesimo di secondo ).
Praticamente quello che sulla prima tastiera è un accordo di tre note premute contemporaneamente, sulla seconda diventa un arpeggio velocissimo.
Visto che l’orecchio umano non riesce a distinguere due suoni se vengono prodotti a meno di 1/10 di secondo di distanza l’uno dall’altro, le tre note sembreranno “contemporanee”.
Se pero tra una nota e l’altra si dovesse trasmettere una mle importante di controlli o altri dati midi, la contemporaneità delle note riprodotte potrebbe non essere più così scontata ma questo è un altro problema rispetto all reset dei parametri.

Dalla descrizione della natura della comunicazione MIDI si può subito intuire che se a seguito di una Nota On non giunge la relativa Nota Off, quest’ultima continuerà a suonare all’infinito o che se dopo aver inviato un comando di modulazione su di un canale non si invia un successivo comando che azzera tale effetto, tutti i suoni che verranno riprodotti successivamente su quel canale, saranno tutti modulati nello stesso modo.

Un messaggio MIDI per ogni situazione.
Ma quanti sono i comandi MIDI e quali di essi possono creare problemi nel caso non vengono adeguatamente resettati tra una base ed un’altra?
Come è noto il MIDI non si limita a trasmettere da un device ad un altro solamente le note suonate o rilasciate.
Il protocollo prevede una discreta quantità di controlli e comandi con i quali plasmare e controllare un generatore sonoro digitale.
La lista completa la troviamo sul sito della MIDI Manufacture Associations (http://www.midi.org/techspecs/index.php).
I messaggi MIDI possono comunque essere suddivisi in tre categorie:

  • I messaggi di canale (channel message) ,
  • I messaggi di sistema (system message)
  • I messaggi per informazione in tempo reale (system Real-Time Messages).

I Channel Message sono messaggi che possono essere indirizzati indifferentemente su di uno dei
sedici canali MIDI disponibili ed in particolare rappresentano:

NOTE OFF Evento nota spenta
NOTE ON Evento nota accesa
AFTER TOUCH Variazione della pressione di un tasto
CONTROL CHANGE Variazione della posizione di un controllo (es.Modulazione, Volume, Panpot, ecc.)
PROGRAM CHANGE Cambio di programma es. voce, path, performans,ecc.
AFTER TOUCH(sul canale midi) Variazione della pressione di un tasto riferita al canale midi
PITCH BENDER Variazione della posizione del pitch bend

I system message sono messaggi che non possono essere “canalizzati”.
Essi sono:

SYSTEM EXCLUSIVE Sistema esclusivo
Song Position Pointer Posizionamento di una Song.
Song Select Selezione di una Son
Tune Request Richesta di Tuning
System Real-Time Message
Timing Clock Clock
Start Avvio sequenza
Continue Continue Sequenza.
Stop Stop Sequenza
Active Sensing Verifica connessione MIDI
Reset Reset di sistem

Ad ognuno il suo Control Change.
I control change permettono la modifica e\o la variazione di parametri e controlli della macchina.
Esistono 128 diversi Control change, alcuni di loro hanno una funzione assegnata altri, sono liberi e possono essere utilizzati per future implementazioni.
Riporto qui di seguito una lista dei Control Change più noti:

  • Bank Select (00)
  • Modulation wheel ( 01)
  • Breath Controller (02)
  • Foot Controller ( 04)
  • Portamento ( 05)
  • Data Entry MSB (06)
  • Volume (07)
  • Bilanciamento(08)
  • Pan L-R(10)
  • Expressione (11)
  • Controlli Generali (16-19)
  • LSB (0-31)        (32-63)
  • Pedale Sustain( 64)
  • Portamento (65)
  • Sostenuto (66)
  • Pedale Soft (67)
  • Hold 2 (69)
  • Controlli Generali (80)
  • Reverber Depth  (91)
  • Tremolo Depth  (92)
  • Chorus Depth  (93)
  • Phaser Depth  (95)
  • Data Incremento (96)
  • Data Decremeto  (97)
  • NRPN LSB  (98)
  • NRPN MSB (99)
  • RPN  LSB   (100)
  • RPN  MSB  (101)
  • Reset di tutti i contoller    (121)
  • Controllo Locale (122)
  • Tutte le note spente (123)
  • Modo Omni Off (124)
  • Modo Omni On (125)
  • Mono Mode On (126)
  • Poly Mode On (127)

NRPN, RPN Ma che roba è?

Le coppie di control change NRPN LSB,NRPN MSB e RPN LSB,RPN MSR sono un modo per poter estendere il numeri di controlli disponibili. In poche parole è possibile “indirizzare” un nuovo controllo utilizzando una coppia di questi messaggi seguiti dal data Entry (cc 06).
Gli RPN sono “registrati” mentre gli NRPN sono non registrati
Per maggiori informazioni sugli RPN e NRP leggete questo mio vecchio articolo sull’argomento (NRPN/NRPN_A.htm)

Un esemppio tipici di RNP è l’impostazione della sensibilità del Pitch Bend Range

  • B0 65 00  Controller/chan 0, RPN coarse (101), Pitch Bend Range
  • B0 64 00  Controller/chan 0, RPN fine (100), Pitch Bend Range
  • B0 06 02  Controller/chan 0, Data Entry coarse, +/- 2 semitones
  • B0 26 04  Controller/chan 0, Data Entry fine, +/- 4 cents

Praticamente con questa sequnza di comandi andiamo a modificare l’estensione del pitch associato al comando di PITCH BENDER.
Ogni tastiera o generatore sonoro ha una sua implementazione MIDI descritta (il più delle volte) nel manuale utente.
Per valutare tutte lo possibili aree di intervento dei controllo e degli NRPN vi consiglio di controllare tale tabella.

Ma allora questo reset?
Va detto subito che le “anomalie sonore” che si verificano durante la riproduzione di una serie di Midifile sono molto spesso da ricercare nella cattiva programmazione di questi files e nella mancanze degli appropriati controlli di Set e Reset dei parametri MIDI.
Se si utilizzano Midifile di “qualità” e quindi programmati da professionisti questi problemi solitamente non si verificano.
Qualora si volesse inserire i controlli mancanti e magari si volesse realizzare in piccolo Midifle di Reset da inviare tra l’esecuzione di due midifile io consiglio di inserire per ognuno dei 16 canali MIDI almeno i seguenti comandi:
–     Control Change 121 Valore 0 – Reset di tutti i contoller
–     Control Change 120 Valore 0 – Tutte le note spente
–     Impostazione dell PITCH BENDER al valore centrale 0
Questi due controlli dovrebbero già essere sufficienti e spegnere tutte le note e resettare a default tutti i controlli.
Visto che fidarsi è bene ma non fidarsi è meglio, per una maggiore sicurezza io aggiungerei:
–     Reset del Pitch Bend Range tramite RPN
–     Selezione del banco 0 tramite Control Change 0 (Bank Select)
–     Impostazione della Modulation wheel sul valore 0 tramite Control Change 1 (Modulation wheel)
–     Impostazione del Volume sul valore 100
–     Impostazione del Pan L-R sul valore 64
–     Impostazione dell’Expressione sul valore 127
–     Impostazione del Pedale Sustain sul valore 0
–     Impostazione del modo Poly Mode On al valore 127 tramite Control Change 127 (Poly Mode)

Se il vostro modulo dispone anche si NRPN per la modifica del suono ( ATTACK, DECAY, RESONANGE etc..) io resetterei anche questi parametri.
Per maggiori dettagli e spiegazioni sul protocollo MIDI vi consiglio il seguente LINK.
http://www.gweep.net/~prefect/eng/reference/protocol/midispec.html

 

Ciao a tutti.

 

commenti
  1. giancarlo scrive:

    Ciao vorrei porti una domanda se e’possibile.ho win seven e alcune basi MIDi sento solo la batteria con il programma van bascoe con karafun e karall,come posso risolvere questo problema?grazie anticipatamente di una tua risposta

Lascia un commento

Inserisci i tuoi dati qui sotto o clicca su un'icona per effettuare l'accesso:

Logo WordPress.com

Stai commentando usando il tuo account WordPress.com. Chiudi sessione / Modifica )

Foto Twitter

Stai commentando usando il tuo account Twitter. Chiudi sessione / Modifica )

Foto di Facebook

Stai commentando usando il tuo account Facebook. Chiudi sessione / Modifica )

Google+ photo

Stai commentando usando il tuo account Google+. Chiudi sessione / Modifica )

Connessione a %s...