Version 3.1 -- now supports awedrv
	
Mon Sep  2 13:29:29 1997  Andrew Robinson  <ajr@bellatlantic.net>

	* VoiceGUS.C: New module to handle GUS-specific code.  Mostly
	ripped from Voice.C.

	* VoiceAWE.C: New module to handle AWE-specific code.  It still
	uses some GUS_* commands; these will eventually be eliminated.

Mon Sep  1 13:25:15 1997  Claudio Matsuoka  <anonymous>

	* Envelope.C (getY): consider loopEndX outside the loop instead of
	inside.

	* load_xm.C (loadXmPattern): Multipy tone portamento value by 16.

-------------------------------------------------------------------------------
Version 3.0.6 (back to old format ChangeLog for this release)
All changes by Andrew J. Robinson

Once again, thanks to Marc Merlin for his testing efforts.  Gmod would not be
as good as it is now without him.

!!! You must resave the xgmod options when using this release.  The .xgmodrc
    file has changed slightly. !!!

It's normal for the "GUS: Midi Busy" message to appear in the system log when
(x)gmod starts.  Check the README for (very slightly) more information.

Too many internal changes to mention.  Most are not user-visible anyway.
Addition of "check magic number" to options.  See the man page.
Changed comment window so it now has scrollbars.
Misc bug fixes.

-------------------------------------------------------------------------------
Version 3.0.5:

Sun Feb 23 17:22:39 1997  Andrew J. Robinson  <ajr@bellatlantic.net>

	* Makefile (OFILES): use patsubst, as suggested by Erwin Andreasen

	* load_xm.c (load_xm_pattern): [and others] Implement remaining xm
	effects and xm pan envelopes

Mon Feb 10 00:17:29 1997  Andrew J. Robinson  <ajr@bellatlantic.net>

	* load_xm.c, play_voice.c, effects.c: Added support for note-linear
	slides in XM modules

	* Voice.h (class Voice): Added mainVolume [a global volume]

Sat Feb  8 15:46:22 1997  Andrew J. Robinson  <ajr@bellatlantic.net>

	* Six69.c, mod.c (load): Changed tuning of looped samples slightly

Wed Feb  5 00:57:30 1997  Andrew J. Robinson  <ajr@bellatlantic.net>

	* s3m.c (load): Copy at most 28 characters for the name of the
 	s3m sample

Mon Feb  3 18:31:48 1997  Andrew J. Robinson  <ajr@bellatlantic.net>

	* Sequencer2.c, load_mod.c, load_s3m.c, load_xm.c: added code for
 	shortening samples if memory is exhaused while loading samples

Sun Feb  2 19:11:41 1997  Andrew J. Robinson  <ajr@bellatlantic.net>

	* load_mod.c (load_module): Use magic instead of the filename to
 	determine whether or not a file needs to be decompressed

	* load_s3m.c (load_s3m_pattern): calculate where a pattern ends
 	using the pattern length, and don't go beyond that position when
 	loading

----- Released version 3.0.4 -----

Important changes:
        PAL sample timing is the default when playing MOD files (the default
        was previously NTSC timing).
	The up and down arrow keys don't control the mixer volume
	anymore; they are used to scroll through the samples.
	The '-e' option has been removed from the ncurses version -- all
	samples are always shown (since they can now be scrolled through).
 
Mon Jan 27 19:52:10 1997  Andrew J. Robinson  <ajr@bellatlantic.net>

	* Sequencer.c (open): Don't use GUS PnP workaround if a newer
 	sequencer driver is being used

	* Voice.c, Voice.h: new class to handle voices

	* signals.c (timer_handler): scroll samples when using up arrow
 	and down arrow

	* parse.c (parse_args): Disable '-e' option when using ncurses

	* Sequencer2.c: Move patch_load here to prevent clash between
 	ncurses and deque

	* CursesScr.c, CursesScr.h: new class to handle non-X interface

Sun Jan 12 16:51:13 1997  Andrew J. Robinson  <ajr@bellatlantic.net>

	* TrackShell.c (updateTracker): Moved updateTracker here from
 	proc_input.c [update_tracker]

Sat Jan 11 01:58:58 1997  Andrew J. Robinson  <ajr@bellatlantic.net>

	* play_note.c (do_command): Check whether or not a sample is valid
 	before calling set_slideto

	* load_xm.c (load_xm_module): Create an empty pattern if a pattern
 	is in the playlist but doesn't exist

----- Released version 3.0.3 -----

Mon Dec  2 18:54:50 1996  Andrew J. Robinson  <ajr@bellatlantic.net>

	* Sequencer.c (open): Do not return an error code if no GUS MIDI
 	device is found

Thu Nov 28 00:15:23 1996  Andrew J. Robinson  <ajr@bellatlantic.net>

	* play_mod.c (play_next_position): Skip a pattern if it does not
 	exist [has not been loaded]

	* load_s3m.c (load_s3m_module): Take FILE** instead of FILE*,
 	since this function may change mod_fd

----- Released version 3.0.2 -----
	
Sun Nov 24 16:27:17 1996  Andrew J. Robinson  <ajr@bellatlantic.net>

	* gmod.c (main): gmod only: skip a module if load fails

	* TopShell.c (doNext): Unqueue modules that don't load properly,
 	but only if currently "autoplaying" [no user interaction caused
 	the bad module to be loaded]

Fri Nov 22 19:42:53 1996  Andrew J. Robinson  <ajr@bellatlantic.net>

	* load_s3m.c (load_s3m_module): Corrected check of whether or not
 	load_list is empty.

	* Sequencer.c (open): open /dev/midiXX for write only before
 	opening /dev/sequencer for read and write.  This is a workaround
 	for a bug with the GUS PnP card.

Fri Nov 22 19:42:53 1996  Peter Federighi  <federigp@elwha.evergreen.edu>

	* load_mod.c (load_mod_module): Load modules with an xxCH
 	signature

Mon Sep 23 18:52:51 1996  Andrew J. Robinson  <robinson@eclipse.net>

	* Envelope.c: Added support for volume fadeout [experimental]

----- Released version 3.0.1 -----

Sun Sep 22 17:12:13 1996  Andrew J. Robinson  <robinson@eclipse.net>

	* Envelope.c: New file.  Support for XM volume envelopes
	[experimental].

	* TopShell.c (playClicked): If no module is currently playing, set
	current_mod before calling pick_random.
	
Mon Sep 16 01:37:46 1996  Andrew J. Robinson  <robinson@eclipse.net>

	* play_mod.c (play_next_position): Fixed a bug in the bugfix for
 	the "pattern delay" command [in version 2.2]

	* play_mod.c (play_module): Added a 1 second delay before module
 	playback begins to prevent modules from "running together".  The
 	time needed to load the module is included in the calculation of
 	the delay.

	* QueueShell.h (class XQFileDialog): Don't close the QFileDialog
 	after a module has been selected

-------------------------------------------------------------------------------
Version 3.0 (Additions/changes by Andrew J. Robinson):
   Many, many thanks to Marc Merlin for his suggestions and helping me with
      testing.
   Changed from FWF widget set to QT.
   Change user id/group id back to real user id/real group id after opening
      the sequencer and mixer.  This makes it safe to make gmod and xgmod
      SUID root or SGID root.
   The PATH and IFS environment variables are not reset anymore.  This means
      that the decompression programs can be located anywhere in the user's
      path.  This is now safe due to the previous change.
-------------------------------------------------------------------------------
Version 2.3 (Additions/changes by Andrew J. Robinson):
   Thanks to Marc Merlin for his many suggestions/bug reports.  Some (but not
      all...yet) have been included in this release.
   Convert 16 bit samples to 8 bits if they are too long.
   Changed the way the sequencer is "fed".
   Doesn't try to load 0 byte XM samples.
   Added play button to top-level window.  Previous and next buttons now work
      differently.
   TASD drivers version 3.0 or greater are now REQUIRED.
-------------------------------------------------------------------------------
Version 2.2.3 (Additions/changes by Andrew J. Robinson):
   Fixed bug in 669 pitch slides, caused by the "pattern delay" fix in 2.2.
-------------------------------------------------------------------------------
Version 2.2.2 (Additions/changes by Andrew J. Robinson):
   Modifications to compile with gcc 2.7.2
   Modifications to use newer ncurses library.
-------------------------------------------------------------------------------
Version 2.2.1 (Additions/changes by Andrew J. Robinson):
   Handle XM patterns with no data without giving a segmentation fault.
-------------------------------------------------------------------------------
Version 2.2 (Additions/changes by Andrew J. Robinson):
   Fixed bug in "pattern delay" command.
   Beginning of transition to C++.
   Initial XM support (incomplete).
-------------------------------------------------------------------------------
Version 2.1 (Additions/changes by Andrew J. Robinson):
   Changed "extended octaves" toggle to a spin label with 3 options:
      limited octaves, extended octaves, or automatic octaves.
-------------------------------------------------------------------------------
Version 2.0.2
   Additions/changes by Andrew J. Robinson:
      Tracking window.
      Use XtPopup/XtPopdown instead of XtMapWidget/XtUnmapWidget.
      Remove colors from fallback resources, and put them in an app-defaults
         file instead.
      Handle WM_DELETE_WINDOW - closing a window using the window manager will
         now close only the individual window, not the entire application.
      Lists don't show their name when they are empty
      Automatic detection of VoxKit driver version at run time.  The
         OLD_DRIVER compile option is no longer needed -- the binary will work
         with both driver versions (2.90-2 and 3.0+).
   Additions/changes by Alex Mohr:
      Patch for missing initialization of some variables.
      Patch to fix module lengths (currently in contrib/fix_length.patch)
-------------------------------------------------------------------------------
Version 2.0.1 (Additions/changes by Andrew J. Robinson)
   Error popups on the info screen no longer interfere with playback.
   Module name is displayed in the main window's title bar.
   The previous and next buttons now act as though the queue is circular.  See
      the man page for more info. 
   The file queue can be saved and loaded.
   The "Shuffle" button randomizes the play queue.
   "Random play" option plays modules in a random order.
------------------------------------------------------------------------------
Version 2.0 (Additions/changes by Andrew J. Robinson)
   Addition of X interface
   Support of non-blocking sequencer drivers
   Too many other changes to mention
-------------------------------------------------------------------------------
Version 1.4 (Additions/changes by Andrew J. Robinson)
   *** Thanks to Lodewijk Voge for help in debugging ***
   Applied another fix for out-of-tune S3M notes.
   Fixed volume change when a portamento command is specified.
   Volume slides occur on tick 0 in S3M version 3.00 modules.
   Added S3M panning.
-------------------------------------------------------------------------------
Version 1.3g (Additions/changes by Andrew J. Robinson)
   Fixed volume slides in S3M modules when the value is 0x0f or 0xf0.
   Fixed out-of-tune notes in S3M modules.
   Check to be sure loop endings don't go beyond the sample length.
-------------------------------------------------------------------------------
Version 1.3f (Additions/changes by Andrew J. Robinson)
   When a volume slide up and volume slide down are specified at the same
      time in a S3M, the slide down now wins.
   Fixed sequencer buffer dump timing (again) :-)
   Pitch slides in S3M modules are affected by the base note of the sample.
   Temporarily disabled ULT tuning, since it is not handled correctly.
-------------------------------------------------------------------------------
Version 1.3e (Additions/changes by Andrew J. Robinson)
   Fixed handling of pattern break and jump when both are present in the same
      note position.
   Fixed S3M out-of-range slide ups/downs (again :-) )
   Added "-5" option to use 50 Hz clock frequency with MOD files.
   Added support for arrow keys, page up, page down.
   Added a "gmodrc" file to allow configuration by filename.
-------------------------------------------------------------------------------
Version 1.3d (Additions/changes by Andrew J. Robinson)
   Fixed timing of sequencer buffer dumps.
-------------------------------------------------------------------------------
Version 1.3c (Additions/changes by Andrew J. Robinson)
   Fixed loading of S3M modules that require multiple passes.
   Fixed handling of situation when slide up/down hits the note range limits
      in S3M modules.
   Changed valid note range for S3M modules.
   Shifted all MTM notes up one position (as they should be :-) ).
   Fixed a bug which sometimes caused notes to be dropped (introduced when
      adding forward/backward keys).
   Added "-P" option to specify panning factor.
   Added support for UltraTracker 1.6 files (ULT format version 4).
-------------------------------------------------------------------------------
Version 1.3b
   Additions/changes by Andrew J. Robinson:
      Small fixes to lha/zip loading code (see below).
      Pathnames for decompression programs are no longer absolute.
      Support the the linear volume mode in VoxWare 2.5 +
      Added 'b' and 'f' keys to move forward/backward within a module.
      Changed the way numeric keys are used (now used for numeric argument).
   Additions/changes by Peter Federighi:
      Added ability to load lha'd or zip'd modules.
      Added code to make module filename safe for shell parsing.
-------------------------------------------------------------------------------
Version 1.3a (Additions/changes by Andrew J. Robinson)
   Fixed bugs in S3M effects.
   Added in-memory compression for S3M modules.
   Fixed loading of FLT8 modules (maybe?)
   Added "-q" option for quiet mode.
   Added "-R" option to randomize play order.
-------------------------------------------------------------------------------
Version 1.3 (Additions/changes by Andrew J. Robinson)
   Added support for "Set Finetune" command
   Modified effects slightly.
   Added "-r" option to infinitely repeat modules.  (suggested by Wayne Hodgen)
   Added "-p" option to use PAL timing for playing samples.  (PAL timing
      suggested by Wayne Hodgen)
   Added "-m" option to select alternate mixer.
   Fixed bug in tone portamento.
   Added 'p' key to go to previous module.  (suggested by Nan Zou)
   Added "-z" option for running in background.  (Background mode suggested by
      Nan Zou)
   Added recognition of SIGTERM, SIGUSR1, and SIGUSR2.
   Changed (NTSC) sample playing frequency from 8448 Hz to 8363 Hz.
   Initial S3M support.  There is currently VERY LITTLE error checking in
      the S3M loader, so it may crash.
   Added "-x" option to extend octaves for MOD files.
   Display of current position number and pattern number.
-------------------------------------------------------------------------------
Version 1.2b (Additions/changes by Andrew J. Robinson)
   Fixed loading of 15 sample MOD's, which I broke when adding the ability
      to load compressed modules. :-(
   Fixed a bug when there was tone portamento with a sample specified.
   Samples which do not completely load will no longer cause "short file"
      error (padded with last byte loaded).  Some ripped modules are missing
      the last few bytes.
   Added "-s" option to ignore "speed 0" commands.
-------------------------------------------------------------------------------
Version 1.2a (Additions/changes by Andrew J. Robinson)
   Added quit, next module, and volume keys.  (suggested by Steven Wahlberg)
   Fixed a bug in pattern breaks.
-------------------------------------------------------------------------------
Version 1.2 (Additions/changes by Andrew J. Robinson)
   -b option to not use BPM changes in MOD files.  This is for
      compatability with older trackers/mods.
   Recognition of "M&K!" signature.  (Suggested by Zygo Blaxell)
   Recognition of "M!K!" signature.
   Different exit codes.  (also suggested by Zygo Blaxell)
   If all samples in a MOD file are empty, then gmod no longer tries to play
      it.  This will prevent gmod from trying to play some non-music files.
   Changed format in which modules are stored in memory.
   Added "compression" of modules in memory.
   Fixed a problem with the proper patch sometimes not being selected.
   Support for all standard 669 commands.
   Fixed initial panning for 669 modules.
   Recognition of "Extended 669" format, although extended commands
      are not yet supported.
   Modules compressed with 'compress' or 'gzip' can now be played.
-------------------------------------------------------------------------------
Version 1.1a (bug fix by Andrew J. Robinson)
   Fixed a bug with volume when notes were delayed or retriggered.
-------------------------------------------------------------------------------
Version 1.1
   Many thanks to Robert Sanders for his excellent MTM & ULT loaders, and his
      numerous great suggestions!

   Additions/changes by Andrew J. Robinson:
      8 channel module support.
      Period table extended to cover more octaves.
      Reduction in the number of global variables.
      Fixed 669 sample loading to load ALL samples.
      Changed read to fread, lseek to fseek, etc.
      Added support for log volume in UltraTracker version 1 files.
      Added support for the panning command.
      "Set Speed" command now converted to either "Set Ticks" or "Set BPM".
      Each note can now have two commands.
      Volume now ranges from 0 to 255.
   Additions/changes by Robert Sanders:
      GUS memory checks/memory reporting.
      MultiTracker (MTM) & UltraTracker (ULT) loaders.
      "Show empty samples" option.
-------------------------------------------------------------------------------
First numbered version!  (V1.0)  (Additions/bug fixes by Andrew J. Robinson)
   Made seqbuf_dump more persistent -- if the entire buffer isn't written to
   the queue, it will keep trying.
   Improved pitch slides -- they are now linear with respect to period
   rather than pitch.
   Added "FLT4" module support.
   Added the rest of MOD commands except "set finetune" and "invert loop".
   Added support for tuned samples.
   Fixed 669 playing -- 669 modules should now play correctly, but 669
   effects are not yet supported.
   Changed calculation of speed.  I hope it's right this time :-)
   Added a small calculation to attempt to minimize loop clicking.
-------------------------------------------------------------------------------
Release date:  23 Dec 1993 (Additions/bug fixes by Andrew J. Robinson)
   Added sync_time after initial set-up.  This may help cure a problem with
   pitch slides sometimes not working.
   Changed the way bad samples are handled.  Now, the channel is turned off
   if a note is played on that channel using a bad sample.
-------------------------------------------------------------------------------
Release date:  22 Dec 1993 (Additions/bug fixes by Andrew J. Robinson)
   Fixed a misplaced 'if' statement.
-------------------------------------------------------------------------------
Release date:  21 Dec 1993 (Additions/bug fixes by Andrew J. Robinson)

   Added support for arpeggio, tone portamento with vol slide, pattern loops,
   pattern delays, note cuts, note delays, and the "fine" commands.
   Corrected (hopefully) volume slides, pitch slides, and speed command.
   Added code to use "closest note" when period in MOD file does not match
   a period in the table.
   Added checks to reduce the number of MIDI events put in the queue.
   Miscellaneous other small fixes.

Notes:
   The pitch of a note cannot be slid beyond two octaves of its original
   position.  This is a limitation of the Linux sequencer drivers.

