Suono e Informatica

 

Il protocollo MIDI

 

 

- Sintetizzatori digitali

Sintetizzatore analogico

Produce suoni artificiali usando dispositivi elettronici dedicati (ad esempio oscillatori, filtri, generatori di inviluppo, etc.) interconnettibili

Poco versatile e poco scalabile; controllo approssimato dei parametri

Rapidità di risposta

Costi elevati

Sintetizzatore digitale

Produce suoni artificiali usando un microprocessore dedicato che esegue moduli software (oscillatori virtuali) con possibilità di interconnessione (algoritmi)

Molto versatile e scalabile; controllo dei parametri molto preciso

Rapidità di risposta dipendente dal microprocessore e dall'algoritmo

Costi contenuti

>>

 

 

 

- Esigenze di comunicazione tra strumenti musicali elettronici

 

I costi contenuti dei sintetizzatori digitali, e il conseguente uso di microprocessori al loro interno, hanno consentito l'uso simultaneo di più moduli sonori;

nasce quindi l'esigenza di far comunicare tra loro i vari moduli sonori.

Normalmente un modulo Master (una tastiera chiamata, appunto, master keyboard) controlla più moduli Slave (di solito degli expander).

Inoltre, al momento dell'uscita dei primi sintetizzatori digitali si stavano affacciando sul mercato i Personal Computer:

Un PC può essere usato come Master e, soprattutto, come sequencer

Lo standard MIDI nasce in questa cornice

>>

 

 

 

 

- Lo standard MIDI (Musical Instrument Digital Interface)

 

Interfaccia digitale per strumenti musicali:

 

Standard hardware per la comunicazione

 

Protocollo di comunicazione

 

Insieme di comandi

 

 

 

Hardware per la comunicazione

 

Schema elettrico di un'interfaccia MIDI secondo lo standard internazionale; la UART (Universal Asynchronous Receiver Transmitter), che si interfaccia con il BUS del sistema, gestisce la trasmissione e ricezione dei byte relativi ai codici MIDI. L'optoisolatore serve a disaccoppiare elettricamente l'ingresso di linea dalla UART in modo da garantire una maggiore immunità ai disturbi.

>>

 

Spine e prese standard per il collegamento tra moduli:

DIN pentapolari

Sono indicati i pin usati

Lunghezza massima del cavo: 15 mt.

Schema funzionale di una catena MIDI con l'uso della presa Thru

>>

 

 

 

Protocollo di comunicazione di tipo seriale senza connessione a 8 bit con un bit di start e uno di stop;

Velocità di trasmissione: 31250 bit/sec.

Tempo impiegato a trasmettere un byte: 320 microsecondi

 

Trasmissione seriale di un byte più lo start e lo stop

 

>>

 

 

Significato dei comandi MIDI

Il musicista tiene premuto un tasto e una nota viene emessa.

Nel gergo MIDI questo evento viene chiamato Note On

   

Il musicista rilascia il tasto e la nota cessa di suonare.

Questo evento viene chiamato Note Off

>>

 
L'evento di note on (o note off) è relativo a una delle note che è possibile suonare sullo strumento. Ogni nota della scala temperata occidentale è associata, nello standard MIDI, a un numero a 7 bit (da 0 a 127) secondo lo schema sottostante

>>

 

 

Oltre all'altezza delle note possiamo controllare, tramite comandi e parametri MIDI:

La dinamica (ppp, pp, p, mp, mf, f, ff, fff) con il parametro detto Key Velocity (relativo alla nota, cioè al tasto)

L'intonazione con il comando Pitch Bend (la "rotella" che nei sintetizzatori permette di "stonare" la nota suonata)

Il timbro scegliendolo fra vari preset (detti anche programmi)

Diversi effetti e fonti esterne di input, etc.

Ogni comando è composto da un byte di stato seguito da uno o più byte di dati (parametri)

Ad esempio, la pressione del tasto relativo alla nota DO3 (il Do centrale) su un sintetizzatore produce la sequenza di byte: 144 60 64 (90 3C 40 in Hex); il primo è il byte di stato relativo al comando Note On, il secondo è il codice della nota, il terzo è la Key Velocity. Una tale sequenza di byte viene chiamata messaggio.

>>

 

 

- Messaggi ordinari

Questa categoria di messaggi è relativa ai comandi usati durante l'esecuzione musicale; tali comandi sono

Note On e Note Off che già conosciamo

After Touch (detto anche Key Pressure) che indica il livello di pressione con cui è stato spinto un determinato tasto

Control Change che permette di selezionare un controller (ad esempio la modulation wheel o il pedale di volume o qualsiasi altro dispositivo di controllo della performance)

Program Change che permette di cambiare preset relativo al timbro (ad esempio se vogliamo eseguire un brano con il timbro del pianoforte o con quello del vibrafono)

Channel Pressure provoca un effetto uguale a quello prodotto da after touch tranne per il fatto che si applica a tutti i tasti premuti.

Pitch Bend permette i glissati e le "stonature" tramite un controllo continuo dell'altezza.

>>

 

 

La tabella sottostante mostra il formato dei messaggi relativi ai comandi appena descritti; una loro caratteristica importante è che si riferiscono a un canale.

Ogni canale individua una sorgente indipendente di suoni

Ogni sorgente sonora può essere un distinto sintetizzatore o una delle "voci" di un sintetizzatore "multi-timbrico".

Ciò che viene inviato su un canale viene ignorato dagli altri canali

Un sintetizzatore può essere impostato in modalità Omni Mode: in questo caso accetterà messaggi relativi a qualsiasi canale

Il numero di canali che è possibile usare è 16 (da 0 a 15)

 

 

>>

 

144 60 64 Messaggio MIDI conseguente alla pressione del tasto DO3 su un sintetizzatore operante sul canale 0 (il primo). Il byte di stato è 144 + 0
   
145 60 64 La stessa nota suonata sul canale 1 produce un messaggio il cui byte di stato è dato da 144 + 1

>>

 

hex dec bin     messaggio dati
80 128 1000nnnn 0kkkkkkkk 0vvvvvvvv Note Off k = n.nota
            v = key velocity (se v=0, Note Off)
90 144 1001nnnn 0kkkkkkk 0vvvvvvv Note On k = n.nota
            v = key velocity
A0 160 1010nnnn 0kkkkkkk 0vvvvvvv After Touch k = n.nota
            v = valore di pressione
B0 176 1011nnnn 0ccccccc 0vvvvvvv Control Change c = n. controllo
            v = nuovo valore
C0 192 1100nnnn 0ppppppp   Program Change p = n. programma
D0 208 1101nnnn 0vvvvvvv   Channel Pressure v = pressione
E0 224 1110nnnn 0vvvvvvv 0zzzzzzz Pitch Bend v = parte piú significativa
            z=parte meno significativa

>>

 

 

 

 

- Messaggi di sistema

 

Questa categoria di messaggi riguarda vari aspetti, come la sincronizzazione o il posizionamento, e alcuni specifici di ciascun tipo di strumento, mediante i quali è possibile intervenire in modo molto piú approfondito sul funzionamento dello strumento stesso.

Un messaggio di sistema è relativo a un dato sistema di produzione del suono

Le tabelle sottostanti elencano tali comandi insieme ai loro formati

Il messaggio System Exclusive ha particolare importanza in quanto permette di intervenire sui parametri di generazione del suono interni a un certo tipo di sintetizzatore

>>

 

 

 

 

SYSTEM COMMON MESSAGES

hex bin   messaggio dati
F1 11110001   non definito  
F2 11110010 0hhhhhhh Song Position Pointer h=posizione
F3 11110011 0sssssss Song Select s=brano
F4 11110100   non definito  
F5 11110101   non definito  
F6 11110110   Richiesta di accordatura  
F7 11110111   End of System Exclusive  

>>

 

 

 

SYSTEM REAL TIME MESSAGES

dati   messaggio
hex bin  
F8 11111000 Timing Clock: il sistema viene sincronizzato su questo segnale, che viene inviato 24 volte per ogni metronomo 
F9 11111001 Non definito
FA 11111010 Start: fa partire l'esecuzione dall'inizio del brano
FB 11111011 Continue
FC 11111100 Stop: arresta l'esecuzione 
FD 11111101 Non·definito
FE 11111110 Active Sensing: se viene ricevuto questo messaggio, il ricevitore si aspetta di continuare a riceverlo almeno ogni 300 ms, altrimenti il ricevitore suppone che la connessione sia interrotta e interrompe tutte le note attive. E' una rudimentale forma di handshaking
FF 11111111 System Reset: tutto il sistema viene inizializzato alle stesse condizioni in cui si trovava all'accensione >>

 

 

 

SYSTEM EXCLUSIVE MESSAGES

dati       significato
hex dec bin    
F0 240 11110000 0iiiiiii Identificazione: è un codice assegnato a ogni fabbricante (p.es: Yamaha 67) 
    (0*******)   Dati specifici, stabiliti dal modo di funzionamento del particolare strumento; qualsiasi numero di dati
F7 247 11110111   EOX: fine del sistema esclusivo

>>

 

 

 

 

 

- Sequencer digitali

Uso dell'interfacciamento MIDI per controllare un sistema di produzione del suono tramite un programma eseguito su un computer.

I programmi di questo tipo sono chiamati Sequencer

   

Ormai è possibile pilotare un dispositivo MIDI di produzione del suono usando un programma di notazione musicale

Molto spesso un sintetizzatore MIDI multi-timbrico fa parte della dotazione hardware del computer (è un elemento della scheda sonora)

>>

 

 

 

 

- Standard MIDI File

La sequenza di eventi musicali codificata tramite messaggi MIDI può essere memorizzata in un file usando un formato standard

Nei PC i file MIDI standard hanno estensione .MID

 

Formato dei dati: Big Endian

 

Value Variable-Length
Hex Bin Hex Bin
00 00000000 00 00000000
C8 11001000 8148 10000001 01001000
100000 00010000 00000000 00000000 C08000 11000000 10000000 00000000

>>

 

 

 

 

 

 

Struttura dello header

 

Offset Length Type Description Value
0x00 4 char[4] chunk ID "MThd" (0x4D546864)
0x04 4 dword chunk size 6 (0x00000006)
0x08 2 word format type 0 - 2
0x10 2 word number of tracks 1 - 65,535
0x12 2 word time division ticks per beat or frames per second

Time division: se il bit più significativo è 0 allora i restanti 15 bit avranno il significato di tick per tempo (beat); se invece è 1 allora la divisione sarà in frame SMPTE al secondo.

 

>>

 

 

 

 

 

Struttura della traccia

 

Offset Length Type Description Value
0x00 4 char[4] chunk ID "MTrk" (0x4D54726B)
0x04 4 dword chunk size number of event bytes
0x08 track event data

Da 0x08 inizia la lista di eventi che costituisce la sequenza (per quella traccia)

 

>>

 

 

 

 

Meta-eventi

Sono eventi che non generano messaggi MIDI eseguibili ma servono per impostare parametri ad alto livello relativi alla sequenza (tempo, tonalità, etc.) o descrizioni (testo generico, Copyright Notice, nome dello strumento, etc.)

Formato:

Meta Event Type Length Data
255 (0xFF) 0-255 variable-length type specific

 

Text Event

Meta Event Type Length Text
255 (0xFF) 1 (0x01) string length ASCII text

Copyright Notice

Meta Event Type Length Text
255 (0xFF) 2 (0x02) string length ASCII text

Sequence/Track Name

Meta Event Type Length Text
255 (0xFF) 3 (0x03) string length ASCII text

Instrument Name

Meta Event Type Length Text
255 (0xFF) 4 (0x04) string length ASCII text

Lyrics

Meta Event Type Length Text
255 (0xFF) 5 (0x05) string length ASCII text

End Of Track

Meta Event Type Length
255 (0xFF) 47 (0x2F) 0

Set Tempo

Meta Event Type Length Microseconds/Quarter-Note
255 (0xFF) 81 (0x51) 3 0-8355711

Key Signature

Meta Event Type Length Key Scale
255 (0xFF) 89 (0x59) 2 -7-7 0-1

Time Signature

Meta Event Type Length Numer Denom Metro 32nds
255 (0xFF) 88 (0x58) 4 0-255 0-255 0-255 1-255

>>

 

 

 

 

 

 

Eventi

Formato di un generico evento MIDI

Delta Time Event Type Value MIDI Channel Parameter 1 Parameter 2
variable-length 4 bits 4 bits 1 byte 1 byte

Delta Time è l'intervallo di tempo che separa l'evento dal precedente (anche se non esiste).

Il formato dei successivi byte è quello consueto dei messaggi MIDI così come sono usati dai sintetizzatori e con lo stesso significato. Ad esempio, se, nella sequenza, deve essere suonato un DO3 troveremo, nel file MIDI dopo il delta time, i tre byte 90h 3Ch 40h.

 


Home