[successivo] [precedente] [inizio] [fine] [indice generale] [violazione licenza] [translators] [docinfo] [indice analitico] [volume] [parte]
MIDI sta per Music instrument digital interface, ovvero un'interfaccia digitale per gli strumenti musicali. Semplificando molto le cose, l'idea alla base di MIDI è quella di avere una tastiera musicale collegata a un generatore di suoni. Il generatore di suoni può essere un generatore di forme d'onda, con più o meno armoniche, oppure un riproduttore di campioni, ovvero suoni più o meno reali, memorizzati (campionati) in precedenza. Nel secondo caso, i campioni di suoni devono poter essere riprodotti a tonalità differenti.
Il generatore di suoni di un sistema MIDI può essere comandato direttamente da una tastiera (o da un altro strumento elettronico adeguato), oppure da un programma che legge un file: di solito un file in formato «MIDI». Un file del genere contiene quindi una sorta di spartito elettronico, in cui sono indicati gli strumenti e le note che questi devono suonare: è competenza del generatore di suoni il riprodurre gli strumenti nel modo migliore possibile.
Un file MIDI contiene tutte le informazioni necessarie a ripetere un'esecuzione elettronica, attraverso un generatore di suoni adeguato. Le informazioni che contiene un file MIDI sono simili, concettualmente, a quelle di uno spartito musicale, con la differenza sostanziale che la definizione della durata delle note può essere più libera.
Un file MIDI (MIDI standard file format 1) può contenere un massimo di 16 canali, ognuno dei quali si può dividere in tracce. Tuttavia, le tracce di uno stesso canale possono contenere informazioni riferite a un solo strumento (anche se suonato simultaneamente), pertanto si possono gestire un massimo di 16 strumenti differenti in modo simultaneo.
La figura 411.1, ottenuta da un programma grafico per l'analisi e l'esecuzione di file MIDI, dovrebbe dare l'idea di come questi file sono organizzati. Si può notare lo schema quadrettato che divide le ottave in dodici semitoni (come suggerisce la schematizzazione di una tastiera sul bordo sinistro) e in battute (si vedono le prime tre battute), all'interno del quale, l'andamento dei canali viene evidenziato con colori differenti.
|
Figura 411.1. Visualizzazione grafica di un'esecuzione MIDI attraverso il programma Xgmc.
|
A proposito di file MIDI, si utilizzano dei termini inglesi che a prima vista possono risultare abbastanza misteriosi. La tabella seguente cerca di spiegare a cosa si riferiscono alcuni di questi termini.
Un file MIDI può essere ottenuto da un'esecuzione manuale, attraverso una tastiera MIDI, collegata a un'interfaccia adatta assieme al programma relativo, oppure attraverso la scrittura di uno spartito, o di qualcosa di simile, che viene poi convertito in un file MIDI.
Nel capitolo 410 è stato mostrato il funzionamento di LilyPond, che è un sistema di composizione tipografico per la produzione di spartiti, in grado di generare anche file MIDI; nella prossima sezione viene mostrato l'uso di Midge, un programma in grado di generare file MIDI a partire da un sorgente scritto con un proprio linguaggio, simile concettualmente a quello di LilyPond, che però non può produrre uno spartito tradizionale.
L'esecuzione di un file MIDI all'interno di un elaboratore richiede la disponibilità di un programma in grado di interpretarlo correttamente, per comandare un generatore di suoni. Questo generatore può essere un'apparecchiatura esterna specializzata, collegata alla scheda audio attraverso una porta speciale; può essere un sintetizzatore incorporato nella scheda audio; infine può essere un programma che genera un file audio pronto da mandare alla scheda. All'interno di questo capitolo viene presa in considerazione solo l'ultima di queste possibilità, con il programma Timidity++, che attraverso una serie di file di campioni (patch), è in grado di creare al volo un file in formato WAV-RIFF da mandare immediatamente alla sistema di riproduzione audio.
Midge (1) è un programma scritto in Perl, che si avvale del modulo MIDI-Perl, (2) in grado di generare file MIDI a partire da file sorgenti scritti secondo un proprio linguaggio, ma capace anche di trasformare un file MIDI in un sorgente facile da modificare.
Probabilmente, la funzionalità più importante di Midge sta proprio nella sua capacità di trasformare un file MIDI in qualcosa che può essere gestito come file di testo puro e semplice; diversamente, la scrittura di un sorgente Midge potrebbe essere anche troppo complessa.
$ midi2mg -o bwv777.mg bwv777.midi[Invio]
L'esempio mostra l'uso dello script midi2mg per ottenere un file sorgente a partire da un file MIDI. In questo caso si genera il sorgente bwv777.mg, a partire dal file MIDI bwv777.midi. Il contenuto di questo sorgente ottenuto potrebbe essere simile all'estratto seguente:
|
In questo modo, si intuisce la sintassi generale del formato usato da Midge: un'intestazione definita con la sezione @head{}, seguita da un corpo, definito dalla sezione @body{}, che contiene la descrizione dei canali, contenuti nei blocchi @channel{}.
È bene precisare che ogni blocco @channel{} descrive in realtà una traccia, abbinata però al canale indicato per numero. In pratica, dal momento che lo strumento è lo stesso nei due canali, si potrebbero usare due tracce dello stesso canale, in questo modo:
|
La notazione simbolica delle note richiama il nome usato nella lingua inglese, tuttavia si rimanda alla documentazione originale per l'interpretazione corretta di questa parte del formato usato da Midge (pagina di manuale midge(1)).
|
Se si intende usare Midge per ritoccare dei file MIDI già disponibili, sono molto importanti alcuni parametri che vengono fissati con direttive simili all'assegnamento di variabili:
|
|
Per esempio, il parametro $tempo serve a definire la velocità di esecuzione, in quantità di battute per minuto. Nel caso dell'esempio mostrato, si può osservare che questa velocità (assieme anche al tempo vero e proprio, cioè la frazione che determina la lunghezza di ogni battuta) è stata definita all'interno delle direttive @channel, mentre sarebbe più appropriata all'esterno, nella direttiva @head, ammesso che non debba cambiare nel corso dell'esecuzione delle tracce. L'esempio seguente mostra qualche piccolo ritocco a quanto già visto sopra:
|
La tabella 411.2 riassume alcuni parametri importanti di Midge, che possono servire per ritoccare un file MIDI già disponibile.
Tabella 411.2. Alcuni parametri nel sorgente di Midge.
| Parametro | Descrizione |
|
| Si utilizza nell'intestazione e attribuisce un titolo al file MIDI. |
|
| Si utilizza nell'intestazione oppure nei blocchi delle tracce per indicare la quantità di battute per minuto. |
|
| Si utilizza nell'intestazione oppure nei blocchi delle tracce per indicare la frazione che esprime la lunghezza di una battuta (per esempio 3/4). |
|
| Si utilizza nei blocchi delle tracce per indicare il tipo di suono da utilizzare. Se si usa un nome occorre utilizzare quanto previsto espressamente da Midge (tabella 411.3). |
|
| Si utilizza nei blocchi delle tracce per indicare il volume della traccia. Il valore assegnato va da 1 a 127 (lo zero non viene accettato). |
|
| Si utilizza nei blocchi delle tracce per indicare la profondità del riverbero. Il valore assegnato va da 0 a 127. |
|
| Si utilizza nei blocchi delle tracce per indicare un effetto simile al riverbero. Il valore assegnato va da 0 a 127. |
|
| Si utilizza nei blocchi delle tracce per indicare il bilanciamento stereofonico. Il valore assegnato va da 0 (completamente a sinistra) a 127 (completamente a destra). |
Tabella 411.3. Classificazione dei suoni secondo Midge, per l'utilizzo nel parametro $patch.
La compilazione di un sorgente Midge si ottiene semplicemente con lo script midge:
$ midge bwv777.mg[Invio]
In questo caso si compila il sorgente bwv777.mg, ottenendo il file MIDI bwv777.mid. Volendo specificare espressamente il nome del file MIDI da generare, si potrebbe usare l'opzione -o:
$ midge -o JSBach-BWV777.midi bwv777.mg[Invio]
Come si può intuire, qui si intende ottenere il file MIDI JSBach-BWV777.midi.
Timidity++ (3) è un programma in grado di convertire il formato MIDI (e anche altri) in WAV-RIFF, utilizzando dei campioni (patch) memorizzati su file. In questo modo, attraverso Timidity++ è possibile riprodurre un file MIDI senza bisogno di un generatore di suoni esterno e senza bisogno di schede audio particolari.
Prima di mostrare il suo funzionamento è importante affrontare il problema dei campioni necessari alla conversione. I file in questione sono facili da reperire, ma può capitare che la propria distribuzione GNU non predisponga un pacchetto adeguato, oppure che questo non contenga dei campioni gradevoli. Infatti, dipende dai campioni la qualità della riproduzione di un file MIDI. Tanto per fare un esempio, se un'esecuzione prevede un clavicembalo, ma al posto di questo si sente un piano, si può percepire la melodia, ma non il suono che è stato previsto nel file MIDI; inoltre, un campione di uno strumento configurato male, potrebbe generare poi un suono «stonato», oppure a un volume sonoro non appropriato.
Generalmente, se disponibile, conviene installare la raccolta nota come Eawpatches, (4) dal momento che risulta contenere i campioni migliori e configurati anche in modo accurato. Se si trova il pacchetto originale, lo si può installare dove si vuole nel file system; per esempio così:
# cd /opt[Invio]
# tar xzvf ~/eawpats12_full.tar.gz[Invio]
In questo modo, si ottiene l'inserimento dei file dei campioni nella directory /opt/eawpats/. Successivamente occorre prendere il file di configurazione per Timidity++ e collocarlo nella posizione prevista da Timidity++ stesso. Supponendo che si tratti della directory /etc/, si deve agire come mostrato di seguito:
# cp /opt/eawpats/linuxconfig/timidity.cfg /etc/timidity.cfg[Invio]
Quindi è necessario modificare questo file (/etc/timidity.cfg) in modo da raggiungere i campioni appena installati. Dovrebbe essere così:
|
Una volta installati questi file, si può passare a Timidity++, attraverso l'eseguibile timidity:
|
|
Se non vengono indicate delle opzioni, i file vengono trasformati al volo e inviati al sistema di riproduzione audio.
Esistono molti modi per indicare i file da riprodurre. In particolare merita attenzione la possibilità di indicare lo standard input attraverso un trattino orizzontale (-) e anche la possibilità di indicare un URI di tipo HTTP o FTP. Inoltre, se il file indicato corrisponde a un archivio compresso di un formato comune, nella maggior parte dei casi è in grado di eseguire i file contenuti al suo interno.
Tabella 411.4. Opzioni essenziali della riga di comando di timidity.
Come si vede, in condizioni normali si usa l'eseguibile timidity senza opzioni, o al massimo con -in (oppure selezionando un'altra interfaccia preferita).
Per fare in modo che il proprio navigatore utilizzi Timidity++ automaticamente quando si selezione il riferimento a un file MIDI, bisogna intervenire nella sua configurazione, facendo riferimento al tipo MIME audio/x-midi.
|
Figura 411.2. Impostazione di Mozilla per la riproduzione automatica dei riferimenti a file MIDI attraverso Timidity++.
|
Attraverso Timidity++ e Cdrdao è molto semplice realizzare un CD audio a partire da file MIDI: con Timidity++ si convertono i file MIDI in formato WAV-RIFF; con Cdrdao si incide il CD.
Il comando con cui si converte un file MIDI in formato WAV-RIFF, adatto per l'incisione di un CD è il seguente:
|
|
Una volta realizzati i file WAV-RIFF, occorre preparare il file TOC per Cdrdao; questo inizia con la riga seguente:
|
|
Successivamente, per ogni file WAV-RIFF devono essere inserite le righe seguenti:
|
|
Come si può intendere, il numero della traccia è un numero intero che inizia da uno e deve essere incrementato per le tracce successive. Dopo la preparazione del file TOC si può passare all'incisione del CD:
|
|
Lo script successivo esegue tutte le operazioni in modo automatico, fornendo semplicemente i nomi dei file MIDI come argomenti nella riga di comando:
|
Supponendo che lo script si chiami midi2cd e supponendo che abbia i permessi di esecuzione necessari, basta un comando come quello seguente per ottenere un CD dai file con estensione .mid collocati nella directory corrente:
# midi2cd *.mid[Invio]
The Jazz++ guide to MIDI sequencing, 1998
<http://www.jazzware.com/cgi-bin/Zope.cgi/jazzware/midiGuide>
Eric A. Welsh, Eawpatches for Timidity
http://www.stardate.bc.ca/eawpatches/html/get_patches.htm (non più disponibile)
Timidity++
Appunti di informatica libera 2004.10.10 --- Copyright © 2000-2004 Daniele Giacomini -- <daniele (ad) swlibero·org>, <daniele·giacomini (ad) poste·it>
2) MIDI-Perl GNU GPL o Artistic
3) Timidity++ GNU GPL
4) Eawpatches dominio pubblico, salvo alcuni campioni
Dovrebbe essere possibile fare riferimento a questa pagina anche con il nome midi.html
[successivo] [precedente] [inizio] [fine] [indice generale] [violazione licenza] [translators] [docinfo] [indice analitico]