natt
Junior Member
Posts: 248
Registered: 05-11 |
Heh, fluidsynth. I use the fluidsynth.dll I compiled myself, however I'm fairly certain I invoked a few black magics for that, so I'd recommend against it, what with the pig blood and all.
Randy Heit maintains a fluidsynth.dll which is better than mine (doesn't pull in glib or gthreads dependencies).
But if you just have a .dll, you need to use a .lib (msvc) or a .a (mingw) file at link time, which you can get by doing magic to the dll:
code:
pexports fluidsynth.dll > fluidsynth.def
dlltool -d fluidsynth.def -l libfluidsynth.a
lib /def:fluidsynth.def
This creates libfluidsynth.a (usable by mingw at link time), fluidsynth.lib and fluidsynth.exp (usable by msvc at link time).
'pexports' and 'dlltool' are from mingw, 'lib' is from msvc
I believe this is what entryway uses for the official prboom-plus builds; Randy Heit's fluidsynth.dll and a .lib file created as above. If you don't have the appropriate toolchains, I can email you the files no problem.
One thing I can say that's good about this, is the exact same build script works on mingw and linux (and presumably any other posix-like system that fluidsynth compiles on), so you don't lose any cross-platform compatibility.
As far as writing your own synth, IMO it mostly depends on how complex things get. My midi converter spits out "unknown" tags for quite a few of the Doom64 midi events. I know you've looked more closely at the Doom64 sound code than I have; but if one of those turns out to be "set reverb level" and one turns out to be "set lowpass resonance" etc etc, then you're writing a full fledged dsp and you might as well use fluidsynth at that point.
I don't know any real alternatives though. I don't think timidity has a good API. There are a lot of good module file players out there, but I don't think most of them expose their synthesizer as an API either. I did a lot of synthesizer searching when I wrote new sound code for prboom-plus.
|