      _____       ___   _________   ___
     /  _  \     /  /\ /  ______/\ /  /\                   
    /  / \  \   /  / //  / _____\//  / /______        |   |__|
   /  /  /  /\ /  / //  / /   /\ /  / //_____/\       | .    |
  /  /__/  / //  / //  /__/  / //  / / \_____\/
 /________/ //__/ //________/ //__/ /
 \________\/ \__\/ \________\/ \__\/
   _________  _______    _________  _________  ___   ___  _________  _______
  /__   ___/\/  ___  \  /  ___   /\/  ___   /\/  /\ /  /\/  ______/\/  ___  \
  \_/  /\__\/  /__/  /\/  /__/  / /  /  /__/ /  /__/  / /  /______\/  /__/  /\
   /  / /  /  _   __/ /  ___   / /  /  _\_ \/  _   __/ /  ____/\  /  _   __/ /
  /  / /  /  / \  \ \/  /\_/  / /  /__/  /\/  / \  \ \/  /____\/ /  / \  \_\/
 /__/ /  /__/ //__/\/__/ //__/ /________/ /__/ //__/\/________/\/__/ //__/\
 \__\/   \__\/ \__\/\__\/ \__\/\________\/\__\/ \__\/\________\/\__\/ \__\/
 
 
DIGITRACKER 1.4 - 16 KHZ 3 CHANNEL MONO  8 BIT SAMPEL TRACKER - 128K CPC (PLUS)
 
                ALL CODE'N'DESIGN 1993 BY PRODATRON / SYMBIOSIS
 
 
 
                        AUFBAU DER MDL-DATEIEN (MODULE)
_______________________________________________________________________________
 
Die  Song-Module  (MDL-Files)  liegen im ASCII-Format vor und bestehen aus zwei
Bloecken:
- Der  erste  Block enthaelt den Datenkopf (Songname, Laenge, Songliste usw...)
  und die Pattern. Dieser wird immer in die erste Ram-Bank geladen.
- Der  zweite Block besteht aus den in der angegebenen Reihenfolge hintereinan-
  derliegenden Samples.
 
Die  ersten  beiden Bytes geben die Laenge des ersten Blockes an, Bytes 3 und 4
die Laenge des zweiten Blockes. Die Laenge des ersten laesst sich mit folgender
Formel ausrechnen:
Laenge = 512 + 9 * Patternlaenge * Patternanzahl
Die  Laenge des zweiten Blockes erhaelt man, wenn man die Laengen aller Samples
addiert.
 
Dahinter folgt direkt der erste Block.
 
1. Block: Song-Kopf und Pattern
-------------------------------
 
- Songkopf: Dieser ist 512 Bytes gross und folgendermassen aufgebaut:
 
+ 000 => Modulname (8 Bytes)
+ 008 => Namen der 16 Samples, auch jeweils 8 Bytes
+ 136 => Songliste  2*96  Bytes. Das erste Byte gibt jeweils die Patternnummer,
         das zweite die Hoehe (Transposewert in Halbtonschritten, normalerweise
         0) an
+ 328 => Sampledaten: 8*...
         - Samplelaenge (1 Word)
         - Repeatbegin (1 Word)
         - Repeatlaenge (1 Word).
+ 424 => Songlaenge (1 Byte).
+ 425 => Patternlaenge  (1 Byte) kann 1-99 sein. Normalerweise 64, gibt die An-
         zahl der Positionen innerhalb eines Pattern an
+ 426 => Loop To (1 Byte). Position in Songliste, zu der nach Songende gesprun-
         gen wird
+ 427 => Songspeed. Frames zwischen zwei Noten (normalerweise 6)
+ 428 => Songtranspose, liegt zwischen 0 und 12(in Halbtonschritten).
+ 429 => Modul-Version. 0  bedeutet,  dass die Samples in diesem Modul in 8-Bit
         vorliegen, Bei 7-Bit Samples (neue Version) steht hier eine 1.
+ 430 => Ab hier sind alle Bytes bis Offset 511 unbenutzt und daher 0. Sie sind
         fuer eventuelle Erweiterungen vorgesehen
 
- Pattern: Hier folgenden die Informationen fuer die belegten Pattern. Jede Po-
  sition  (normalerweise gibt es davon 64 pro Pattern) besteht aus 3*3 Bytes (3
  Bytes  fuer  jeden der drei Kanaele). Die drei Bytes pro Kanal haben folgende
  Bedeutung:
  - 1 => Note. 0 bedeutet nichts ('---'), 1-36 stellen die Noten fuer die 3 Ok-
         taven  dar (1=C-1,2= C#1,3=D-1,....35=A#3,36=B-3), 37 steht fuer einen
         Stopper ('Res')
  - 2 => Das Highnibble dieses Bytes gibt die Samplenummer an,das Lownibble die
         Effectnummer.
  - 3 => Die beiden Nibbles dieses Byte geben die genaue Spezifizierung des Ef-
         fekts an.
 
2. Block: Samples
-----------------
 
Der 2. Block, der direkt hinter dem ersten steht, enthaelt die Sampledaten. Die
Samples  liegen  in der vorgegebenen Reihenfolge hintereinander (8 Bit, Vorzei-
chenlos.


Kommandos:
-------------------------------------------------------------------------------
0xy - Normales  Abspielen,  oder Arpeggio (0-X-Y). X und Y in Halbtonschritten,
      die auf den Grundton addiert werden.
1xx - Slide  Up. Tonhoehe nach oben gleiten lassen. XX gibt die Geschwindigkeit
      an. Je groesser XX ist, desto schneller aendert sich die Tonhoehe.
2xx - Slide Down. Tonhoehe nach unten gleiten.
3xx - Tone Portamento. Ein Ton muss bereits angeschlagen sein. Die Note,die vor
      diesem Kommando steht, gibt das Ziel an, zu dem hingeglitten werden soll.
      XX  gibt die Gleitgeschwindigkeit an. Ist XX Null, so wird der Wert ange-
      nommen, der zuletzt fuer dieses Kommando benutzt wurde.
4xy - Vibrato.  Y gibt die Anzahl der Stufen an, die nach oben/unten ausgelenkt
      werden,  X gibt die Groesse der Stufen an. ist XY=0 dann wird der zuletzt
      benutzte Wert uebernommen.
9xx - Sample  Offset.  Der Sample kann mit diesem Kommando von einer beliebigen
      Stelle  aus angespielt werden. Beispiel: XX=1D => Sample wird ab dem Byte
      #1D00 angespielt.
Bxx - Position  Jump. Der Pattern wird an dieser Stelle abgebrochen und es wird
      an die angegebene Position in der Song-Liste gesprungen
Cxx - Volume  eventuell  abschalten. Ist xx (in Hex!) kleiner oder gleicher der
      im Setup eingestellten Volumeuntergenze, so wirkt dieses Kommando wie ein
      Stopper (Ton abschalten). Sonst keine Auswirkungen.
D-- - Pattern Break. Pattern wird abgebrochen, im naechsten (in der Song-Liste)
      wird weitergemacht. Die Werte hinter dem D Commando sind nicht von Bedeu-
      tung
Exy - E-Kommando: Siehe unten.
Fxx - Song-Geschwindigkeit. Diese kann hiermit neu eingestellt werden.
 
5,6,7,8 und A werden nicht benutzt und zeigen keine Wirkung.
 
E-Kommandos:
-------------------------------------------------------------------------------
E0x - Kanalwechsel. X kan 0,1 oder 2 sein und gibt den Soundchip-Kanal an (A,B,
      C),  auf  den der Sound ausgegeben werden soll. Wird dieser auf dem Digi-
      blaster ausgegeben, so hat dieses Commando keine Wirkung.
E1x - Fine  Slide  Up.  X gibt an, alle wieviel 50stel Sekunden die Tonhoehe um
      eine  Stufe erhoeht wird. Je groesser also X, desto langsamer gleitet der
      Ton nach oben.
E2x - Fine Slide Down.
E4x - Vibrato  Waveform. X=0 (oder gerade Zahl): Vibrato wird als Dreiecksfunk-
      tion  ausgefuehrt.  X=1  (oder ungerade Zahl): Vibrato als Saegezahn aus-
      fuehren
E5- - Loop Point. Position setzen zu der nach dem E6 Kommando gesprungen wird.
E6x - Jump to Loop. Es wird x mal zu der Stelle mit dem letzten E5-Kommando ge-
      sprungen.Mit Hilfe dieser beiden Schleifenbefehle lassen sich Stellen in-
      nerhalb eines Pattern mehrmals wiederholen.
EDx - Note Delay. Die Note,die vor diesem Kommando steht, wird erst in x 50stel
      Sekunden angespielt
EEx - Pattern Delay. x Positionen warten, bis zur naechsten Position gewechselt
      wird.  Es  wird nach der Position mit diesem Kommando also eine Pause ge-
      macht, als laegen x Positionen zwischen dieser und der naechsten.
 
E3,E7,E8,E9,EA,EB,EC und EF werden nicht benutzt und zeigen keine Wirkung.
