_____ ___ _________ ___
/ _ \ / /\ / ______/\ / /\ __ / / \ \ / / // / _____\// / /______ | __| / / / /\ / / // / / /\ / / //_____/\ | . |__ / /__/ / // / // /__/ / // / / \_____\/ /________/ //__/ //________/ //__/ / \________\/ \__\/ \________\/ \__\/ _________ _______ _________ _________ ___ ___ _________ _______ /__ ___/\/ ___ \ / ___ /\/ ___ /\/ /\ / /\/ ______/\/ ___ \ \_/ /\__\/ /__/ /\/ /__/ / / / /__/ / /__/ / / /______\/ /__/ /\ / / / / _ __/ / ___ / / / _\_ \/ _ __/ / ____/\ / _ __/ / / / / / / \ \ \/ /\_/ / / /__/ /\/ / \ \ \/ /____\/ / / \ \_\/ /__/ / /__/ //__/\/__/ //__/ /________/ /__/ //__/\/________/\/__/ //__/\ \__\/ \__\/ \__\/\__\/ \__\/\________\/\__\/ \__\/\________\/\__\/ \__\/ DIGITRACKER 1.2 - 16 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 ! UPDATE-INFORMATION _______________________________________________________________________________ Folgendes hat sich gegenueber der Version 1.1 in der aktuellen (1.2) geaendert: - Verbesserter Patterneditor (COPY+Shift, kleine ENTER-Taste, bessere Notenein- gabe bei eingeschalteten Samples, besserer Sample-Test). - Playerabbruch jetzt auch mit ESC. - MOD-Converter: Stimmenloeschen/-mixen bei der Mod-File-Konvertierung jetzt wahlweise fuer den ganzen Sound oder einzeln fuer die Pattern. - MOD-Converter: Sind die Samples bei der 1:1 Mod-File-Konvertierung zu gross, kann direkt ein Versuch mit 1:2 Sampletransferierung erfolgen, ohne zu unter- brechen und den Parameter zu veraendern - MOD-Converter: CPC-Protracker-MOD-File Konverter eingebaut. MOD-Files koennen direkt ins MDL-Format umgewandelt werden. - C-Commando zusaetzlich. Schaltet Ton ab, wenn die Volume sich unterhalb einer bestimmten (vom User festgesetzten) Grenze befindet. - Hoehere Abspielfrequenz: 16,6 KHz ueber Digiblaster, bzw. 14,5 KHz ueber den Soundchip. - 7-Bit Sampleaufloesung, statt 8-Bit. Das bringt die eben genannte Frequenzer- hoehung, ausserdem wird der Digiblaster nicht mehr ueberladen. Alte Module, die in 8-Bit vorliegen, werden beim Laden automatisch konvertiert. +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + + + 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 - 16667 Herz Abspielfrequenz (Digiblaster) - 14493 Herz Abspielfrequenz (Soundchip) - 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, ausserdem Samples und CPC-Protracker-Module. - 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 Vorsicht: Alte Samples, die noch von der Version 1.1 stammen, wer- den nicht mehr angenommen. Diese sollten mit der 1.1er geladen und als MDL-File gespeichert werden, welches problemlos ladbar ist. 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 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. 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 YES. In diesem Fall ertoenen im Patterneditor beim Setzen von Noten und beim Veraendern der Oktaven die jeweiligen Samples. NO verhindert das. - TonStop At Vol: 0-63. Setzt die Grenze, bei der das C-Commando wie ein Stop- per ('Res') wirkt. 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. Beim Beginn muss eingestellt werden, ob man in allen Pattern ('per Song') immer die selben Spuren loeschen/mischen will, oder ob jeder Pattern einzeln abgefragt werden soll ('per Pattern'). Nun kann entweder mit den Tasten 1-4 eine Stimme ganz geloescht (hierbei wird nur versucht, eventuell in der Stimme vorhandene B,D und F Kommandos in eine andere zu retten) oder durch 'M' eine Stimme in eine andere hineingemischt wer- den. Soll letzteres geschehen, so muss die 'Source Voice' 1-4 angegeben werden, die dann in eine 'Destination-Voice' (1-3) hineingemischt werden soll ('Desti- nation Voice' hat die hoehere Prioritaet, d.h. in ihr bleiben alle Noten erhal- ten,waehrend von der 'Source-Voice' nur diejenigen uebernommen werden, die auch Platz finden). 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. CON.CPC-PROTRA. - CPC-MOD-Files ins MDL-Format umwandeln: --------------------------------------------------------- Hiermit koennen problemlos Module, die mit CPC-Protracker erstellt wurden, ins MDL-Format uebersetzt werden. 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 VORSICHT: Die Routine akzeptiert keine Module, die mit der Version 1.1 erstellt wurden (8-Bit Samples). Loesung des Problems: Modul einfach mit der 1.2 laden und wieder abspeichern. 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 initialisiert. 'Start-Adresse' gibt an, an welche Stelle die Song- und PatternDaten in den Speicher in die erste Ram-Bank geladen werden. Wird dieser Parameter nicht mit angegeben, so wird &5600 angenommen. Die Sampledaten werden immer in die zweite Ram-Bank ab #200 geladen (davor wird der Speicher fuer Tabellen und Rou- tinen 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 abgelegt werden. + 03 => Abspielen eines Moduls unter Basic: CALL Anfadr+03 (,Optionswert (,Start/Patternnummer)) ------------------------------------------------------------------------------- Ein geladenes Modul wird abgespielt. Wenn der 'Start/Patternnummer'-Parameter 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 zweite Para- meter 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 stellen die Equalizer fuer die jeweiligen Kanaele dar. Bit 5 => =0: Bereich von #100 bis #200 sichern.Da dieser Bereich von der Rou- tine 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 freihalten, so kann man dieses Bit auf 1 setzen Bit 6 => =1: Abfrage der Tasten F0-F9. Normalerweise wird die Playerroutine nach Druck auf Space abgebrochen. Wird dieses Bit gesetzt, so werden die Funktionstasten abgefragt, und zwar soviele, wie in einer spaeter beschriebenen Variable festgelegt werden. Die Num- mmer der gedrueckten F-Taste steht dann in einer weiteren Va- riable. Bit 7 => =1: Interrupts zulassen. Die Abspielroutine stellt einen eigenem In- terrupt-Handler zur Verfuegung, der eingesetzt wird, wenn dieses Bit gesetzt ist. Pro Frame-Fly (der jede 50stel Sekunde ein- tritt) finden 6 Interrupts statt. In einer spaeter beschriebe- nen Tabelle muessen dann die Adressen der 6 Routinen stehen, die abwechselnd vom Interrupt-Handler aufgerufen werden. Beispiele: - CALL &3003,3 => spielt den Sound ueber Digiblaster ab. Keinerlei Zusaetze. - CALL &3003,1+4,3 => spielt den dritten Pattern auf Kanal B des Soundchips ab. - CALL &3003,8+32 => spielt Sound ueber Kanal A mit Rasterbalken ab, wobei 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 Farbequalizern 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 Interrupts zu- gelassen 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=Startposition/Patternnummer + 12 => Anzahl abzufragender F-Tasten ------------------------------------------------------------------------------- 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 abge- fragt werden. + 13 => Indirekte Nummer der gedrueckten F-Taste F-Taste = Byte 12 - Byte 13 ------------------------------------------------------------------------------- Nach Rueckkehr aus der Playerroutine laesst sich hiermit die Nummer der ge- drueckten F-Taste (falls Options-Bit 6 gesetzt war) feststellen. 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 => Escape-Byte ------------------------------------------------------------------------------- Dieses Byte wird beim Begin des Abspielens auf 0 gesetzt. Wenn nun waehrend das Abspielens sein Wert geaendert wird (durch eine Interrupt-Routine), so wird das Abspielen abgebrochen. Damit ist es moeglich, die Playerroutine auch auf eine andere Art als 'Space' oder die Funktionstasten 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 co- dierten 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 => Farbtabelle fuer Equalizer ------------------------------------------------------------------------------- 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-Be- fehl steht. Anmerkungen zu den Interrupt-Routinen: - Diese duerfen nicht die Index-Register veraendern (IX, IY). Bei Gebrauch muessen diese daher zwischengespeichert werden und am Ende mit den alten Wer- ten geladen werden. - Die Interrupt-Routinen werden mit RET abgeschlossen. - Die Interrupt-Routinen duerfen an jeder beliebigen Stelle in der ersten Ram- Bank liegen. - Jede der sechs Interrupt-Routinen wird einmal in einer 50stel Sekunde aufge- rufen - Fuer Democoder koennte noch folgendes wichtig sein: Die erste der sechs In- terrupt-Routinen bekommt den Interrupt, der direkt nach dem Frame-Fly kommt. Die nachfolgenden Interrupts gehen dann der Reihe nach an die uebrigen Inter- rupts. - Die Interrupt-Routinen sollten natuerlich moeglichst kurz sein. 10 Raster- zeilen 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! + 46 => Volumeuntergrenze ------------------------------------------------------------------------------- Ab welchem Wert sich das C-Commando wie ein Stopper verhaelt. 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 => 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. _______________________________________________________________________________ Momentan gibt es fuer den Digitracker bereits weit ueber 250 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 UEBER 1 0 0 0 0 ZEILEN ASSEMBLER QUELLTEXT. prodatron/SYMBIOSIS, 07.10.1993 A ________________________________________________________________ / ______________________________________________________________/\ / /\_____________________________________________________________\/ / / / / /\/ /\/ _ _ /\/ __ \ / /\/ __ /\/ ____/\/ /\/ ____/\ / /_/_ / /_/ / / // // / / /_/ /\/ / / /\/ / / /___ \/ / / /____\/ /___ /\/___ / / //_// / / __ / / / / / / / /___ /\/ / /___ /\ ____/ / /\__/ / / / \ / / / /_/ / / / / /_/ / /___/ / / / /\__/ / / /_____/ / /___/ /_/ / /_/ /_____/ /_/ /_____/ /_____/ /_/ / / / / _\_____\/__\___\/\_\/__\_\/\_____\/\_\/\_____\/\_____\/\_\/___/ / / /_______________________________________________________________/ / \_______________________________________________________________\/ PRODUCTION |