Dr. Track 1.45
----------

Un editor/player di MOD per la SoundBlaster e la SoundBlaster Pro
CopyRight (c) 1991-1993 Alessandro Scotti



Manuale d'uso
-------------


[DRT_INTRO]
1. Introduzione

1.1. Cos'è il Sound Tracker

Nell'Amiga la parte sonora consiste in (ben) quattro DAC ad 8 bit,
funzionanti in DMA.
Ciò significa che non è possibile far suonare ad Amy una certa nota se
non si dispone di un sample da inviare al DAC (o se non si usa un
apposito software di emulazione). In compenso, questo metodo permette di
riprodurre quasi tutti gli strumenti, basta infatti campionarli ed
ottenere i corrispondenti sample per il DAC. Inoltre, variando la
velocità di riproduzione, è possibile ottenere suoni di diverse altezze
che comprendono non solo le note della scala musicale, ma anche molte
"posizioni" intermedie le quali vengono utilizzate nella pratica per
ottenere particolari effetti come il portamento o il vibrato.
La grande potenza del sistema precedente si paga però in termini di
facilità d'uso, del resto senza appropriati strumenti hardware e
software non è nemmeno possibile creare dei sample!
Per questo motivo sono stati scritti numerosi programmi che
semplificano enormemente la gestione dei sample e dei DAC e permettono
la creazione di vere e proprie "colonne sonore". Tra questi il più
celebre è senz'altro il Sound Tracker che, nato per uso interno ad opera
di un gruppo di "hacker", è stato successivamente rilasciato al pubblico
dominio insieme ad un certo numero di dischetti contenenti centinaia di
sample pronti per l'uso.

1.2. Cos'è il Dr. Track

Passando su un PC le cose peggiorano sensibilmente. Il suo "beeper"
non è stato certo studiato per un uso professionale nel campo della
musica, anche se è possibile ottenere discreti risultati manipolando
opportunamente quel poco messo a disposizione. Ma per andare al di là
della semplice riproduzione di un sample ci vogliono macchine piuttosto
veloci ed in ogni caso il risultato non è entusiasmante in senso
assoluto.
Aggiungendo un po' di hardware, nel nostro caso una bella scheda
SoundBlaster, si ha un enorme miglioramento, ma di fronte ai quattro DAC
dell'Amiga anche la SB, col suo unico canale, è costretta ad arrendersi.
C'è bisogno quindi di un programma che simuli i quattro canali
di Amy e li mixi in tempo reale per inviarli al DAC della Sound Blaster.
Come si può immaginare, considerando anche che il Sound Tracker
permette l'uso di numerosi comandi che vanno a modificare il pitch, il
volume e la sequenza delle note da riprodurre, la mole di calcoli da
svolgere è notevole.
Dr. Track fa tutto questo, ma anche qualcosa in più. Oltre a
riprodurre i moduli del Sound Tracker leggendoli direttamente nel loro
formato originale, permette infatti di modificarli a piacere o crearne
di nuovi, nonch‚ di utilizzare sample (cioè strumenti) creati con la
SoundBlaster o estratti da moduli già esistenti.
Prima di vedere in dettaglio come si svolgono queste operazioni, sarà
però opportuno introdurre le idee che stanno alla base di molti
programmi di questo tipo, ovvero la distinzione tra una composizione in
fase di sviluppo ed una già ultimata.

Nota: l'avvento della SoundBlaster Pro, che mette a disposizione due
canali da 8 bit (stereo), ha migliorato la situazione. Attento Amy....

1.3. Dai "song" ai "moduli" e viceversa

I moduli (d'ora in poi sarà implicito il riferimento al SoundTracker o
al Dr. Track, dato che quest'ultimo usa lo stesso formato) costituiscono
il risultato finale dell'opera del compositore. Essi contengono non solo
tutte le note da suonare, come un normale spartito, ma anche tutti i
dati per gli strumenti utilizzati, in poche parole tutto ciò che serve
per l'esecuzione del brano.
E' importante osservare che note e strumenti sono due cose distinte:
la riproduzione avviene leggendo le note volta per volta, e lo strumento
ad esse associato viene opportunamente manipolato in modo da generare la
frequenza desiderata, contrariamente a quanto avviene per esempio nei
file .VOC dove i dati vengono inviati direttamente al DAC. Del resto con
uno strumento (cioè con un sample, in questo contesto le parole sono
sinonimi) si deve poter suonare qualsiasi nota!
Ma torniamo ai nostri moduli. Lo svantaggio più grande è che essi
occupano molto spazio su disco, cosa dovuta soprattutto al fatto che gli
strumenti non percussivi tendono ad essere spesso piuttosto lunghetti.
Del resto una delle prime cose da farsi quando si inizia a scrivere
musica è proprio quella di crearsi una propria libreria di strumenti,
creandoli con la SoundBlaster o "rubandoli" da moduli già fatti. In
questo caso, evidentemente, dopo aver creato un modulo si avranno su
disco almeno due copie dei sample, una di "libreria" e una nel modulo
stesso.
Per ovviare a questo inconveniente alcuni programmi, tra cui
naturalmente il Dr. Track (non sarei qui a parlarvene altrimenti!),
permettono di salvare i dati in un altro formato chiamato usualmente
"song" (forse "project" è un termine più appropriato).
Un song contiene solo le note ed i NOMI dei sample, ma non spreca
inutilmente spazio per i dati di questi, li legge invece da disco (in
genere da floppy, dove avrete creato e catalogato la vostra collezione
di strumenti) rintracciandoli proprio grazie ai nomi.
Di come si usano i song in Dr. Track parleremo poi, per il momento è
sufficiente ricordare ancora come il loro uso permetta di risparmiare
spazio e parte del tempo speso nelle operazioni di I/O.

1.4. Amiga vs PC

Cercare di battere Amiga nel campo della grafica o del sonoro, con un
normale PC, è una battaglia persa in partenza. Sono troppe infatti le
facilitazioni che il primo offre al programmatore mettendogli a
disposizione un hardware molto potente e la possibilità di lavorare su
una macchina "standard": gli Amiga sono praticamente tutti uguali, i PC,
purtroppo, no.
Certo un 386 con VGA e SoundBlaster può senz'altro dire la sua, ma non
tutti ce l'hanno e soprattutto, fatto alquanto rilevante, la mia CPU è
un 286 a 6 Mhz.
In casi come questi bisogna sacrificare qualcosina, cercando di
arrangiarsi con quel che resta. Dunque ciao grafica in alta risoluzione,
troppo lenta e se vogliamo anche un po' dispersiva (questa non la beve
nessuno - N.d.A.). Pensate un po' che l'Amiga neanche ce l'ha un vero e
proprio modo testo, e invece noi abbiamo una bellissima modalità 80x25!
E poi quel cursore del mouse che sta sempre in mezzo allo schermo, che
orrore! Via anche quello!
Vi chiederete, legittimamente, che diamine resta. Niente paura, anche
il modo testo va più che bene e se magari avete anche una EGA o una VGA
un paio di chiamate al BIOS miglioreranno l'uso dei colori permettendovi
di apprezzare Dr. Track in tutto il suo splendore (ehm... ehm... ahem)!
C'è poi il lato musicale che non va trascurato. Il fatto di dover
mixare quattro canali in uno solo comporta la perdita di alcuni bit di
informazione, inoltre vengono persi interi byte nell'operazione di
"resample" dei dati, necessaria per far suonare i sample a frequenze
diverse.
A questi problemi non c'è soluzione. Le frequenze acute sono le prime
ad andarci di mezzo e per ottenere risultati apprezzabili bisogna
"pompare" la SoundBlaster fino al limite delle sue capacità, la qual
cosa ovviamente comporta un aumento dei dati da elaborare (bene) e
quindi del tempo macchina necessario (male).
Gigante pensaci tu: la gestione del suono, ed in effetti anche molte
altre parti del programma, è stata scritta interamente in Assembly ("ci
penso io"). Vi risparmio la descrizione delle penose ore trascorse
davanti alla tastiera, il risultato è che Dr. Track è in grado di
mandare la SB alla sua massima velocità già su un 286 a 6 Mhz, ed avanza
anche il tempo per fare uno shell al DOS e lanciare magari qualche
giochino (o magari anche Windows 3, yeah, non è un errore di battitura!)
con la musica in background. Light speed junky.

E' arrivato ora il momento di guardare più da vicino le varie parti
che compongono un modulo o un song.


2. Dentro i moduli (prima parte)

[DRT_STRUMENTI]
2.1. Gli strumenti

Uno strumento è essenzialmente una sequenza di byte campionata da
qualche fonte (lo strumento vero, presumibilmente).
Prescindendo dalla differenza di timbro, tra gli strumenti reali si
hanno in genere due fondamentali tipi di risposta all'esecuzione di una
nota: premendo il tasto di un pianoforte e tenendolo premuto il suono si
affievolisce lentamente, mentre facendo la stessa cosa con un organo il
suono permane finch‚ non si toglie il dito dal tasto.
Per gestire entrambe le situazioni deve essere possibile quindi dire
al programma che una parte del sample va ripetuta indefinitamente: nel
seguito questa parte verrà a volte chiamata "repeat".
E' da notare che tale distinzione è puramente astratta, in effetti i
dati di uno strumento costituiscono un'unica sequenza di byte
consecutivi i quali possono essere numerati a partire da zero fino
all'ultimo byte che vale (lunghezza_del_sample - 1). Il numero associato
ad ogni byte si chiama "offset" del byte in questione e ne rappresenta
la distanza dal primo byte.

_______ parte da ripetere _______
| |
i i i i i i i i i r r r r r r r r r r r r r r r r r r f f f f f f f
|
primo byte da ripetere

Facendo riferimento alla figura, il sample verrebbe eseguito così:
- parte i
- parte r
- parte f
- parte r indefinitamente, fino al verificarsi di qualche altro evento.

Dunque la prima volta viene riprodotta l'intera sequenza di byte,
mentre le volte successive viene utilizzata solo la parte di repeat.
Come si può osservare, per individuare univocamente la parte da
ripetere è necessario conoscere due cose: dove inizia (ovvero l'offset
del suo primo byte) e quanto è lunga. Questi due parametri vengono
chiamati rispettivamente "repeat start" e "repeat length".
Abbiamo risolto il problema dell'organo e anche quello dei preset di
numerosi synth, ma ora c'è quello del pianoforte! Quest'ultimo infatti,
come del resto la maggior parte degli strumenti, non ha alcuna parte da
ripetere!
Ma stavolta la soluzione è facile: in questi casi "repeat length"
assume per convenzione il valore due (attenzione, non zero!), ad
indicare che il sample va eseguito una sola volta e messo poi a tacere
("one-shot sample").

L'ultimo parametro che riguarda un sample è il suo volume di default,
che è un numero compreso tra 1 e 64. Si tratta del volume usato
normalmente in fase di riproduzione a meno di non usare specifici
comandi per cambiarlo. Aggiustando opportunamente il valore di questo
parametro è possibile dosare in maniera ottimale le varie voci,
tenendone magari alcune in sottofondo e facendo risaltare invece quelle
che realizzano il motivo principale della composizione.

[DRT_NOTE]
2.2. Le note

Qui finalmente le cose cominciano a farsi interessanti. Nel nostro
ambiente indichiamo col nome di "nota" un insieme costituito da tre
parti: la nota vera e propria, lo strumento da utilizzare per suonarla
e, facoltativamente, uno dei comandi che permettono di modificare alcuni
parametri.

La nota vera e propria viene rappresentata come una coppia
nome-ottava, con i nomi in notazione anglosassone. In questa notazione
le sette note fondamentali vengono indicate con una lettera dalla "A"
alla "G": la figura seguente illustra la corrispondenza tra queste
lettere ed i nomi italiani, enormemente più belli ma un po' troppo
lunghi per essere usati in programmi di questo tipo.


C D E F G A B
Do Re Mi Fa Sol La Si

L'ottava si indica semplicemente con un numero da uno a tre, quindi
alcuni esempi di note possono essere:

C-1, do della prima ottava (il trattino è solo un separatore);
F#2, fa diesis della seconda ottava;
B-3, si della terza ottava.

Accando alla nota viene indicato lo strumento. Il SoundTracker
permette di avere al massimo trentuno strumenti in memoria, numerati da
1 a 31. Per ovvi motivi di spazio all'interno di una nota non viene
usato il nome del sample ma il corrispondente numero.
Potremmo avere allora qualcosa come:

E-2 05

per indicare che bisogna suonare un mi della seconda ottava con il
quinto strumento in memoria.

[DRT_FRAME]
2.3. I "frame"

Un frame non è altro che un insieme di quattro note (tante quanti sono
i canali disponibili) da suonare contemporaneamente.
Queste quattro note vengono scritte su una stessa riga per indicare
appunto che devono essere eseguite simultanamente, così per esempio il
frame

D-2 01 F#2 01 A-2 01 C-3 01

produce un perfetto accordo (di re maggiore settima).
Come si può osservare c'è una certa differenza con la notazione
musicale standard nella quale gli accordi si sviluppano in verticale,
differenza dovuta essenzialmente a motivi di visualizzazione.

[DRT_PATTERN]
2.4. I "pattern"

Il concetto di pattern è l'analogo del concetto di battuta o misura.
Un pattern è costituito da 64 frame, i quali vengono eseguiti in
successione.
Potremmo avere per esempio

D-3 01 C-2 02 D-2 02 F#2 02
A-3 01 ... .. ... .. ... ..
F#3 01 ... .. ... .. ... ..
A-3 01 ... .. ... .. ... ..
D-3 01 A#1 02 D-2 02 G-2 02
A#3 01 ... .. ... .. ... ..
G-3 01 ... .. ... .. ... ..
A#3 01 ... .. ... .. ... ..
ecc.

che è un brevissimo frammento tratto da una passacaglia di H„ndel.
Vediamo come si legge. Il primo frame è

D-3 01 C-2 02 D-2 02 F#2 02

e produce un accordo (ancora di re settima) sulle ultime tre voci,
mentre la prima voce, con un diverso strumento, inizia il canto con un
re della terza ottava. Queste quattro note, come detto prima, vengono
eseguite all'unisono.
Il frame successivo è

A-3 01 ... .. ... .. ... ..

che continua con un la il canto sulla prima voce. Ma che fine hanno
fatto le altre tre voci? Semplice, visto che vogliamo tenere l'accordo
su tutte le prime quattro note del canto lasciamo in "bianco" i campi
corrispondenti alle note delle ultime traccie, permettendo al suono di
proseguire indisturbato (se manca una nota infatti il suono di quel
canale non viene interrotto, ma viene continuata l'esecuzione di una
eventuale nota precedente).
Questo è precisamente il modo in cui si ottengono note di diversa
lunghezza.
Vale la pena di osservare che suonare un do che dura quattro secondi è
ben diverso che suonare quattro do consecutivi della durata di un
secondo ciascuno, dato che in genere le caratteristiche del suono
variano con lo scorrere del tempo (se per esempio il suono cominciasse a
"vibrare" dopo tre secondi ce ne potremmo accorgere solo nel primo
caso).
Dovrebbe essere chiaro a questo punto anche il modo in cui verrebbero
interpretati i frame successivi, ad ogni modo la cosa migliore da fare è
lanciare Dr. Track, caricare qualche sample e cominciare a provare: il
programma è stato strutturato in modo tale da facilitare al massimo
questo tipo di esperimenti e permette di verificare immediatamente il
risultato del proprio lavoro.

[DRT_ORDER]
2.5. L'"order list"

In un modulo è possibile avere fino a 64 pattern differenti, i quali
non vengono eseguiti in successione, ma in una sequenza definita
dall'utente.
In altre parole, c'è una lista che contiene l'ordine in cui vanno
eseguiti i vari pattern, e ciascun pattern può comparire quante volte si
vuole in questa lista, in modo da non dover sprecare tempo e spazio con
parti del brano che si ripetono.
Il numero di entrate che può contenere l'"order" (tralasciamo d'ora in
poi la parola "list") è pari a 128.
In Dr. Track i pattern vengono numerati da 1 a 64, ed il pattern 0
viene usato per chiudere la lista. Per esempio un order come:

1 1 2 3 4 1 2 5 0

fa sì che il brano termini dopo che è stato eseguito il pattern numero
5 (a questo punto Dr. Track ricomincia dal primo pattern nella lista,
dato che molti moduli vanno in "loop" in questo modo).
A differenza dei pattern gli elementi dell'order si contano a partire
da 00h fino ad arrivare a 7Fh, comunque è inutile conoscere i
corrispondenti valori decimali perché ovviamente gli elementi vengono
visualizzati nella sequenza corretta e quindi un certo numero
esadecimale può essere pensato senza problemi come il "nome" del
corrispondente pattern nella lista.

[DRT_TEMPO]
2.6. Il tempo

Last but not least, questo importantissimo argomento costituisce un
presupposto essenziale per sfruttare a fondo le caratteristiche del
player nonch‚ i comandi, che esamineremo nel prossimo capitolo.
Il SoundTracker basa le sue temporizzazioni su un clock di 50 Hz, che
per l'Amiga sarebbe poi quello del PAL (in effetti negli U.S.A. ci sono
un po' di problemi ad usare il SoundTracker: dato che il loro sistema
video si basa su un clock di 60 Hz l'esecuzione risulta accelerata).
Ciò significa che al massimo della velocità può venire eseguito un
frame ogni cinquantesimo di secondo. Si tratta di una velocità piuttosto
elevata, tale da far venire il mal di testa a chiunque, e non mi è mai
capitato di vederla usata n‚ di doverla usare.
E' dunque opportuno nella maggior parte dei casi aumentare un pochino
il tempo che trascorre tra l'esecuzione di un certo frame e di quello
successivo.
Ciò può essere realizzato in due modi: il primo modo consiste
nell'aumentare la durata delle note facendo uso di frame "nulli",
il secondo nel cambiare la velocità di riferimento.

D-3 01 C-2 02 D-2 02 F#2 02
... .. ... .. ... .. ... ..
... .. ... .. ... .. ... ..
D-3 01 A#1 02 D-2 02 G-2 02
ecc.

Nell'esempio qui sopra la presenza di due frame vuoti aumenta il tempo
che intercorre tra l'esecuzione del primo e del secondo frame. Se tale
sequenza viene eseguita alla velocità di un frame ogni cinquantesimo di
secondo allora il secondo frame viene eseguito esattamente tre
cinquantesimi di secondo dopo il primo.
Se però portassimo a tre la velocità di riferimento (un frame ogni tre
cinquantesimi di secondo) potremmo ottenere lo stesso risultato
scrivendo:

D-3 01 C-2 02 D-2 02 F#2 02
D-3 01 A#1 02 D-2 02 G-2 02

il che ci farebbe risparmiare anche un po' di spazio.

Possiamo ora definire facilmente la velocità di esecuzione di un
brano: essa rappresenta la durata di un singolo frame in cinquantesimi
di secondo e può variare da 1 a 15 (in esadecimale, da 01h a 0Fh).
Naturalmente non c'è bisogno di farsi ogni volta i calcoli, basta fare
un paio di prove e trovare "ad orecchio" la velocità più adatta al brano
che si sta scrivendo, tuttavia la conoscenza di questi meccanismi è di
grande aiuto nella realizzazione di particolari effetti e nell'uso di
alcuni comandi.


3. Dentro i moduli (seconda parte)

L'argomento che stiamo per trattare può essere tralasciato in una
prima lettura, ma siete avvisati: se si è meritato un capitolo intero
una ragione deve esserci!

[DRT_COMANDI]
3.1. I comandi

Ehi, conosciamo tutti la notazione esadecimale, vero? Sì? Benissimo,
ci servirà tra poco.

Poter suonare a quattro voci con strumenti campionati è già di per s‚
una cosa notevole, ma la versatilità del sistema aumenta enormemente con
un uso appropriato dei comandi disponibili, che permettono di realizzare
un gran numero di "effetti".
Un comando viene indicato con una cifra esadecimale, ovvero
utilizzando i numeri dallo "0" al "9" e le lettere dalla "A" alla "F".
Ad ogni comando è associato un byte di informazione ("infobyte"), che
contiene gli eventuali parametri necessari e che viene anch'esso sempre
indicato in esadecimale.
Qui di seguito sono elencati e spiegati in dettaglio tutti i comandi
riconosciuti dal Dr. Track, in ordine di codice.

[DRT_ARPEGGIO]
* "0": Arpeggio ("Arpeggio")

Si tratta di una cosa un po' strana ma a volte utile. I due nibble
dell'infobyte vengono sfruttati per individuare, oltre alla nota
principale, altre due note. Queste tre note vengono suonate allora in
rapidissima successione, con un effetto più o meno simile ad un trillo.
Più precisamente, il valore di ogni nibble è pari alla distanza in
semitoni della corrispondente nota dalla nota principale.
Non ci siamo, eh? Beh, ho cercato di fare del mio meglio, ma più delle
parole un esempio potrà chiarire il tutto.

Consideriamo la seguente nota:

comando
|
C-2 06 047
--
| byte di informazione

La nota principale è un do della seconda ottava, ma noi, usando il
comando "0", vogliamo creare un arpeggio con altre due note. La prima è
quella associata alla parte alta dell'infobyte, e quindi dista
esattamente quattro semitoni dal C-2 di riferimento. Si tratta dunque di
un E-2, ovvero di un mi della seconda ottava, dato che a partire dal C-2
abbiamo la seguente successione di semitoni:


+ 0 + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + A + B + C + D
C-2 C#2 D-2 D#2 E-2 F-2 F#2 G-2 G#2 A-2 A#2 B-2 C-3 C#3 ...

A questo punto è chiaro anche che la seconda nota ausiliaria è G-2, e
quindi abbiamo creato un bell'arpeggio do-mi-sol. Dato che la frequenza
con la quale le note cambiano è piuttosto elevata (1/50-esimo di secondo
per ogni nota) non si riescono a percepire distintamente le varie note e
ciò può essere utile per simulare accordi o anche "acciaccature" e cose
del genere.

Per suonare una nota così com'è basta porre a zero l'infobyte, per
esempio

A-1 03 .00

suona semplicemente come un la della prima ottava. Avrete anche notato
che il comando "0" è stato indicato con un punto, questo perché le note
che non hanno alcun comando associato sono in genere la maggioranza e
questa rappresentazione assolve al duplice compito di rendere meno
pesante per l'utente la visualizzazione (lo schermo è meno "pieno") e di
evedenziare le note che al contrario hanno associato un comando.

[DRT_PORTUP]
* "1": Portamento verso frequenze più alte ("Portamento up")

Insieme al suo complementare, il comando "2", si tratta di uno degli
effetti in assoluto più sfruttati.
Esso consiste nell'aumentare la frequenza della nota correntemente in
riproduzione, con un aumento più o meno accentuato a seconda del valore
contenuto nell'infobyte.
Nell'implementazione originale l'infobyte può contenere un numero
compreso tra 01h e FFh, ma Dr. Track, per motivi di velocità, "limita" a
3Fh il massimo valore possibile (in effetti non è una grande
limitazione, dato che nella pratica è già raro incontrare valori
superiori a 0Fh).
Una cosa che vale la pena di sottolineare è che questo tipo di comandi
viene comunque eseguito una volta ogni cinquantesimo di secondo
indipendentemente dalla velocità di esecuzione, il che consente di
ottenere un risultato molto "fluido" evitando sbalzi troppo bruschi.
Ancora una volta facciamo un esempio, considerando la nota:

C-2 01 103

Supponiamo che la velocità di esecuzione sia 3, ovvero l'esecuzione
della precedente nota dura 3 50-esimi di secondo. Nel primo
cinquantesimo la frequenza del suono è quella corrispondente ad un do
della seconda ottava (attenzione, questo non significa che la nota
emessa corrisponde proprio ad un do della seconda ottava, perché ciò
dipende dalla frequenza di campionamento del corrispondente sample), nel
secondo e nel terzo cinquantesimo invece tale frequenza viene aumentata
tenendo conto dell'infobyte (a numeri più alti corrispondono incrementi
maggiori) e quindi alla fine dei tre cinquantesimi la nota di partenza,
C-2, si sarà trasformata in qualcos'altro, non necessariamente un'altra
nota!
Variando la velocità del portamento si ha quindi la possibilità di
raggiungere frequenze che non corrispondono a nessuna delle normali note
della scala musicale, e quindi di simulare per esempio un basso
"fretless", uno "scratch" o la "pitch-wheel" presente in quasi tutte le
tastiere in commercio.
Per continuare l'effetto del portamento sulla stessa nota è necessario
ripetere il comando nei frame successivi, per esempio:

C-2 01 103
... .. 103
... .. 103

Ancora una volta, la pratica vale più di molte parole.

[DRT_PORTDOWN]
* "2": Portamento verso frequenza più basse ("Portamento down")

E' la stessa cosa del portamento up tranne per il fatto che si ha una
diminuzione della frequenza, quindi lo spostamento avviene verso note
più "basse".

[DRT_TONEPORT]
* "3": Portamento verso una nota ("Tone portamento")

Il concetto rimane lo stesso dei due comandi precedenti, però in
questo caso è possibile dire al programma di fermarsi dopo aver
raggiunto una determinata nota.
Quest'ultima viene specificata come se fosse una nota da suonare, ma
non viene eseguita e costituisce in pratica una estensione del byte di
informazione. Dato che un comando ha effetto solo nel frame in cui si
trova, per continuare l'effetto di portamento nei frame successivi
bisogna continuare ad usare il comando "3" senza parametri fino al
raggiungimento della frequenza specificata all'inizio, dopo di che il
comando non ha più effetto (quindi non serve calcolarsi quante volte
bisogna usare il comando, eventualmente basta dare qualche ulteriore "3"
di sicurezza).
Consideriamo la seguente traccia:

C-2 01 .00
... .. ...
... .. ...
E-2 01 305
... .. 300
... .. 300

Quando il programma incontra la nota

E-2 01 305

non la esegue, bensì inizia ad alzare la frequenza del C-2 a velocità 5.
Nei frame successivi questo effetto continua finch‚ non viene raggiunta
la frequenza corrispondente a E-2, sempre supponendo di usare il comando
"3".
Nel "tone portamento" non c'è neanche il problema della "direzione",
la variazione di frequenza avverrà infatti automaticamente verso l'alto
o verso il basso a seconda della nota da raggiungere.

[DRT_VIBRATO]
* "4": Vibrato ("Vibrato")

L'effetto del vibrato consiste nel fare oscillare con un certo periodo
il valore della frequenza di output.
L'infobyte contiene due parametri, entrambi nel range da 0h a Fh. Il
primo nibble indica la velocità del vibrato, il secondo l'ampiezza.
Variare la velocità del vibrato significa variare il periodo di ogni
oscillazione: quanto più grande è la velocità tanto più breve è il
periodo.
Il secondo parametro governa invece l'ampiezza dell'oscillazione, e
quindi rende l'effetto più o meno "vibrante".
Dato che il tutto è piuttosto difficile da spiegare senza addentrarsi
un po' troppo nel campo dell'acustica, vi esorto a sperimentarlo di
persona.
Come al solito è possibile continuare l'effetto di vibrato dopo il
primo frame seguitando ad usare il comando "4" senza parametri, oppure
si possono cambiare "al volo" i parametri per simulare anche un effetto
di distorsione del suono. Solito esempio:

F#3 04 462
... .. 400
... .. 400

dove la velocità del vibrato è 6 e l'ampiezza 2.

[DRT_VOLSLIDE]
* "A": Variazione di volume ("Volume slide")

Serve per diminuire o aumentare il volume a piccoli passi. Il
meccanismo è lo stesso del portamento (una variazione ogni cinquantesimo
di secondo) e l'infobyte contiene la quantità di cui bisogna
incrementare o decrementare il volume corrente. Per non sprecare due
comandi la velocità della variazione è compresa tra 0h ed Fh, e porla
nel nibble alto significa aumentare il volume, mentre porla nel nibble
basso significa diminuirlo.
Ovviamente non è possibile scendere al di sotto del valore 0 o andare
al di sopra di 64.
Alcuni esempi:

1) B-1 25 A01
... .. A01
... .. A01

2) G-2 18 A20
... .. A20
... .. A20

Supponendo di suonare a velocità tre l'esempio numero uno verrebbe
eseguito esattamente così: nel primo cinquantesimo di secondo viene
prodotta la frequenza corrispondente a B-1 con il sample numero 25
usando il volume di default di questo sample, nei due cinquantesimi
seguenti il volume viene decrementato di una unità ad ogni
cinquantesimo; nel frame successivo non viene eseguito alcun comando
durante il primo cinquantesimo, mentre durante i due cinquantesimi
seguenti il volume viene ancora decrementato di una unità. Dato che il
terzo frame è identico al secondo si ha alla fine una diminuzione di
volume di sei unità in tutto (a meno che nel frattempo il volume non sia
andato a zero).

Il secondo esempio è simile al primo, ma questa volta il volume viene
incrementato a passi di due unità, sicch‚ dopo il terzo frame esso è
aumentato di dodici unità, sempre che non abbia raggiunto prima il suo
valore massimo che è 64.

Se entrambi i nibble dell'infobyte sono diversi da zero allora c'è
qualcosa che non va e il comando potrebbe essere eseguito in maniera
diversa dai vari player di moduli in circolazione (parliamo di Amiga più
che di PC) a seconda che considerino per primo il nibble alto o quello
basso (se può interessarvi, Dr. Track si comporterà come il SoundTracker
originale).

Nella pratica questo comando viene spesso usato per realizzare
dissolvenze o entrate in cui il volume va pian piano crescendo fino a
raggiungere il valore desiderato (avrete sicuramente sentito questo
effetto applicato al rumore della folla nei dischi "live").

[DRT_JUMP]
* "B": Vai al pattern... ("Pattern jump")

Con questo comando è possibile alterare l'ordine di esecuzione dei
pattern (contenuto appunto nella "order list") forzando un "salto" ad un
determinato pattern.
L'infobyte contiene l'elemento dell'order con il quale si vuole
proseguire l'esecuzione. Attenzione, questo numero non è il numero di un
pattern, perché uno stesso pattern può essere usato più volte in un
brano e quindi la corrispondenza non sarebbe univoca, ma si riferisce
proprio ad un elemento dell'order.
Supponiamo di aver scritto la colonna sonora di un gioco nella quale i
pattern 1 e 2 costituiscono l'introduzione, e quindi vanno eseguiti solo
una volta, mentre i pattern 3, 4, 5 e 6 contengono la musica vera e
propria che va ripetuta ciclicamente. Il nostro order sarà allora
(scriviamolo in verticale):

00h 1
01h 2
02h 3
03h 4
04h 5
05h 6
06h 0

Per ottenere la ripetizione sarà sufficiente inserire il comando

B02

nell'ultimo frame del pattern 6, al che l'esecuzione riprenderà dalla
posizione 02h dell'order, e cioè dal pattern 3.
Per evitare problemi di temporizzazione il frame che contiene il
comando di salto viene eseguito completamente e solo al momento di
leggere il frame successivo si ha il "salto" vero e proprio.

[DRT_SETVOLUME]
* "C": Nuovo volume ("Set volume")

C'è poco da dire, permette di cambiare il valore corrente del volume
per un determinato canale ed ha effetto immediato.
L'infobyte contiene il valore a cui settare il volume, nel range da
00h a FFh (poich‚ in effetti il massimo volume è 40h valori superiori a
questo hanno lo stesso risultato).
Con l'uso ripetuto di questo comando si possono ottenere effetti di
"tremolo" cambiando continuamente il volume, come qui sotto:

C-2 01 C40
C-2 01 C10
C-2 01 C40
C-2 01 C10
ecc.

[DRT_BREAK]
* "D": Interrompi pattern ("Pattern break")

E' simile al comando "B" di salto, solo che in questo caso
l'esecuzione riprende dal successivo pattern nell'order. L'infobyte non
viene quindi preso in considerazione e può assumere qualsiasi valore
(quello consigliato comunque è 00h).
Può essere utile in pattern di introduzione che non devono essere
suonati interamente (per esempio un pattern potrebbe contenere solo i
rituali quattro colpi di bacchetta) oppure per regolare il tempo della
composizione, inteso nel senso di schema metrico-ritmico. Questo infatti
è uno dei punti deboli del metodo dei pattern: dato che essi sono divisi
in 64 frame, sembra di lavorare sempre su un tempo di 4/4 o 2/4 o
simili. E se invece volessimo scrivere un valzer, un bel 3/4? In tal
caso ci viene un aiuto il comando "D": inserendo per esempio un break
nel quarantottesimo frame di ogni pattern (ovvero nel frame numero 47)
il risultato finale sarà di lavorare con pattern di 48 frame, che
possono essere divisi in tre (sei) gruppi da 16 (8).

* "E": Controllo LED Amiga ("Set filter")

Ha effetto solo sull'Amiga dove controlla l'intensità di un led.
Viene direttamente sconsigliato anche dagli autori del SoundTracker (che
ce l'hanno messo a fare allora), ragion per cui non ce ne occupiamo.

[DRT_SETSPEED]
* "F": Nuova velocità ("Set speed")

Cambia la velocità di esecuzione. L'infobyte deve essere compreso tra
00h e 0Fh, ed in ogni caso solo la parte bassa è significativa.
Questo comando ha validità per l'intero song ed è sufficiente porlo in
una nota qualsiasi di un frame. Ripetizioni dello stesso comando su più
note dello stesso frame sono inutili e possono causare confusione.
Dato che abbiamo già parlato a lungo della velocità di esecuzione di
un brano passiamo immediatamente a qualcosa di nuovo, senza perdere
tempo prezioso.


4. L'ambiente di lavoro

E siamo giunti finalmente a vedere come si possono mettere in pratica
tutte le nozioni apprese fino ad ora. Con il Dr. Track, naturalmente.

4.1. Struttura del programma

Nel Dr. Track ci sono due ambienti principali: l'editor dei pattern e
l'editor dei sample. Tutte le funzioni del programma sono accessibili da
una di questi due ambienti oppure tramite apposite finestre che si
apriranno al momento opportuno.
Caratteristiche fisse sono la riga di copyright, che si trova in alto,
e la status-line, in basso, nella quale viene evidenziato lo stato in
cui si trova correntemente il programma e/o i principali comandi validi.
In moltissime situazioni è possibile ottenere una schermata di help che
fornisce i comandi possibili e le spiegazioni del caso, in altre tali
informazioni vengono fornite direttamente dalla status-line.
Come in quasi tutti i miei programmi non ci sono menu, e tutte le
funzioni sono accessibili premendo un tasto o una combinazione di tasti.
Dopo questa breve premessa cominciamo ad esplorare il programma
partendo proprio dall'ambiente principale, l'editor dei pattern.

4.2. Il "song editor"

La schermata principale del programma è divisa in tre finestre, dato
che ho la maniacale fissazione di "incorniciare" tutto ciò che sullo
schermo fa gruppo a s‚, ed è stilizzata nella figura qui sotto:

----------------------------------
| 3 | 1. pattern editor
----------------------------------
----------------------- -----
| | | | 2. order editor
| | | |
| 1 | | 2 |
| | | | 3. status window
| | | |
----------------------- -----

[DRT_EDITPATTERN]
4.2.1. Il "pattern editor"

Dato che un pattern è lungo 64 frame e che lo schermo contiene invece
solo 25 righe, è possibile visualizzare contemporaneamente solo una
parte dei frame di un pattern. Dr. Track ne visualizza 16 per volta, e
poich‚ i frame sono numerati da 0 a 63 questo numero viene mostrato in
corrispondenza di ogni frame per far capire quali dei 64 frame totali si
trovano effettivamente sul video.
A loro volta questi 16 frame sono divisi in quattro colonne, ognuna
corrispondente ad un diverso canale ("traccia"). Con i tasti cursore è
possibile muoversi all'interno di una traccia e spostarsi da una traccia
all'altra:

[Left] : sinistra
[Right] : destra
[Up] : frame precedente
[Down] : frame successivo
[PgUp] : pagina precedente
[PgDn] : pagina successiva
[^Left] : traccia precedente
[^Right] : traccia successiva
[^PgUp] : inizio pattern
[^PgDn] : fine pattern
[^Home] : inizio schermo
[^End] : fine schermo

[Ins] : inserisci nota
[Del] : cancella nota
[^Y] : azzera nota (equivalente a [Del] seguito da [Ins])
[^F1] : decrementa il valore del sample di default (anche [F9])
[^F2] : incremente il valore del sample di default (anche [F10])
[^F3] : decrementa velocità globale
[^F4] : incrementa velocità globale

[+] : pattern successivo
[-] : pattern precedente
[TAB] : "order editor"

Per immettere le note la tastiera viene considerata come se fosse
quella di un pianoforte (con molta, molta immaginazione...), con due
ottave disponibili:

1 2 5 6 7
q w e r t y u i
s d g h j
z x c v b n m ,

Poich‚ in totale ci sono tre ottave, la prima (zxc...) può essere
usata in combinazione con il tasto [Shift] per accedere alla terza.
Normalmente il tasto [z] corrisponde a C-2, [q] a C-3 e [Shift][z] a
C-1, ma è possibile cambiare ciclicamente questi valori premendo [^H].
L'ottava "base" corrente viene visualizzata nella finestra delle
informazioni.
Quando si immette una nota viene aggiornato anche il corrispondente
strumento, usando il corrente valore di default.

I sample ed i comandi vengono immessi semplicemente portando il
cursore nel corrispondente campo e scrivendo il valore desiderato. Il
cursore verrà automaticamente spostato nel campo dove il programma
ritiene sia più probabile il successivo input.

[DRT_EDITBLOCK]
Una utilissima possibilità consiste nel poter "marcare" blocchi di
note che potranno poi essere copiati, spostati o cancellati. A queste
funzioni si accede come al solito usando la tastiera in combinazione con
[Ctrl]:

[^B] : marca inizio/fine blocco di note
[^T] : marca una intera traccia
[^L] : marca inizio/fine blocco di frame
[^P] : marca l'intero pattern
[^U] : annulla l'effetto dei comandi precedenti ("unmark")
[^C] : copia blocco (modo "insert")
[^O] : copia blocco (modo "overwrite")
[^M] : muovi blocco
[^D] : cancella blocco

Il seguente gruppo di comandi ha effetto su tutte le note di un
blocco:

[^A] : aggiungi semitono
[^S] : sottrai semitono
[^V] : setta il campo sample al valore corrente
[^W] : azzera nota

Per esempio marcando un blocco ed usando [^A] tutte le note del blocco
vengono trasposte di un semitono verso l'alto (C-2 diventa C#2 e così
via).

[DRT_EDITMACRO]
Capita a volte di dover ripetere noiose sequenze di note o di comandi,
supponiamo per esempio di voler usare il comando "C" su tutte le note di
una traccia per creare una specie di effetto "tremolo":

C-2 01 C40
... .. C10
... .. C40
... .. C10
ecc.

Questa lunga operazione può essere eseguita in un attimo facendo uso
di "macro-comandi". Dr. Track è infatti in grado di memorizzare una
sequenza di tasti e di associarla poi ad un singolo tasto, premendo il
quale la sequenza "registrata" in precedenza viene riprodotta come se
l'utente la stesse nuovamente digitando sulla tastiera.
La registrazione viene attivata con [^R]: il programma vi chiederà a
quale tasto volete associare la "macro" (sono validi i dieci tasti
compresi tra [Alt][0] e [Alt][9]) e se non uscite con [ESC] la
registrazione ha inizio, segnalata da un apposito messaggio nella
finestra informazioni.
Il processo termina quando il buffer è pieno oppure premendo ancora
[^R], in entrambi i casi l'indicazione "Macro: Rec" scompare dallo
schermo e la macro è pronta per essere utilizzata.
Le macro sono attive solo dentro il "pattern editor". Passando nel
"sample editor" o usando altre funzioni ("line editor", ecc.) esse
vengono "sospese" e ripristinate quando si ritorna all'editor dei
pattern.
Oltre all'esempio precedente sono molti i casi in cui le macro tornano
comode, ed il loro utilizzo permette di risparmiare veramente molto
tempo.

In aggiunta alla possibilità di muoversi nel pattern usando i tasti
cursore, appositi comandi permettono di velocizzare al massimo
l'inserimento delle note:

[Alt][F1] : salta al frame 00
[Alt][F2] : salta al frame 16
[Alt][F3] : salta al frame 32
[Alt][F4] : salta al frame 48

[^F5] : autojump a 1
[^F6] : autojump a 2
[^F7] : autojump a 4
[^F8] : autojump a 8
[^J] : attiva/disattiva autojump

Quando si inserisce una nota, il cursore viene posizionato
automaticamente nel campo nota del frame seguente, allo scopo di
permettere l'inserimento di una sequenza di note senza dover togliere le
mani dalla tastiera per usare i tasti cursore. Questa caratteristica
viene chiamata "autojump". Dato che il valore del "salto" non è fisso,
la funzione torna utile anche per note che durano più di un frame, e
comunque può essere disattivata con [^J].

Premendo [TAB] si accede all'"order editor", che andiamo ad esaminare.

[DRT_EDITORDER]
4.2.2. L'"order editor"

Abbiamo già visto cos'è l'"order list" e come funziona, in breve essa
contiene la sequenza dei pattern da suonare.
Al solito, i tasti cursore permettono di muoversi all'interno della
lista:

[Up] : entrata precedente
[Down] : entrata successiva
[PgUp] : pagina precedente
[PgDn] : pagina successiva
[Home] : cerca il primo pattern nullo (verso l'inizio)
[End] : cerca il primo pattern nullo (verso la fine)
[^PgUp] : inizio lista
[^PgDn] : fine lista

[TAB] : "pattern editor"
[ENTER] : edita il pattern nella posizione corrente della lista

Una lista vuota si presenta come segue:

------------
| 00 | ..0 |
| 01 | ..0 |
| 02 | ..0 |
| 03 | ..0 |
: | :
| 7D | ..0 |
| 7E | ..0 |
| 7F | ..0 |
------------

La prima colonna individua gli elementi della lista, numerati da 00h a
7Fh (127 in decimale), mentre la seconda contiene i numeri dei pattern
da suonare.
I pattern sono numerati da 1 a 64, ed il pattern 0 viene usato per
indicare la fine della lista.

L'inserimento dei pattern da eseguire avviene semplicemente
posizionandosi su un elemento della lista e scrivendo il numero del
pattern da eseguire in quella posizione.
Dopo ogni input Dr. Track posiziona il cursore sulla successiva
entrata, in una posizione scelta secondo un criterio "probabilistico".
Se la scelta operata dal programma non coincide con la vostra potete
comunque usare i tasti [Left] e [Right], oltre a quelli visti in
precedenza, per portare il cursore in qualsiasi punto della lista.

Premendo [TAB] si ritorna all'editor dei pattern nel punto esatto in
cui lo si era lasciato, mentre uscendo con [ENTER] verrà selezionato il
pattern su cui si trova il cursore nella lista.

[DRT_PLAYER]
4.2.3. Il "player"

In fase di editing è molto utile sentire immediatamente le singole
note, perché ciò permette di accorgersi subito di eventuali errori nella
scelta del sample o della nota stessa. Questa funzione prende il nome di
"editsound" e può essere abilitata o disabilitata a piacere premendo
[Ctrl][E].
Dato che a volte ci sono sample che vanno avanti all'infinito e la
cosa a lungo andare dà un po' fastidio, si puo far tacere la nota
corrente premendo [^K] o [\] ("backslash").
Infine con [Space] si suona la nota su cui si trova il cursore.

La riproduzione di un pattern o di un intero song viene invece
attivata con [Alt][P]. Se ci si trova nell'editor dei pattern viene
eseguito il pattern corrente, mentre premendo [Alt][P] nell'order editor
verrà suonato l'intero song a partire dalla posizione su cui si trova il
cursore fino ad incontrare un pattern nullo.

A fini di "debugging" si può far stare zitto un canale qualsiasi
premendo i tasti da [F5] a [F8]: il canale viene messo a tacere ma viene
comunque tenuto in sincronia con gli altri (i suoi dati vengono cioè
calcolati, ma riprodotti a volume zero).

I tasti [F3] e [F4] permettono di decrementare e incrementare il
volume di riproduzione, mentre in fase di riproduzione [Alt][F]
effettua una dissolvenza portando il volume a zero.

In fase di "playing" nello schermo si attivano diversi indicatori.
All'interno del pattern in esecuzione viene evidenziato il frame
corrente mediante una apposita barra, mentre un'altra barra individua
tale pattern all'interno della order list. Inoltre si accendono quattro
file di "led", una per ogni canale, che mostrano il volume delle
corrispondenti traccie. Il volume evidenziato non è il volume reale, ma
una sua approssimazione calcolata in base alle note eseguite e al volume
ad esse associato. Lo scopo non è tanto estetico, quanto quello di far
vedere, visto che sulla SoundBlaster che è mono non si possono far
sentire, gli effetti di stereofonia presenti in molti moduli scritti su
Amiga.
Infine la finestra informazioni viene anch'essa aggiornata in tempo
reale mostrando il numero del pattern in esecuzione e la velocità del
brano.
Voglio ancora spendere due parole sulla barra che mostra il frame
corrente. In programmi di questo tipo è consuetudine tenere fissa questa
barra e far scrollare l'intero pattern: dopo aver fatto qualche prova mi
sono reso conto che seguire lo svolgimento del brano, già difficile a
velocità sei, diventa impossibile a velocità inferiori. Per evitare
dunque inutili mal di testa ho preferito tenere fisso il pattern e far
muovere la barra, e dopo aver usato per un po' di tempo il programma mi
sono convinto che questa scelta raggiunge effettivamente lo scopo
prefisso, tanto più che passando in modalità EGA a 43 linee (50 linee
per la VGA) si hanno sul video 32 frame per volta, mezzo pattern!

[DRT_RECORDING]
4.2.4. Registrando in tempo reale...

Suonare "sopra" un song e registrare le note prodotte è facilissimo.
Basta infatti portare una traccia in modo "Rec" e far partire il player:
tutte le note immesse da tastiera saranno registrate su quella traccia
in tempo reale. Oh, beh, non è tanto "reale" dopotutto! Ho fatto tutto
il possibile per mantenere input e output in "sincronia", ma la
perfezione in questo caso non si può raggiungere perché i dati per
l'output devono essere calcolati PRIMA di mandarli alla SoundBlaster,
per cui se suonate insieme alle note è già troppo tardi. Lo sfasamento è
comunque minimo e con un po' di pratica diventa facile mettere tutte le
note al posto giusto.
La selezione della traccia per l'input avviene premendo [F5]..[F8]
insieme al tasto [Alt], dunque [Alt][F5] seleziona la prima traccia e
[Alt][F8] l'ultima. Sulla traccia scelta si accende in rosso la scritta
"Rec" per confermare l'input, per disattivare il modo "record" basta
premere ancora [Alt][F5]..[Alt][F8] a seconda del canale correntemente
in "Rec".
Notate che anche se avete disattivato prima uno o più canali con
[F5]..[F8], quando un canale si trova in modo "Rec" viene
automaticamente riattivato.
Al momento in cui sto scrivendo queste righe non sono ancora riuscito
a far funzionare la MIDI insieme al DAC, la cosa mi rattrista ma ormai
le ho provate quasi tutte e comincio a rassegnarmi... ma quanto sarebbe
stato bello poter usare una tastiera con i suoni campionati!

[DRT_IO]
4.2.5. Input e output

I comandi fondamentali sono cinque:

[Alt-L] : legge un modulo o un song da disco
[Alt-M] : costruisce un modulo (compatibile SoundTracker 2.5)
[Alt-R] : legge un singolo pattern da disco
[Alt-S] : salva i pattern in formato "song"
[Alt-W] : salva un singolo pattern

Con [Alt-L] (cioè [Alt][L]) è possibile caricare da disco un song,
in formato Dr. Track, oppure un modulo in formato SoundTracker fino alla
versione 2.5. Il programma è in grado di riconoscere da solo la
differenza tra un song e un modulo, nonch‚ tra le varie versioni di
moduli (quelli "vecchi" per esempio contengono al massimo 15 sample,
quelli "nuovi" 31). Anche i moduli prodotti su Amiga col NoiseTracker
dovrebbero essere letti correttamente (l'estensione standard è .NST, ma
in giro se ne trovano parecchi, riconoscibili a volte per un bug
presente nel NT nella gestione dei sample in formato IFF, rinominati in
.MOD), anche se il NT estende l'insieme dei comandi del SoundTracker
aggiungendone due ("volume portamento" e "volume vibrato") che per la
totale assenza di materiale su cui lavorare non sono stati implementati
in Dr. Track.
Versioni del SoundTracker superiori alla 2.5 salvano i dati in un
formato completamente diverso, orientato alla traccia piuttosto che al
singolo pattern, e non sono direttamente supportate dal programma. E'
naturalmente possibile convertire i moduli da un formato all'altro, però
dal ST 2.6 in su i sample possono essere lunghi fino a 128K (eventualità
rara, d'accordo, ma non da escludere) mentre il Dr. Track supporta
sample di al massimo 64K. Per questo motivo ho preferito non includere
direttamente nel programma la routine di conversione, che avrebbe
sprecato memoria per essere usata pochissimo senza nemmeno garantire al
100% il risultato (!): essa sarà rilasciata eventualmente come utility
da lanciare al prompt del DOS.

Su [Alt-M] c'è poco da dire: i pattern, l'order list e i sample
presenti in memoria vengono "fusi" insieme producendo un modulo in
formato SoundTracker 2.5 (a 31 strumenti). Nella versione "demo" del
programma invece si apre una bella finestrella in cui si rammenta
appunto che, essendo un "demo", il programma non salva i moduli (e
nemmeno i song).

Dato che a volte può essere utile trasferire dei pattern da un modulo
ad un altro, oppure tenere da parte qualche pattern da riusare, Dr.
Track permette di salvare su disco anche un singolo pattern (e
naturalmente di rileggerlo). I tasti per queste funzioni sono [Alt][R]
(legge un pattern da disco sostituendolo al pattern corrente) e [Alt][W]
(salva il pattern corrente su disco). Oltretutto questo è l'unico modo,
nella versione demo, di dare "persistenza" ai propri pattern (metodo non
consigliato, meglio registrarsi...).

Infine con [Alt][S] è possibile salvare tutte le informazioni relative
alla propria composizione (pattern, order, nome, ecc.) in formato
"song". In questo formato i pattern vengono compressi per occupare meno
spazio ed i sample non sono direttamente salvati su disco, essi devono
invece essere salvati (UNA volta basta, se si fanno le cose per bene)
con l'apposito comando del "sample editor".
Dato che l'argomento "sample" è piuttosto importante ed è legato anche
col discorso sui moduli e sui song ce ne occupiamo in un apposito
paragrafo.

E' importante ricordare che il programma non può n‚ decidere da solo
quali pattern salvare (troppo tempo) n‚ salvare tutti i pattern (troppo
spazio), quindi bisogna dirglielo. Come? Semplice, per mezzo della
order list. Al momento di salvare un modulo o un song Dr. Track esamina
la order list e salva tutti i pattern fino a quello col valore più alto.
Se per esempio la lista contiene i pattern 1, 2, 3 e 8 il programma
salverà TUTTI i pattern da 1 a 8. Questo comportamento non è forse il
migliore che si possa avere, ma come al solito si tratta di una
"eredità" del SoundTracker.
Se l'order list è vuota salvare un modulo provoca un errore con
relativo messaggio, mentre è permesso salvare song senza pattern perché
ciò è utile a volte per salvare liste di sample (appunto ciò che resta
di un song senza pattern).

[DRT_SONG]
4.2.6. "Sample and song"

Dicevamo che in un song i dati relativi ai sample non vengono salvati,
al loro posto vengono invece salvati i NOMI dei corrispondenti file.
Almeno questo avviene su Amiga, ma c'è qualche problema...
Nel sistema operativo standard di Amiga i nomi possono essere lunghi
fino a 22 caratteri, possono contenere molti caratteri "strani" e
lettere maiuscole e minuscole. In DOS abbiamo 8 miseri caratteri per il
nome più 3 di estensione, sempre in maiuscolo, e qualche restrizione sui
possibili caratteri da usare.
Chiaramente 22 caratteri possono bastare per descrivere un sample in
maniera abbastanza esauriente. In genere le prime lettere sono qualcosa
del tipo "ST-xx: " dove "xx" sta per un numero da 01 a 99, e individuano
il disco su cui si trova il file desiderato. Il nome quindi serve sia
per identificare il file, sia per descrivere il tipo di suono in esso
contenuto, ad esempio "ST-60: ClosedHiHat".
In DOS le cose cambiano e poich‚ i 22 caratteri di cui sopra vanno
anche a finire nei moduli non se ne può proprio fare a meno e bisogna
salvarli da qualche parte per poterli recuperare al momento giusto. Il
nome del file però, a questo punto, va gestito in un'altra maniera.

Una possibile soluzione consiste nel costruire un indice per i sample:
il nome da 22 caratteri individua un elemento all'interno di un
database, e tale elemento contiene poi le informazioni necessarie per
risalire al file. L'enorme svantaggio di questo sistema sta nel fatto
che non è più possibile gestire direttamente i file da DOS, in quanto
per spostare un file bisogna contemporaneamente aggiornare l'indice:
bisogna cioè usare un apposito programma.

La soluzione adottata in Dr. Track utilizza invece un approccio
completamente diverso al problema. Il nome originale di un sample viene
salvato insieme agli altri dati (volume, ecc.) e non va a finire nel
song, al suo posto viene usato invece il PATH del file che contiene i
dati di cui sopra.

Facciamo qualche esempio per vedere meglio come funzionano le cose e
come bisognerebbe organizzare la propria libreria di strumenti.
Iniziamo proprio dal sample precedente, "ST-60: ClosedHiHat". Tolta la
stringa "ST-60: ", che non ci interessa, rimane "ClosedHiHat", ovvero un
nome lungo 11 caratteri. Verrebbe quasi voglia di salvare il file come
CLOSEDHI.HAT ma un esame più accurato rivela che non si tratta di una
idea molto buona, è assai meglio classificare i propri sample usando per
ognuno di essi una stessa estensione, che in Dr. Track è per default
".SMP".
Ci sono rimasti dunque solo i primi otto caratteri del nome, troppo
pochi! E qui bisogna cominciare il vero e proprio lavoro di
"classificazione". A che "classe" di strumenti appartiene un
"ClosedHiHat"? Dato che si tratta di parte di una normale batteria
potremmo per esempio classificarlo sotto la voce "BATTERIA", oppure
"DRUMS". E dato che nelle centinaia di moduli disponibili nel circuito
PD si trovano decine di "piatti", aperti, chiusi, ecc. possiamo magari
voler creare una apposita sottoclasse di "DRUMS" e chiamarla "HIHAT".
Ora non c'è più bisogno di tenere "HiHat" nel nome del file, dato che
il nome della classe di appartenenza individua già chiaramente questo
tipo di strumento, potremmo chiamare il file semplicemente "Closed". O
anche "C", usando "C" per "Closed" e "O" per "Open". I caratteri
rimanenti possono allora essere usati per fornire ulteriori indicazioni:
"C_good", "O_soft", "Closed_2", "Closed_3", ecc.
Ma dove vanno a finire i nomi delle classi? Semplice! Le nostre classi
infatti non sono altro che sottodirectory di un disco! Supponendo di
aver usato l'unità A: per la libreria dei sample avremmo dunque che
"ClosedHiHat" corrisponde al file A:\DRUMS\HIHAT\CLOSED.SMP. E' proprio
questo path che va a finire nei song, esso individua univocamente un
file all'interno di un certo disco, è sufficientemente descrittivo e può
essere tranquillamente gestito in ambiente DOS.
Ancora un esempio, stavolta "operativo", sui sample. Supponiamo di
aver creato la seguente libreria:

A:\
DRUMS\
HIHAT\
CLOSED.SMP
CLOSED_2.SMP
OPEN.SMP
OPEN_2.SMP
BASSDRUM\
SOFT.SMP
HARD.SMP
SNARE\
SOFT.SMP
HARD.SMP
VERYHARD.SMP
PERCO\
BONGO.SMP
TOM.SMP
CLAPS.SMP
GUITARS\
ELECTRIC.SMP
HARDROCK.SMP
CLASSIC.SMP

Prima di creare un song scegliamo gli strumenti, diciamo che ci serve
un "SoftBassDrum" ed un "SoftSnareDrum" per la batteria, ed una
"Electric Guitar" per il canto.
Dopo aver letto i corrispondenti file da disco, Dr. Track memorizza
anche la relativa directory, ovvero come si è detto il loro path
completo, avremo cioè:

A:\DRUMS\BASSDRUM\SOFT.SMP
A:\SNARE\SOFT.SMP
A:\GUITARS\ELECTRIC.SMP

I loro nomi "originali", quelli che andranno a finire in un eventuale
modulo, sono contenuti all'interno di questi file, così come le
informazioni relative al volume, al repeat start, al repeat length ed i
dati stessi del sample.

Adesso scriviamo qualche nota e salviamo il tutto in formato "song",
dopo di che togliamo il floppy dal drive A: e rileggiamo il song da
disco. Dopo aver inutilmente provato a leggere dall'unità A: Dr. Track
proporrà un messaggio del tipo:

Il sample A:\DRUMS\BASSDRUM\SOFT.SMP non è stato trovato.
Premere ENTER per riprovare o "S" per "saltare" questo file.

Anche se avevate messo il floppy nel cassetto da chissà quanto tempo
non sarà difficile per voi ritrovarlo se sull'etichetta sono presenti i
nomi perlomeno delle directory principali. Inserendo il floppy e
premendo ENTER la lettura procede quindi normalmente e dopo aver
caricato i pattern vi ritroverete nella stessa situazione del momento in
cui avete salvato il song.

Adesso però vi è venuta voglia di riclassificare i "BASSDRUM" e per
qualche motivo SOFT.SMP è diventato SOFT_1.SMP. Se caricate il sample
singolarmente non c'è alcun problema per il suo uso successivo, dal
momento che il path diventa automaticamente

A:\DRUMS\BASSDRUM\SOFT_1.SMP

(questo comportamento è il nocciolo della questione), ma se tentate di
rileggere il song di prima ottereste lo stesso messaggio senza la
possibilità di fornire al programma il file corretto. In questo caso
niente paura, "S"altate il file e dopo che il programma ha letto il
resto caricate il sample al posto giusto. Dal prossimo [Alt][S] le cose
ricominceranno a funzionare come si deve!

Naturalmente nessuno vi obbliga a crearvi delle librerie su floppy,
potete benissimo usare il vostro hard-disk oppure, in fase di sviluppo,
salvare i sample in una directory di default. In questa directory
generalmente è inutile classificare i sample, perché difficilmente
si hanno conflitti di nome, ed il principale motivo della sua presenza
sta nel fatto che in questo modo è possibile tenere su hard-disk tutti i
sample correntemente usati senza doverli caricare da floppy ogni volta e
senza dover creare delle librerie sul vostro disco rigido dove lo spazio
è sempre troppo poco (se avete un HD da 120 Mb create pure tutte le
librerie che volete, il mio però è da 20 Mb e allo spazio sono costretto
a starci attento...).

Un'ultima osservazione importante: per motivi di spazio la directory
cui appartiene un sample non può essere più lunga di 32 caratteri. Non
si tratta di una grande limitazione, se si pensa che tra directory e
nome ci sono ben 44 caratteri disponibili per individuare un file, ma
bisogna comunque tenerne conto perché nomi più lunghi del lecito vengono
ricondotti alla "normalità", con conseguente perdita di informazioni.

[DRT_SAMPLELIB]
4.2.7. Librerie di sample

Oltre al metodo precedente, c'è un altro modo per individuare le
directory che contengono i sample. Più precisamente è possibile
assegnare un nome ad una certa directory, ed accedervi tramite il nome
scelto.
Per esempio possiamo assegnare il nome "Bassi elettrici" alla
directory C:\DRT\SAMPLES\ELECBASS e usare poi il nuovo nome sia per
caricare dei sample dal "sample editor", sia nei song, usando il
carattere "=" come prefisso.

Nel sample editor è possibile selezionare una libreria premendo
[Alt][B], nel qual caso la selezione del file avverrà poi direttamente
dalla directory corrispondente alla libreria scelta.
Il comando [Alt][B] è attivo anche in fase di edit della directory di
un sample: in questo caso il nome della libreria scelta, preceduto dal
carattere "=", verrà scritto al posto della directory e interpretato
successivamente in caso di lettura di un song (es. "=Bassi elettrici").

Questo nuovo meccanismo aumenta notevolmente l'elasticità del formato
song, anche perché configurare la propria libreria è semplicissimo.
Basta infatti munirsi di un normale editor ASCII ed editare il file
DRT.LIB (eventualmente creandolo se non esiste) scrivendo su ogni riga
il nome della directory e, separato da almeno uno spazio, il nome ad
essa associato. Un esempio potrebbe essere:

;***
;*** Esempio di DRT.LIB
;***
c:\drt\samples Default
c:\drt\samples\synth Tappeti synth
d:\perco Percussioni, batterie

e così via, facile no?
Come avrete notato il carattere ";" indica che la corrispondente riga
contiene un commento: in questo caso la riga viene semplicemente
ignorata e il programma passa immediatamente ad esaminare la successiva.
Non c'è limite al numero di elementi che la lista può contenere,
tranne quello imposto dalla RAM disponibile, così come non c'è limite
per la lunghezza della directory (a dire il vero deve essere lunga al
massimo 255 caratteri, ma il DOS si ferma molto prima). I corrispondenti
nomi, invece, possono essere lunghi al massimo 31 caratteri, in modo da
poter mantenere la compatibilità con i formati DTS e SMP adottati nelle
precedenti versioni del programma.

[DRT_EDITMISC]
4.2.7. Altri comandi...

C'è qualche funzione rimasta esclusa dai paragrafi precedenti: per non
far torto a nessuno ne parliamo ora.

[Alt-C] : cancella i pattern dalla memoria
[Alt-D] : mostra una finestra con alcune informazioni
[Alt-E] : commuta il modo a 43/50 linee su scheda EGA/VGA
[Alt-I] : attiva l'editor dei sample
[Alt-O] : shell al DOS
[Alt-V] : controllo mixer (solo SoundBlaster Pro)
[Alt-X] : esce dal programma

[^N] : cambia il nome del song (cioè il titolo)
[^F] : cambia il nome del file su cui si sta lavorando

A proposito di [Alt][C] c'è da dire che vengono cancellati tutti i
pattern presenti in memoria, l'order list ed in genere tutti i dati
riguardanti il song (titolo, velocità, ecc.), ma non i sample. Questi
devono essere eventualmente cancellati con un apposito comando nel
"sample editor".

Con [Alt][E], se si possiede una scheda EGA o VGA, viene selezionato
il modo testo con 43 (EGA) o 50 (VGA) linee. Si tratta di una modalità
video veramente utile perché permette di avere su video una grande
quantità di informazioni, per esempio nel caso della VGA il sample
editor sarà in grado di mostrare la lista completa dei 31 strumenti (24
in EGA, 12 nel modo standard a 25 linee). Inoltre in modo VGA 50 linee i
nomi abbreviati (15 caratteri) dei primi 28 sample vengono visualizzati
nel pattern editor, in modo da permettere una selezione più agevole
degli strumenti.

[Alt][O] permette di uscire temporaneamente al DOS per lanciare magari
qualche altro programmino. Tutti i dati vengono mantenuti in memoria,
quindi la memoria disponibile nello shell è variabile ed è massima
quando non ci sono sample caricati. E' possibile "shellare" anche in
fase di riproduzione, con la musica in background. In questo caso
ovviamente il PC risulta un po' rallentato, inoltre dato che comunque
l'esecuzione avviene in background possono esserci problemi con:

- programmi che usano il DAC della SoundBlaster (da non usare);
- programmi che portano spesso la CPU in modo protetto o virtuale
(386), come Windows 3.x o alcuni gestori di memoria (EMM386, QEMM,
ecc.);
- programmi che usano pesantemente l'interrupt del timer di sistema per
i loro scopi.

I maggiori problemi si riscontrano di solito con CPU di tipo 386 o
486, perché in genere su questo tipo di macchine vengono istallati
particolari device driver di gestione della memoria che portano spesso
la CPU in modo protetto: in questi casi il suono può risultare distorto
a causa del non perfetto funzionamento dell'IRQ usato per il clock.

Se avete una SoundBlaster Pro [Alt][V] vi permette di controllare
alcuni importanti parametri: il volume di riproduzione, il filtro
passa-basso in uscita e il modo stereo. Per cambiare volume basta usare
i tasti cursore [Up], [Down], [Home] ed [End] o direttamente i tasti da
[0] a [7]. I tasti [Tab], [Left] o [Right] servono invece per
selezionare il volume "master" (che agisce globalmente su tutta la
scheda) o "DAC" (solo sul DAC). Premendo [F] si può attivare o
disattivare il filtro in uscita mentre con [S] si passa dal modo stereo
a quello mono e viceversa. Osservate che il modo mono ottenuto in questo
modo ha qualità decisamente superiore a quello che può ottenere una
SoundBlaster "normale".
Nota: potrete forse osservare che attivando o disattivando il filtro i
canali destro e sinistro del DAC si invertono. Si tratta di un curioso
comportamento della SoundBlaster Pro che ancora non riesco a spiegare...

Il titolo del song o del modulo ed il nome del corrispondente file
possono essere editati con [^N] e [^F] rispettivamente, niente di
particolare da dire a riguardo, dato che nel prossimo paragrafo si
parlerà proprio del funzionamento dell'editor di linea.

[DRT_EDITLINE]
4.3. Il "line editor"

Quanti editor ci sono! L'editor di linea non possiede una propria
posizione fissa sullo schermo e viene richiamato ogni volta che ci sia
da inserire o modificare una stringa di caratteri, per esempio il nome
di un file o il titolo del song.
Il suo funzionamento è piuttosto intuitivo e richiede solo qualche
parola per spiegare alcune funzioni "nascoste". Infatti non solo è
possibile usare come di consueto i normali tasti di edit ([Left],
[Right], [Home], [End], [Del], [BackSpace], ecc.) ma anche qualche
comando aggiuntivo:

[^Left] : sposta il cursore sulla parola a sinistra
[^Right] : sposta il cursore sulla parola a destra
[^Home] : cancella tutti i caratteri a sinistra del cursore
[^End] : cancella tutti i caratteri dal cursore in poi

Quando viene attivato su una stringa esistente il line editor provvede
a stamparla in reverse per avvertire l'utente: a questo punto la
pressione di un carattere valido, per es. una lettera, cancella la
stringa corrente e inizia l'inserimento di una nuova stringa, mentre la
pressione di un tasto di "edit", per es. un tasto cursore, permette di
modificare la stringa esistente.

Premendo [ESC] l'operazione viene annullata (la stringa riassume il
valore originario), mentre premendo [ENTER] si conferma l'input e la
stringa assume il nuovo valore. In entrambi i casi, naturalmente, si
esce dall'editor di linea tornando al punto esatto dal quale lo si era
attivato.

[DRT_EDITSAMPLE]
4.4. Il "sample editor"

La gestione dei sample viene realizzata in maniera semplice ed
interattiva per mezzo dell'editor dei sample, accessibile con [Alt][I]
dal pattern editor.
Lo schermo si divide in due finestre, come mostrato in figura.

-------------------------
| | 1. finestra di edit
| 1 |
-------------------------
-----------------
| |
| 2 | 2. finestra di selezione
| |
-----------------

Nella finestra 2 viene presentata la lista dei sample presenti in
memoria con associato il corrispondente numero da utilizzare nel pattern
editor, è possibile muoversi a piacere nella lista con i tasti cursore,
cancellare, sostituire o salvare qualsiasi sample:

[Alt-A] : salva tutti i sample
[Alt-C] : cancella la lista (rimuove i sample dalla memoria)
[Alt-E] : commuta il modo a 43/50 linee su scheda EGA/VGA
[Alt-L] : legge un sample da disco
[Alt-O] : shell al DOS
[Alt-S] : salva un sample su disco

I parametri del sample correntemente selezionato possono essere
modificati nella apposita finestra 1, alla quale si accede premendo
[ENTER] o [TAB]. Notate che nel caso cerchiate di editare un sample
"vuoto" viene attivata automaticamente la finestra di "load", cioè il
programma si comporta come se aveste premuto [Alt][L].

In fase di edit di un sample è possibile spostarsi tra i vari campi
utilizzando i tasti cursore [Up] e [Down]: il campo selezionato viene
stampato in reverse per segnalare che può essere modificato. Nel caso si
tratti di un campo "alfanumerico", vale a dire una stringa di caratteri,
viene attivato l'editor di linea, mentre se è un campo numerico si può
modificare con i seguenti tasti:

[Left] o [-] : decrementa
[Right] o [+] : incrementa
[^Left] : decremento rapido
[^Right] : incremento rapido
[Home] : minimo valore
[End] : massimo valore

Sia nella finestra di selezione che in quella di edit (a meno di non
stare usando il "line editor") i sample possono essere ascoltati usando
la tastiera con le stesse modalità viste in precedenza, con l'eccezione
che premendo la barra spaziatrice si interrompe un eventuale suono
attivo. Inoltre i cambiamenti operati sui campi numerici hanno effetto
immediato sull'eventuale sample in esecuzione, vale a dire che potete
sentire in tempo reale i risultati delle modifiche effettuate.
Implementare questa funzione mi è costato un po' di fatica ma nel caso
di parametri "critici", come il "repeat start" e il "repeat length" (ve
li ricordate ancora?), si dimostra veramente impagabile.

Per questa volta la faccio breve e chiudo senza ulteriori commenti il
paragrafo, del resto se non vi ricordate tutto c'è sempre l'help pronto
a darvi una mano...

[DRT_DIRS]
4.5. Le directory di Dr. Track

Gli eseguibili, il file di help e quello di configurazione dovrebbero
essere posti tutti nella stessa directory. Il programma infatti
cerca questi file nella stessa directory da cui è stato lanciato e se
non li trova non può rendere attive alcune funzioni.
La "song directory" contiene per l'appunto i song, i moduli ed i
pattern salvati dal programma. Essa viene usata come default per la
lettura e scrittura di questi "oggetti".
La "sample directory" è invece la directory di default per i sample.
Essa generalmente si trova su hard-disk e viene usata per tenervi gli
strumenti usati temporaneamente mentre si compone un song.

In altre parole, l'I/O del pattern editor si svolge attraverso la
"song directory", mentre quello del "sample editor" mediante la "sample
directory".

[DRT_CMDLINE]
4.6. I parametri della command line

Per default Dr. Track permette di lavorare con un massimo di 64
pattern diversi, che è il limite imposto dal SoundTracker, però ne può
gestire in effetti fino a 128. Questa possibilità non dovrebbe essere
mai usata se si intende portare i propri lavori su Amiga, e viene
fornita come un "plus" che non è realmente dovuto ad esigenze pratiche.
Per attivare i modi alternativi di funzionamento bisogna lanciare il
programma specificando lo switch /L.
Tenete presente che allocare i pattern aggiuntivi ha un certo costo in
termini di memoria, circa 1K per pattern, e diminuisce quindi la memoria
disponibile durante uno shell e per il caricamento dei sample.

Per partire direttamente in modo 43/50 linee, con una EGA o una VGA,
si può usare lo switch /E.

Con /R si attiva il modo "relaxed" nel controllo dei moduli in input,
il che permette di leggere alcuni moduli che altrimenti non verrebbero
riconosciuti. Questo switch è da usare solo per caricare file che sono
sicuramente moduli, altrimenti potrebbero accadere effetti collaterali
imprevedibili, compreso l'"inchiodarsi" del sistema.

Lo switch /X si permette al programma di usare (se presente) la
memoria espansa, il che fa risparmiare qualche Kbyte di memoria
convenzionale che torna sempre comodo.

Si può attivare o disattivare l'uso della grafica mediante i parametri
/G+ e /G-. La grafica è attiva per default e comunque solo con schede
VGA o compatibili.

Effettuando una shell al DOS il prompt dei comandi viene modificato
inserendo all'inizio i caratteri "[DRT] ". Questa opzione può essere
attivata o disattivata a piacere con /D+ o /D-. Il default è /D+.

I comandi /P- e /P+, infine, permettono rispettivamente di escludere o
forzare l'uso della SoundBlaster Pro, in caso ci fossero problemi con la
routine di auto-detect.

Riassumendo la sintassi della command line è:

DRT [/L] [/E] [/R] [/X] [/P[-|+]] [/G[-|+]] [/D[+|-]]

Una breve schermata di help può essere richiamata con /? o /H, inoltre
quasi tutti gli switch sono preselezionabili utilizzando l'apposito
programma di configurazione.

4.7. La finestra di selezione file

Questa finestra si apre ogni volta che si deve caricare un file (song,
modulo, sample o pattern) da disco. Il suo uso è piuttosto intuitivo
perciò ne parliamo brevemente mettendo in risalto le caratteristiche più
"nascoste".
Il menu "Directory" mostra la lista delle directory e delle unità
selezionabili, per attivarne una basta posizionarci sopra la barra con
i tasti cursore e premere [Enter].
Il menu "File" permette di effettuare la vera e propria selezione del
file, con le stesse modalità del menu precedente.
Oltre ai tasti cursore è possibile selezionare velocemente un nome
premendo il tasto corrispondente al carattere iniziale, continuando a
premere lo stesso tasto la barra si sposterà sopra tutti i nomi che
iniziano per quel carattere.
Per passare dal menu "File" a quello "Directory" e viceversa si usa
semplicemente [Tab].
Premendo [Alt-M] è possibile scegliere la "maschera" su cui si basa la
lista dei file. E' possibile utilizzare più di una maschera usando la
virgola come separatore. Per esempio:

*.MOD seleziona tutti i file con estensione MOD
*.MOD,*.DTS seleziona tutti i file con estensione MOD o DTS

In effetti la maschera "standard" per l'editor dei pattern è

*.MOD,*.NST,*.DTS

che permette di caricare un modulo SoundTracker o NoiseTracker oppure un
"song" creato con Dr. Track (dopo la selezione il programma provvede
automaticamente a riconoscere il tipo di file, qualunque sia il suo nome
o la sua estensione).

Quando bisogna scegliere un sample è disponibile il comando ausiliario
[Alt-I] che commuta tra la lista di default (nome, dimensione, data) ed
una in cui vengono visualizzati i nomi originali dei sample. Dato che
queste informazioni vengono lette dentro i sample stessi, operazione non
velocissima, è meglio attivare la lista estesa solo quando si lavora su
HD e disattivarla in caso di lettura da floppy.

4.8. Supporto grafico

Dr. Track lavora esclusivamente in modo testo, però con un piccolo
trucco è stato possibile utilizzare una limitata parte dello schermo in
modo grafico (versione 1.40 o superiore, solo VGA).
Questa finestra viene attualmente utilizzata in fase di riproduzione
per visualizzare in tempo reale la forma d'onda inviata in uscita e, nel
"sample editor", per disegnare il sample corrente.
Poich‚ l'utilizzo del video BIOS è risultato impossibile per motivi di
velocità, ho dovuto riscrivere in modo ottimizzato la routine che
aggiorna la finestra grafica. Solo i registri standard della VGA vengono
utilizzati, ma se ci dovessero essere problemi la grafica può essere
disabilitata con l'opzione /G- sulla command line.

[DRT_TIPS]
5. L'arte del "modulo"

Per scrivere dei moduli non è indispensabile saper suonare uno
strumento o "conoscere la musica", però il fatto di non partire da
"zero" costituisce indubbiamente un vantaggio. Ma per scrivere buoni
moduli ci vuole soprattutto l'esperienza acquisita lavorando per conto
proprio e "studiando" le composizioni altrui.
Dato che un discorso sulla teoria musicale va oltre lo scopo di questo
documento vedremo invece qualche "trucco" che, oltre a poter sempre
servire in pratica, illustra a dovere lo spirito dei moduli: "non dire
che quattro voci sono poche finch‚ non le hai sfruttate al massimo".

5.1. Il "tremolo"

L'abbiamo già incontrato in qualche esempio, ma dato che questo
capitolo è il posto più naturale per l'argomento ne riparliamo un po'
più approfonditamente.
Mentre il vibrato comporta una variazione di "pitch", ovvero di
frequenza, il tremolo consiste in una variazione di ampiezza, quindi di
volume.
Bisogna osservare che la parola "tremolo" può assumere significati
diversi per strumenti diversi: di solito significa una rapida
ripetizione della stessa nota (nella chitarra si ha un grande esempio in
"Recuerdos de la Alhambra" di Tàrrega) però nel pianoforte si usa spesso
col significato di "tremolo doppio", nel qual caso ci sono due note
(distanti fra loro almeno una terza, altrimenti sarebbe un trillo) che
si alternano rapidamente, spesso ad imitare il rullo dei timpani di una
orchestra.
Per l'organo o l'armonium le cose cambiano ancora, ed il risultato è
una serie di rapide interruzioni del suono che lo rendono, per
l'appunto, tremolante. E questo è ciò che vogliamo realizzare.

Ci viene incontro fortunatamente il comando "C" che regola il volume.
Cambiando ripetutamente il volume di un canale l'effetto tremolo è
presto realizzato:

C-2 01 C40
C-2 01 C10
C-2 01 C40
C-2 01 C10
ecc.

I valori naturalmente sono stati scelti a caso, così come è arbitrario
il fatto di ripetere il comando (o la nota, dipende dal tipo di
strumento) ad ogni frame.

Un effetto un po' più strano si potrebbe avere usando il comando "A"
("volume slide"):

C-2 01 A02
C-2 01 A20
C-2 01 A02
C-2 01 A20
ecc.

Non resta che fare qualche esperimento e trovare la soluzione più
adatta, ricordando tra l'altro che le "macro" messe a disposizione dal
programma sono utilissime per scrivere sequenze di questo tipo.

5.2. Velocità 3 e 1/2

Una particolare tecnica usata a volte nei moduli consiste nel cambiare
continuamente velocità, usando il comando "F" in ogni frame. In questo
caso le velocità più usate sono 3 e 4, ed il risultato finale si può
considerare come una velocità di 3 e 1/2:

C-3 01 F03
B-2 01 F04
A-2 01 F03
G-2 01 F04
ecc.

E' particolarmente utile nei "rullati" di batteria, ma sono stati
scritti interi song su questa variazione di velocità, tanto che dal
SoundTracker 2.6 in poi è stata estesa la sintassi del comando "F"
permettendo note del tipo:

C-3 01 F34

che raggiungono lo stesso scopo ottenuto sopra in modo assai più
conciso.

5.3. Quattro voci: poche?

A volte si sente il bisogno di qualche canale in più, ma dato che
bisogna arrangiarsi con quel che si ha è meglio studiare qualche
strategia alternativa.
Realizzare effetti come echo, delay o simili non è difficile
utilizzando più di un canale, per esempio potremmo avere qualcosa del
genere:

C-2 01 C40 ... .. ... ... .. ...
... .. ... ... .. ... ... .. ...
... .. ... C-2 01 C20 ... .. ...
... .. ... ... .. ... ... .. ...
... .. ... ... .. ... C-2 01 C10
... .. ... ... .. ... ... .. ...
ecc.

Purtroppo sprecare due o tre canali in questo modo non è sempre
possibile, come fare allora? La soluzione consiste nel modificare i
sample: aggiungendo l'effetto sul sample piuttosto che scrivendolo a
mano si ottiene lo stesso risultato con un canale solo e con minore
fatica. L'importante a questo punto è avere qualche programma in grado
di modificare i sample per creare l'effetto desiderato, ma dato che i
sample di Dr. Track possono essere convertiti in VOC e viceversa, non è
difficile trovare una utility adatta tra le tante che esistono.

Questa tecnica si può usare anche per gli accordi: invece di buttare
via i tre canali necessari per un accordo "standard" basta campionare
direttamente l'accordo desiderato. Non a caso capita infatti di trovare
in qualche modulo lo stesso strumento campionato come accordo maggiore e
minore, e ne ho visto uno in cui ci sono ben nove tipi diversi di
accordo realizzati con lo stesso strumento! Certo si spreca un po' di
spazio, ma con 31 sample a disposizione è un sacrificio che si fa a cuor
leggero, pur di risparmiare qualche canale. E a pensarci bene se un
accordo di tre note suona su un solo canale in quel momento stiamo
suonando (almeno) a 6 voci!

5.4. "LET'S GO... Go... go..."

Non resisto alla tentazione di propinarvi questo bell'effetto stereo
(con la SoundBlaster va a farsi friggere, lo so, ma considerate pure che
i vostri moduli potranno essere eseguiti su Amiga) che ho visto usare in
più moduli.
L'idea è questa: abbiamo un sample che dice "LET'S GO!" e vogliamo
fare in modo che il "GO!" finale "echeggi" qualche altra volta magari
passando da un canale all'altro. Non possiamo usare il metodo di eco
visto sopra perché dopo la prima volta non vogliamo più sentire il
"LET'S", e nemmeno possiamo mettere l'eco nel sample perché vogliamo lo
"stereo".
La soluzione al problema è alquanto brillante e usa il metodo del
paragrafo precedente unito al comando "C".
Per prima cosa bisogna stabilire dopo quanti frame (alla velocità
corrente, eventualmente modificata per l'occasione) si sente il "GO!"
che vogliamo ripetere:

0 A-2 02 C40 L
1 ... .. ... E
2 ... .. ... T
3 ... .. ... S
4 ... .. ...
5 ... .. ... G
6 ... .. ... O

Supponiamo che il "GO!" si senta esattamente 5 frame dopo l'inizio del
sample: per realizzare l'effetto voluto si esegue allora il sample su
vari canali, ma tenendo il volume a zero finch‚ non arriva il momento
giusto!

A-2 02 C40 L ... .. ... ... .. ... ... .. ...
... .. ... E ... .. ... ... .. ... ... .. ...
... .. ... T A-2 02 C00 (L) ... .. ... ... .. ...
... .. ... S ... .. ... (E) ... .. ... ... .. ...
... .. ... ... .. ... (T) A-2 02 C00 (L) ... .. ...
... .. ... G ... .. ... (S) ... .. ... (E) ... .. ...
... .. ... O ... .. ... ... .. ... (T) A-2 02 C00 (L)
... .. ... ... .. C30 G ... .. ... (S) ... .. ... (E)
... .. ... ... .. ... O ... .. ... ... .. ... (T)
... .. ... ... .. ... ... .. C20 G ... .. ... (S)
... .. ... ... .. ... ... .. ... O ... .. ...
... .. ... ... .. ... ... .. ... ... .. C10 G
... .. ... ... .. ... ... .. ... ... .. ... O
... .. ... ... .. ... ... .. ... ... .. ...

Osservate che nei vari canali si inizia il sample direttamente a
volume zero (le lettere tra parentesi non si sentono) e poi si alza il
volume al livello desiderato per sentire il "GO!" finale. Osservate
anche che in questo caso il processo potrebbe continuare all'infinito
perché nel frattempo si è liberato il primo canale, che può quindi
essere usato ancora per iniziare un nuovo ciclo. Bello, no?

5.5. Conclusioni

Ho scelto i quattro esempi precedenti, piuttosto eterogenei, per
dimostrare che con un po' di esperienza ed un pizzico di ingegno si
possono realizzare cose molto buone anche con sole quattro voci e con i
comandi disponibili.
Ce ne sarebbero altri e probabilmente molti ancora che non conosco,
ma penso ci sia più soddisfazione nel costruire pian piano il proprio
personale repertorio di trucchi, piuttosto che leggerli direttamente.
Dr. Track, sennò, che ce l'avete a fare?


6. Ultime note...

E siamo giunti (quasi) alla fine di questo "manuale". Scriverlo mi è
costato non poca fatica e parecchie ore di lavoro, spero che l'abbiate
trovato sufficientemente chiaro ed esauriente.
Qui appresso ci sono le "solite" note riguardanti la non-garanzia,
l'hardware e il software necessari, ecc.

6.1. Hardware

Dr. Track richiede per girare almeno un DOS 3.x e circa 400K di
memoria libera al momento del lancio, nonch‚, dalla versione 1.30
in poi, una CPU di classe 80286 o superiore.

Per quel che riguarda la scheda video ne va bene una qualunque, ma con
una EGA o una VGA l'estetica ne guadagna senza dubbio parecchio (e anche
la funzionalità, con i modi a 43 e 50 linee).

************************************************************************
* Nota: alcuni programmi, per esempio EMM386.EXE e QEMM.EXE, portano *
* la CPU in modo virtuale e ciò può rendere incostanti gli interrupt *
* causati dal DMA provocando una perdita di qualità in fase di *
* riproduzione. In questi casi provate a rimuovere o disattivare i *
* programmi sospetti prima di dedurre che il player fa schifo (il che *
* naturalmente non è affatto vero)! *
************************************************************************

6.2. Software

Sebbene l'unico file veramente indispensabile sia DRT.EXE è opportuno
porre nella stessa directory anche DRT.CFG (configurazione, comunque il
programma è capace di autoconfigurarsi) e DRT.HLP (help, questa volta
Dr. Track non riesce proprio ad autoaiutarsi).
Al pacchetto sono incluse poi una serie di utility documentate a
parte, che implementano una serie di funzioni ausiliarie piuttosto
comode in fase di sviluppo.

[DRT_WARNING]
6.3. La "non-garanzia"

Com'è ormai consuetudine in ogni programma che si rispetti, ecco qui
le righe che mi discolpano da ogni danno arrecato al vostro amato PC. Il
programma è stato testato e messo alla prova in numerosissime situazioni
anche potenzialmente "pericolose" e non ha mai dato problemi nemmeno
nelle versioni precedenti, però visto che non si sa mai...

* In questa versione "free" il programma può essere liberamente copiato
e distribuito sotto forma di UN UNICO ARCHIVIO o di UN UNICO DISCO, a
patto che siano presenti tutti i file contenuti nel pacchetto originale
e che questi non siano stati modificati. La versione "free" viene
rilasciata come FreeWare, è gratuita e non deve essere venduta se non
dietro autorizzazione scritta dell'autore.

* Bench‚ sia stata posta la massima cura nella realizzazione del sistema
"Dr. Track", l'autore declina ogni responsabilità per eventuali danni
causati dal programma o da un errato uso dello stesso. Lanciare ed usare
il programma implica l'aver letto e accettato questa "clausola".
La precedente condizione vale inoltre per tutti i programmi e la
documentazione contenuta nel pacchetto originale.

[DRT_AUTHOR]
6.4. L'autore

Cioè me. Potete contattarmi per via telematica lasciando un messaggio
su una delle seguenti BBS:

Hor
Comar BBS Support
Tel. XXXXXXX 7 linee r.a. 300-14400 MNP5 24h

Alessandro Scotti
SBDI (SoundBlaster Digest Italia) BBS
Tel. XXXXXXX 300-9600 MNP5 24h

oppure via posta scrivendo a:

Alessandro Scotti
Via X. Xxxxxxxx Xx
00100 ROMA


Appendice A - Revisioni
-----------------------

Nota: le modifiche più importanti sono segnalate con un punto
esclamativo.

Versione 1.10

! sintassi della command-line estesa e rivista, nuovi switch: /E, /R,
/L;
- possibilità di partire direttamente in modo 43/50 linee;
- controllo meno rigido sui moduli in input per estendere la
compatibilità con altri tracker;
- corretto un bug nella schermata di help ottenuta con /? o /H;
- nuovi messaggi di errore e lievi cambiamenti nei vecchi;
- nuovo comando nel "sample editor" che massimizza il volume di un
sample agendo direttamente sui dati in esso contenuti;
- possibilità di trasportare l'intero song di un semitono in alto o in
basso agendo dall'"order editor";
! eliminato il backslash ("\") che veniva aggiunto automaticamente ai
nomi delle directory facendo perdere un carattere significativo;
- possibilità di selezionare i sample visualizzando i nomi originali
Amiga.

Versione 1.20

- corretti un paio di bug sfuggiti ai precedenti controlli (e scoperti
mentre si cercava qualcos'altro);
! gestione di librerie di sample con nomi definiti dall'utente;
! estese le capacità dei song per utilizzare le nuove librerie di
sample;
- visualizzazione dei nomi dei primi 28 sample nel "pattern editor", in
modo VGA 50 linee;
! possibilità di usare la memoria espansa per contenere i pattern,
permettendo un risparmio di memoria di 64K (sempre utili);
- sensibile incremento della velocità del player, in questo modo la
velocità risulta praticamente immutata rispetto alle versioni
precedenti anche usando la memoria espansa;
- nuovo switch /X.

Versione 1.30

- nuovo editor di linea;
- possibilità di suonare "sopra" un song senza memorizzare le note
("test mode");
! migliorata la finestra di selezione file, è ora possibile selezionare
direttamente un file, una directory o una maschera (o tutto
insieme...);
- durante la selezione file l'ultima directory utilizzata viene
memorizzata e riproposta come default alla successiva lettura;
- nuova funzione per ascoltare un sample senza caricarlo in memoria;
! manuale di riferimento on-line;
! supporto per la SoundBlaster Pro (stereo, 7 bit per traccia),
- finestra di controllo per il mixer della SoundBlaster Pro (volumi,
filtro, mono/stereo);
- nuovo switch /P[-|+] per escludere o forzare l'uso della SB Pro.

Versione 1.40

! versione "FreeWare" senza limitazioni, per festeggiare la fine di UN
ANNO di servizio militare;
- selezionando un file per nome viene aggiunta l'estensione .MOD se il
file senza estensione non esiste (ok, avrebbe gia' dovuto esserci...);
- occupazione di memoria ridotta di circa 15K, in parte utilizzati per
implementare le nuove funzioni;
- possibilita' di cambiare il prompt dei comandi durante una shell;
! volume globale;
! finestra grafica (96x48 in modo testo!) e relativo switch /G[+|-];
- i sample possono ora essere caricati direttamente anche nei formati
WAVE e VOC (limitatamente ai file più "semplici");
- fade out automatico in riproduzione ([Alt][F]).

Versione 1.45

- alcuni piccoli ritocchi che per mancanza di tempo non era stato
possibile inserire nella versione precedente;
- sistema di help completamente riscritto con più informazioni e in
formato hypertext;
- il file di configurazione è ora in formato testo anzich‚ binario.

Appendice B - Formato dei file sample (.SMP)
--------------------------------------------

Offset Lunghezza Descrizione
0 10 Sample ID (#$09 + '#SAMPLE#' + #$1A)
10 1 Lunghezza nome sample
11 22 Nome sample
33 2 Lunghezza sample
35 1 (non usato, sempre zero)
36 1 Volume sample
37 2 Offset parte repeat
39 2 Lunghezza parte repeat
41 .... Dati sample (8 bit, signed)


Indice
------

Questo documento contiene all'interno delle parole chiave che ne
facilitano la consultazione on-line. Per trovare l'argomento desiderato
consultate l'indice qui sotto e cercate nel testo (con un normale editor
o un text-viewer) la parola chiave associata (si può omettere il
prefisso DRT e le parentesi quadre ma è meglio tenere l'underscore).

1. Introduzione [DRT_INTRO]
1.1. Cos'è il SoundTracker
1.2. Cos'è il Dr. Track
1.3. Dai "song" ai "moduli" e viceversa
1.4. Amiga vs PC
2. Dentro i moduli (prima parte)
2.1. Gli strumenti [DRT_SAMPLE]
2.2. Le note [DRT_NOTE]
2.3. I "frame" [DRT_FRAME]
2.4. I "pattern" [DRT_PATTERN]
2.5. L'"order list" [DRT_ORDER]
2.6. Il tempo [DRT_TEMPO]
3. Dentro i moduli (seconda parte)
3.1. I comandi
(arpeggio) [DRT_ARPEGGIO]
(portamento verso l'alto) [DRT_PORTUP]
(portamento verso il basso) [DRT_PORTDOWN]
(portamento verso una nota) [DRT_TONEPORT]
(cambiamento volume) [DRT_VOLSLIDE]
(vai al pattern...) [DRT_JUMP]
(nuovo volume) [DRT_SETVOLUME]
(interrompi pattern) [DRT_BREAK]
(nuova velocità) [DRT_SETSPEED]
4. L'ambiente di lavoro
4.1. Struttura del programma
4.2. Il "song editor"
4.2.1. Il "pattern editor" [DRT_EDITPATTERN]
(comandi blocchi) [DRT_EDITBLOCK]
(macrocomandi) [DRT_EDITMACRO]
4.2.2. L'"order editor" [DRT_EDITORDER]
4.2.3. Il "player" [DRT_PLAY]
4.2.4. Registrando in tempo reale [DRT_RECORDING]
4.2.5. Input e output [DRT_IO]
4.2.6. "Sample and song" [DRT_SONG]
4.2.7. Librerie di sample [DRT_SAMPLELIB]
4.2.8. Altri comandi... [DRT_EDITMISC]
4.3. Il "line editor" [DRT_EDITLINE]
4.4. Il "sample editor" [DRT_EDITSAMPLE]
4.5. Le directory di Dr. Track [DRT_DIRS]
4.6. I parametri della command line [DRT_CMDLINE]
4.7. La finestra di selezione file
4.8. Supporto grafico
5. L'arte del "modulo" [DRT_TIPS]
5.1. Il "tremolo"
5.2. Velocità 3 e 1/2
5.3. Quattro voci: poche?
5.4. "LET'S GO... Go... go..."
5.5. Conclusioni
6. Ultime note
6.1. Hardware
6.2. Software
6.3. La "non-garanzia" [DRT_WARNING]
6.4. L'autore [DRT_AUTHOR]

Appendice A - Revisioni
Appendice B - Formato dei file .SMP