*ONGOING*

-Optimize, polish, and document.

*HIGH PRIORITY*

-Add an LFO or two.

-Portamento.  Nuff said.

-Add a stop and panic button.

-Allow multiple Jack instances.

-Create configuration interface for setting samples directory
and bank directory.

-Make a .specimen file reader/writer for preferences.

-Create a ladspa interface.

-Make ADSR envelopes ADHSR

-Add ADHSR for panning.

*MEDIUM PRIORITY*

-Create a keyboard note assigner.

-Create a sample browser.

-Jack is The Way.  Use it exclusively.  Figure out an appropriate way
to give each instrument it's own set of Jack outputs in either stereo
or mono.  Preserve the ability to easily output everything to the same
set of stereo ports.

-Create a Bank Builder per DLP's suggestion.  DRC has some suggestions
on the matter as well.

-Modify the Sample editor to give useful information such as current
sample play and loop points and their values, as well as the frame and
value of what ever the mouse is currently over.  This will require
modifying motion-notify signal handling in the Waveform widget.  Also,
create the ability to automatically select the nearest frame that best
matches the complimentary frame for whatever parameter you're setting.

-Create a configuration interface for the waveform display and sample
editor

-Listen to Erik's advice about upsampling.  Perhaps create an option
for "high quality" samples and maintain a range of samples for a given
sample at different sample rates.  The number of such samples
maintained can be analogous to a "quality" setting.

-Create a solid error graphical error reporting interface.

-Add play/stop buttons to parameter manipulation windows

*LOW PRIORITY*

-Add LASH support

-Add support for tuning via the MIDI tuning standard

-Pitch Bending.

-Beat Slicing.

-Make sure interpolation is actually working *properly* for the various
modes of play.

-Figure out a way to get the waveform preview to update when returning
from the editor.

-Clean up that crufty ass MIDI and shutdown code.  It's growing mold.

-Add a progressbar when loading soundfiles and banks.

-Add the ability to save and load individual patches.

-Create a binary bank and patch format that includes the .beef file
and all the associated samples.

-Support direct from disk streaming.

-Read loop information from audio files that have it (once libsndfile
is capable).

*CLOSED*

-ADSR for cutoff and resonance added. [plb, 2004-02-22]

-ADSR for volume added. [plb, 2004-02-22]

-Create a more flexible system for play modes. [plb, 2004-02-22]

-Add cutoff and resonance controls for a LPF. [plb, 2004-02-21]

-"intelligent" trim mode. [plb, 2004-02-21]

-Create a separate mixer module. [plb, 2004-02-20]

-Write a users guide. [plb, 2004-02-16]

-Reverse Mode. [plb, 2004-02-16]

-Ping-Pong loop mode. [plb, 2004-02-16]

-Create a graphical interface to edit loop and start/stop points.[plb,
2004-02-06]

-Fix xrun problems with ALSA driver, especially at higher samplerates
(is this worth it, though?). [plb, 2004-02-16: no, it isn't.  This
item is scrapped]

-Make sure that patch order can be saved/loaded. [plb, 2004-02-13]

-Remove unnecessary repeated division in mixdown. [plb, 2004-02-13]

-Refine the set_current_patch() and update_interface() stuff.  It's
getting needlessly hairy. [plb, 2004-02-13]

-Improve the patch display organization infrastructure.  Make sure
that patches do/don't switch in a sensible manner. [plb, 2004-02-03]

-Create configure scripts.  Blech. [plb, 2004-02-03]

-Revamp the mixdown function. [plb, 2004-02-03]

-Create a function to stop everything currently in patch_playlist
and have the drivers call it when they first start. [plb, 2004-02-06]

-Add 'load' and 'preview' buttons to load sample. [plb, 2004-02-03]

-Get around having current_patch have file-scope.  It's a disaster
waiting to happen. [plb, 2004-02-02]

-Add the ability to loop a sample forwards. [plb, 2004-01-31]

-Add the ability to set sample start and stop points. [plb, 2004-01-27]

-Create a Save Bank function, modify Save Bank As, Open Bank, and Load
Sample to remember the last directory they were in, and create a New Bank
function. [plb, 2004-01-26]

-Improve interpolation in pitch scaling. [plb, 2004-01-23, props to
Phil Freeman and his interpolation tuts on www.exsanity.freeola.com]

-Pay attention to velocity when receiving noteons. [plb, 6666-66-66]

-Add pitch scaling and, obviously, the ability for a patch to listen
to a specific range of notes (N.B. the current implementation
sucks). [plb, 2004-01-22]

-Add cuts.  A given patch emits a "cut" signal with a user specified
value whenever it is activated, and may be set to be cut by another
user specified value.  This is useful for, e.g., using an open hihat
and closed hihat sound in a realistic way. [plb, 2004-01-13]

-A corollary of the previous item [which pertained to "cuts"] is that
automatic fades will need to be implemented so that when a note is cut
it doesn't make a 'click'. [plb, 2003-12-24]

-Figure out an intelligent way to handle note durations. [plb, 2003-12-24]

-Create a jack driver. [plb, 2003-12-19]

-Add a patch rename function (really easy, why haven't I done this
yet?). [plb, 2003-12-19]

-Fix the output driver interface (it's overly complex and has many
issues).  [plb, 2003-12-19]

-Related to the previous item, fix the resampling.  The function
works, but with the current driver architecture, I'm not sure where to
use it. [plb, date unknown]

-Modify patch activation and mixdown functions to accomodate larger
buffersizes (as it stands now, large buffer sizes will result in notes
sounding offbeat). [plb, date unknown]
	
-Create a way to mixdown without the need for mutexes.  More
generally, speed up the mix down functions. [plb, date unknown]
