[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [iiwusynth-devel] FluidSynth roadmap
From: |
Antoine Schmitt |
Subject: |
Re: [iiwusynth-devel] FluidSynth roadmap |
Date: |
Wed, 6 Nov 2002 16:31:09 +0100 |
:::::::::6/11/02::::0:37 -0800::::Josh Green:::::::::
- New FluidSynth name. Should the API be changed to reflect this? This
is obviously going to completely blow up backwards compatibility.
That would be a good moment to make a stable release.
- iiwusynth parameter querying (looks like gain and chorus have been
done, reverb querying is needed).
Indeed. And I even think that chorus is not fully done.
- Improved sfloader sample data handling
- I think that the sfloader API is really heavy, especially knowing
that only one sfloader exists : the default one. Is it really
necessary ?
- As part of the Xtra development, I wrote new functions for
sample/instrument/preset creation (on the fly, in RAM, from samples
loaded from files or from Director media). I was waiting for some
stable moment to include it in CVS. On the other hand, I guess that
they are not very generic, as they create one instrument_zone per
sample (with envelope and loop management), but dont give access to
preset_zone management, not talking about access to zone generators.
I think that a rethink of this API to allow for dynamic creation of a
sf structure would be really powerful.
- About sample, it seems that the stereo is not implemented at all
(or am I mistaking). The SF specs defines stereo handling (two
instrument_zones with linked samples). It would be interesting to add
it.
- Compare synthesis to other SoundFont devices (SB Live!, SB AWE 32/64)
and perhaps try to more closely match them (or provide compatibility
modes)
On one of our project, we have found significant differences between
hardware synthesis and FluidSynth synthesis : lower sound volume,
many clicks on some presets, etc.. (using complex SoundFont presets
inside Vienna, on Windows). We are investigating more on this and
will keep you informed. Anyone else has seen this ?
Some other topics I'd like to submit to your sagacity:
- have FluidSynth automatically take advantage of hardware devices if available
- architecture FluidSynth so that the output stream(s) may be
inputted into some other APIs, like DirectSound3D, or some équivalent
3D sound spatialization engine).
- Chorus is somewhat of low quality, or at least sounds strange and broken
- various small features, not yet implemented:
-- AllSoundsOff
-- Filtering
-- Ability to set the number of channels at startup
-- Manage other sampling frequency than 44100
-- reloadsoundfont
-- stereo samples
- rationalize the usage of the list_t structure. This structure is
half public, which is not good.
- Various bugs
-- unloading a soundfont while one of its samples is used (in a
voice) crashes (unreferenced pointer)
-- pan span is twice too large (it actually pans from 32 to 96,
instead of 0 to 127
Having used iiwu for some time now, as part of the Xtra development,
I must say that I find it really well designed and implemented. Also,
I think that leveraging on the SoundFont API which is becoming a
standard is really a good position to be : it gives access to all
those complex SoundFonts banks created everywhere. I am using it
fully as the basis of one project (http://www.infiniteCD.org/) and am
actively proselytising it on other projects :-)
The only thing that is quite complex I think, and which is not caused
by iiwu but by the opensource process, is that it is very difficult
to rely on a stable version, as it changes all the time with bug
fixes and new features. So for the production of a client of iiwu,
one has to have the full development environment available, CVS, as
well as all the other free software libraries (portaudio, MidiShare,
now linsndfile for the Xtra...) + update regularely and recompile
everything. I dont know how things are done usually with OpenSource
software (I come more from the industry - NeXT, etc..), and I know
that all this is done gracefully by all of us, but I think that it
would be good to have stable releases from time to time, fully built
and available in binary format, with documentation.
Enough for today :-)
++ as