New features ------------ - Non-realtime MIDI file rendering - Sample streaming, load/unload sample on demand - Synth sample rate change after initial creation - handle tuning sysex messages - Audio level metering - Active voice count monitoring Synthesis --------- - Improve voice stealing algorithm - Dynamic voice killing (based on CPU usage) - Batch voice activation (stereo synch. as per SoundFont spec) - Pitch control on stereo samples not managed as should - soft clipping, compressor, limitor, or automatic gain control Drivers ------- - libao audio output driver - Windows DirectMusic component - ASIO driver - DirectSound 3D and EAX Bugs to mash ------------ - Add byte swapping support (on synthesis or sample load?) - Investigate why MIDI rendering causes burst of notes at start Validation ---------- - Validation tests: create soundfont with basic wave forms [sine, square, triangle]; make test midi file; compare with SBLive output; "regression" test - Validate chorus (often sounds rather crappy) - Analyse performance Documentation ------------- - Write documention on tuning - Add usage scenarios in the documentation - User and system configuration file Binaries -------- - FluidSynth * Linux * Win * MacOS X - fluid~ (Pd/Linux, MaxMSP/MacOSX, MaxMSP/Windows) - fluidsynth~ (MaxMSP/MacOSX, MaxMSP/Windows) - FluidXtra Misc ---- - Remove dependency of settings on audio driver and other (see fluid_settings_init()) - When specifying -i -s (no console and TCP server) log to TCP clients with easier parsable messages ("warning:", "error:", etc) - Pause and resume the synthesizer/audio thread (run synthesizer as a daemon) - set loop on/off on a sample (set_gen GEN_SAMPLEMODE?) FluidSynth Next Generation -------------------------------------------- Top of the list - Use FIFOs to send events to the audio thread - Redo sfloader api using "interface" api - 3D audio output MIDI player - Add API to manipulate and query MIDI file list - generalize use of fluid_event_t, remove fluid_midi_event_t Shell & command handler - Add "note" command that plays a note with a duration (sequencer) - MIDI file player commands (load/play/stop) - Allow settings to be loaded before the synthesizer is created MIDI Specs - Omni and poly modes - sample dump - MIDI thru - Scalable Polyphony MIDI (SP-MIDI) Unsorted - additional aux buses - rewrite midi file using new sequencer - direct access to audio buffer