Towards a bit-exact emulation of FluidSynth in a DAW... #1180
prof-spock
started this conversation in
Show and tell
Replies: 1 comment
-
Dear all, if there is interest: I have also provided an x64 MacOSX and x64 Linux version of the above plugin. So when you are not using Windows, you might be interested in those variants. Best regards, |
Beta Was this translation helpful? Give feedback.
0 replies
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
-
Dear all,
I am not sure whether this is interesting for you, but I have implemented a VST3 plugin using the FluidSynth library aiming at producing almost identical output to the command line version for a given MIDI stream.
The idea behind that is that you can try out things interactively in a DAW and then be sure that the output for the same MIDI data with command-line FluidSynth is (almost!) identical.
The plugin is called FluidSynthPlugin, and it has a companion command-line tool called FluidSynthFileConverter, which is in principle a clone of fluidsynth itself. But both programs try to trigger the MIDI events in the library with sample raster precision (with e.g. 44.1kHz resolution) whereas the midi file player embedded in traditional fluidsynth does some coarser rasterization (in the 1kHz range).
You can find them as "FluidSynthPlugin" via the application page of FluidSynth. Note that both programs rely on a dynamic library version of FluidSynth, hence you do not need its sources when building that plugin project (and can easily swap the external dynamic libraries in the final product).
There is some caveat however: As discussed in issue #1134 the FluidSynth library itself does some internal buffering in (by 64 samples). By that, an externally rendered audio file might differ from a live rendering in the DAW by the plugin (because of slightly different data point positions).
But when your DAW allows to nudge playback onto this 64 sample raster both the plugin audio and the externally rendered audio typically null out (as shown below).
Another drawback is that, of course, when a soundfont instrument contains free running modulators or chorus both audio streams cannot be in sync at all. But for sounds without those, the accuracy of audio reproduction is well below the hearing threshold (it is typically less than -100dBFS as can be seen above).
The command-line interface of the FluidSynthFileConverter is a subset of the FluidSynth interface (leaving out things not necessary for file conversion). The FluidSynthPlugin interface is simplistic: it is only a text field where fluidsynth settings can be specified (as shown below).
Both programs are open-source and written in C++, they should be working on Windows, MacOSX and Linux (via a CMAKE build chain), but currently I have only provided a VST3 version for Windows.
Feel free to contact me, if this tool set is helpful for you.
Thanks to the FluidSynth community for letting me use this great library! It is fantastic to rely on such a professional software!
Best regards
Prof. Spock
Beta Was this translation helpful? Give feedback.
All reactions