[successivo] [precedente] [inizio] [fine] [indice generale] [indice ridotto] [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 modelli campionati, ovvero suoni più o meno reali, memorizzati (campionati) in precedenza. Nel secondo caso, i modelli 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 543.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.
|
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 542 è 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 modelli di suoni (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:
$parametro valore_attribuito |
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 543.7 riassume alcuni parametri importanti di Midge, che possono servire per ritoccare un file MIDI già disponibile.
|
|
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 modelli di suoni (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 modelli di suoni 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 modelli di suoni gradevoli. Infatti, dipende dai modelli 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, il modello 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 modelli sonori 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 modelli sonori 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 modelli sonori appena installati. Dovrebbe essere così:
|
Una volta installati questi file, si può passare a Timidity++, attraverso l'eseguibile timidity:
timidity [opzioni] file... |
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.
|
Come si vede, in condizioni normali si usa l'eseguibile timidity senza opzioni, o al massimo con -in (oppure selezionando un'altra interfaccia preferita).
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:
timidity -Ow -s 44100 file_midi -o file_wav |
Una volta realizzati i file WAV-RIFF, occorre preparare il file TOC per Cdrdao; questo inizia con la riga seguente:
CD_DA |
Successivamente, per ogni file WAV-RIFF devono essere inserite le righe seguenti:
// Track n_traccia TRACK AUDIO NO PRE_EMPHASIS TWO_CHANNEL_AUDIO AUDIOFILE "file_wav" 0 |
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:
cdrdao write --overburn -v 2 --buffers 128 --speed 4 \ |
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]
Eventualmente, con Cdrecord si può saltare la creazione del file TOC. Lo script potrebbe essere modificato come nell'estratto seguente, dove però sono stati tolti anche i commenti:
|
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 2006.07.01 --- Copyright © 2000-2006 Daniele Giacomini -- <daniele (ad) swlibero·org>
2) MIDI-Perl GNU GPL o Artistic
3) Timidity++ GNU GPL
4) Eawpatches dominio pubblico, salvo alcuni file
Dovrebbe essere possibile fare riferimento a questa pagina anche con il nome midi.htm
[successivo] [precedente] [inizio] [fine] [indice generale] [indice ridotto] [translators] [docinfo] [indice analitico]