
For the early days before TiMidity 0.2i, see the
file CHANGES in the src/ directory.  Since then,
I modified 0.2i to serve as output driver for the
music programming system Adagio.  Then I adapted
the code for KDE's kmidi.  Then later as a plugin
for Alsaplayer.  Along the way, at various times
I've incorporated bits of code and some tables from
Timidity++, mostly marked off in the code with
"#ifdef tplus".

For the current version called "gt", I ripped out
a lot of stuff, because I couldn't test it, or
didn't want to be responsible for getting it to
work, because it never worked very well, or just
to reduce my confusion level.  If there's an
interface or output driver you'd like to have put
back in, as a basis for your work on the code,
let me know.  Maybe I can put it back.

-- Greg

Jul 04 2004 or thereabouts
	Initial distribution
Jul 09 2004
	Changed name of midi player from "timidity" to "gt"
Sat Jul 10 01:58:45 HST 2004
	Fiddled with -X and -V expression and volume options.
	Added -W <degrees> option to adjust surround sound.
	Added man pages for gt, sf2cfg, unsf.
	Fixed last major known bug in unsf. (There are still
	   bugs in volume balance and volume envelopes.)
Sat Jul 10 13:43:26 HST 2004
	Imported defs of int32, etc. from Timidity++. (gtim.h)
Sun Jul 11 12:12:57 HST 2004
	Changed "int" to "int32" in resample.c, hoping to get
	  it working on Mark Constable's Alpha64.
	Removed resample with filter.  Doesn't work. (resample_f.c)
	Fixed modulation envelope delay. (resample.c)
	Imported output buffer control from old version. (alsa_a.c)
Tue Jul 13 03:37:32 HST 2004
	For RMID files, read past RIFF chunk. (readmidi.c)
Wed Jul 14 12:13:51 HST 2004
	Disabled pan-delay. It's not working, and benefit is unclear.
	Enabled more compiler warnings. (Makefile.am)
	Starting to clean up types in resample code.
Thu Jul 15 11:01:59 HST 2004
	Using T++ resample_t int32 now.
	pre_resample no longer works.  But who cares?
	Fixed silly bug in surround panning routine. (playmidi.c)
	In resampling, check overshoot divisor not 0.
Fri Jul 16 02:50:18 HST 2004
	unsf: set panning to 7 always and add an extended byte
	   for true panning 0-255.
	Made "wet" the default with "dry" as an option. (timidity.c)
Fri Jul 16 10:42:57 HST 2004
	Redid panning for stereo instruments; now separation is
	   much less: 12 midi units.  Added 20 milliseconds of
           delay to right channel of instrument. (playmidi.c)
	Removed delay for chorusing echo notes. (playmidi.c)
Sat Jul 17 11:42:29 HST 2004
	Removed max/min data checks from resample.
	Fixed Alsa flush_output(). (alsa_a.c)
Sun Jul 18 09:22:26 HST 2004
	Indented all .c files.
	Added ncurses interface. (ncurs_c.c)
	unsf: give names to banks in config file.
	   I have to give the name after "#N " to be compatible
	   with Timidity++.  So cfg.l is now modified to scan
	   past the "#N ".
Mon Jul 19 20:14:34 HST 2004
	Blue voices bar for ncurses interface.
	Added utility patcat to make stereo GUS patches.
Tue Jul 20 06:28:27 HST 2004
	ncurses tracing: Stereo notes now magenta.  Blue sustains
	   now visible.  Added karaoke lyrics.  Added play list.
Wed Jul 21 05:38:59 HST 2004
	ncurses: Show initial message from driver.  Show loading
	   progress.  Behave better when window is resized.
	   Default buffer fragments no longer 2.  Tracing mode
	   is now the default.  ncurses is now the default
	   interface.
	With no file arguments, gt now constructs a play list of
	   midi files in the current directory.  With a single
	   directory argument, it constructs a play list from
	   that directory.  (Tuukka Toivonen's interesting
	   message is gotten with "-v".)
Thu Jul 22 06:06:24 HST 2004
	Edited gt.man and other documents.
	Added some box characters to ncurses display, and made
	   a prettier help window.  Mouse click on play list
	   selects next song.  Play list displayed before first
	   song starts.
	Added user input check while loading extended GUS patches.
	Removed delay between right and left of a stereo patch,
	   and increased separation from 12 to 24.
Fri Jul 23 07:09:05 HST 2004
	Fixed up autoconf stuff to detect alsa and ncurses.  ncurses
	   screen is now white if that's the default background.
	Added some optimization flags.
	Asked for more compiler warnings (and got them).  Fixed most.
Sat Jul 24 09:37:56 HST 2004
	Use sf2 initial attenuation to adjust sample volume.  (Some
	   instruments are now too faint, but this is better than
	   what I was doing before.)
	ncurses: Use left of voices bar to show state of Alsa buffer.
	   Add "Ceiling" control to adjust permitted polyphony with
	   shifted left and right arrow keys. Reverted to a black
	   background display -- it looks better.  Added beep for
	   mouse clicks outside the play list.
	Display midi time signature and key signature.  (Last part
	   of time signature might not be accurate.)
Sun Jul 25 09:23:07 HST 2004
	Display midi tempo. ncurses tracing: show GS/XG/GM type.
	A bunch more midi controllers are now recognized, but they
	   mostly don't do anything yet.  Celeste has some effect,
	   but probably not at all like real celeste.
Mon Jul 26 14:31:57 HST 2004
	Implmented mono and poly controllers (just guessing);
	Imported Timidity++ implementation of sostenuto.
	Reduced stereo voices amplitude by 25%.  Should I?
	ncurses: added * in B column for mod wheel.
Tue Jul 27 18:37:05 HST 2004
	Fixed bugs in clone note killing.
	ncurses: Added 4 columns for other controllers.  Cropped
	   file name for display.
	opt_dry now turns off reverb and chorus requested in patch.
	brightness raises reverb echoes by an octave
	harmonic content raises chorus echoes by a fifth
Thu Jul 29 14:45:27 HST 2004
	ncurses: Sometimes song title and author are shown.
	Replaced surround panning algorithm with old version, but with
	   volumes adjusted logarithmically.  Update help, gt.man.
	In adjust_amplitude(), don't cut center volume in half when
	   doing 5.1, since it's for only one speaker.
	Removed flanger and phaser delays.  Sound terrible.
	ncurses: Added ESC to quit.
Sun Aug  1 01:20:35 HST 2004
	Adjust output frame count with delay from alsa driver (alsa_a.c).
	ncurses: In 'S' sustain column, portamento ('P') and legato ('L')
	   are also shown.  Also soft pedal ('s') and sostenuto ('O').
	   Added clips display.
	-p command line option now sets voices_ceiling rather than voices.
	Removed -F fast panning option (timidity.c).  (Always do fast
	   panning.)
	Fixed master volume -- forget to multiply it in in rev. of Thurs.
	Added option to turn off celeste.  For ncurses, add mouse click
	   to toggle reverb, chorus, and celeste.
	ncurses: Clear controller display on reset.
Sun Aug  1 16:06:01 HST 2004
	Made expression table for panning.
Mon Aug  2 06:03:32 HST 2004
	XG variation bank is now a timed midi event and can be set to 0.
	ncurses: Added banks to display.
	Kill percussion notes to reduce polyphony.
Tue Aug  3 00:33:56 HST 2004
	ncurses: Increased size of ring to avoid stuck notes in display.
	Reenabled optimization in src/Makefile.am
Wed Aug  4 05:49:52 HST 2004
	ncurses: Fixed help window.  Reduced amount of default info on
	   display.  Added mixer window -- prel. version.
	Set alsa driver start threshhold to full buffer.
Fri Aug  6 07:32:39 HST 2004
	Play-pause toggle implemented, but ncurses display doesn't yet
	   sync up correctly.  ... Now it does.
	Experiment with alsa snd_pcm_pause() was not successful.
	Updated gt man page.
	Added -v verbose option to patinfo.
	Disabled interpretation of keynumToVolEnvHold, hoping to hear
	   Halopad of Fluid sf.  Still can't hear it.
	ncurses: Added surround separation to mixer window.
Sun Aug  8 06:42:52 HST 2004
	Fixed bug in playing velocity layers.
	Options in config files can be preceded by "#option", for
	   compatibility with Timidity++.
	Found 2 bugs in treatment of XG sfx banks:
	   1. Bank 120 is not substituted for the sfx bank.
	   2. When an sfx bank voice is loaded, the corresponding voice
		in bank 0 is also loaded (but not played).
	ncurses i.f. now shows sfx bank (in magenta).
	Added Fluid_GM.cfg to the examples directory.
Mon Aug  9 04:13:10 HST 2004
	ncurses i.f. now shows rhythm sfx bank.
	ncurses: Do initial reset to show bullets.
	Fixed previous incorrect change to note terminations in resampling.
	Added info to verbose display of patinfo.
	Added pitch modulation for XG variation banks 40-42.  It's different,
	   anyway.
Tue Aug 10 03:49:28 HST 2004
	ncurses: Show patch memory instead of loading bar.
	Added fast load option to load only first layer.
	ncurses: Don't scroll playlist near bottom.
	XG variation banks 40-45 now play mallet.
Wed Aug 11 17:58:40 HST 2004
	Fixed bug in channel number coming from XG sysex dumps by ignoring
	   port.
	Implemented XG sysex assignment of receive channel.
	ncurses: Notes on channels above 16 are shown in cyan.
Thu Aug 12 02:10:31 HST 2004
	Worked around bug in ext. GUS patch for synthdrum freq. center(?).
	Added some more XG controller assignments in sysex dumps.
	For variation banks 40-45, linked up mallet notes -- perhaps
	   not necessary.
	Do not make all looping voices sustained (instrum.c).  (XG doc says
	   horse sfx is looping but not sustained.)
	Removed fast attack feature (instrum.c).
	Fixed help page to show correct default max patch memory.
	Adopted T++ random pan for XG sysex.
	Fixed loading of patches for percussion XG receive channels.
	Fixed ncurses display of drumset for receive channels.
Fri Aug 13 06:19:55 HST 2004
	Refixed yesterday's workaround for SynthDrum problem.
	ncurses: Clear notes display when restart.
	Implemented XG variation effect for cases that overlap reverb and
	   chorus (to the extent the latter are implemented).
Sat Aug 14 14:08:25 HST 2004
	Made tremolo parameters local to voice.  Added tremolo for a
	   couple of chorus/variation types.
	Worked around bug that segfaults due to non-existent rhythm sfx banks.
	Fixed bug caused by reflexive receive channels.
	Expanded room for play list, so that a console window can
	   show one.
Mon Aug 16 00:32:30 HST 2004
	Nicer tracing messages, in cyan.  Avoid with -inq; get more
	   with -invv.
	bhangra.mid, jungle.mid required too much polyphony; had to start
	   killing notes that are not decaying.
Tue Aug 17 06:33:13 HST 2004
	Dusted off a midi disassembler "dim" and put it in utils directory.
	Reverb delay for XG is now as specified in the XG spec. (For reverb
	   system only -- variation reverb not fixed yet.)
Wed Aug 18 07:13:21 HST 2004
	All XG basic effect parameters now have defaults according to spec
	   and are probably correctly set by sysexes.  Hardly anything is
	   actually implemented, though.
	Implemented various attack/release/decay controls from sysex and
	   nrpn, for drums and melodic.
Thu Aug 19 07:28:27 HST 2004
	Implemented data initialization for insertion effects 1 and 2.
Fri Aug 20 04:59:24 HST 2004
	Fixed alsa driver to get max fragments for period = AUDIO_BUFFER_SIZE,
	   which turns out to be 8 on my system.  Inserted check for user
	   input before pcm_wait -- more responsive now.
	Added extra stereo notes for some insertion effects.
	Reverb notes now controlled by these XG effect parameters:
		reverb time (parm 1)
		initial delay (parm 3)
		dry level (identified with reverb send) (parm 10)
		er/rev balance (parm 13)
Sat Aug 21 13:49:05 HST 2004
	Get some debugging info with -invv to see what info is reaching
	   the effects processor.
	XG chorus block parameters LFO freq, LFO depth, feedback are given
	   some sort of interpretation now.
Sat Aug 28 09:22:33 HST 2004
	ncurses: Revamped colors.
	Implemented velocity sense depth/offset (from T++) and XG dry level.
Sun Aug 29 04:45:54 HST 2004
	Throttled allocation of clone notes.
	Fixed drum panning bug.
	Implemented drum coarse pitch assignment.
	ncurses: Added magenta part to voices bar for non-reverb effects.
	Redid velocity calculation.
	Fixed bug in transposition; allow transposition for drums.
Sat Sep  4 05:22:48 HST 2004
	Added ac3 output -- output device "d" for "Dolby".
Sun Sep  5 10:15:15 HST 2004
	Extracted ac3 encoder from ffmpeg.
	Made default names for wave and ac3 output files.
Mon Sep  6 14:18:03 HST 2004
	Added system configure for ac3 encoder.
	Finally got interpolation+lp-filter to work.
	Reworked treatment of filter cutoff freq.
Tue Sep  7 05:51:48 HST 2004
	Implemented 2 levels of filter resonance.
	Added 100Hz filter to lfe for wave and ac3 output.
	Removed command line option -P to set default instrument.
	Cfg reader now accepts "\" to continue line before option.
	Stop default stripping loops and envelopes for percussion (for non-eawpats).
Wed Sep  8 03:13:17 HST 2004
	4 levels of filter resonance.
	Decreased mod wheel depth.
Thu Sep  9 13:47:24 HST 2004
	Added 3 bytes to extended GUS format for lfo parameters -- affects
		GUSSF2-SPEC, unsf.c, patinfo.c, as well as gt.
	Disabled filter interpolation for soundfonts because of bug. (See
	   Sep 12 note.)
	Changed default volume and expression curves to linear.
Sat Sep 11 09:55:44 HST 2004
	Moved choice of interpolation algorithm to the voice level.
	Added cutoff=n option in config files.
	Added default cutoff frequencies for GUS patches.
	Implemented drum cutoff, resonance, and variation send.
	Added sanity check for cutoff frequency to unsf.
	File README.controllers lists letters shown in ncurses i.f.
Sun Sep 12 03:44:25 HST 2004
	Made choice of linear/nonlinear interpolation and filter/nofilter
	   orthogonal.  Redid function key interpolation choice for ncurses
	   i.f.
	Echo notes now use linear interpolation with no filter.
	Cut down resonance effect of harmonic content controller to make
	   ambient.mid sound better.
	Filter for soundfonts doesn't show bug now, but can't really hear
	   it at all any more.  What's wrong?
	Fixed bug in mapping rhythm sfx to regular bank numbers.
	Amalgamated some ac3*.h files.
Mon Sep 13 02:57:19 HST 2004
	Fixed ncurses misc controllers colors for signed values.
Tue Sep 14 04:09:47 HST 2004
	Filter for soundfonts fixed by disabling lfo parameters.
	Fixed lfo (needs work though).
	Fixed lfo parameter calculation in unsf.  Now soundfonts and
	   extended GUS patches work the same.
Thu Sep 16 14:00:30 HST 2004
	unsf could segfault on small .sf2 files.  Fixed.
Sat Sep 18 09:59:16 HST 2004
	Added banks 52-54 as tutti voices.
	Now for XG midis, all melodic banks below 17 count as variation banks,
	   and if there is no patch for a voice in the requested bank, that
	   bank counts as a variation bank and bank 0 is used, whether or not
	   the midi is XG.
Sun Sep 19 07:13:15 HST 2004
	unsf: Fixed problem with some names ending in spaces.  Added options
	   -s to extract only one velocity layer and -s to extract left
	   channels only from stereo patches.  Also -d to force assumption
	   that the .sf2 is a drum kit.
	Added lfo modulation of filter cutoff for variation bank 4.
Mon Sep 20 10:27:28 HST 2004
	To use more sfx percussion banks, changed cfg syntax so that old
	   "drumsfx1", e.g.,  now becomes "drumsfx 0", where the number after
	   "drumsfx" can be 0-127.  Tested using "drumsfx 33" for the
	   "Small Latin" set used in a Richard Dudeney xg midi "krust.mid".
	   Also, now names can be assigned to such kits in the cfg file.
	   See examples/Latin_Hand_Perc.cfg.
Wed Sep 22 04:21:17 HST 2004
	Fixed some bugs in kit assignments.  Made percussion sfx magenta
	   in ncurses i.f.
	Added mu100 voices.  Not working 100% yet.
Sat Sep 25 08:30:50 HST 2004
	Added vl voices.
	Redid sndfont sample volume calculation.  Speeded up sndfont loading.
	Fixed some config interpretation bugs.
Sun Sep 26 16:46:18 HST 2004
	Now have distinct (though incongruous) patches for most pianos and
	   basses, annotated in .cfg files in examples/ directory.
Mon Sep 27 05:39:43 HST 2004
	Unsf shouldn't use "-B0" suffix when there is only one bank.
	Implemented mod wheel control of tremolo, and xg sysex controls that
	   connect mod wheel to pitch and tremolo (and filter, but that's
	   not implemented yet).
Tue Sep 28 03:26:37 HST 2004
	Mod wheel control finished now.  Seems ok for pitch.  Maybe ok for
	   tremolo.  Can't tell for frequency -- no good midi test files.
	Should make sure filter cutoff is not too high when harmonic content
	   controller is used.
	cfg reader now checks for out-of-range bank numbers
Wed Sep 29 03:59:58 HST 2004
	New "bankxg" keyword for variation banks 1-16.
	Some error reporting for out of range bank numbers in cfg files.
Thu Sep 30 08:23:02 HST 2004
	Added "-b number" command line argument for auditioning upper
	   banks.
Fri Oct  1 04:46:02 HST 2004
	Used the last byte in the extended GUS sample header for a soundfont
	   generator (#59) used in APS Emu fonts.  Function unknown.
	unsf added options -n (no write), -V (adjust sample volumes),
	   -F (flag sustain adjust)
	Added "keep/strip = sustain" user config option
Sun Oct  3 04:37:42 HST 2004
	Ad hoc fix for soundfont attack and sustain calculation.
	Gave up on trying to get looping-but-no-sustain patches.
	Extended patcat to combine extended patches.
Tue Oct  5 09:37:56 HST 2004
	Revised soundfont treatment of stereo voices to use mono patches
	   for both left and right in the case of partially stereo
	   instruments.  Likewise for extended GUS patches.
Wed Oct  6 11:13:28 HST 2004
	unsf: Fixed some major bugs.  Still have to handle percussion pools,
	   somehow.
Thu Oct  7 00:34:16 HST 2004
	unsf: Percussion pools done.  The "-L" suffix for stereo drum names
	   is now trimmed off.
Mon Oct 11 03:35:47 HST 2004
	Added utility program sfz2pat (replaces old wav2pat program).
Wed Oct 13 06:20:07 HST 2004
	Extended sfz2pat to read aiff files.
	Added sfz patch reader.  Very primitive, so far.
Fri Oct 15 11:09:16 HST 2004
	Implemented keyboard splits in sfz2pat/sfz-loader.
Sun Oct 17 05:39:12 HST 2004
	Changed default rate to 48000 after learning that Audigy resamples
	   to this.
	Sfz-loader works now, at a primitive level.  See examples/BbClar.sfz.
Mon Oct 18 06:10:18 HST 2004
	Redid purging of instruments from memory, so that sample data pointers
	   don't have to point to the start of allocated memory.
Tue Oct 19 11:46:18 HST 2004
	Reading oggs for sfz samples.
Thu Oct 21 03:53:01 HST 2004
	Speeded up loading GUS patches by using mmap.  This takes more memory,
	   and I seem to have lost some polyphony.  Much faster.
	Fixed change of song title in ncurses non-tracing mode.
	Implemented "soundfont" command for cfg files.
Fri Oct 22 08:29:32 HST 2004
	Playing 24 bit samples from sfz patches now, but I can't tell whether
	   it's working.
	Changed FRACTION_BITS to fit Easyrider samples.  Some samples are
	   still too long.
Sat Oct 23 04:30:44 HST 2004
	It's working ok, but percussion envelopes for sfz are not right.
	Changed sfz to allocation system to be able to free groups.
Sun Oct 24 03:33:54 HST 2004
	Updated sfz2pat for allocation.
	Implemented sfz sw_hikey, sw_lokey, sw_up, sw_down.
	Made arbitrary amplitude adjustment for 24-bit samples: *8.
	Implemented sfz hirand, lorand, amp_random.
	The soundfont config command didn't reset cfg_condition.  Fixed.
Tue Oct 26 09:26:07 HST 2004
	Revised surround panning for 6 channels.  Now midi pan 0-127 goes
	   from equal amplitude for left rear & front, for 0, to
	   equal amplitude for right rear and front, for 127.  32 other
	   pan values for surround effects pan between the two rears.
	   It makes more sense, but does it sound better?  Yet to do:
	   fix 4 channel case similarly.
Wed Oct 27 06:54:48 HST 2004
	Tried setting sample length bits to 64.  It works ok, but takes
	   too much cpu.
Tue Nov  2 03:51:06 HST 2004
	Added legato -- arbitrary cut of first 32ms of sample.
	Now adjust panning immediate of all but reverb notes.
	Arbitrary reduction of center volume by half. (Retracted.)
Wed Nov  3 11:07:00 HST 2004
	One note of a stereo pair may pan slightly to the rear.
Sun Nov  7 12:20:51 HST 2004
	Revised lp filter yet again.
	Made minor improvements to patinfo utility.
	Made major improvements to unsf utility.  Now it looks at end
	   of sample name to allot samples to left and right channels.
	Now filter resonance from soundfonts is left in centibels.
Tue Nov  9 03:09:38 HST 2004
	Redid polyphony reduction routine.  Works better for busy midis,
	   but sometimes turns off reverberation unnecessarily.
	Lowered rate of lfo controlling the lf filter.
Wed Nov 10 08:28:46 HST 2004
	Halved resonance specified in soundfont.
	Tried adding an lfo for resonance -- doesn't sound right.
Wed Nov 17 09:34:58 HST 2004
	Implmented new lp filters: variable state, moog vcf.  Not yet
	   in use, though.
	Lowered lp cutoff frequency to make resonance sound better.
Thu Nov 18 07:26:23 HST 2004
	Implemented XG bank 27, rezo sweep.
