pouët.net

Go to bottom

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 !!!!!


Go to top