fluidsynth/TODO

97 lines
2.6 KiB
Plaintext

New features
------------
- 24 bit sample support
- 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())
- Add "unselect" command to shell to set a MIDI channel to not sound.
- When specifying -i -s (no console and TCP server) log to TCP clients
with easier parsable messages ("warning:", "error:", etc)
- add function to get initial soundfont generator value
- 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
SoundFont Specs:
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