I have used the pan controls, and the volume (and expression) controls
on individual MIDI channels (assuming the MIDI channel limitation is the
limiting factor here), using Qsynth (which uses fluidsynth) for
synthesizing sound (rather than the fluidsynth DSSI plugin instances).
I have had a need for parallel output to two sets of MIDI channels with
fluidsynth as the synthesizer. I have done this with no noticeable
latency problems, though percussion instruments show latency problems
more readily than melodic instruments. I use this for performing using
what I call "Composite Voices".
The way I did this, is to add another Qsynth "engine" (by default you
get only one). It's easy to add more, and each one can have its own
configuration parameters. Then I piped my keyboard MIDI output to both
Qsynth engines simultaneously.
Having done this, I have two sets of 16 MIDI channels, one set using the
original Qsynth port as the playback device, and the other set using the
2nd Qsynth 'engine' as the playback device. I can use the pan and
volume/expression controls for any of these MIDI channel voices.
I do not notice additional latency for the 2nd Qsynth engine, though I
do notice it uses the amount of memory required for the sound-font for
each 'engine' (they don't share sound-font memory). Since the
sound-font it uses is nearly 150 megabytes, this can be a problem on
machines having less that 1 megabytes of RAM. I get around that problem
on lower-RAM machines by using a smaller soundfont for the 2nd Qsynth
Since I use piano/guitar sounds, I'm quite sure I would have noticed if
the 2nd Qsynth engine added additional latency. I have had pieces
messed up by latency before (with different causes), and know what those
problems sound like.
One 'fly in the ointment' on this, is that I tried this with the current
(available with Ubuntu 12.04) versions of Qsynth (fluidsynth), and
Rosegarden, and I could not make any other MIDI channel than 10 work as
a percussion track.
HOWEVER, the current development version of Rosegarden, along with the
latest available version of libfluidsynth1 (used by qsynth), let me make
channels other than 10 function as percussion tracks. I also verified
that they responded to the volume and pan settings (though they didn't
seem to respond until I selected a different track, then re-selected the
track I changed).
Adding an additional qsynth engine would give you 16 more such
percussion instruments, and you can add more qsynth engines, each time
giving you 16 more percussion instruments, probably without adding
noticeable latency (though I haven't tried a 3rd or 4th qsynth
Anyway, perhaps this gives you some ideas of other approaches to solving
I am not a Rosegarden developer, or a fluidsynth developer. However, I
use these components a lot, in a lot of different ways, and am trying to
teach people how to do the same.
On Sat, 2012-09-15 at 22:31 +0200, Holger Marzen wrote:
> Hi all,
> to pan, mix and process the drums separately I have to waste one
> instrument (one fluidsynth-instance) per drum. Only 16 are available.
> Would it be possible to add more slots for synth plugins?
> Of course I could run fluidsynth instances as separate programs to get
> 16 more instruments but this adds latency and cannot be stored inside
> the .rg-file.
> Any comments?
> (Hydrogen is no altenative for me since it adds variable(!) delays when
> I route MIDI-events to it. This kills every groove.)
> How fast is your code?
> 3 out of 4 devs don\\\'t know how their code performs in production.
> Find out how slow your code is with AppDynamics Lite.
> Rosegarden-devel mailing list
> Rosegarden-devel@... - use the link below to unsubscribe