[successivo] [precedente] [inizio] [fine] [indice generale] [indice ridotto] [indice analitico] [volume] [parte]


Capitolo 656.   MIDI

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.

656.1   File MIDI

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.

Una semibiscroma, che dovrebbe essere la nota più breve, ha una durata di un sessantaquattresimo, mentre in un file MIDI si possono annotare anche intervalli più piccoli, oltre al fatto che le durate delle note possono non essere così esatte come si scrive in uno spartito classico.

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 656.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 656.1. Visualizzazione grafica di un'esecuzione MIDI attraverso il programma Xgmc.

midi-xgmc-esempio-generale

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.

Termine Traduzione Descrizione
resolution risoluzione La frequenza della base dei tempi MIDI abbinata a una durata di un quarto (semiminima). In pratica, stabilisce la durata minima di una nota che può essere rappresentata in frazioni di 1/n di semiminima rispetto alla battuta. Il valore che si utilizza normalmente è 96, che consente di rappresentare note di una lunghezza pari a un sesto di semibiscroma.
time signature tempo Il tempo, espresso come frazione.
tempo La velocità di esecuzione, intesa come quantità di battute per minuto.
pitch tono L'altezza della nota.
bend Consente di alterare il tono di una nota. Il valore che può avere va da 0 a 127, dove lo zero rappresenta il tono più basso, mentre 127 il tono più alto, così 64 rappresenta il tono normale.
pan bilanciamento Definisce il bilanciamento stereofonico di una o di più note. Si tratta di un valore da 0 a 127, dove lo zero rappresenta la sinistra e 127 la destra, avendo così il centro a 64.
patch Lo strumento o il tipo di suono abbinato a una serie di note. Si tratta normalmente di un numero, che va da 1 a 128.
channel canale Il canale di registrazione che può contenere un solo strumento alla volta, anche se su più tracce simultanee. I valori vanno da 1 a 16.
reverb riverbero La profondità del riverbero. Si tratta di un valore che si abbina alla traccia, attribuendo un numero intero da 0 a 127.
volume volume Definisce il volume di una traccia, con valori da 0 a 127.

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 655 è 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.

656.2   Midge

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:

# Converted from bwv777.midi
# by /usr/bin/midi2mg on Sun Jan  5 20:10:21 2003

@head {
        $title "Track 0"
}
@body {
        @channel 1 "harpsichord" {
                $attack 127
                $decay 64
                $tempo 40
                $patch 7
                $time_sig 3/9
                $key e
                /l16/r /l8/e6 d+ d c+ b5 a g+ f+ /l32/g+ a /l16/g+ 
                /l32/b a /l16/b /l32/g+ f+ /l16/g+ /l32/e d+ 
                ...
                f+ /l16/g+ /l32/b a /l16/b /l32/g+ f+ /l16/g+ 
                /l32/b a /l16/b /l32/e6 d+ /l16/e b5 g+ e 
        }
        @channel 2 "harpsichord" {
                $attack 127
                $decay 64
                $tempo 40
                $patch 7
                $time_sig 3/9
                $key e
                /l8/e4 f+ g+ a b c+5 d+ /l16/e d+ c+ b4 /l8/e5 
                e4 /l3:16/r /l8/e d+ d c+ b3 a g+ f+ /l32/g+ 
                ...
                /l32/d+ c+ /l16/d+ /l32/g+ f+ /l8/g+ a b e /l16/r 
                e5 b4 g+ e b g+ e b3 g+ /l4/e /l8/e4 
        }
}

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:

@body {
        @channel 1 "harpsichord" {
                ...
                ...
        }
        @channel 1 "harpsichord" {
                ...
                ...
        }
}

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)).

                /l16/r /l8/e6 d+ d c+ b5 a g+ f+ /l32/g+ a /l16/g+ 
                /l32/b a /l16/b /l32/g+ f+ /l16/g+ /l32/e d+ 

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:

@head {
        $title "Johann Sebastian Bach (1685-1750) - BWV 777 - Invenzioni n. 6"
        $tempo 40
        $time_sig 3/9
}
@body {
        @channel 1 "harpsichord" {
                $attack 127
                $decay 64
                $patch 7
                $key e
                /l16/r /l8/e6 d+ d c+ b5 a g+ f+ /l32/g+ a /l16/g+ 
                /l32/b a /l16/b /l32/g+ f+ /l16/g+ /l32/e d+ 
                ...
                f+ /l16/g+ /l32/b a /l16/b /l32/g+ f+ /l16/g+ 
                /l32/b a /l16/b /l32/e6 d+ /l16/e b5 g+ e 
        }
        @channel 2 "harpsichord" {
                $attack 127
                $decay 64
                $patch 7
                $key e
                /l8/e4 f+ g+ a b c+5 d+ /l16/e d+ c+ b4 /l8/e5 
                e4 /l3:16/r /l8/e d+ d c+ b3 a g+ f+ /l32/g+ 
                ...
                /l32/d+ c+ /l16/d+ /l32/g+ f+ /l8/g+ a b e /l16/r 
                e5 b4 g+ e b g+ e b3 g+ /l4/e /l8/e4 
        }
}

La tabella 656.7 riassume alcuni parametri importanti di Midge, che possono servire per ritoccare un file MIDI già disponibile.

Tabella 656.7. Alcuni parametri nel sorgente di Midge.

Parametro Descrizione
$title "titolo_dell'esecuzione"
Si utilizza nell'intestazione e attribuisce un titolo al file MIDI.
$tempo n
Si utilizza nell'intestazione oppure nei blocchi delle tracce per indicare la quantità di battute per minuto.
$time_sig m/n
Si utilizza nell'intestazione oppure nei blocchi delle tracce per indicare la frazione che esprime la lunghezza di una battuta (per esempio 3/4).
$patch {n|nome}
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 656.8).
$volume n
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).
$reverb n
Si utilizza nei blocchi delle tracce per indicare la profondità del riverbero. Il valore assegnato va da 0 a 127.
$chorus n
Si utilizza nei blocchi delle tracce per indicare un effetto simile al riverbero. Il valore assegnato va da 0 a 127.
$pan n
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 656.8. Classificazione dei suoni secondo Midge, per l'utilizzo nel parametro $patch.

Numero Nome alternativo
per Midge
Denominazione completa
1 piano_grand_ac Acoustic Grand Piano
2 piano_br Bright Acoustic Piano
3 piano_grand_el Electric Grand Piano
4 piano_ht Honky-Tonk Piano
5 piano_el_1 Electric Piano 1
6 piano_el_2 Electric Piano 2
7 harpsichord Harpsichord
8 clavinet Clavinet
9 celesta Celesta
10 glockenspiel Glockenspiel
11 music_box Music Box
12 vibraphone Vibraphone
13 marimba Marimba
14 xylophone Xylophone
15 tubular_bells Tubular Bells
16 dulcimer Dulcimer
17 organ_dbar Drawbar Organ
18 organ_perc Percussive Organ
19 organ_rock Rock Organ
20 organ_church Church Organ
21 organ_reed Reed Organ
22 accordian Accordian
23 harmonica Harmonica
24 accordian_tango Tango Accordian
25 guitar_nylon Nylon String Guitar
26 guitar_steel Steel String Guitar
27 guitar_jazz Electric Jazz Guitar
28 guitar_clean Electric Clean Guitar
29 guitar_muted Electric Muted Guitar
30 guitar_od Overdriven Guitar
31 guitar_dist Distortion Guitar
32 guitar_harm Guitar Harmonics
33 bass_ac Acoustic Bass
34 bass_fg Electric Bass(finger)
35 bass_pick Electric Bass(pick)
36 bass_fless Fretless Bass
37 bass_slap_1 Slap Bass 1
38 bass_slap_2 Slap Bass 2
39 bass_syn_1 Synth Bass 1
40 bass_syn_2 Synth Bass 2
41 violin Violin
42 viola Viola
43 cello Cello
44 contrabass Contrabass
45 str_trem Tremolo Strings
46 str_pizz Pizzicato Strings
47 str_orch Orchestral Strings
48 timpani Timpani
49 str_ens_1 String Ensemble 1
50 str_ens_2 String Ensemble 2
51 str_syn_1 SynthStrings 1
52 str_syn_2 SynthStrings 2
53 choir_aahs Choir Aahs
54 voice_oohs Voice Oohs
55 voice_syn Synth Voice
56 orch_hit Orchestra Hit
57 trumpet Trumpet
58 trombone Trombone
59 tuba Tuba
60 trumpet_muted Muted Trumpet
61 horn_fr French Horn
62 brass Brass Section
63 brass_syn_1 SynthBrass 1
64 brass_syn_2 SynthBrass 2
65 sax_sop Soprano Sax
66 sax_alt Alto Sax
67 sax_ten Tenor Sax
68 sax_bar Baritone Sax
69 oboe Oboe
70 horn_en English Horn
71 bassoon Bassoon
72 clarinet Clarinet
73 piccolo Piccolo
74 flute Flute
75 recorder Recorder
76 flute_pan Pan Flute
77 bottle Blown Bottle
78 skakuhachi Skakuhachi
79 whistle Whistle
80 ocarina Ocarina
81 lead_sq Lead 1 (square)
82 lead_saw Lead 2 (sawtooth)
83 lead_calliope Lead 3 (calliope)
84 lead_chiff Lead 4 (chiff)
85 lead_charang Lead 5 (charang)
86 lead_voice Lead 6 (voice)
87 lead_fifth Lead 7 (fifths)
88 lead_basslead Lead 8 (bass+lead)
89 pad_new_age Pad 1 (new age)
90 pad_warm Pad 2 (warm)
91 polysynth Pad 3 (polysynth)
92 pad_choir Pad 4 (choir)
93 pad_bowed Pad 5 (bowed)
94 pad_metal Pad 6 (metallic)
95 pad_halo Pad 7 (halo)
96 pad_sweep Pad 8 (sweep)
97 fx_rain FX 1 (rain)
98 fx_strack FX 2 (soundtrack)
99 fx_crystal FX 3 (crystal)
100 fx_atmos FX 4 (atmosphere)
101 fx_bright FX 5 (brightness)
102 fx_goblin FX 6 (goblins)
103 fx_echo FX 7 (echoes)
104 fx_scifi FX 8 (sci-fi)
105 sitar Sitar
106 banjo Banjo
107 shamisen Shamisen
108 koto Koto
109 kalimba Kalimba
110 bagpipe Bagpipe
111 fiddle Fiddle
112 shanai Shanai
113 bell_tinkle Tinkle Bell
114 agogo Agogo
115 drum_steel Steel Drums
116 woodblock Woodblock
117 drum_taiko Taiko Drum
118 tom_melodic Melodic Tom
119 drum_syn Synth Drum
120 cymbal_rev Reverse Cymbal
121 fx_fret Guitar Fret Noise
122 fx_breath Breath Noise
123 fx_sea Seashore
124 fx_tweet Bird Tweet
125 fx_phone Telephone Ring
126 fx_copter Helicopter
12f x_applause Applause
128 fx_gun Gunshot

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.

656.3   Timidity++

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ì:

dir /opt/eawpats/
source gravis.cfg
source gsdrums.cfg
source gssfx.cfg
source xgmap2.cfg

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.

Tabella 656.10. Opzioni essenziali della riga di comando di timidity.

Opzione Descrizione
-iinterfaccia[opzioni]
Definisce l'interfaccia visiva, ovvero il modo in cui si interagisce con Timidity++. Possono essere disponibili anche delle modalità di funzionamento grafiche, a seconda di come sono stati compilati i sorgenti.
-id[opzioni]
Si avvia in modo normale, non interattivo (è la modalità di funzionamento predefinita).
-in[opzioni]
Si avvia in modo interattivo, occupando tutto lo schermo (schermo a caratteri).
-iinterfaccias
Riordina i file prima di iniziare l'esecuzione.
-iinterfacciar
Esegue i file utilizzando una sequenza casuale.
-Omodalità
Questa opzione determina il tipo di conversione che si intende ottenere.
-Od
Converte e invia al dispositivo per la riproduzione audio (è la modalità di funzionamento predefinita).
-Ow
Converte in formato WAV-RIFF. Si usa normalmente in abbinamento all'opzione -o.
-o file
Invia il risultato della conversione al file indicato.

Come si vede, in condizioni normali si usa l'eseguibile timidity senza opzioni, o al massimo con -in (oppure selezionando un'altra interfaccia preferita).

656.4   Creazione di un CD audio a partire da file MIDI

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 \
  \--device coordinate_scsi file_toc

Lo script successivo esegue tutte le operazioni in modo automatico, fornendo semplicemente i nomi dei file MIDI come argomenti nella riga di comando:

#!/bin/sh
##
## midi2cd MIDI_FILE...
##
#
# Modificare questa variabile per indicare le coordinate del
# masterizzatore.
#
DEV="0,0,0"
#
# Se si tratta di un masterizzatore ATAPI che non è riconosciuto
# da Cdrdao, conviene assegnare la stringa "--driver generic-mmc".
#
CD_DRIVER=""
#
# I file MIDI vengono forniti come argomenti della riga di comando.
#
MIDI_LIST="$@"
#
# Collocazione dei file temporanei.
#
TEMPORARY=`tempfile`
rm -f $TEMPORARY
mkdir $TEMPORARY
TOC="$TEMPORARY/TOC"
#
# Variabile usata per numerare sequenzialmente le tracce.
#
N="0"
#
# File correnti.
#
MIDI=""
WAV=""
#
# Inizia il file TOC di Cdrdao.
#
echo CD_DA > $TOC
#
# Si convertono i file MIDI.
#
for MIDI in $MIDI_LIST
do
    #
    # Incrementa N.
    #
    N=$(($N+1))
    #
    # Definisce il nome da dare al file WAV: usa il numero sequenziale
    # e gli aggiunge l'estensione.
    #
    WAV="$TEMPORARY/$N.wav"
    #
    # Converte il file MIDI.
    #
    timidity -Ow -s 44100 $MIDI -o $WAV
    #
    # Aggiunge le informazioni necessarie nel file TOC di Cdrdao.
    #
    echo // Track $N >> $TOC
    echo TRACK AUDIO >> $TOC
    echo NO PRE_EMPHASIS >> $TOC
    echo TWO_CHANNEL_AUDIO >> $TOC
    echo AUDIOFILE \"$WAV\" 0 >> $TOC
    #
done
#
# Incide il CD.
#
cdrdao write            \
    --overburn          \
    -v 2                \
    --buffers 128       \
    --speed 4           \
    --device $DEV       \
    $CD_DRIVER          \
    $TOC

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:

...
for MIDI in $MIDI_LIST
do
    N=$(($N+1))
    WAV="$TEMPORARY/$N.wav"
    timidity -Ow -s 44100 $MIDI -o $WAV
done
#
cdrecord -v             \
         -overburn      \
         speed=4        \
         $CD_DRIVER     \
         dev=$DEV       \
         -audio         \
         $TEMPORARY/*.wav

656.5   Riferimenti

Appunti di informatica libera 2007.02 --- Copyright © 2000-2007 Daniele Giacomini -- <daniele (ad) swlibero·org>


1) Midge   GNU GPL

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] [indice analitico]

Valid ISO-HTML!

CSS validator!