Tutto  il  contenuto di questa pagina è Copyright ©  di  www.dimanet.com/midi

 

 

 

 

Midifile - struttura e formato

Collegamenti Midi

I canali Midi

Le apparecchiature Midi

Modo di ricezione e trasmissione

I messaggi di sistema

Il protocollo e la sintassi

La sintassi 

Midifile - GM e GS

 

 

 

Midifile - struttura e formato

Implementazione dei Midifile

Prima della definizione dello SMF (Standard Midi File), proposto per la prima volta nel 1986 dalla americana Opcode Systems, e adottato nel luglio 1988, i produttori di software musicale, per la memorizzazione di eventi Midi, adottavano un loro particolare formato, con il risultato che, pur essendo i dati memorizzati, della stessa natura e su stessi supporti, i brani midi registrati dovevano essere letti dallo stesso tipo di software con cui erano stati creati.

L'implementazione e l'adozione dello SMF ha fatto in modo che, pur utilizzando software musicale (sequencer) diverso, la memorizzazione dei brani in formato Midi avvenisse con la stessa procedura, consentendo così lo scambio e l'utilizzazione tra computer e sequencer diversi. L'utilizzo dello SMF rende possibile ad esempio, lo scambio di brani tra PC (Windows, Dos) e MACINTOSH, ATARI e tra qualsiasi tipo di sequencer in grado di avvalersi di tale standard.

La Struttura

Gli SMF sono composti da due blocchi principali definiti rispettivamente Header-chunk e Track-chunk, i primi 4 byte di ogni blocco, servono ad identificare il blocco stesso.
L'Header-chunk (blocco d'intestazione) è il primo elemento inserito nel midifile, in quanto contiene le informazioni del formato, del numero di traccie e della temporizzazione. Inizia con quattro caratteri ASCII:MThd, che appunto identificano il blocco. Il formato dei dati è visibile in fig. 1.

Dati esadecimali Commento
4D 54 68 64 ASCII=MThd
00 00 00 06 Lunghezza del blocco, in questo esempio 6 byte
00 00 Formato del midifile (0,1,2)
00 01 Numero delle traccie (da 1 a 16)
00 60 Tick per quarto di nota, oppure
Tipo di sinc. SMPTE (24, 25, 29.97, 30 frame/s)

Fig. 1 - Header-chunk (blocco d'intestazione).

 

Il Track-chunk (blocco di traccia), contiene gli eventi Midi (nota on, nota off, ecc.) relative ad una singola traccia, prima di ogni evento viene inserito il riferimento temporale (Delta-time), che esprime il tempo trascorso tra ogni singolo evento. I quattro caratteri ASCII di identificazione del blocco sono: MTrk.Il formato in fig. 2.

Dati esadecimali Commento
4D 54 72 6B ASCII=MTrk
00 00 00 00 Lunghezza del blocco, in questo esempio 0 byte

Fig. 2 - Track-chunk (blocco di traccia).

 

Delta-time

La lunghezza del Delta-time è variabile per consentire un intervallo tra un evento e l'altro anche molto grande, senza pregiudicare la compattezza del file.
Il valore del Delta-time viene calcolato suddividendo il tempo trascorso tra ogni evento, in pacchetti da 7 bit a cui vengono aggiunti dei bit più significativi di valore 1, tranne che per ultimo pacchetto a cui viene aggiunto il valore 0.
La scelta di questa complessa modalità di codifica del Delta-time è stata fatta per limitare la memoria stessa del midifile e potere esprimere nel contempo valori di tempo in teoria infiniti.

Oltre ai messaggi riferiti al canale come quelli di nota, control change, program change ecc. (eventi Midi), nel blocco Track-chunk, vengono memorizzati anche messaggi di Systema Exclusivo, ed i Meta-eventi.

La memorizzazione dei dati di Systema Exclusivo (Sys-Ex) avviene come per gli eventi Midi, viene inserito prima il Delta-time, poi il dato di inizio del Sys-Ex (F0), seguito dalla lunghezza in byte dell'intero messaggio e infine dai dati.
In fig. 3 è descritto il formato di memorizzazione del Sys-Ex relativo al di reset General Midi (F0,7E,7F,09,01,F7).

Dati esadecimali Commento
00 Delta-time
F0 Inizio dei dati di Sys-Ex
05 Lunghezza in byte del Sys-Ex
7E 7F 09 01 Dati Sys-Ex
F7 Fine dei dati di Sys-Ex

Fig. 3 - Sys-Ex di reset GM.

 

I Meta eventi

I meta-eventi rappresentano un complemento importante negli SMF. Con essi vengono memorizzati: i nomi delle traccie, la divisione del tempo, la velocità, la tonalità, il testo del brano, il copyright e altro.
In fig. 4 vengono descritti i Meta-eventi più importanti.

Tipo di Meta-evento Commento
01 Evento di testo per descrivere il nome di una traccia o il nome della voce usata, può essere utilizzato anche per inserire il testo.
02 Evento di copyright, il testo deve contenere la © seguita dall'anno di creazione e dal nome dell'autore. Dovrebbe essere inserito come primo evento sulla traccia 1.
03 Evento di testo per indicare il nome della traccia. Se è inserito in un midifile in formato 0 o nella prima traccia di un midifile in formato 1, indica il nome del brano.
05 Evento di testo per inserire le liriche del brano.
2F Evento che indica la fine di un blocco di traccia (Track-chunk).
51 Evento di velocità del brano, indica quanti microsecondi ci debbono essere in un quarto di nota.
58 Evento per descrivere la divisione del brano.
59 Evento che indica la tonalità.

Fig. 4 - Descrizione dei Meta-eventi

 

I Meta-eventi vengono memorizzati nello SMF allo stesso modo dei Sys-Ex, ma iniziano con l'esadecimale FF. In fig. 5, un esempio che descrive il nome di una traccia chiamata INTRO.

Dati esadecimali Commento
00 Delta-time
FF Inizio del Meta-evento
03 Tipo di Meta-evento
05 Lunghezza in byte del Meta-evento
49 4E 54 52 4F ASCII=INTRO

Fig. 5 - Memorizzazione dei Meta-eventi

 

I tre formati degli SMF

Formato 0
Le traccie di un brano vengono mixate in una singola traccia che contiene però tutte le informazioni degli eventi di tutte le traccie del brano.

Formato 1
Le traccie vengono memorizzate in modo singolo e contengono gli stessi valori di tempo e metrica. La velocità del brano viene inserita nella prima traccia che fa da riferimento a tutte le altre.

Formato 2
Le traccie vengono gestite indipendenti l'una da l'altra con valori anche diversi di tempo e metrica.

Generalmente i più utilizzati sono il Formato 0 usato principalmente dai sequencer a lettura diretta, cioè che non devono caricare in memoria l'intera sequenza, ma prelevano ed eseguono i dati Midi direttamente. Ed il Formato 1 per i sequencer che possono creare e/o modificare SMF, specie i software musicali, i quali hanno in genere la possibilità di gestione di entrambi i formati.

MENU

 

Collegamenti Midi

 

connettore 1) Non utilizzato
2) Schermatura
3) Non utilizzato
4) +5Volt
5) Dati midi

Fig. 1 - Schema di pedinatura del connettore Midi

 

cavimidi

 

Fig. 1a - Schema di collegamento del cavetto Midi

 

schema

 

Fig. 2 - Schema generale di interfaccia Midi

 

In figura 1 possiamo vedere il classico connettore Midi, che utilizza solo 3 dei 5 poli a disposizione: il Pin centrale n. 2 connesso alla calza e i pin 4 e 5 i più vicini a quello centrale.
In figura 1a lo schema di collegamento del cavetto Midi, per quanto riguarda la lunghezza è meglio non superare i 3 metri.
Per completezza in figura 2 riportiamo lo schema generale dell'interfaccia Midi

Trasmissione Midi nei connettori
Quando si esegue un brano i dati Midi trasmessi escono dalla porta Midi Out e vengono ricevuti dalla porta Midi In.
La presa Midi Thru serve a trasmettere l'esatto duplicato dei dati che vengono ricevuti dal Midi In.

 

Classici collegamenti Midi

esempio

 

Fig 3 - Classico collegamento Midi

 

In figura 3 possiamo vedere uno dei collegamenti classici del Midi, sono state riportate le freccie per evidenziare il flusso dei dati. Con questo tipo di collegamento bisogna considerare l'eventale ritorno midi, ossia i dati che entrano nella presa Midi In riescono dalla presa Midi Out creando un riciclo di dati (loop) tale da bloccare il sistema, specialmente se l'apparecchiatura che svolge la funzione di Sequencer è un computer.
Ciò deriva dal fatto che l'interfaccia del Computer è quasi sempre priva della presa Midi Thru e per default quello che entra nella presa In esce dalla presa Out.

Le soluzioni per potere utilizzare tale collegamento, a parte staccare un cavo, sono:

  • Controllare se il software del Sequencer ha l'opzione per selezionare l'uscita Thru in OFF.

  • Selezionare nel sintetizzatore il LOCAL CONTROL in OFF

esempio

 

Fig. 4 - Collegamento con Master Keyboard

 

In figura 4 il collegamento classico utilizzato con una Master Keyboard muta, in questo collegamento viene utilizzata la presa Midi Thru, chiaramente tale l'utilizzo in cascata va limitato, proprio per la natura del flusso seriale del Midi, che provocherebbe un ritardo fastidioso e inutilizzabile del suono in uscita. La soluzione per collegare più tastiere o expander è l'utilizzo di Midibox (fig. 5).

esempio

 

Fig. 5 - Esempio di Midibox con una presa Midi In e 5 prese Midi Out

 

 

 

Un'alternativa al collegamento attraverso la presa Midi Thru, è il Ring, figura 6, sfortunatamente non tutte le tastiere lo consentono.

collegamento

 

Fig. 6 - Collegamento Ring

MENU

 
I canali Midi

 

Qualcuno si sarà chiesto: perchè solo 16 canali midi?

Come sappiamo i messaggi midi viaggiano serialmente, cioè uno dopo l'altro a pacchetti di 8 BIT (1 BYTE). Sappiamo che i primi 8 BIT inviati riguardano la status Byte (byte di stato), per i messaggi di canale, fu deciso di assegnare il primo gruppo di 4 BIT all'istruzione principale del messaggio ed al secondo gruppo di 4 BIT alla codifica dei canali.

Per comprendere bene come vengono selezionati i canali midi, dobbiamo entrare nella numerazione binaria, per affinità inseriamo anche quella esadecimale

 Canale midi

 Esadecimale

 Binario

 1

 0

 0000

 2

 1

 0001

 3

 2

 0010

 4

 3

 0011

 5

 4

 0100

 6

 5

 0101

 7

 6

 0110

 8

 7

 0111

 9

 8

 1000

 10

 9

 1001

 11

 A

 1010

 12

 B

 1011

 13

 C

 1100

 14

 D

 1101

 15

 E

 1110

 16

 F

 1111

 

 

 

Come si noterà, usando soltanto 4 BIT, il massimo dei numeri che si possano rappresentare è 16.

Per completezza, proviamo a mettere insieme un byte di stato, ad esempio NOTA ON

Decimale Esadecimale Binario

 144

 90

 10010000

 

Come si è appena detto il primo gruppo di 4 BIT, in questo caso (1001) (EX 9), riguarda l'istruzione NOTE ON, ed il secondo gruppo di 4 BIT (0000) (EX 0), il numero di canale. In questo esempio si fa riferimento al n. 1. Di seguito alcuni esempi di NOTE ON su diversi canali midi.

Decimale Esadecimale Binario Canale midi
145 91 10010001 2
146 92 10010010 3
147 93 10010011 4
159 9F 10011111 16
 

MENU

 

Le apparecchiature Midi

 

Esistono molte apparecchiature che svolgono funzioni midi, e che possiamo riassumere in tre grandi categorie. Proviamo a descriverne alcune in dettaglio per capire meglio il loro funzionamento e la loro diversità.

 

  • I principali generatori di dati midi:
    Sintetizzatori, masterkeyboard, computer, workstation.

  • I generatori di suono:
    Expander, midimixer, batterie elettroniche, dispositivi in grado di ricevere dati midi.

  • Le interfaccie:
    Sincronizzatori, midibox, e altri dispositivi in grado di indirizzare le informazioni midi

Chiaramente le apparecchiature sopra esposte non vanno viste con riferimento assoluto di categoria di appartenenza, perchè è vero che ad esempio un midimixer riceve ed esegue informazioni midi, ma se lo stesso è in grado anche di trasmetterle, dovrebbe appartenere alla categoria dei generatori di dati midi.

Il sintetizzatore
La tastiera midi per eccellenza. All'interno il sintetizzatore è diviso in due sezioni distinte: una di controllo, che comprende la tastiera, i comandi e la parte elettronica per l'elaborazione in entrata ed uscita dei dati midi, ed una di generazione di suono.
Normalmente la sezione di generazione di suono esegue le istruzioni della sezione controllo, èpossibile comunque impostare la divisione di queste due sezioni, in modo da poterle utilizzare separatamente vedi: LOCAL CONTROL OFF.

La masterkeyboard
Una masterkeyboard generalmente è in grado di svolgere tutte le funzioni di controllo midi piùo meno complesse, la caratteristica che la distingue dal sintetizzatore è l'assenza della sezione di generatore di suono.

Il computer
Si è affiancato alle apparecchiature midi ed ormai con i software in commercio e hardware dell'ultima generazione è in grado di svolgere funzioni midi superlative.
Chiaramente a meno che non si parli di portatiti (book), è destinato alla postazione fissa in studio o in abitazione.
Oltre al software deve essere dotato di interfaccia midi e se si vuole farlo suonare, anche di scheda audio.

La workstation
Un sintetizzatore più evoluto con la capacità di sequencer e funzioni midi complesse.

L'expader o modulo sonoro
L'expander non è altro che la sola sezione di generazione di suono di un sintetizzatore. Dotato in genere di capacità politimbrica

Le interfaccie
Sono dispositivi di ausilio ad un sistema midi, ce ne sono molti tipi.

  • Sincronizzatori: che servono a fare partire e camminare allileate diverse apparecchiature midi. Un sincronizzatore molto utile èquello che si usa per far andare a tempo un registratore analogico a nastro con varie apparecchiature midi.

  • Midibox: utili per filtrare, miscelare, canalizzare, collegare varie fonti midi. Troviamo tra le più importanti: Merge, Patch Bay, Midi Channnelizer, Thru.

 


 

La polifonia
Ormai tutte le apparecchiature midi sono polifoniche, bisogna comunque tenere in considerazione la quantità di polifonia, ossia il numero di note che si può suonare contemporaneamente.
Viene spontaneo credere che 10 note di polifonia siano sufficenti, ma in realtà se si vuole suonare scale, arpeggi o accordi utilizzando il sustain ci si dovrà ricredere. Perchè subito dopo che le note avranno raggiunto il massimo di polifonia, si avvertirà l'effetto taglio, ossia le prime note suonate, per effetto della polifonia esaurita non si sentiranno più.
Che dire poi se si utilizza un sequencer?
La cosa si complica ancor di più con l'utilizzo di apparecchiature politimbriche, cioè dotate di più generatori di suono al loro interno.
Sarebbe bello poter disporre di un apparecchiatura politimbrica e con polifonia illimitata, purtroppo il costo risulterebbe esagerato.
Esistono comunque metodi di ottimizzazione per assegnare le note di polifonia ai singoli generatori di suono:

  • Fix mode.
    Assegnazione fissa e cioè settata dall'utente. Con questo metodo è possibile assegnare un numero fisso di polifonia per ogni determinato generatore. Le note che supereranno il numero di polifonia assegnato saranno ignorate.

  • Auto mode.
    Assegnazione dinamica ed automatica delle note di polifonia, con diverse modalità di priorità.

Ne parleremo in modo più approfondito nel trattato che riguarda i midifiles.

 


 

Lo split della tastiera
Una funzione di grande utilità in quanto consente di dividere la tastiera in due o più parti, con la possibilità di assegnare a ciascuna di esse timbri diversi. La tastiera dotata per eccellenza della funzione split è la Masterkeyboard, nonchè tutte le tastiere cosiddette da pianobar, ossia quelle dotate di accompagnamento elettronico eseguito in modo automatico rispettando gli accordi musicali suonati dalla mano sinistra, mentre la destra esegue con un timbro diverso il canto o altro.

 


 

Midi implementation chart
Ogni apparecchiatura midi è dotata della Midi implementation chart (Tavola di implementazione midi), rilasciata dal costruttore, che raccoglie in modo sintetico le caratteristiche dell'apparecchiatura stessa. La corretta lettura fornisce una visione chiara del funzionamento e delle varie possibilità midi offerte.
Vediamo com'è organizzata:

Function Trasmitted Recognized Remarks
BASIC            Default
CHANNEL       Changed
-- -- --
MODE            Default
                Messages
                  Altered
-- -- --
NOTE
NUMBER      True Voice
-- -- --
VELOCITY       Note On
                Note Off
-- -- --
TOUCH           Key's
                 Chan's
-- -- --
PITCH BENDER -- -- --
CONTROL
CHANGE
-- -- --
PROGRAM
CHANGE
-- -- --
SYSTEM EXCLUSIVE -- -- --
BASIC            Default
CHANNEL       Changed
-- -- --
SYSTEM        Song Pos
COMMON       Song Sel
                   Tune
-- -- --
SYSTEM           Clock
REAL TIME      Messages
-- -- --
AUX        Local Control
             All Notes Off
             Active Sense
                   Reset
-- -- --
NOTES:      

Mode 1: OMNI ON, POLY     Mode 2: OMNI ON, MONO     O:Yes
Mode 3: OMNI OFF, POLY    Mode 4: OMNI OFF, MONO     X:No

 

La prima colonna Function, indica i varii tipi di messaggi midi. Le due colonne Trasmitted e Recognized, mostrano se lo strumento è in grado di trasmettere o ricevere la funzione o il messaggio menzionato nella prima colonna. L'ultima colonna Remarks, è destinata a informazioni aggiuntive.

I simboli "O" (Yes o Si) e "X" (No), indicano la varie possibilità. A volte potremo trovare i due simboli insieme, questo significa che la funzione è settabile liberamente.

Basic Channel
Indica quale canale midi base è utilizzato per ricevere o tramettere. Default significa: impostazione all'accenzione. Changed: impostazione dell'utente.

Mode
Indica l'impostazione dei 4 modi midi (Modo 1, Modo 2, Modo 3, Modo 4). Default: impostazione all'accenzione. Messages: quali modi ha la possibilità di ricevere o trasmettere. Altered: messaggi di modo alternativi.

Note Number
Indica l'intervallo di numeri di nota che lo strumento può trasmettere o ricevere. In genere lo strumento trasmette tante note quanti sono i tasti, mentre ne può ricevere molte di più.

Velocity
Le due colonne mostrano se lo strumento è in grado di trasmettere e ricevere i due messaggi di velocità (attacco e rilascio) di tasto.

After Touch
Key's: indica se la ricezione o trasmissione di After Touch è svolta per ogni singolo tasto. Chan's: se invece è svolta sul canale midi.

Pitch Bender
Riguarda appunto il Pitch Bender. Informazioni sulla risoluzione di intervallo, possono trovarsi sulla colonna Remarks.

Control Change
Indica la possibilità dello strumento a trattare messaggi di Control Change come ad esempio: Modulazione, Portamento, Volume, Pan, Sustain, Reverb, Chorus ecc.

Program Change
Indica l'intervallo di numeri che si può usare per impostare le singole voci.

System Exclusive
Vengono riportate le possibilità di trasmettere o ricevere messaggi di Systema Exclusivo.

System Common
Sezione dedicata al trattamento di sincronizzazione. Indica la possibilità dello strumento a trattare i messaggi:Song Position, Song Select, Tune Request.

System Real Time
Mostra la possibilità di ricezione e trasmissione del Clock e dei messaggi di Stop, Play e Continue.

Aux Messagges
Indica altri particolari tipi di messaggi che lo strumento può trasmettere o ricevere.

Ripetiamo che la lettura attenta della Midi Implementation Chart (Tavola di implementazione midi) èmolto importante, specialmente quando si vuole acquistare una nuova apparecchiatura midi.

MENU

 

 

Modo di ricezione e trasmissione

 

Con i messaggi di modo si forzano i modi in cui i messaggi midi vengono ricevuti e trasmessi.
Esistono 4 tipi di messaggi di modo:

  • MODO 1: OMNI ON, POLY

  • MODO 2: OMNI ON, MONO

  • MODO 3: OMNI OFF, POLY

  • MODO 4: OMNI OFF, MONO

Il settaggio dei messaggi di modo è molto importante quando si realizza un sistema midi con più di due apparecchiature.

MODO 1: OMNI ON, POLY - Ricezione polifonica su tutti i 16 canali midi.
Con questa impostazione le apparecchiature rispondono in maniera polifonica ed indipendentemente dal loro canale Midi.
Questa impostazione può essere usata in un sistema midi molto semplice (una master ed uno slave).

MODO 2: OMNI ON, MONO - Ricezione monofonica su tutti i 16 canali midi.
Anche questa impostazione è poco usata in quanto oltre a non permettere l'assegnazione dei canali, tutti i messaggi di nota vengono assegnati a singole voci.
Una delle poche utilizzazioni è il collegamento di un sintetizzatore monofonico ad uno polyfonico.

MODO 3: OMNI OFF, POLY - Ricezione polifonica, ma solo su canale assegnato
In un sistema midi complesso è questa l'impostazione giusta, in quanto permette di assegnare i canali midi in ricezione e trasmissione.

MODO 4: OMNI OFF, MONO - Ricezione monofonica, ma solo su canale assegnato
Questa impostazione è utile per il collegamento di sistemi guitarsynth.

Quando si usa un sistema midi semplice formato da una master, cioè la tastiera con cui si suona o il computer che esegue una sequenza ed uno slave, detto anche schiavo, proprio perchè esegue quello che fa la master. Il settaggio della master e dello slave può essere MODO 1: OMNI ON, POLY, in questo modo non ci sono problemi di canalizzazione in trasmissione ed in ricezione.

La faccenda si complica quando sono collegate al sistema diverse apparecchiature, in questo caso bisogna optare per il MODO 3: OMNI OFF, POLY, facendo attenzione alla canalizzazione midi, proprio perchè con questa impostazione i messaggi midi vengono ricevuti esclusivamente dalle apparecchiature che sono impostate su di una specifico canale midi.

Esiste un altro settaggio importante nei sistemi midi complessi implementato oggi su quasi tutte le tastiere midi, il LOCAL CONTROL
Il LOCAL CONTROL, è il settaggio che permette alla tastiera di pilotare strumenti esterni escludendo le proprie voci interne, come presumibile faccia una master

Per spiegare bene la funzione del LOCAL CONTROL, è indispensabile capire come è strutturata una tastiera o synth.
La tastiera o synth è composta principalmente da due parti, una di controllo che è la tastiera vera e propria e quella destinata all'elaborazione e generazione del suono.
Quando il LOCAL CONTROL è posto in ON, i messaggi midi oltre a pilotare i generatori interni escono dalla porta MIDI OUT. Con il LOCAL CONTROL in OFF, i messaggi midi vengono indirizzati solo sulla porta MIDI OUT escludendo i generatori interni della tastiera stessa, in questo modo la tastiera invia i messaggi midi ma non suona.

Riassumendo:

  • LOCAL CONTROL ON
    La tastiera suona ed in più invia i messaggi in uscita attraverso la porta MIDI OUT.

  • LOCAL CONTROL OFF
    La tastiera (muta), invia solo messaggi in uscita, suonerà soltanto se riceverà messaggi midi attraverso la porta MIDI IN

MENU

 

 

I messaggi di sistema

 

II messaggi che sono ricevuti da tutte le apparecchiature midi collegate indipendentemente dal settaggio del canale di ricezione, sono detti messaggi di sistema, tra questi ci sono i messaggi di sincronizzazione, i messaggi comuni, e quelli di sistema esclusivo.

 

Messaggi di sincronizzazione (Real Time).

Byte di stato DEC HEX
Midi Clock 248 F8
Midi Start 250 FA
Midi Continue 251 FB
Midi Stop 252 FC
Sistema Reset 253 FD
Active Sensing 254 FE

 

I messaggi di sincronizzazione midi non hanno bisogno di essere seguiti da byte di dati, basta inviare il solo byte di stato.

Il messaggio Midi Clock viene inviato 24 volte per ogni nota di un quarto, consente una risoluzione fino alla terzina di sessantaquattresimi.
I messaggi Start, Continue, Stop, vengono inviati per batterie elettroniche, sequenzer, registratori multitraccia ecc., bisogna ricordare che anche dopo che si è inviato un messaggio di Stop, il segnale di Midi Clock continua ad essere inviato, in modo da tenere agganciata la sincronizzazione e far si che al momento dello Start o di Continue, tutte le apparecchiature siano pronte a ripartire in sincronia.

Un messaggio importante è quello di Sistema Reset, tale messaggio consente di portare tutte le apparecchiature in posizione di default, cioè la posizione che assume l'apparecchiatura al momento dell'accenzione.

Infine il messaggio Active Sensing, questo messaggio non è importante ai fini del funzionamento del midi, viene inviato tra le apparecchiature in assenza dei messaggi midi, serve esclusivamente a mantenere il dialogo midi attivo.

Messaggi comuni.

Byte di stato   Byte di dati 1   Byte di dati 2                      
Midi Time Code
(MTC)
241 (F1H)
--> Ore
Minuti
Secondi
Frame
--> -- Song Position Pointer
Posizione della song
242 (F2H)
--> Punto n. 1 --> Punto n. 2 Song Select
Selezione della song
243 (F3H)
--> Numero della Song --> -- Tune Request
Richiesta di intonazione
246 (F6H)

 

Partiamo a definire i messaggi comuni da Tune Request, questo messaggio era utilizzato per accordare gli oscillatori dei vecchi sintetizzatori analogici, che fra l'altro sembrano tornare di moda.

Il messaggio Song Select permette di selezionare una song all'interno di un sequencer e/o batteria elettronica.

Il messaggioSong Position Pointer convertito in FSK (Frequency Shift Keying) e registrato su una traccia di un registratore multitraccia permette di dare un indirizzo assoluto ad ogni punto di una sequenza, serve soprattutto a sincronizzare il registratore a nastro con il sequencer midi, ed avere il vantaggio di potere posizionarsi in qualsiasi punto del nastro, senza necessariamente partire dall'inizio. Una sorta del codice di sincronizzazione professionale audio/video SMPTE

Il codice comunque di sincronizzazione assoluta del midi, è il Midi Time Code (MTC), traduzione del corrispondente SMPTE, standard mondiale di sincronizzazione audio/video.
A differenza del Midi Clock che viene inviato con riferimento al tempo del metronomo, il MTC ha come riferimento il tempo assoluto indicato in ore, minuti, secondi e frame, una cosa molto importante visto che il midi viene sempre più usato in produzioni audio/video.

Messaggi di sistema esclusivo.

Byte di stato   Byte di dati 1   Vari byte di dati   Byte di stato
Sistem Exclusive
Sistema esclusivo
240 (F0H)
--> ID manufacturer
Identificativo
del costruttore
--> Dati --> End of exclusive
Fine del sistema esclusivo
247 (F7H)

 

I messaggi di sistema esclusivo sono utilizzati per programmare e/o controllare il funzionamento interno delle apparecchiature, vengono scambiati tra modelli uguali o comunque dello stesso costruttore. In genere sono utilizzati per librerie di suoni, editor, funzioni specifiche ecc.
Per essere accettati ed eseguiti, le apparecchiature devono riconoscere il byte di dati 1 Identificativo del costruttore, sempre indicato nel manuale d'istruzione. La fine dei messaggi di sistema esclusivo deve essere indicata dal byte di stato End of exclusive fine dei messaggi di sistema esclusivo.

Se vogliamo variare il volume di una determinata voce/suono di una determinata tastiera settata a ricevere il canale midi n. 5, basta inviare un messaggio di control change N.7 sul canale midi n. 5, solamente quella che è settata sul quel canale varierà il volume, mentre le altre non subiranno effetti.

Se invece inviamo un messaggio di sistema ad esempio sul canale midi n. 7, esso sarà ricevuto da tutte le apparecchiature collegate, se il messaggio inviato è di sistema esclusivo, risponderanno solo quelle che identificheranno il proprio ID.

MENU

 

 

 

Il protocollo e la sintassi

Lo scambio d'informazioni fra diverse apparecchiature (tastiere, expander, computers, mixer midi ecc), avviene in forma digitale, e cioè in bit, (8 bit equivalgono ad un byte).
Ora, per rendere decifrabile questo flusso di bit, si delineano, a seconda delle necessità, delle funzioni e dell'hardware, delle regole per la trasmissione e la ricezione, appunto il protocollo.

Con il protocollo midi di determinano quali e quanti byte servono per effettuare istruzioni riconoscibili dalle apparecchiature collegate, quale deve essere la velocità con la quale viaggiano i bit, che circuito deve avere l'interfaccia, insomma tutto quello che serve per effettuare una comunicazione corretta.

Per la comunicazione dei messaggi vengono impiegati i byte, bisogna comunque distinguere gli status byte (byte di stato) dai data byte (byte di dati). Gli status byte sono quelli inviati per primi e servono a decifrare i data byte successivi, senza possibilità di errori.

Dato che, sia i byte di stato che i byte di dati sono numeri compresi tra 0 e 255, nel protocollo viene specificato che i byte di stato devono essere numeri compresi tra 128 e 255, mentre i byte di data tra 0 e 127.

Descrizione del protocollo midi riferita ai byte di stato, DEC=decimale, HEX=esadecimale

DEC HEX NOTE OFF - Evento nota spenta
128 80 canale midi 1
129 81 canale midi 2
130 82 canale midi 3
131 83 canale midi 4
132 84 canale midi 5
133 85 canale midi 6
134 86 canale midi 7
135 87 canale midi 8
136 88 canale midi 9
137 89 canale midi 10
138 8A canale midi 11
139 8B canale midi 12
140 8C canale midi 13
141 8D canale midi 14
142 8E canale midi 15
143 8F canale midi 16
DEC HEX NOTE ON - Evento nota accesa
144 90 canale midi 1
145 91 canale midi 2
146 92 canale midi 3
ecc.. ecc.. ecc.
159 9F canale midi 16
DEC HEX AFTER TOUCH - Variazione della pressione di un tasto
160 A0 canale midi 1
161 A1 canale midi 2
162 A2 canale midi 3
ecc.. ecc.. ecc.
175 AF canale midi 16
DEC HEX CONTROL CHANGE - Variazione della posizione di un controllo es. Modulazione, Volume, Panpot, ecc.
176 B0 canale midi 1
177 B1 canale midi 2
178 B2 canale midi 3
ecc.. ecc.. ecc.
191 BF canale midi 16
DEC HEX PROGRAM CHANGE - Cambio di programma es. voce, path, performans, ecc.
192 C0 canale midi 1
193 C1 canale midi 2
194 C2 canale midi 3
ecc.. ecc.. ecc.
207 CF canale midi 16
DEC HEX AFTER TOUCH (sul canale midi) - Variazione della pressione di un tasto riferita al canale midi
208 D0 canale midi 1
209 D1 canale midi 2
210 D2 canale midi 3
ecc.. ecc.. ecc.
223 DF canale midi 16
DEC HEX PITCH BENDER - Variazione della posizione del pitch bender
224 E0 canale midi 1
225 E1 canale midi 2
225 E2 canale midi 3
ecc.. ecc.. ecc.
239 EF canale midi 16

 

Quelli fino ad ora descritti sono detti anche messaggi di canale, e possono essere indirizzati attraverso i canali midi, esclusivamente a specifiche apparecchiature.

I seguenti messaggi invece fanno parte dei messaggi di sistema, e sono ricevuti da tutte le apparecchiature collegate.

DEC HEX Descrizione
240 F0 SYSTEM EXCLUSIVE - Sistema esclusivo
241 F1 MIDI TIME CODE (MTC)
242 F2 SONG POSITION - Posizione della song
243 F3 SONG SELECT - Numero della song
246 F6 TUNE REQUEST - Richiesta di accordatura
247 F7 END OF EXCLUSIVE - Fine dei messggi di sistema esclusivo
248 F8 MIDI CLOCK - Sincronismo midi
250 FA START - Posiziona a capo della song
251 FB CONTINUE - Riprende dal punto interrotto
252 FC STOP - Ferma la song
255 FF RESET - Inizializza le apparecchiature

 

La sintassi

Il primo esempio di messaggio midi, suoniamo una nota

Byte di stato --- Byte di dati 1 --- Byte di dati 2
NOTE ON
Nota accesa
144 (90H)
--> KEY NUMBER
Numero di nota
60 (3CH)
--> KEY VELOCTY
Pressione del tasto
64 (40H)

 

Decriviamo questo primo esempio formato da 3 byte, con il primo (byte di stato) si determina che èstato premuto un tasto, mentre con gli altri due (byte di dati) il numero di nota e la velocità.
Analizzando i numeri dei byte, vediamo che il 144 (90H) H=esadecimale, corrisponde per il protocollo midi all'evento nota accesa e si riferisce specificatamente al canale midi n. 1, il secondo, numero 60 (3CH) al Do centrale (Do3), ed il terzo 64 (40H) alla pressione che corrisponde al volume con il quale suonerà la nota.

Dopo questo messaggio la tastiera l'expander o altro che sia, suonerà la nota Do centrale fino a che non si inviarà il seguente messaggio, smettiamo di suonare una nota

Byte di stato --- Byte di dati 1 --- Byte di dati 2
NOTE OFF
Nota spenta
128 (80H)
--> KEY NUMBER
Numero di nota
60 (3CH)
--> ATTACK VELOCTY
Rilascio del tasto
64 (40H)

 

Ammettiamo che dopo aver premuto un tasto (note on), invece di rilasciarlo (note off) esercitassimo una pressione maggiore, seguirebbe il messaggio

Byte di stato --- Byte di dati 1
AFTER TOUCH
Pressione del tasto
208 (D0H)
--> AFTER TOUCH NUMBER
Numero di variazione
64 (40H)

 

Nell'esempio è stato indicato un solo byte di dati, ma ce ne potrebbero essere molti altri per definire le variazioni della pressione esercitata.

MENU

 

 

 

La sintassi 

 

Dopo avere visto quali e quanti byte transitano sui cavi midi quando si preme e si rilascia un tasto. Proseguiamo ancora con esempi dei vari messaggi che si possono incontrare:

Muoviamo il Pitch Bender. Ci auguriamo che sappiate cos'è il pitch bender, è quella rotella o joystick che si trova in genere sulla parte sinistra della tastiera e che serve per far andare su e giù (glissato) l'intonazione.

Byte di stato   Byte di dati 1   Byte di dati 2
PITCH BENDER
Pitch bender
224 (E0H)
--> BENDER POSITION MSB
Numero di posizione1
64 (40H)
--> BENDER POSITION LSB
Numero di posizione2
64 (40H)

 

Il messaggio richiede una precisazione. Dato che un solo byte di dati, 127 posizioni, (V. Il protocollo byte di dati), sarebbero state sicuramente poche per affrontare le variazioni di frequenza che impone un buon glissato, è stato deciso nel protocollo di utilizzare invece di un solo byte due byte di dati, per un totale di 14 bit equivalenti a 16383 posizioni. Ne consegue che il numero di posizione 0 equivarrà al massimo della rotazione verso sinistra (abbassamento di frequenza), il numero di posizione 8192 al punto centrale e il numero di posizione 16383 al massimo della rotazione verso destra (aumento di frequenza).

Queste posizioni vengono calcolate dall'insieme dei due byte di dati, MSB+LSB.
MSB Most Significant Bit, bit più significativo. LSB Least significant Bit, bit meno significativo.

L'importante secondo noi non è capire come funziona il calcolo, ma sapere che la posizione del PITCH BENDER è determinata da l'insieme di due byte anzichè uno.

A proposito della posizione del Pitch Bender, è bene ricordare che, mentre il numero della posizione del Pitch Bender sarà uguale per tutte le apparecchiature midi collegate (sullo stesso canale), la frequenza invece potrà cambiare in dipendenza del settaggio.

Esempio: tastiera 1 settata come glissato massimo di 12 semitoni (un'ottava), tastiera 2 settata come glissato massimo di 4 semitoni.
Se il numero numero di posizione del Pitch Bender sarà 0, la tastiera 1 suonerà un'ottava sotto, mentre la tastiera 2 solo di 4 semitoni.

Variamo la posizione di un controller.

Byte di stato   Byte di dati 1   Byte di dati 2
CONTROL CHANGE
Cambio del controller
176 (B0H)
--> CONTROLLER NUMBER
Numero del controller
64 (40H)
--> CONTROLLER POSITION
Numero di variazione
00 (00H)

 

Ad ogni controller (volume, pedali, rotelle, joystick, modulazione, ecc..), viene assegnato un numero di identificazione.

FUNZIONI DEL CONTROLLER NUMERO DEC NUMERO HEX
Modulation wheel 01 01
Breath Controller 02 02
Foot Controller 04 04
Portamento 05 05
Data Entry MSB 06 06
Volume 07 07
Bilanciamento 08 08
Pan L-R 10 0A
Expressione 11 0B
Controlli Generali 16-19 10-13
LSB (0-31) 32-63 20-3F
Pedale Sustain 64 40
Portamento 65 41
Sostenuto 66 42
Pedale Soft 67 43
Hold 2 69 45
Controlli Generali 80-83 50-53
Reverber Depth 91 5B
Tremolo Depth 92 5C
Chorus Depth 93 5D
Phaser Depth 95 5F
Data Incremento 96 60
Data Decremeto 97 61
LSB 98 62
MSB 99 63
LSB 100 64
MSB 101 65
Reset di tutti i contoller 121 79
Controllo Locale 122 7A
Tutte le note spente 123 7B
Modo Omni Off 124 7C
Modo Omni On 125 7D
Mono Mode On 126 7E
Poly Mode On 127 7F
     

 

Con il primo byte di dati si identifica il controller, con il secondo la variazione.
Meritano un'attenzione approfondita alcune funzioni tra cui le ultime sette, dette di modo, che riguardano il controllo generale di una apparecchiatura e non un singolo parametro: reset, controllo locale, tutte le note spente, modo omni off, modo omni on, mono mode, poly mode, per cui ci ritorneremo più avanti

 

Alziamo al massimo il VOLUME della voce del canale midi 4.

Byte di stato   Byte di dati 1   Byte di dati 2
CONTROL CHANGE
Cambio del controller
179 (B3H)
--> CONTROLLER NUMBER
Numero del controller
7 (07H)
--> CONTROLLER POSITION
Numero di variazione
127 (7FH)

 

Notiamo il numero del byte di stato 179 (esadecimale B3), dice alle apparecchiature collegate che sta per variare il controller del canale 4. Il secondo byte (byte di dati 1), quale controller, ed il terzo (byte di dati 2) in che posizione.

Portiamo a metà il VOLUME della voce del canale midi 4.

Byte di stato   Byte di dati 1   Byte di dati 2
CONTROL CHANGE
Cambio del controller
179 (B3H)
--> CONTROLLER NUMBER
Numero del controller
7 (07H)
--> CONTROLLER POSITION
Numero di variazione
64 (40H)

 

In questo messaggio è cambiato solo il byte di dati 2, riferito alla variazione.

Cambiamo la VOCE o PATCH del canale midi 1.

Byte di stato   Byte di dati 1
PROGRAM CHANGE
Cambio della voce
192 (C0H)
--> PRESET NUMBER
Numero del preset
1 (01H)

 

Il messaggio è molto semplice, bisogna comunque fare attenzione alle apparecchiature midi collegate, perchè allo stesso numero di preset o patch, a volte non corrisponde la stessa voce. Con l'avvento del GM General Midi e GS standard midi, di cui parleremo più avanti, si è risolto tale problema, uniformando le voci con il numero di preset, così che, ad un determinato numero di preset di qualsiasi apparecchiatura e di qualsiasi marca corrisponderà la stessa voce.

Riassumiamo le categorie dei messaggi

I messaggi Midi vengono divisi in due grandi categorie, i messaggi di canale (channel message) e i messaggi di sistema (system message).

Fino ad adesso ci siamo occupati dei messaggi di canale, cioè di messaggi che possono essere indirizzati indifferentemente su di uno dei sedici canali midi a disposizione.

I messaggi di canale (Channel Message)

  • Note on, note off
  • After touch
  • Pitch bender
  • Control change
  • Program change

 

MENU

 

 

 

Midifile - GM e GS

GENERAL MIDI (GM)

Il GENERAL MIDI (GM), nasce per uniformare la risposta della varie apparecchiature agli stessi dati midi, in altre parole, uno strumento che riceve un dato midi deve rispondere allo stesso modo di un altro anche di costruttore differente, noteremo comunque, usando apparecchiature midi differenti, che i suoni saranno simili ma non identici, a causa soprattutto della diversa tecnologia usata dal costruttore.

Vediamo innanzi tutto, in fig. 1 quali sono i 128 suoni utilizzabili ed in fig. 2 la mappatura di quelli percussivi nel GM.

Num.
Program Change
Strumento
(Suono)
- Num.
Program Change
Strumento
(Suono)
1 Acoustic Grand - 65 Soprano Sax
2 Bright Acoustic - 66 Alto Sax
3 Electric Grand - 67 Tenor Sax
4 Honky-Tonk - 68 Baritone Sax
5 Electric Piano 1 - 69 Oboe
6 Electric Piano 2 - 70 English Horn
7 Harpsichord - 71 Bassoon
8 Clav - 72 Clarinet
9 Celesta - 73 Piccolo
10 Glock - 74 Flute
11 Music Box - 75 Recorder
12 Vibe - 76 Pan Flute
13 Marimba - 77 Blown Bottle
14 Xylophone - 78 Skakuhachi
15 Tubular Bells - 79 Whistle
16 Santur - 80 Ocarina
17 Drawbar Organ - 81 Square
18 Percussive Organ - 82 Sawtooth
19 Rock Organ - 83 Calliope
20 Church Organ - 84 Chiff
21 Reed Organ - 85 Charang
22 Accordn - 86 Voice
23 Harmonica - 87 Fifths
24 Bandneon - 88 BassLead)
25 Acoustic Guitar(nylon) - 89 Fantasia
26 Acoustic Guitar(steel) - 90 WarmPad
27 Electric Guitar(jazz) - 91 Polysynth
28 Electric Guitar(clean) - 92 Spacevox
29 Electric Guitar(muted) - 93 Bowed
30 Overdriven Guitar - 94 MetalPad
31 Distortion Guitar - 95 HaloPad
32 Guitar Harmonics - 96 SweepPad
33 Acoustic Bass - 97 Rain
34 Electric Bass(finger) - 98 Soundtrack
35 Electric Bass(pick) - 99 Crystal
36 Fretless Bass - 100 Atmosphere
37 Slap Bass 1 - 101 Brightness
38 Slap Bass 2 - 102 Goblins
39 Synth Bass 1 - 103 EchoDrop
40 Synth Bass 2 - 104 StarThem
41 Violin - 105 Sitar
42 Viola - 106 Banjo
43 Cello - 107 Shamisen
44 Contrabass - 108 Koto
45 Tremolo Strings - 109 Kalimba
46 Pizzicato Strings - 110 Bagpipe
47 Orchestral Strings - 111 Kokyu
48 Timpani - 112 Shanai
49 String Ensemble 1 - 113 Tinkle Bell
50 String Ensemble 2 - 114 Agogo
51 SynthStrings 1 - 115 Steel Drums
52 SynthStrings 2 - 116 Woodblock
53 Choir Aahs - 117 Taiko Drum
54 Voice Oohs - 118 Melodic Tom
55 Synth Voice - 119 Synth Drum
56 Orchestra Hit - 120 Reverse Cymbal
57 Trumpet - 121 Guitar Fret Noise
58 Trombone - 122 Breath Noise
59 Tuba - 123 Seashore
60 Muted Trumpet - 124 Bird Tweet
61 French Horn - 125 Telephone Ring
62 Brass Section - 126 Helicopter
63 SynthBrass 1 - 127 Applause
64 SynthBrass 2 - 128 Gunshot

Fig. 1 - Gli strumenti del General Midi.

 

Num.
Key (tasto)
Suono - Num.
Key (tasto)
Suono
35 Acoustic Bass Drum - 59 Ride Cymbal 2
36 Bass Drum 1 - 60 Hi Bongo
37 Side Stick - 61 Low Bongo
38 Acoustic Snare - 62 Mute Hi Conga
39 Hand Clap - 63 Open Hi Conga
40 Electric Snare - 64 Low Conga
41 Low Floor Tom - 65 High Timbale
42 Closed Hi-Hat - 66 Low Timbale
43 High Floor Tom - 67 High Agogo
44 Pedal Hi-Hat - 68 Low Agogo
45 Low Tom - 69 Cabasa
46 Open Hi-Hat - 70 Maracas
47 Low-Mid Tom - 71 Short Whistle
48 Hi-Mid Tom - 72 Long Whistle
49 Crash Cymbal 1 - 73 Short Guiro
50 High Tom - 74 Long Guiro
51 Ride Cymbal 1 - 75 Claves
52 Chinese Cymbal - 76 Hi Wood Block
53 Ride Bell - 77 Low Wood Block
54 Tambourine - 78 Mute Cuica
55 Splash Cymbal - 79 Open Cuica
56 Cowbell - 80 Mute Triangle
57 Crash Cymbal 2 - 81 Open Triangle
58 Vibraslap - - -

Fig. 2 - Mappatura dei suoni percussivi.

 

Rapporto tra GENERAL MIDI (GM) e GENERAL STARDARD (GS).

Il formato GS nato da Roland implementa il GM, anzi ne amplia le caratteristiche, vale a dire che i brani composti in GM sono eseguibili in tutto da apparecchiature Roland GS, non è del tutto vero il contrario, dato che, le song in GS potrebbero contenere messaggi non riconosciuti dal GM, come ad esempio i Banchi di altri suoni ed i Drum Kit

Due stringhe di Sistema Exclusivo all'inizio della song del Midifile permettono il passaggio dal modo normale a quello GM e viceversa., sempre che, l'apparecchiatura lo consenta.

Modo GM On: F0 7E 7F 09 01 F7

Questa prima stringa oltre a far entrare l'apparecchiatura in modo GM, setta i valori in default di:
- Program Change
- Pitch Bend Range e Sensivity
- Channel Pressure
- Modulation
- Tune Fine e Coarse
- RPN
- Volume
- Pan
- Expression
- Hold1

Modo GM Off: F0 7E 7F 09 02 F7

Quando l'apparecchiatura non implementa il passaggio dal GM al modo normale è sempre utile inserire comunque la prima stringa (Modo GM On), in quanto essa resetta i valori dei controlli che potrebbero essere stati modificati da songs precedenti.

Registered Parameter Number (RPN) - Non Registered Parameter Number (NRPN).

Nella prima stesura del GM furono anche stabiliti dei parametri controllabili via midi

Registered Parameter Number (RPN) (riconosciuti da tutte le apparecchature).
RPN 0 Pitch Bend Sensivity, che per default ha valore di 2 semitoni e che può essere modificato da 0 a 12 semitoni.
RPN 1 Fine Tune, cioè l'accordatura generale che può essere modificata di +/- 50 centesimi di tono.
RPN 2 Coarse Tune, riguarda sempre l'accordatura ma riferita a semitoni, che può essere modificata da +/- 7 semitoni.

Non Registered Parameter Number (NRPN) (riconosciuti solo da alcune apparecchiature che ne implementano i modi e le funzioni).
Ad esempio è possibile oltre a modificare il timbro di base con Attacco Decadimento Rilascio, modidificare l'intonazione ed il reverbero del singolo suono percussivo dei Drum Kit.

MENU

 

 

Tutti i contenuti di questo sito sono Copyright © 2003 - www.mobrici.it - Tutti i diritti riservati / All rights reserved.
E' vietata la riproduzione anche parziale senza il consenso dell'autore.

Web design Gianfranco Mobrici