StarTrekker V1.3 by Fairlight [web]
+--------------------------------------------------------------------------+ | STARTREKKER 1.3 | +--------------------------------------------------------------------------+ CODED BY BJORN WESEN/EXOLON OF FAIRLIGHT RELEASE DATE: 16/3-1991 +-----------------------PUBLIC DOMAIN OR WHAT??--------------------------+ The original soundtracker by Karsten Obarski is copyrighted by EAS. However, since then no deals have been made; the NoiseTracker 2.0 deal with M&K obviously went quite wrong. So, since the ProTracker makers dared to call their tracker Public Domain and since it also is based on the original soundtracker, I think I can call StarTrekker 1.3 for `public domain`. PLEASE NOTE HOWEVER THAT THE FOLLOWING FILES SHALL BE ON THIS DISK AND MUST BE SPREAD TOGETHER IN AN ARCHIVE!!, DO NOT SPREAD THE MAINFILE ALONE. -------------------------------- StarTrekker1.3 - The main program file StarTrekker1.3.info - The megacool icon StarTrekker1.3.doc - This file (docs) normalreplay1.3.S - Replay source for normal modules amreplay1.3.S - Replay for modules with AM-sounds 8channelreplay.S - Replay for 8 channel modules AMSOUNDS (directory) - The directory contains some examples on am-sounds FMSOUNDS (directory) - Examples on fm-sounds STMACROS (directory) - Some examples on how to use the fab StarTrekker macros. +------------------------------------------------------------------------+ ----------------------New features in 1.3------------------------ 1. The StarTrekker 1.3 now works under KS2.0! And that's because all interrupts and timers are now rewritten in a system-friendly way, by using AddIntServer() etc. The StarTrekker now multitasks correctly (I think), i.e when you run it in the background it won't crash like it did occasionally in ST1.2. Since the ST doesn't write ANYTHING to the lower 1024 bytes in the memory anymore, it will be compatible with KS3.0 which will probably feature MMU. LAST MINUTE NOTE: There's something in my filerequester that's incompatible with the way the 2.0 calls tasks when you start them from WB. Therefore, I've made an IconX file, all it does is start the StarTrekker from CLI. So, under 2.0, click the StarTrekker1.3-2.0 icon instead. 2. Hrrm... I HAVE TO MAKE A VERY BIG APOLOGY for the StarTrekker 1.2 8- channel mode on some A500s. Due to the fact that my A1000 is a teeny- weeny bit faster than some A500s (x-mem speed differences??) the 8- channel mode worked perfectly at my place and at my friend's A500. I have now included a speed-checker that checks the processor speed. If it detects lower speed than required, it shuts off the pattern-print in the PLAY mode in the 8-channel section. 3. A new mode is added, called M, which stands for MIDI. Using this you can have eight channels, but only the four on the left is for amiga- voices and midi. The right four are only for midi. The first press on the mode button switches to the MIDI mode, the second press switches to the ordinary 8 channel mode and a third press switches back to the 4 channel mode. Note that now ALL NOTE DATA POSSIBLE is preserved between switches, also from 8 channel to 4 channel (cutting voices 5-8). I say it again, this mode does NOT use 8 amiga voices, it plays using the old 4 channel routine, but you can have 4 extra midi-voices... 4. Portamento (commands 1 and 2) now send pitch-bend midi-messages. Volume change (command C) also sends midi-volume change. A new command 7 is added used for pan (only midi). Usage: $780 is in the middle, $700 is to the left and $7FF to the right. 5. More sampler-functions: Resample: Use this if you have an instrument that is not tuned correctly. Select resample and you'll hear the current sampler-period (upper right corner) along with the current sample. You can then change the sample's period by moving the mouse up and down, and when you're satisfied press the left mousebutton and your sample will be resampled to the current sampler-period. Chord: It speaks for itself; it allows you to make a chord out of a sample. Press chord and select the notes and length, press DO and a chord will be made with the current sampler-period. NOTE ! Both Resample and Chord uses interpolation techniques to make a high quality sound. 6. Well well well... It may sound wierd, but I've actually included an assembler/disassembler in the StarTrekker 1.3! It allows you to make what I call MACROS. See doc below. 7. I have made a new midi input routine; in the old one you could only play one note at a time on the syntesizer. Now you can play as fast as on the computer keyboard, and if you arm the polymode (Three presses on the key- pad dot, press ALT+F6,F7,F8,F9) you're ready to take off! 8. I have put in a handy lock function. On the keyboard, type: LOCK<PASSWORD>[RETURN] and the StarTrekker locks the mouse and the keyboard, but the music is still playing (if you pressed play before locking it!). Note that you should not press any [SPACE] between LOCK and the PASSWORD. To unlock, just type the PASSWORD. Example: Typing LOCKHELLO[RETURN] will lock the ST until you type HELLO. 9. New replay routines. In the old there was a bug in the pattern break command, so now it's been removed. Also they support the macros now. 10.The Randomize Colors function (Shift-F10) has been changed to only generate good colors... PLEASE NOTE: I have heard several complaints about 'Why doesn't the AM sounds work in 8 channel mode' and 'Why doesn't the scopes work in 8 channel mode' etc. THE 8 CHANNEL MODE IS QUITE DIFFERENT. It's a totally different replayer in the StarTrekker that handles it, and since the processor has to work very hard it's not possible to handle the AM and the scopes too. Maybe I'll put in an A3000 switch to make use of its greater processor speed? -------------------------------------------------------------------------- STARTREKKER 1.3 MACRO ASSEMBLER/DISASSEMBLER: Please insert that command, please insert that effect, please... NOW YOU CAN DO IT YOURSELF! The macro assembler lets you write 16 macros in a bit simplified assembler. The macros have full access to all sound parameters, the sound chip addresses and the midi out port. You call the macros by issuing the E command, like --- 0E21 will call macro 2 and set D0 to 1 on entry, while --- 0E40 will call macro 4 and set D0 to 0 on entry. The gadgets: They probably speaks for themselves. RESET will reset the current macro, LOAD and SAVE will load and save the macro, and EXIT exits (whao). Below you can select one of 16 macros (1-F) and below that there's a gadget named COPY FROM which when clicked on will copy the macro stated in the right hand corner to the current macro. By clicking somewhere in the black box (Ride on time!) you activate the editor. It works almost as a normal text editor (you will find out what differs :-). You can exit the editor by pressing ESC or the right mouse button. Above there's a text row where you can write an 11 character name for the macro. The assembler: By pressing HELP (while not in the editor) you activate a help text, where you can read parameters etc. Press HELP again to return to the macro. The macros are stored as 272 bytes each, where 16 are the name and 256 are the code. The mnemonics (instructions) MOVE, ADD, SUB, CLR, TST, CMP, Bcc, DBcc, RTS and JSR are implemented to date. For a discussion of these, get an 68000 machine language book or ask a friend. ONLY ONE instruction per row is allowed, and it there may not be any spaces before them. You can include labels from 0 to 31; defining them by writing f.x "0:" and branching to them by f.x "BGT 0". Numbers are assumed to be in decimal form, unless you write the H prefix, f.x MOVE.B HC0,D0 will put $C0 in D0. The macro is assembled automagically each time you exit the editor, and is disassembled to the editor each time you enter the macro-ed or change the macro. Whenever a note is played, for each voice there is set a table of parameters so that the effect routines can know what note is played etc. You can access these parameters by typing their shorthand names: NTE This word along with the next word (CMD) is a copy of the latest voice row. NTE is not very useful, but: CMD contains the latest command, i.e the macro call. Normally the playroutine calls the command in CMD each frame, so your macro routine will be called each frame. If you only want it to be called once (when the macro is issued) you just insert the line CLR CMD in your macro, to clear the CMD. PTR This LONGWORD is the address to the sample being played LEN A WORD which contains how many words there is in the sample RPT A LONGWORD pointing to the address of the loopstart RLN A WORD telling how long the loop is in words PER A WORD containing the period of the note VOL A BYTE telling the volume of the sample CPTR This longword is a write-only PAULA address ($dff0a0-0d0) pointing to the start of the sample CLEN PAULA length of the sample in words CPER PAULA sampleperiod CVOL PAULA samplevol The main difference between the PAULA parameters and the others is that the PAULA registers are write only. There are a couple of predefined subroutines which you can call: JSR STOPDMA will stop the current sample JSR STARTDMA will start the current sample (from the CPTR location) JSR GETPER will take the note value in D0 and output the period in D0 JSR GETNOTE will do the opposite, take a period in D0 and output the note value (0-35 where 0 is C1, 35 is B#3) JSR SENDMIDI This is a great one! It takes the byte in D0 and outputs it on the MIDI port.. Use it to make yer own sys-ex events You can use the registers D0-D4 and A0-A2 in the macro. They are stored upon returning from the macro, and are restored before entering the macro, so you can use them as variables. Register D0 is NOT stored however, because when calling the macro it contains the rightmost nibble in the macrocall. Like above, --- 0E23 will call macro 2 and put 3 in D0. You can ofcourse also use the stack pointer A7 in the macro. When a note is issued or a new macro is called, D1-D4 and A0-A2 are cleared. I realize that all this may sound hard to understand for a non-coder, but try to have a look at the examples on the disk, and you'll soon understand better. Here's a commented example, creating a portamento up siren effect: ARP.UP.1 --------------------- MOVE.W D0,D2 ; Copy D0 to D2 (D0 is the parameter) TST.W D1 ; Check if this is the first call (is D1=0?) BNE 0 ; If not, skip the following rows MOVE.W PER,D0 ; Get sound period JSR GETNOTE ; Get note from period MOVE.W D0,D1 ; Load D1 (our pitch counter) with D0 MOVE.W D0,D3 ; Store the sound pitch in D3 also 0: MOVE.W D1,D0 ; Copy D1 to D0 JSR GETPER ; Get period from note MOVE.W D0,CPER ; Load soundchip with period ADD D2,D1 ; Add our parameter in D2 to pitch counter D1 CMP.W 36,D1 ; Have we added over the highest note? BCS 1 ; Skip following row if D1<36 MOVE.W D3,D1 ; Begin again from the original pitch in D3 1: RTS ; Return. (IMPORTANT! YOU MUST HAVE A RTS!) END ; Tells the assembler to stop assembly. ---------------------- Note: A certain degree of 'spaghetti-programming' skills is required! :-) And here's how to use the midi-port to send a program change message: ---MIDI PGM------------------------------------------ CLR CMD ; Only do the effect once, not each frame MOVE.B HC0,D0 ; $C0 is the MIDI byte commanding a program ; change on channel 1 ($C1 is channel 2 etc) JSR SENDMIDI ; Send that byte MOVE.B 50,D0 ; The PGM midi command requires one data byte ; containing the midi program number, 50 here. JSR SENDMIDI RTS ----------------------------------------------------- Here's a description of the macros in the STMACROS directory: (x stands for the control nibble, i.e the rightmost nibble in the command call f.x E01, calls macro 0 with D0=x=1) DUALNOTE This macro switches the period 50 times a second between the original and the period of the note x halfnotes above the original. DUALPERIOD This makes a quite strange effect... Each frame it swithes between two periods, both starting at the original, but one goes up in pitch with speed x and the other goes down in pitch with speed x. MIDINOTE This is merely a test. It sends out a midi note on channel 1, the note is a middle C plus x halftones. RETRIG This one retrigs the note each (x-1):th frame. If the speed is 6 and x is 4, the note will be retrigged twice per row. STRANGELOOP1 This one makes a very short loop on the sample and pushes it forward through the sample with the speed x. It gives quite a groovy 'reverb' sound to drums etc... STRANGELOOP2 The same as STRANGELOOP1, except that in this the loop length is constant, and not dependant on x. ========================================================================== Some greetings to the following animals: Freddy "Fisken" L., Alex "H2O2" H., Nuquelas "Nacken" R., Peter Long John Bo Sköld Silver, Peter "Tollan" S., Olof "Bifbaf olwon ring tillbaka aldrig" A., Wizmar "Diskmar" W., Dajken "Porrkung" D., Aje "Oskuld" S., Tony "Båtsman" N., John "Bob" K., Fredrik "Störst på stan" K., Daff "Långfetthårig" E., Paul "Smirnoff" L., Jimmy "Hendrix" E., Ola "Afro" W., Strider, Blackie, Bacchus, Sväljenbrandbil, Lars "reamotorhårddisk" N., Beeeeeeeeeeeeeeääääeeeeernard, Karl "Söndrig dator" C., Marcus "Clemens-hållkäften" L., Urban "Korvskinnet" A., Anders "Kaktus" B., Per "Mackapär-pex-lillpär-Mahoney" T., Anders "Huvud vampyren" P., Vigilantie "Brandmannen", Roger "DANSK ÖLMAGE RÖDHÅR", Darre, Peter "Kånkelbär" L., Excalibur, Björn "Kvist" R., Genius, Henrik "KUMA- använder animeringar vid fylld vektorgrafik" E., Lars "Karlssons" M., Monopoly "Hårsvall", Panda "Puma", Parrot "Gojan", Seagull Comrade J/Share and Enjoy: Thanx for your interesting letter! and to all the other guys who've sent me letters (and haven't got them back)! Signed EXOLON OF FAIRLIGHT! If you have any suggestions on improvements, mail me at this address: (NO SWAPPING!) Björn Wesen Roslins v.20A S-217 55 Malmö SWEDEN If you're lucky you can also contact me at THE DUNGEON, +46-40435924. ------------------------Features in 1.2-------------------------- 1. Prints patterns while playing in 8 channel mode. (If there's time for it!) 2. An FM-Synthesizer is included to make samples for you. You can make any sound from organs to whips, chains and drums :-) See special doc below. 3. An AM-Synthesizer is included to make realtime sounds for you. A bit more limited than the FM, this makes sounds similar to the Future Composer.. Doc below... 3. Diskop screen squeezed into halfheight... So you can diskop while pressing play and stop... 4. Channel On/Off gadgets in 8 channel mode. 5. You can now click on the spectrum analyzer and it turns into two COOL oscillioscope pictures... Click again and the analyzer comes back. The left scopes displays voices 1 and 4 (the left channels) and the right scope displays voices 2 and 3 (the right channels). --------*> FM SYNTHESIZER <*-------- Welcome to the FM Synthesizer! First of all I would like to send some great thanks to my friend GLUEMASTER for exploring this topic. He got inspired of the Yamaha DX FM synth and decided to write his own on the amiga. He did, and now I have made one too! And included it into the StarTrekker 1.2!! It works like this: After you have pressed RESET, you have four sinus-waves under your control. You can't change the waveform, but you can change the envelope and base-frequency for each sinus-wave. Then you can choose for each to listen to it, modulate the next's frequency or both... The program then calculates a sample of your selected length, and you are free to use this sample to whatever you want (including playing it!). You can also choose just to save the parameters (120 bytes) to disk. You have some examples in the FMSOUNDS drawer on this disk. Load, press calc, play, and learn... Some hints: Try to only listen to ONE sinuswave (number 4 f.x), then put a small envelope on sinuswave 3 and press F.MOD on wave 4. Now wave 4's frequency will be modulated according to the output of wave 3. Then you alter the envelope and frequency of wave 3 till it sounds great, then press F.MOD on wave 3 and make a envelope on wave 2, adjust and continue with wave 1. NOW, if you press F.MOD on wave 1 also, it will be modulated by wave 4, and the modulation will be fed back to the beginning, causing some kind of noise suitable for drums etc.. The FM-Synth controls: In the middle of the screen there's a rectangle containing the selected wave's (the 1-4 buttons) envelope. It always display the envelope from the start till the release ends, even if the total time is just a fraction of the whole sample. Above the envelope is a black line. This line shows how much time the envelope shows, with respect to the total sample time. Buttons 1-4 let you select which wave to edit. The TOT number is the total time for the envelope (discussed above), if you want the envelope to be the same lenght as the sample, the black line above the envelope should be as long as the rectangle. HOWEVER if the total time is longer, the line's still only as long as the rectangle, so to be sure decrease the TOT until the line begins to shorten, the increase to the rectangles end.. The LENGTH number is the number of bytes the output sample should have. The FREE button clears the FM parameters but the sample's still intact. The RESET button loads the current FM parameters with the default sound. The LOAD and SAVE let you load and save the parameters as a disk file of the length 120 bytes. The CALC button calculates a sample according to the current parameter settings. The small dot appearing up in the right hand corner of the calc button signals that you have changed the parameters since you CALCed last. The FMOD button tells wether the current wave should be frequency modulated by the preceding wave. The LISTEN button tells if the output sample should contain this wave's output or not. To get a sound at all, at least ONE wave should have this button highlighted. Now for the real parameters... From up to down: FQ This waves base frequency. $1 is very low, $4 is average and $20 is quite high. L0 Start amplitude for the envelope A1L Attack level A1S The speed that the amplitude changes to the attack level, $1 is slow and $40 is fast. A2L Secondary attack level, for those who likes envelopes... A2S Secondary attack speed. DS The speed that the amplitude decays down to the: SL Sustain level. There is remains for the time set by the ST Sustain time. RS Release speed. The speed that the amplitude falls from ST to 0. Any change of either of the envelope parameters will cause a redraw of the envelope curve. It's very easy to see what does what with the graphic representation. DO NOT set any speed to 0, unless you want the amplitude to remain at the last value. To roll values faster, press the right mouse button also. When you press SAVE MODULE a requester pops up asking whether to save the by FM synthesis calculated samples. Normally you press NO to save diskspace, the FM sounds are automatically recalculated when you reload the module. However, to use the module in the replayroutines, you have to press YES because the replaysource doesn't contain a FM generator. (Guess why...) I realize that the FM-Synth can be quite hard to understand, there has been a lot of talking about FM-sounds and calculation here and there, but load the examples in the FMSOUNDS directory and try to change some parameters, important, DON'T FORGET THAT YOU HAVE TO PRESS CALC before you can play with your sound... ------------> AM SYNTHESIZER <------------ Welcome to the AM synthesizer. Unlike the FM synth this doesn't create a sample. It has it's own internal 32 byte long samples, and changes the volume and period of the sound 50 times a second. So, it operates similar to all the other synthetic sound programs out there like Sidmon, Future Composer etc. Here you therefore doesn't have to press a CALC button all the time, just change a parameter and play the keyboard. CONTROLS: In the box you have the envelope shape. You can edit the envelope in exactly the same way as in the FM synth, so please look above for that. Below the box there's four waveform gadgets to select the waveform. There's a sinus, a sawtooth, a pulse and a noise waveform. To the left, you can edit the vibrato amplitude and speed as well as the pitch fall. The FQ value is the octave. 0 is the highest and 5 is the lowest. Again, the best way to learn is to load the examples in the AMSOUNDS drawer. The FREE button clears the AM parameters. The RESET button loads the parameters with the default settings. The LOAD and SAVE buttons speak for themselves, don't they? --------------------------------- ------------------------------1.1 doc-------------------------------- 1. Opens an own intuition screen so mouseclicks won't fall through to the underlying workbench and cause trouble. 2. MULTITASKS correctly... Just press the screen to back gadget on the ST screen and it will lie quiet in the background Wait()ing... When you want to return to the st, just select the st window on the st screen by pressing the workbench depth gadgets. 3. KEYBOARD ROUTINE REWRITTEN! Using an IDCMP port connected to the st window... The ST now works on any configuration without using the -h option. So now you can choose your own key repeat speed in Preferences. NOTE: Key repeat will be disabled when not in Edit mode. Otherwise it wouldn't sound very good if you just play with the keys, hold one down and it goes R...rrrrrrrrrrrrrr..... If you have the polyphonic mode on (see the old docs below) you can now press many keys at the same time and play CHORDS... Great eh? 4. 8 CHANNEL EDITOR! Now the editor is in MED-RES in 8 channel mode so you can edit all 8 channels at the same time... When in polyphonic mode, choose voice 1-4 with LEFT ALT + F6-F9 and choose voice 5-8 with LEFT ALT + LEFT SHIFT + F6-F9. 5. INSERT/DELETE note in the editor. In edit mode, press return and the notes below in the column will go down one step.. Just as in an ordinary text editor. Also, by pressing Backspace you will delete the note the cursor's on and the notes below will be moved up one step. 6. FREEMEM now prints with 6 chars... So those of you with 2 meg chip can see all.. 7. COMMANDS implemented in 8 channel mode: $1 <amount> Frequency up $2 <amount> Frequency down $4 <speed><amplitude> Vibrato $A <up><down> Volume slide $C <volume> Volume change $D Pattern break $F <tempo> Tempo change It's not a very great idea to load a 4 channel tune and go 8 channels.. Because of the way the 8 channel routine works, it is very difficult to make the portamento commands in 4 and 8 mode equal f.ex. 8. The DISKOP menu now uses a real filerequester.. So you can go loading songs, modules and samples from wherever you want... There is no delete buttons on the diskop menu because in the filerequester you can delete any file you want. Some bugs fixed: When saving an 8 channel module or song the last odd pattern was lost. This is now corrected. (Thanx Lord CMP of Paradise for reminding me about that one.) Restart didn't work in 8 channel mode. I had it fixed in one version but unfortunately there was a slight version mix up. Now it's fixed. There was a bug in the NoiseTracker 2.0 when loading the .NT extra file. It was supposed to contain the midi transpose values etc. but they got overwritten as soon as the file had been loaded. This is now corrected. VERY OLD DOCS: POINT KEY: ( [.] On the keypad) With the point key you can select three playmodes. With one press, one dot will appear next to FREEMEM. You can now play with the keypad like a drum machine. The pitch for each instrument is set by pressing left ALT + the desired pitch key. With two presses, it's just like above but now the notes will be written to the pattern when in edit or record mode. With three presses, you will activate the POLYPHONIC mode. Now you can play on the keyboard, and the StarTrekker will automatically change voices. You can choose which voices are used by toggling them on and off with left ALT + F6-F9. QUANTIZE: With the quantize control, you can choose how many lines the cursor should jump when you enter a note in a pattern. The number is increased by pressing the left mouse button in the QUANT box, or by pressing CTRL. The number is decreased by pressing the left and right mouse buttons in the box, or by pressing left SHIFT + CTRL. COLOR CONTROL: Because the ordinary grey color is so utterly boring, you can choose between a bunch of colors by pressing ALT + F10. If you don't like any of them, SHIFT + F10 makes your day by randomizing the colors! MIDI: INCOMING MIDI: With the R: control you can select the channel the ST will respond to. You can play on the synthesizer's three middle octaves just like on the Amiga keyboard. The ST will NOT respond to MIDI clocks, Active Sensing or other control commands. OUTGOING MIDI: With the C: control you can select an outgoing channel for the current instrument. The L: controls for how long (how many patterns steps) the note will be played. If there is any C commands (volume change) in the pattern, these will be sent along with the notes as Attack Velocity. The T: finally is a transpose control. The ST will send out MIDI clocks in the same tempo as you have selected with the F command. Also the ST will transmit Midi Start and Midi Stop when you start or stop a tune. Remember to turn the MIDI on! ------------------------------------------------------------------------ BYE! HA DET BRA! /EXOLON BRAECKKORV FOREVER !!!!!
[ back to the prod ]