There are some programs (such as my own software Swami) which are C
based and use FluidSynth. I'm not apposed to moving FluidSynth to C++
(the original author Peter Hanappe had also thought about this), but I'd
like to investigate what options are available for keeping some sort of
interface to C based programs.
Generating C bindings from C++ headers should be very easy; in fact, as I said in another message, I'm surprised that there are not a hundred C binding generators for C++ around the Internet (or at least I haven't found them). If I don't find one such generator I'll write one myself, but I don't think that makes any sense until the C++ API itself is mostly finished. In any case, a C binding to Fluidsynth is in my plans.
Swami does all its own instrument
management and loads instruments via the SoundFont loader API, which
makes it flexible enough to load other types of instrument formats as
well (albeit with SoundFont centric parameters). I've often kicked
around the idea of using libInstPatch directly in FluidSynth for adding
instrument management for other formats, but decided this wasn't
absolutely necessary, since libswami could itself be used for that. It
might be interesting to revisit this idea though.
I had actually thought about that myself, but obviously you are the best suited to determine how complex a change that would be (versus just copying the soundfont loading code from libInstPatch and adapting it to FluidSynth needs).
I'm not very familiar with QMake myself. I'd need to do some more
research to get a better idea if it seems to fit well with the project.
What other projects are using QMake, besides QT based applications? I
hope the install of QMake doesn't necessitate the installation of QT4.
QMake probably shouldn't need the Qt4 runtime, since it's used to build Qt itself without any of the Qt libraries available yet. But anyway, surely installing Qt4 shouldn't be a big problem these days?
Once again, I do want to express that what you are working on does sound
like a good direction, I just don't want to leave other applications
behind. The original intent of FluidSynth was and still is to provide a
low level API that doesn't restrict it to only certain languages. That
doesn't mean the core of it can't be written in something higher level I
suppose though. I'm no C++ expert, so I imagine there are many others
that are better versed in the answers to this question.
I think if anything writing in C++ will make it easier to write bindings for other languages, since those other languages are usually object-oriented nowadays and their concepts are closer to C++ than to C.