+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ _____ ___ _________ ___ +
+ / _ ç / /ç / ______/ç / /ç +
+ / / ç ç / / // / _____ç// / /______ ù ù +
+ / / / /ç / / // / / /ç / / //_____/ç ù . ù +
+ / /__/ / // / // /__/ / // / / ç_____ç/ +
+/________/ //__/ //________/ //__/ / +
+ç________ç/ ç__ç/ ç________ç/ ç__ç/ +
+ _________ _______ _________ _________ ___ ___ _________ _______ +
+ /__ ___/ç/ ___ ç / ___ /ç/ ___ /ç/ /ç / /ç/ ______/ç/ ___ ç +
+ / /ç__ç/ /__/ /ç/ /__/ / / / /__/ / /__/ / / /______ç/ /__/ /ç+
+ / / / / _ __/ / ___ / / / _ç_ ç/ _ __/ / ____/ç / _ __/ /+
+ / / / / / ç ç ç/ /ç_/ / / /__/ /ç/ / ç ç ç/ /____ç/ / / ç ç_ç/ +
+/__/ / /__/ //__/ç/__/ //__/ /________/ /__/ //__/ç/________/ç/__/ //__/ç +
+ç__ç/ ç__ç/ ç__ç/ç__ç/ ç__ç/ç________ç/ç__ç/ ç__ç/ç________ç/ç__ç/ ç__ç/ +
+ +
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
DIGITRACKER 1.1 - 14 KHZ 3 CHANNEL MONO 8 BIT SAMPEL TRACKER - 128K CPC (PLUS)
ALL CODE'N'DESIGN 1993 BY PRODATRON / SYMBIOSIS
THIS PROGRAM IS
S H A R E W A R E
THAT MEANS, THAT IT IS FREE TO COPY,
PUT IT INTO YOUR SOFTWARE-LIBRARY, SPREAD IT,
BUT IF YOU USE IT, YOU SHOULD SEND A DONATION OF 10DM, 4P, 6$ OR 30F TO
JOERN MIKA, BERGSTR. 128, 47443 MOERS, GERMANY
BUG-REPORTS AND MODULE SWAPPING ALSO WELCOME !
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ +
+ B E N U T Z E R - A N L E I T U N G +
+ +
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
0.) KLEINE EINLEITUNG:
_______________________________________________________________________________
Digitracker macht's endlich moeglich: Das Erstellen und Abspielen von Melo-
dien, die auf digitalisierten Instrumenten und Geraeuschen (Samples) basieren.
Leistungsdaten:
- 64512 Bytes fuer Samples frei
- 34 moegliche Pattern bei 64 Positionen im Pattern
- 14000 Herz Abspielfrequenz
- 96 Songpositionen moeglich
- 8 Bit-Digiblaster Sound Unterstuetzung
- Groesstenteils Amiga-Protracker-Effekt kompatible, 17 Effekte (Slides, Vibra-
to, Arpeggios, Position-Loops, Sample-Offset...)
- MOD-Converter fuer Amiga-Protrackermodule, kann Samples 1:1 oder 1:2 konver-
tieren, so dass man maximal 161 KB lange Module transferieren kann.
- Playercode-Generator, erzeugt Abspielroutine an beliebige Adresse, mit der
Digitracker-Module in eigene Programme eingebunden werden koennen.
- Leisungsstarke Abspielroutine, beliebige Startposition beim Abspielen, er-
laubt Interrupts, auf Wunsch Farbequalizer und/oder Rasterbalken und mehr...
- Komfortable, einheitliche Benutzerfuehrung
- Highspeed auf allen Ebenen, da Programm 100% in Maschinensprache
Das Programm besteht aus 3 Modulen:
- Dem eigentlichen DIGITRACKER, mit dem sich Stuecke editieren und abspielen
lassen.
- Dem MOD-CONVERTER, mit dem AmigaProtracker-Module ins Digitracker Format kon-
vertiert werden koennen.
- Dem PLAYERCODE-GENERATOR, der eine externe Abspielroutine fuer Digitracker-
Module erzeugen kann.
1.) DIGITRACKER
_______________________________________________________________________________
Die Steuerung des Programms ist voellig einheitlich gehalten. Ausgewaehlt und/
oder verstellt wird immer mit den CURSOR-Tasten, aktiviert mit COPY, RETURN
oder SPACE. Alle Operationen koennen mit ESC abgebrochen, von den Untermenues
gelangt man ebenfalls mit ESC wieder ins Hauptmenue.
Ein Sound besteht grundsaetzlich aus zwei Teilen, den Samples und den Pattern.
Die Pattern enthalten die eigentliche Melodie und werden in der Reihenfolge ab-
gespielt, wie es in der Song-Liste vorgegeben ist.
Sound-Parameter (im grossen Parameter-Fenster):
-----------------------------------------------
SngPos - Die aktuelle Position in der Song-Liste.
Pattrn - Der Pattern, welcher in der Song-Liste bei SngPos drankommt.
Height - Abweichung von der Normalhoehe, mit der der eben genannte Pattern ab-
gespielt wird (in Halbtonschritten).
Lenght - Song-Laenge. Anzahl der Stellen, die in der Song-Liste durchgespielt
werden, bis von vorne begonnen wird.
LoopTo - Nach Durchspielen der Song-Liste wird an dieser Position neu begonnen.
Speed - Abspielgeschwindigkeit des Songs, genauer gesagt die Zeit in 50stel
Sekunden, die zwischen zwei Position innerhalb einer Patterns vergeht.
Out At - Sound-Ausgabe. A-C: Ueber einen der drei Soundchip-Kanaele. D: Ueber
den Digiblaster (8Bit A-D Wandler am Druckerport des CPC wie er in der
CPC Amstrad Internation Ausgabe 8/9 1991 beschrieben wurde). Der Digi-
blaster ist UNBEDINGT zu empfehlen, denn er bringt nahezu Soundblaster
Qualitaet auf den CPC.
Sampel - Gerade fuer den Editor angewaehlter Sample.
Edit-Parameter (im kleinen Edit-Fenster):
-----------------------------------------
Pat - Im Editor ausgewaehlter Pattern.
Oct - Gerade fuer den Editor ausgewaehlte Octave.
Buf - Position im Zwischenspeicher.
Len - Anzahl der Positionen innerhalb eines Patterns.
Skp - Anzahl der Position die beim Editieren nach jeder Eingabe im Pattern
uebersprungen werden
DISC OP. - Diskettenmenue:
--------------------------
LOAD SONG - Modul laden (Samples, Patterns, SongDaten), Extension:MDL
SAVE SONG - Modul speichern
LOAD SAMP - Sample laden, wenn noch Speicherplatz vorhanden, Extension:SMP
SAVE SAMP - Sample speichern
ERASE - Modul oder Sample von Diskette loeschen
DRIVE A/B - Laufwerk auswaehlen
USER - Pfad-Nummer einstellen
Hinweis:
Beim Laden eines Moduls wird das, welches sich noch im Speicher befindet,
ueberschrieben. Lediglich die Pattern, welche hinter dem letzten Pattern des
geladenen Songs liegen, bleiben erhalten. Dadurch ist es moeglich, Songs zu
mergen.
PLAY SONG - Komplettes Modul abspielen:
---------------------------------------
Das Modul wird ab der aktuellen Position (SngPos) abgespielt. Nach Abbruch wird
SngPos aktualisiert.
PLAY PAT. - Pattern abspielen:
------------------------------
Der im Editor angewaehlte Pattern wird abgespielt.
EDIT SONG - Pattern editieren:
------------------------------
Die Pattern koennen hiermit bearbeitet werden. Jeder Pattern besteht aus drei
Spuren, jede davon steht fuer einen Kanal und ist wiederum unterteilt in (nor-
malerweise 64) Positionen. Eine Position ist folgendermassen aufgebaut:
AAB CDEE
AA - Note (C,C#,D,D#...)
B - Oktave (1-3)
C - Nummer des Samples, welches hier abgespielt werden soll
D - Commando-Nummer
EE - genaue Spezifizierung des Commandos
Statt der Note+Octave (AAB) kann auch nichts stehen ('---') oder ein Stopper
('Res'), der einen in dieser Spur eventuell noch anhaltenden Ton ausschaltet.
Um eine Note zu setzen, bedient man sich folgender Tasten:
ù Gewaehlte Octave ù Gewaehlte Octave + 1
--------+------------------------------+-----------------------------
Noten: ù C# D# F# G# A# C# D# ù C# D# F# G# A# C# D#
ù C D E F G A B C D E ù C D E F G A B C D E
--------+------------------------------+-----------------------------
Tasten: ù S D G H J L : ù 2 3 5 6 7 9 0
ù Z X C V B N M , . / ù Q W E R T Y U I O P
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
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,A und C 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.
EDIT LIST - Songliste oder Sampleliste bearbeiten:
---------------------------------------------------
Songliste: Diese besteht aus zwei Haelften. Auf der einen Seite stehen die Num-
mern der Pattern, die an den jeweiligen Positionen abgespielt werden, auf der
anderen die Hoehen-Differenzen, mit denen die Pattern abgespielt werden (in
Halbtonschritten).
Sampleliste: Die erste Spalte gibt den Namen an, die zweite die Laengen, die
dritte den Repeat-Start und die vierte die Repeat-Laenge (kleiner 256: kein Re-
peat) an. Beim Testen eines Samples mit COPY wird die eingestellte Oktave be-
ruecksichtigt. Ein Wechsel dieser bringt unterschiedliche Frequenzen beim Sam-
peltesten.
Mit <H> wird die Lautstaerke das angewaehlten Samples halbiert.
Mit <V> kann diese verstaerkt oder abgeschwaecht werden.
CLEAR - Loeschen bestimmter Elemente:
-------------------------------------
Es kann alles, nur bestimmte/alle Samples oder nur die Pattern geloescht wer-
den.
PRINTER - Ausdrucken des Modules:
---------------------------------
Print-Songdatas: YES bedeutet, dass auch die Modul- (Patternliste, Song-Laenge,
...) und Sampledaten (Name, Laenge,...) gedruckt werden, bei NO werden nur die
einzelnen Patterns gedruckt.
First/Last Pattern: Zu druckender Patternbereich.
Lines/Page: Um einen richtigen Seitenvorschub auszufuehren, muss dieser Parame-
ter gesetzt werden (0=kein Seitenvorschub). 12 Zoll Papier hat normalerweise 72
Zeilen (Standard).
OTHERS:
-------
Setup - Grundeinstellungen aendern
- Song-Transpose: Hoehenverschiebung des Songs in Halbtonschritten. Bei 1:1
Amiga-Transferierten Samples '12', bei 1:2 Uebersetzungen '0'.
- Pattern-Lenght: Anzahl der Positionen innerhalb eines Patterns.
- Palette-Number: 0-7 Farbwahl
- Ed:PlaySamples: Normalerweise NO: In diesem Fall ertoenen im Editor Chip-
Toene, die die Hoehe des Samples angeben. Dies kann aber auch verfaelscht
sein. Wird auf YES geschaltet, so werden die Samples direkt im Editor ausge-
geben. Das hat allerdings zur Folge, dass erst dann auf die naechste Position
gesprungen wird, wenn die Samples aller drei Kanaele beendet sind. Handelt es
sich bei einem der drei Samples um einen endlosen (Repeat), so wird erst nach
Druck auf Space zur naechsten Position uebergegangen.
Memory
- Sample-Memory: Wieviel belegt und frei ist. Die Samples liegen alle in der 2.
64K Ram-Bank.
- Patterndatas need...: Wichtig, wenn man Module in eigene Programme einbinden
will. Hier folgt die Anzahl der Bytes (alles in Hex), die der Song in der er-
sten Ram-Bank benoetigt.
- Song needs...on Disc: Wichtig beim Speichern
2.) MOD-CONVERTER
_______________________________________________________________________________
Zur Zeit gibt es mehrere 1000 (!!) Mod-Files (Amiga-Protracker-Format). Mit
diesem Modul koennen solche ins Digitracker-MDL-Format konvertiert werden.
Das MOD-Files muss zunaechst vom Amiga/PC/... zum CPC transferiert werden. Das
erledigen Programme wie DOS-COPY (Face Hugger Production), die in der Lage
sind, MS-DOS Disketten zum CPC zu kopieren.
Parameter:
----------
- Source/Destination Drive: A/B
- Sample-Transfer: 1:1 - die Samples werden direkt uebernommen. 1:2 je 2 Bytes
innerhalb der Samples werden zu einem zusammengefasst, wodurch die Samples in
der Laenge halbiert werden.
- Sample-Volumes: NO - Die Samples bleiben unveraendert in ihrem Originalzu-
stand. YES - Die Samples werden entsprechend der im MOD-File angegebenen
Lautstaerke eingestellt.
CONVERT MOD - Amiga-Protracker-Modul konvertieren:
--------------------------------------------------
Nur moeglich, wenn das Modul nicht zuviele Patterns (>34), zuviele Songpositio-
nen (>96) oder zu lange Samples (>63 KB beim 1:1 Transfer bzw. >126 KB beim 1:2
Transfer) hat.
Ansonsten werden zunaechst die einzelnen Pattern konvertiert. Da MOD-Pattern
aus vier Spuren/Kanaelen bestehen, muss immer einer davon entfernt werden. Da-
zu kann er entweder mit den Tasten 1-4 ganz geloescht werden oder durch 'M' in
einen anderen reingemischt werden. Soll letzteres geschehen,so muss die 'Source
Voice' 1-4 angegeben werden, die dann in eine 'Destination-Voice' (1-3) hi-
neingemischt werden soll. Wird z.B. die Tastenfolge 'M' , '1' , '2' gedrueckt,
so wird der 1. Kanal in den 2. hineingemischt, der vorher der 3.war (aber jetzt
der zweite ist, weil wegen Loeschung des 1. alle einen vorverschoben wurden).
bei 'M', '3', '2' wird der 3. in den 2. gemischt, der auch vorher der 2. war.
PRINT MOD - Amiga-Protracker-Module ausdrucken:
-----------------------------------------------
Ein MOD-File wird in der Form ausgedruckt, in der man es auch vom Amiga her ge-
wohnt ist.
CONVERT SAMPLE - PC, Amiga oder Drumming-CPC Samples konvertieren:
------------------------------------------------------------------
In dem Untermenue kann gewaehlt werden, welche Samples man konvertieren will:
- VOC-Files: Samples, die auf PCs benutzt werden (Soundblaster).
- WAV-Files: Samples, die auf PCs speziell unter Windows benutzt werden.
- SAM-Files: Amiga-Samples.
- INS-Files: Samples fuer 'Drumming-CPC', das Face Hugger Programm aus der
CPCAI, welches zur Demonstration des Digiblasters diente.
Beim Konvertieren wird ebenfalls der Parameterpunkt 'Sample-Transfer' beachtet
(1:1 oder 1:2).
Sollen Amiga-Samples ('SAM') transferiert werden, so muss deren Laenge vom Be-
nutzer aus eingestellt werden, da es mit AMSDOS nicht moeglich ist, deren ge-
naue Laenge festzustellen.
3.) PLAYERCODE-GENERATOR
_______________________________________________________________________________
Dieser erlaubt das Erzeugen der Digitracker-Modul-Abspielroutine an (fast) eine
beliebige Adresse. Der Bereich von #4000 bis #7FFF und von #0000 bis #0200 kann
nicht verwendet werden, da diese von der Routine zum Bankswitching, bzw. fuer
die Interruptverwaltung benutzt werden.
Eine abgespeicherte Abspielroutine ist etwa 4KB lang und leistet folgendes:
- Laden eines Moduls
- Abspielen des geladenen Moduls
Die Samples eines Moduls sollten zusammen nicht laenger als 64256 Bytes sein
(#FB00).
Im folgenden nun die Benutzung der Routine, wobei die angegebenen Offset-Werte
auf die Startadresse der Routine addiert werden muessen, um die richtige Adres-
se zu bekommen. In den angegebenen Beispielen wird immer davon ausgegangen,dass
die Routine an Adresse &3000 beginnt.
+ 00 => Laden eines Moduls unter Basic:
CALL Anfadr+00 (,Start-Adresse)
Ein Modul, das bereits geoeffnet sein muss, wird geladen und initiali-
siert. 'Start-Adresse' gibt an, an welche Stelle die Song- und Pattern-
Daten in den Speicher in die erste Ram-Bank geladen werden. Wird dieser
Parameter nicht mit angegeben, so wird &5600 angenommen. Die Sample-
daten werden immer in die zweite Ram-Bank ab #200 geladen (davor wird
der Speicher fuer Tabellen und Routinen benoetigt).
Es muss immer darauf geachtet werden, dass die Patterndaten nicht in
bereits benutzte Speicherbereiche geladen werden (z.B.Abspielroutine!).
Beispiel:
OPENIN"SOUND.MDL":CALL &3000,&4000:CLOSEIN
Laedt das Modul 'Sound.Mdl' wobei die Patterndaten ab Adresse &4000 ab-
gelegt werden.
+ 03 => Abspielen eines Moduls unter Basic:
CALL Anfadr+03 (,Optionswert (,Start/Patternnummer))
Ein geladenes Modul wird abgespielt. Wenn der 'Start/Patternnummer'-Pa-
rameter oder beide weggelassen werden, wird automatisch 0 angenommen.
Das Optionsbyte ist in Bits unterteilt, die folgende Bedeutung haben:
Bit 0,1 => Ausgabe-Kanal: 0-2 Ausgabe ueber einen Soundchip-Kanal,
3 Ausgabe ueber den Digiblaster.
Bit 2 => =0: Songplay. Das komplette Modul wird abgespielt. Der zwei-
te Parameter gibt dabei dann die Startposition an.
=1: Patternplay. Nur ein Pattern wird gespielt. Die Nummer
davon gibt dann der zweite Parameter an.
Bit 3 => =1: Rasterbalken beim Abspielen einschalten
Bit 4 => =1: Farbequalizer beim Abspielen. Die Farben 1,2 und 3 stel-
len die Equalizer fuer die jeweiligen Kanaele dar.
Bit 5 => =0: Bereich von #100 bis #200 sichern. Da dieser Bereich von
der Routine waehrend des Abspielens benutzt wird, wird der
direkt hinter ihr zwischengespeichert.
=1: Benoetigt man den genannten Bereich nicht, und will man
lieber den Bereich direkt hinter der Abspielroutine freihal-
ten, so kann man dieses Bit auf 1 setzen
Bit 6 => =1: Abfrage der Tasten F0-F9. Normalerweise wird die Player-
routine nach Druck auf Space abgebrochen. Wird dieses Bit
gesetzt, so werden die Funktionstasten abgefragt, und zwar
soviele, wie in einer spaeter beschriebenen Variable festge-
legt werden. Die Nummer der gedrueckten F-Taste steht dann
in einer weiteren Variable.
Bit 7 => =1: Interrupts zulassen. Die Abspielroutine stellt einen ei-
genen Interrupt-Handler zur Verfuegung, der eingesetzt wird,
wenn dieses Bit gesetzt ist. Pro Frame-Fly (der jede 50stel
Sekunde eintritt) finden 6 Interrupts statt. In einer spae-
ter beschriebenen Tabelle muessen dann die Adressen der 6
Routinen stehen, die abwechselnd vom Interrupt-Handler auf-
gerufen werden.
Beispiele:
- CALL &3003,3 => spielt den Sound ueber Digiblaster ab. Keinerlei Zu-
saetze.
- CALL &3003,1+4,3 => spielt den dritten Pattern auf Kanal B des Sound-
chips ab.
- CALL &3003,8+32 => spielt Sound ueber Kanal A mit Rasterbalken ab, wo-
bei der Bereich von #100 bis #200 nicht gesichert wird.
- POKE &3000+12,5
CALL &3003,3+16+6
PRINT PEEK(&3000+13) => spielt Sound ueber Digiblaster mit Farbequali-
zern ab und fragt dabei die ersten 5 F-Tasten ab. Nach Beendigung wird
die gedrueckte F-Taste ausgegeben.
- CALL &3003,128,10 => spielt Sound ab Position 10 ab, wobei die Inter-
rupts zugelassen werden.
+ 06 => Laden eines Moduls unter Maschinensprache: HL=Adresse
Wie unter Basic muss auch hier die Datei bereits geoeffnet sein.
+ 09 => Abspielen einer Moduls unter Maschinensprache: A=Optionsbyte, B=Start-
position/Patternnummer
+ 12 => Variable: Anzahl der Funktionstasten (1-10), die abgefragt werden, wenn
Bit 6 des Optionsbyte gesetzt ist. <5> bedeutet z.B., dass die Tasten
f0 bis f4 abgefragt werden.
+ 13 => Nach Rueckkehr aus der Playerroutine laesst sich hiermit die Nummer der
gedrueckten F-Taste (falls Options-Bit 6 gesetzt war) feststellen:
Nummer der gedrueckten F-Taste = Byte 12 - Byte 13
Wird z.B. bei Offset 12 (Anz. der abgezufragenden Funktionstasten) eine
5 gepoket und wird beim Abpspielen die f3-Taste gedrueckt,so steht hier
eine 2 (=5-3).
+ 14 => Dieses Byte wird beim Begin des Abspielens auf 0 gesetzt.Wenn nun waeh-
rend das Abspielens sein Wert geaendert wird (durch eine Interrupt-Rou-
tine), so wird das Abspielen abgebrochen. Damit ist es moeglich, die
Playerroutine auch auf eine andere Art als 'Space' oder die Funktions-
tasten zu verlassen.
+ 15 => Pen-Nummer des Rasterbalkens. 0-15, 16 steht fuer den Border.
+ 16,17 => Farbe des Rasterbalkens und des Borders. Diese muessen in codierter
Form vorliegen. Im folgenden die Tabelle mit den codierten Farbwerten:
00 - 84 04 - 88 08 - 77 12 - 94 16 - 71 20 - 83 24 - 74
01 - 68 05 - 93 09 - 86 13 - 64 17 - 79 21 - 90 25 - 67
02 - 85 06 - 76 10 - 70 14 - 95 18 - 82 22 - 89 26 - 75
03 - 92 07 - 69 11 - 87 15 - 78 19 - 66 23 - 91
+ 18-33 => Diese Tabelle enthaelt die Farbwerte die bei den Farbequalizern
durchlaufen werden. Auch sie muessen in codierter Form vorliegen.
+ 34-45 => Adressen der Interrupt-Routine. Hier folgen sechs 16 Bit-Adressen,
die auf die sechs Interrupt-Routinen zeigen. Normalerweise haben alle
6 Adressen den Wert #F, so dass bei eingeschalteten Interrupts immer an
die Stelle #F gesprungen wird, wo normalerweise ein RET-Befehl steht.
Anmerkungen zu den Interrupt-Routinen:
- Diese duerfen nicht die Index-Register veraendern (IX, IY). Bei Ge-
brauch muessen diese daher zwischengespeichert werden und am Ende mit
den alten Werten geladen werden.
- Die Interrupt-Routinen werden mit RET abgeschlossen.
- Die Interrupt-Routinen duerfen an jeder beliebigen Stelle in der er-
sten Ram-Bank liegen.
- Jede der sechs Interrupt-Routinen wird einmal in einer 50stel Sekunde
aufgerufen.
- Fuer Democoder koennte noch folgendes wichtig sein:
Die erste der sechs Interrupt-Routinen bekommt den Interrupt, der di-
rekt nach dem Frame-Fly kommt.Die nachfolgenden Interrupts gehen dann
der Reihe nach an die uebrigen Interrupts.
- Die Interrupt-Routinen sollten natuerlich moeglichst kurz sein.10 Ra-
sterzeilen ist das absolute Maximum.
- Je mehr Prozessorzeit durch dir Int-Routis verschluckt wird, desto
tiefer und langsamer wird die Soundausgabe.
- Bei eingeschalteten Interrupts wird uebrigens noch der Bereich ab
#100 und tiefer fuer den Stack-Pointer benutzt!
4.) 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 => 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.
_______________________________________________________________________________
Momentan gibt es fuer den Digitracker bereits weit ueber 200 Module. Wer re-
gistriert ist, kann bei mir kostenlos die Modulliste anfordern. Die gewuensch-
ten Module kopier ich gegen Rueckporto und Disx.
DAS PROGRAMM BESTEHT AUS 9 5 8 1 ZEILEN ASSEMBLER QUELLTEXT.
prodatron/SYMBIOSIS, 24.09.1993
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ +
+ A +
+ ________________________________________________________________ +
+ / ______________________________________________________________/ç +
+ / /ç_____________________________________________________________ç/ +
+ / / / / /ç/ /ç/ _ _ /ç/ __ ç / /ç/ __ /ç/ ____/ç/ /ç/ ____/ç +
+ / /_/_ / /_/ / / // // / / /_/ /ç/ / / /ç/ / / /___ ç/ / / /____ç/ +
+ /___ /ç/___ / / //_// / / __ / / / / / / / /___ /ç/ / /___ /ç +
+ ____/ / /ç__/ / / / ç / / / /_/ / / / / /_/ / /___/ / / / /ç__/ / / +
+ /_____/ / /___/ /_/ / /_/ /_____/ /_/ /_____/ /_____/ /_/ / / / / +
+ _ç_____ç/__ç___ç/ç_ç/__ç_ç/ç_____ç/ç_ç/ç_____ç/ç_____ç/ç_ç/___/ / / +
+ /_______________________________________________________________/ / +
+ ç_______________________________________________________________ç/ +
+ +
+ PRODUCTION +
+ +
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++