• Home
  • History
  • Annotate
Name Date Size #Lines LOC

..03-May-2022-

src/H03-May-2022-5,5524,167

COPYINGH A D17-Mar-200817.6 KiB340281

ChangeLogH A D04-Jan-20092.8 KiB7866

INSTALLH A D03-Mar-20059 KiB230175

Makefile.amH A D10-Nov-2008130 104

Makefile.inH A D04-Jan-200919.5 KiB649567

READMEH A D04-Jan-20096.7 KiB184137

TODOH A D24-Apr-2005134 63

aclocal.m4H A D04-Jan-2009327.3 KiB9,3758,413

autogen.shH A D10-May-2005735 3226

config.guessH A D27-Jan-200843.8 KiB1,5271,315

config.h.inH A D04-Jan-20092.5 KiB9667

config.subH A D27-Jan-200832.6 KiB1,6591,514

configureH A D04-Jan-2009433.6 KiB15,17912,052

configure.acH A D04-Jan-20093 KiB10288

depcompH A D27-Jan-200817.4 KiB590375

install-shH A D27-Jan-200813.3 KiB520344

ltmain.shH A D04-Jan-2009237.6 KiB8,4076,475

missingH A D27-Jan-200810.9 KiB368275

README

1                              FluidSynth-DSSI
2                              ===============
3                    A software synthesizer plugin for the
4                         DSSI Soft Synth Interface
5
6Introduction
7============
8FluidSynth-DSSI is an implementation of the FluidSynth soundfont-
9playing software synthesizer as a plugin for the DSSI Soft Synth
10Interface.  DSSI is a plugin API for software instruments (soft
11synths) with user interfaces, permitting them to be hosted
12in-process by audio applications.  More information on DSSI can be
13found at:
14
15  http://dssi.sourceforge.net/
16
17FluidSynth-DSSI makes use of DSSI's run_multiple_synths() interface
18to allow sharing of resources (like enormous soundfonts) between
19multiple plugin instances -- soundfont data is shared between
20instances, and FluidSynth's usual voice allocation methods are
21applied across multiple instances as if each were a FluidSynth
22channel.
23
24FluidSynth-DSSI is written by Sean Bolton, and is copyright (c)2009
25under the GNU General Public License, version 2 or later.  See the
26enclosed file COPYING for details.
27
28FluidSynth itself is copyright (c)2006 Peter Hanappe and others,
29under the GNU Library General Public License.
30
31Requirements
32============
33You need to have the following installed:
34
35    - DSSI version 0.9 or greater, available from the
36        dssi.sourceforge.net address above.
37
38    - liblo version 0.12 or later (0.23 or later recommended), a
39        library implementing the Open Sound Control (OSC) protocol,
40        available at:
41
42        http://liblo.sourceforge.net/
43
44    - the FluidSynth library and header files, version 1.0.3 or later.
45        FluidSynth-DSSI will have additional capability (run-time
46        polyphony setting and more efficient operation) if FluidSynth
47        version 1.0.6 or later is used.
48
49    - the LADSPA v1.x SDK.
50
51    - the ALSA headers (DSSI plugins use ALSA structures, but not
52        the actual drivers, so you don't necessarily need the
53        drivers installed.)  Users of non-Linux system can use
54        libdssialsacompat, available at:
55
56        http://smbolton.com/linux.html
57
58    - pkgconfig with PKG_CONFIG_PATH set appropriately to pick up
59        DSSI, liblo, and fluidsynth (plus libdssialsacompat if used).
60
61    - GTK+ version 1.2 or 2.x.  (If GTK+ is not found, the plugin
62        will be built without the GUI.)
63
64    - a working DSSI host.  Xsynth-DSSI has been tested with
65        jack-dssi-host, available in the DSSI distribution, and with
66        ghostess, available at:
67
68        http://smbolton.com/linux.html
69
70    - automake 1.7 and autoconf 2.59 or better if you wish to
71        recreate the build files.
72
73Installation
74============
75The generic installation instructions in the enclosed file INSTALL
76aren't particularly helpful, so try this instead:
77
781. Unpack the tar file.
79
802. Make sure PKG_CONFIG_PATH is set correctly to locate the
81    dssi.pc and liblo.pc pkgconfig files.  On many systems, this
82    will be:
83
84    $ PKG_CONFIG_PATH=/usr/local/lib/pkgconfig
85    $ export PKG_CONFIG_PATH
86
873. 'cd' into the package directory and execute './configure'.
88    configure will add '-Wall' and my favorite optimizations to
89    CFLAGS for you if you don't include any '-Wall' or '-O' options.
90
914. If you wish to change the maximum number of simultaneous
92    instances supported by FluidSynth-DSSI (currently 16), edit the
93    file src/fluidsynth-dssi.h and change the FSD_CHANNEL_COUNT
94    definition.
95
963. Enable debugging information if you desire: edit the files
97    src/fluidsynth-dssi.h and src/FluidSynth-DSSI_gtk.c, and define
98    DEBUG_DSSI or DEBUG_AUDIO as explained in the comments.
99
1004. Do 'make'.  Hopefully it should build without warnings (or
101    errors.)
102
1035. 'make install' will install the following:
104
105    $(PREFIX)/lib/dssi/fluidsynth-dssi.so
106    $(PREFIX)/lib/dssi/fluidsynth-dssi/FluidSynth-DSSI_gtk
107
108Feedback on your experiences building FluidSynth-DSSI is appreciated.
109
110Operation
111=========
112Start your DSSI host and create an instance of the FluidSynth-DSSI
113plugin.  See the 'Example' section below for how to do this with
114jack-dssi-host.
115
116Initially, no soundfont will be loaded.  Use the 'Select Soundfont'
117button to select a soundfont. Each instance may use only one
118soundfont at a time, but when multiple instances use the same
119soundfont, it is only loaded once.  FluidSynth-DSSI will use the
120the DSSI project directory and the SF2_PATH enviroment variable,
121if set, to search for soundfonts.
122
123The available soundfont presets will be displayed in the 'Preset'
124window.  Clicking on one will select that preset.
125
126Under 'Global Settings', the 'gain (dB)' setting affects the output
127level of all running FluidSynth-DSSI instances.
128
129If you're using FluidSynth version 1.0.6 or later, then you will
130have the ability to manage the maximum polyphony used by
131FluidSynth-DSSI.  There will be a 'polyphony' setting under 'Global
132Settings' in the FluidSynth-DSSI GUI, which sets the maximum number
133of voices that will be played by all instances.
134
135Test notes may be generated using the 'Send Test Note' button.  You
136may select the pitch and velocity of the note using the 'Test Note'
137sliders.
138
139When you create more than one instance of the plugin, you should be
140able to tell their GUIs apart by unique window titles of each
141(provided your host correctly supplies each with the proper
142identifier.)
143
144Example
145=======
1461. Start JACK.
147
1482. Run jack-dssi-host, starting 16 FluidSynth-DSSI instances, one
149    for each MIDI channel:
150
151    $ DSSI_PATH=/usr/local/lib/dssi sudo jack-dssi-host -16 fluidsynth-dssi.so
152
1533. Load a soundfont for each instance.  You may do this using the
154    GUI, or via the command line (replace the '19383' with the port
155    number your DSSI host is using):
156
157    $ for ee in 00 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15
158    > do dssi_osc_send -C osc.udp://localhost:19383/dssi/fluidsynth-dssi/FluidSynth-DSSI/chan$ee \
159    >      load /t/soundfonts/Reality_GMGS.sf2
160    > done
161
1624. Make some noise:
163
164    $ pmidi -p128:0 /t/smf/simpsons_theme.mid
165
166Bugs in FluidSynth prior to version 1.0.6
167=========================================
168FluidSynth versions up through 1.0.5 have a bug in the
169fluid_synth_nwrite_float() function that FluidSynth-DSSI uses, which
170prevents it from working correctly with block sizes less than 64.
171FluidSynth-DSSI will still work with these earlier versions, but
172working around the bug requires an extra buffer copy per process
173cycle, so it is not as efficient as when FluidSynth versions 1.0.6
174or later are used.
175
176FluidSynth versions up through 1.0.5 have a bug in the code enabled
177by the '--enable-longlong' configure option, so that it will only
178work correctly on little-endian (e.g. x86) systems. It is
179recommended that users of big-endian (e.g. PowerPC) systems upgrade
180to 1.0.6 or later. (FluidSynth 1.0.8 no longer has the
181'--enable-longlong' configure option, and uses the long long type by
182default.)
183
184