
Softsynth version 0.1
---------------------

  This directory contains a very very simple software synthesizer 
designed to be used with the MIDI I/O daemons.  The software synthesizer
appears as a single MIDI port to the MIDI I/O daemons, and is an output-only
device.  The softsynth responds to all 16 MIDI channels, but in this 
early stage, it ignores program change messages and the like. 

  Current Softsynth Implementation notes:
  ---------------------------------------

  * Only a very small subset of MIDI protcol is currently implemented.
    At this time, only note on, note off, and all notes off messages 
    are acted on.  All other MIDI events are currently ignored.

  * Current implementation only supports the Sun audio system running at
    44.1KHz in stereo.

  * Can read sample data from 44.1KHz monophonic Sun .au files currently, 
    support for many other sound sample formats will be added after the 
    core code is more complete.  I would also like to support MIDI 
    Sysex transmission of samples via the MIDI sample dump standard and
    other similar stuff.  We'll see about this at a much later date.

  * Requires a 44.1KHz stereo audio subsystem.  I doubt I'll ever bother
    to write code for low sample rates.  It seems to me that other projects
    already support these systems, and I'd rather spend my time trying to 
    get the highest polyphony, and highest sound quality possible, rather
    than making it work on every system that exists.  

  * 16 channel multitimbral operation.  Each MIDI channel 
    operates independently of the others.  When its finished, 
    program change messages will affect each channel seperately.

  * Limits to maximum polyphony can be set at compile-time, 
    this may eventually be a run-time configuration option.
    On a 167MHz Sun Ultra 2 (using 1 cpu), the current implementation
    has no trouble with up to 42 notes of sustained polyphony.  Much 
    higher polyphony can be attained for short periods of time.

  * Future versions of softsynth will include multiprocesso support 
    to allow *Massive* polyphony...  This will probably wait until 
    the synthesis engine is more complete, and audio quality has
    been maximized.  I expect that multiprocessor support will be done
    through the use of POSIX threads, since almost any Unix system
    has pthreads now.

 
If you're interested in helping me develop softsynth by writing new audio
output code for other platforms, improving MIDI implementation etc, 
please send me some email! 
 
  John Stone
  j.stone@acm.org
  johns@cs.umr.edu

  
