A software synthesizer plugin for the
Disposable Soft Synth Interface
The files in this directory are an implementation of the FluidSynth
soundfont-playing software synthesizer as a DSSI plugin. It makes
use of DSSI's run_multiple_synths() interface to allow sharing of
resources between multiple plugin instances -- soundfont data is
shared between instances, and FluidSynth's usual voice allocation
methods are applied across multiple instances as if each were a
FluidSynth-DSSI uses the FluidSynth library for all soundfont
handling and synthesis functions. However, because of the
architecture differences between DSSI and FluidSynth, this could not
be done using only the canonical FluidSynth API functions. As a
result, the FluidSynth source code is needed during
FluidSynth-DSSI's compilation to provide access to the non-API
FluidSynth-DSSI is written by Sean Bolton, and is copyright (c)2004
under the GNU General Public License, version 2 or later. See the
enclosed file COPYING for details.
FluidSynth itself is copyright (c)2003 Peter Hanappe and others,
also under the GNU General Public License.
You need to have the following installed:
- liblo 0.12 or later
- fluidsynth 1.0.3 or later (specifically, the fluidsynth headers
- a DSSI-capable host, such as Rosegarden or the jack-dssi-host
included with this package.
You must also have the fluidsynth source code unpacked somewhere
accessible (make sure it is the same version as what you have
Edit the Makefile, then do 'make' and 'make install'. The following
files are installed:
Start your DSSI host and create an instance of the FluidSynth-DSSI
plugin. See the 'Example' section below for how to do this with
Initially, no soundfont will be loaded. Use the 'Select Soundfont'
button to select a soundfont. Each instance may use only one
soundfont at a time, but when multiple instances use the same
soundfont, it is only loaded once. FluidSynth-DSSI will use the
the DSSI project directory and the SF2_PATH enviroment variable,
if set, to search for soundfonts.
The available soundfont presets will be displayed in the 'Preset'
window. Clicking on one will select that preset.
Under 'Global Settings', the 'gain (dB)' setting affects the output
level of all running FluidSynth-DSSI instances. The 'polyphony'
setting sets the maximum number of voices that will be played by all
Test notes may be generated using the 'Send Test Note' button. You
may select the pitch and velocity of the note using the 'Test Note'
When you create more than one instance of the plugin, you should be
able to tell their GUIs apart by unique window titles of each
(provided your host correctly supplies each with the proper
1. Start JACK.
2. Run jack-dssi-host, starting 16 FluidSynth-DSSI instances, one
for each MIDI channel:
$ DSSI_PATH=/usr/local/lib/dssi sudo jack-dssi-host -16 fluidsynth-dssi.so
3. Load a soundfont for each instance. You may do this using the
GUI, or via the command line:
$ for ee in 00 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15
> do dssi_osc_send -C osc.udp://localhost:19383/dssi/fluidsynth-dssi/FluidSynth-DSSI/chan$ee \
> load /t/soundfonts/Reality_GMGS.sf2
4. Make some noise:
$ pmidi -p128:0 /t/smf/simpsons_theme.mid