GENERAL MIDI, ovvero: l’inglese delle apparecchiature musicali

Written by Antonio Antetomaso on . Posted in Tutorial

“With english you go everywhere” diceva un vecchio spot pubblicitario di parecchi anni fa….

Anche se un po’ filosofico, il paragone mi pareva azzeccato e, questo slogan, adatto a presentarvi l’argomento di questo articolo: lo standard GENERAL MIDI.

di Antonio Antetomaso

Eh già, perchè tale standard è servito ad aprire una strada nella fitta giungla creata involontariamente della specifica del MIDI (MUSICAL INSTRUMENT DIGITAL INTERFACE), ovverosia di un protocollo di interscambio di informazioni tra strumenti musicali.

Questo perché, ricordiamo brevemente, tale protocollo, benché fosse un primo grande passo avanti verso l’interconnessione di più strumenti musicali, di fatto lasciava ai costruttori troppi margini di libertà che poi si traducevano inevitabilmente in differenze tra una famiglia di strumenti e un’altra. Tali differenze costringevano gli utenti a diverse attività “smanettatorie” perché la “rete musicale” costruita fosse funzionante al cento per cento.

E, inutile dirlo, tali complicazioni crescevano esponenzialmente con il numero di strumenti musicali collegati nella rete MIDI.

Procediamo allora LENTO PEDE analizzando che cosa ha introdotto il General MIDI e perché è stato così importante. Partiamo anzitutto dalle origini, la prima specifica, il GM in versione 1, nasce nel 1991 a cura di due organismi, il MIDI Manufacturers Association (MMA) e il Japan MIDI Standards Committee. La specifica GM si affianca alla specifica MIDI imponendo un insieme di regole ai quali i costruttori di strumenti musicali debbono attenersi perché i loro prodotti possano essere definiti GM compliant.

Tali regole fanno si che due strumenti GM producano pressoché lo stesso comportamento se ad essi vengono inviati i medesimi messaggi midi. Capiamo meglio queste regole andando subito al sodo. Perché uno strumento musicale possa definirsi GM compliant le seguenti regole devono essere rispettate:

  • Deve consentire di avere attive simultaneamente 24 voci di cui 16 melodiche e le rimanenti 8 percussive.
  • Deve essere sensibile alla dinamica.
  • Deve supportare la riproduzione timbrica su 16 canali differenti, di cui il canale 10 è riservato ai suoni percussivi.
  • Deve supportare la polifonia su ogni canale.

Ma ovviamente non finisce qui…..

 

Gestione dei messaggi di Program Change

Lo standard impone che ad ogni program number corrisponda un solo timbro, per tutti e 128 i programmi (da 0 a 127, intervallo discreto di valori per tutti i parametri MIDI, ricordate?).

Inoltre anche i suoni percussivi hanno il loro mapping: ad essi è riservato il canale 10 e ogni nota inviata sul questo canale produce un timbro percussivo diverso, a creare la GM STANDARD DRUM MAP 

 

Gestione dei messaggi di Control Change

Nel MIDI, i parametri che governano la riproduzione di una timbrica su ciascuno dei 16 canali sono regolati mediante i cosiddetti messaggi di control change. Ogni messaggio può essere immaginato come composto da un numero che identifica la tipologia di parametro su cui si sta intervenendo e da un altro numero che dosa il valore del parametro stesso.

Lo standard GM definisce anche quali messaggi di controllo sono ammessi e li “cataloga” secondo questo schema

1 =  Modulation wheel

7 =  Volume

10 = Panpot

11 = Expression

64 = Sustain pedal

100 = Registered Parameter Number LSB

101 = Registered Parameter Number MSB

121 = All controllers off

123 = All notes off

per ciascun parametro, ancora valori da 0 a 127 con i dovuti significati. Per i parametri VERO/FALSO (121 e 123), vale naturalmente la regola 0 = spento, 127 =  acceso. Vi starete chiedendo a che servono i parametri 100 e 101. Semplice, essi sono dei parametri di controllo speciali che sono indirizzati in un modo differente e prendono il nome di registered parameters numbers (RPN per gli amici). Per utilizzarli bisogna mandare un messaggio midi costituito da

  • due messaggi di control change di tipo 101 e 100 per indicare un RPN;
  • un qualsivoglia numero di messaggi di data entry di uno o due bytes (contrassegnati o con MSB=6 o con LSB=38);
  • un messaggio di “End of RPN”.

Sono standardizzati i seguenti RPN (il tipo indicato da una coppia LSB/MSB e il valore da un’altra coppia LSB/MSB):

  • 0,0 = Pitch bend range
  • 1,0 = Channel Fine tuning
  • 2,0 = Channel coarse tuning

 

Messaggi di System Exclusive

Lo standard definisce anche 2 messaggi di sistema esclusivo (della quale tipologia di messaggi parleremo in un altro ambito): uno per impostare la compatibilità GM a on o a off e l’altro per impostare il volume master dello strumento musicale.

 

Estensioni

Accanto allo standard General MIDI classico, con il tempo se ne sono affiancate diverse derivazioni: lo standard GS e lo standard XG. La prima, proposta dalla Roland, presentava tra le novità più interessanti, la possibilità di raggruppare i suoni in banchi indirizzabili con opportuni messaggi di bank select e la disponibilità di 9 drum kits con 14 suoni percussivi aggiuntivi. Tale standard è stato implementato nel glorioso modulo “Roland Sound Canvas” per la prima volta e, da allora, realizzato per tutti gli strumenti Roland a venire. Lo standard XG, di casa Yamaha invece, presentava ugualmente altre procedure aggiuntive rispetto al GM classico con la possibilità di organizzare suoni in banchi e la possibilità di avere drum kits aggiuntivi.

Concludiamo questo nostro cammino accennando alla nascita del GM2 nel 1999 che introduce più controllers, patch, RPNs e messaggi di Sysex, come tentativo di riconciliare le estensioni GS e XG e fornire un unico “calderone comune”.  Per i dettagli relativi alle novità introdotte dalla seconda versione dello standard vi rimando qui e qui.

A presto.

 

Tags: ,

Trackback from your site.

Comments (8)

  • antonioc

    |

    Molto chiaro e interessante. Parlerai anche gli aspetti pratici del midi?

    Reply

  • Antonio Antetomaso

    |

    Vediamo che si può fare…:-D
    C’è qualche aspetto in particolare che vorresti approfondire?
    Grazie dei complimenti.

    Reply

  • manu

    |

    io sono un po stordito dagli nrpn, sto creando un convertitore di messaggi utilizzando m4l principalmente messaggi js… ma mi sto perdendo un pochino… un po troppo… ho visto che ci sono controller compatibili, che possono mandare quel tipo di messaggi, uno è il bcr2000.. cmq non riesco a trovare una strategia semplice per fruttare gli nrpn, del tetra dsi e di un altro paio di strumenti più vecchiotti… quindi, scusate la lunghezza del messaggio, mi interessava capire come struttare tali messaggi senza studiare linguaggi di programmazione

    Reply

    • Enrico Cosimi

      |

      il problema è che nel vecchio protocollo MIDI, si consideravano sufficienti i 128 step di valore concessi a ogni controller; quando poi le cose sono “cresciute”, ci si è resi conto che in determinate occasioni è necessario avere più bit a disposizione per documentare l’escursione di valore, e allora si finisce nell’incubo degli MSB e LSB per avere dettaglio e degli NPRN per poter far rientrare il tutto all’interno della struttura di base del MIDI.

      ma sei sicuro che ti serva di convertirli? l’altro giorno, stavamo diventando matti per mandare gli NPRN ad un “noto pedale midi equipaggiato” e alla fine abbiamo capito che potevamo mandargli solo gli MSB (ovvero i CC normali…) e buonanotte – certo, ti fai bastare i 128 step, ma vivi molto più felice :-)

      Reply

  • mirko

    |

    Buongiorno a tutti,
    vi disturbo per un problema che a voi farà ridere ma che io non so per ora come risolvere.
    Ho una scheda audio M-Audio Audiophile 192 e Cubase 5 come DAW, il tutto collegato con un Juno 106 che uso sia come master keyboard sia come vero e proprio synth!
    E qui nasce la rogna: ogni volta che armo una pista MIDI e dentro ci faccio suonare il Juno 106 come synth, come posso poi utilizzare la tastiera per pilotare altri plugin senza che anche il Juno 106 emetta ulteriori suoni?
    Spero di essermi spiegato.

    Grazie mille

    Reply

    • Attilio De Simone

      |

      La questione nasce dal fatto che usi il synth anche come master keyboard, quindi hai il midi in e out del synth collegati con la scheda audio. per risolvere il problema hai due opzioni. Sulle tracce midi che non devono mandare messaggi al roland, devi disattivare il midi out o comunque non tenerla assegnata al synth o alla scheda audio (che poi manda il midi out al midi in del synth).
      Oppure vai sul midi filter del synth e attivi il filtro midi su tutte le tracce tranne una, cioè quella assegnata sul Cubase per pilotare il roland, per esempio se stai pilotando il roland dalla traccia midi 01, allora attivi il midi filter dalla traccia 02 alla 16.

      Reply

  • mirko

    |

    Grazie mille, sempre gentilissimo.
    Appena arrivo a casa provo.
    Buona giornata

    Reply

Leave a comment

Inserisci il numero mancante: *

ga('send', 'pageview');