OK, kids!  Here's the history of DES-Tracker, throughout its many versions and
bug fixes, including notes on this version you now have (v1.4).

My usenet address is still dschebek@outb.wimsey.bc.ca.  I'm hoping it won't
change again anytime soon... :)


            ENHANCEMENTS AND BUG FIXES FOR DESTRACKER LIBRARY V1.4
            ======================================================

    This release features two new functions that should come in quite handy
for those of you who are writing players/scopes on top of DES-Tracker.  The
first function is called "AddStatusSignal" and the other is called
"RemStatusSignal".  These two functions allow you to pass a signal bit to
the DES-Tracker library.  Then you can Wait() for that signal.  The library
will signal you automatically whenever the play status changes (ie, pauses,
continues, starts playing, stops playing, module is loaded or unloaded).

    The other routine (RemStatusSignal) removes the signal bit from the
library's signal queue.  Any number of tasks can be waiting on the library
at the same time.  Also, you can call either of these two routines regardless
of whether you own the library or not!  So even a simple scope display can
use it, even though there might be another player running that has a lock on
the library!  Kewlies. :)

    See the LibFuncs.DOC file for more information on these two new functions.


            ENHANCEMENTS AND BUG FIXES FOR DESTRACKER LIBRARY V1.3
            ======================================================

    This release is only minor.  It fixes a bug that causes the player to
slightly misinterpret an extended Protracker command.  Plus I added a new
feature:

- A bug was fixed in the "Sample Offset" command that caused the player to
  "greatly exaggerate" the desired offset in the sample.  This has been
  fixed.  Now the Maruku Buranu mods play correctly (as will other Protracker
  modules).

- The PSC0 construct had a reserved byte field in it, which has now been given
  a legitimate meaning.  It now holds the default number of iterations for
  playing the song.  This was added so that you could set the number of
  iterations for a song, save it back to disk, and then simply play it from
  DTC and have it play for the correct number of iterations.  Bear in mind,
  though, that DTC does not fade the song out automatically.  It just starts
  it playing.

  Also, since the number of iterations is now part of the PSC0 construct, the
  number of iterations are now set automatically by DES-Tracker whenever it
  loads a song that contains a PSC0 construct.  If the song doesn't have a
  PSC0 construct attached to it, then the number of iterations are set to
  0 when the song is loaded.

  For more information on the PSC0 contruct, see the file "DTLib.ReadMe".

- I modified the JukeBox.rexx program somewhat to allow for the number of
  iterations now stored in a module's PSC0 construct (if the module has one).


            ENHANCEMENTS AND BUG FIXES FOR DESTRACKER LIBRARY V1.2
            ======================================================

- This release of DES-Tracker includes the absolutely brand-spanking newest
  release of req.library (v2.7).  DES-Tracker is currently the only source of
  this of req.library v2.7 at the moment, so spread it around! :)

- A new flags field had to be defined for the library's base structure.  The
  upshot of this is the old LScope program will not work properly with the new
  library.  you will need the new one (v1.2) included in this version of
  DES-Tracker.  Also, any programs you may have written that read the library
  base structure directly will have to be recompiled with the new includes
  provided in this release as well.  Sorry for the inconvenience.

- DES-Tracker sometimes missed notes that it was supposed to play.  This has
  been fixed.  It was a problem with both the "Note Delay" command and the
  "Retrigger Note" command.

- A tiny little debugging remnant was left behind in the library code itself
  that did a longword write to location $0.  This has been removed. (Colin Fox
  found this one, 'cause he's got Enforcer and I'm still running on a 1 meg
  Amiga 500 with a lowly 68000). :(  This bug was found to be "mostly
  harmless".

- An actual bug (!) was discovered in the DTC program, appearing in the form
  of an Enforcer hit.  The bug caused a byte to be written to location 0.
  This has been fixed.  Again, "mostly harmless" (unless you're using
  DES-Tracker with Director II).  Thanks to Dave Knox for leading me on the
  warpath to find this one, and to Colin Fox who used Enforcer to help me
  track it down and throttle it.

- A serious Enforcer hit was discovered in LScope.  This has been fixed.

- The library had a problem with mods that referenced undefined instruments
  (also referred to as "blank" instruments).  Although I disagree with the
  idea of references to undefined instruments, I added support for this
  anomaly by creating a *real* blank sample in memory, and using it whenever
  an instrument is referenced that does not exist.

- If the LoadModule function encountered a file that was missing instruments,
  it would abort with an "insufficient memory" error, which is wrong.  Now, if
  such a file is loaded, it will abort with a "missing instrument(s)" error.

- The library did *not* like Protracker's interpretation of the tempo command
  (ie, interpreting tempos greater than 31 as "BPM" tempos.  DES-Tracker now
  understands these tempos and interprets them properly (to the best of my
  knowledge).  I think that this BPM idea for the tempo command should win an
  award for the most stupid idea in the world of trackers.  First off, there's
  no such thing as a "beat" in a tracker module, and secondly, the author of
  Protracker should have MADE THE BPM TEMPO STUFF AS A SEPARATE TRACKER
  COMMAND!!  Goodness, I'm ranting again...

  Anyways, if you play a Protracker song that uses these BPM tempos, you will
  notice the fine tempo now changes as a result to create the correct tempo.
  Also, notice that it doesn't matter what timing mode you're in (ie, 50 or
  60Hz).  the correct fine tempo will be calculated taking the current timing
  mode into account.

- Some songs do not "use" BPM timing, ie, they want tempos greater than 31 to
  be interpreted as normal tempo values.  Therefore, the library now has an
  extra function called "SetTempoInt" (ARexx equivalent: DES_TempoInterp).
  This allows you to specify whether a loaded module will have its tempo
  commands interpreted as normal tempos in the range 1..255 or normal tempos
  in the range 1..31 with tempos 32..255 treated as "BPM" tempos.  The default
  setting is BPM tempos enabled.  This flag is saved with the module in the
  "PSC0" construct appended to the end of the song so that DES-Tracker will
  know how to interpret that song's tempo from now on.

- The DTC program has been modified to accept multiple commands in a single
  invocation (eg, "DTC mf1 lm in:HamsterDance sm out:HamsterDance", not
  including the quotes of course.  This will load up the song called
  HamsterDance (in either Noisetracker 2.0 or Soundtracker v2.6 format) from
  the in:  directory and save it back to disk in Noisetracker v2.0 format in
  the directory called out:  ).  It should be noted that filenames that have
  spaces in them should be enclosed in double quotes (ie, "in:Hamster Dance").

- The DTC program has had an extra command added to it called "LP", which
  means "Load & Play module".  You use it just like you'd use the "LM" command
  ("Load Module").  It will automatically start the song playing as soon as
  it's loaded.

- The DTC program has had another command added to it called "TI", which means
  "set Tempo Interpretation". "DTC TI 0" enables BPM tempo interpretation, and
  "DTC TI 1" disables it.

- The JukeBox.rexx program was modified.  A better shuffling algorithm was
  added.  This isn't terribly important, though. :)

                          --- End of History.TXT ---
