Tutto il contenuto di questa pagina è Copyright © di www.dimanet.com/midi |
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.
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.
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. 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.
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.
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.
Fig. 5 - Memorizzazione dei Meta-eventi
I tre formati degli SMF Formato 0 Formato 1 Formato 2 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. |
Fig. 1 - Schema di pedinatura del connettore 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. Trasmissione Midi nei connettori
Classici collegamenti 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. Le soluzioni per potere utilizzare tale collegamento, a parte staccare un cavo, sono:
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).
Un'alternativa al collegamento attraverso la presa Midi Thru, è il Ring, figura 6, sfortunatamente non tutte le tastiere lo consentono.
|
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.
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
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.
|
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à.
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 masterkeyboard Il computer La workstation L'expader o modulo sonoro Le interfaccie
La polifonia
Ne parleremo in modo più approfondito nel trattato che riguarda i midifiles.
Lo split della tastiera
Midi implementation chart
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 Mode Note Number Velocity After Touch Pitch Bender Control Change Program Change System Exclusive System Common System Real Time Aux Messagges Ripetiamo che la lettura attenta della Midi Implementation Chart (Tavola di implementazione midi) èmolto importante, specialmente quando si vuole acquistare una nuova apparecchiatura midi.
|
Con i messaggi di modo si forzano i modi in cui
i messaggi midi vengono ricevuti e trasmessi.
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. MODO 2: OMNI ON, MONO - Ricezione monofonica su
tutti i 16 canali midi. MODO 3: OMNI OFF, POLY - Ricezione polifonica,
ma solo su canale assegnato MODO 4: OMNI OFF, MONO - Ricezione monofonica,
ma solo su canale assegnato 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 Per spiegare bene la funzione del LOCAL CONTROL,
è indispensabile capire come è strutturata una tastiera o synth. Riassumendo:
|
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).
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. 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.
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. Messaggi di sistema esclusivo.
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. 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.
|
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). 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
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.
La sintassi Il primo esempio di messaggio midi, suoniamo una nota
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à. 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
Ammettiamo che dopo aver premuto un tasto (note on), invece di rilasciarlo (note off) esercitassimo una pressione maggiore, seguirebbe il messaggio
Nell'esempio è stato indicato un solo byte di dati, ma ce ne potrebbero essere molti altri per definire le variazioni della pressione esercitata.
|
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.
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. 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. Variamo la posizione di un controller.
Ad ogni controller (volume, pedali, rotelle, joystick, modulazione, ecc..), viene assegnato un numero di identificazione.
Con il primo byte di dati si identifica il controller,
con il secondo la variazione.
Alziamo al massimo il VOLUME della voce del canale midi 4.
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.
In questo messaggio è cambiato solo il byte di dati 2, riferito alla variazione. Cambiamo la VOCE o PATCH del canale midi 1.
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)
|
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.
Fig. 1 - Gli strumenti del General Midi.
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: 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). Non Registered Parameter Number (NRPN)
(riconosciuti solo da alcune apparecchiature che ne implementano i modi e
le funzioni).
|
Tutti
i contenuti di questo sito sono Copyright © 2003 - www.mobrici.it
- Tutti i diritti riservati / All rights reserved. Web design Gianfranco Mobrici |