James:

I do something similar all the time, since it allows me to perform
(using Qsynth/Fluidsynth) with what I call composite voices.  For
example, full-volume piano, with the same performance data going to
String Ensemble 1 (on the other Qsynth 'engine') at a lower volume.  

I have been doing it by having two 'engines' in the Qsynth window.  The
volume control works for whichever 'engine' is currently selected, so
you can set it for one engine, then select the other 'engine', and set
the volume for it.  

But you don't have to use the Qsynth/Fluidsynth volume.  You can set the
MIDI Volume control (or Expression control - either will work) to what
you want for each.  

If you use the Rosegarden sequence editor, you can do it with a single
Qsynth/Fluidsynth engine.  

The way you do that, is to have the "MIDI Thru Routing" option selected
in the "Studio" menu, which will route incoming MIDI performance data to
whatever track is currently selected.  It doesn't matter what MIDI
channel the input comes in on.  It routes it to the selected track.  

Let your selected track be one of your MIDI voices, using some MIDI
channel other than 1 (different from the channel your keyboard transmits
MIDI data on).  You can set its volume setting to how you like it.    

Then, set up another track using the MIDI channel your keyboard
transmits MIDI data on (1, for example).  Again, set its volume and
program (instrument) to what you want.  Rosegarden will send to this
MIDI channel because it is the channel your keyboard sends on -
regardless of the "MIDI Thru Routing" to the selected track.  

With the other channel selected, it will also send the same MIDI
performance data to that other MIDI channel using the "MIDI Thru
Routing" feature, which results in you sending to two different MIDI
channels (with different settings) simultaneously.  

To use two Qsynth 'engines' in Rosegarden, simply define two playback
devices (both of which use the General MIDI sound bank), and using the
"Manage MIDI Devices" button, connect one to one Qsynth 'engine', and
the other to the other Qsynth 'engine'.  

Then set up pairs of MIDI channels, each pair going to the same channel
of the two different Qsynth 'engines'.  You can set the volume as you
like it on each track of each pair.  Setup different pairs of tracks,
using the same MIDI channel (going to each 'engine').  Then you can
change to a different composite voice simply by changing the MIDI
channel your keyboard transmits on.  You can usually do this quickly on
your MIDI keyboard, during a performance.  

When you prepare to perform, you load the Rosegarden project file with
all this set up, and click 'Play' and 'Stop', which sends the voices &
controls you have set up, to the two Qsynth 'engines'.  

Then just start playing, and you will be using composite voices, which
(I think) can be much more beautiful than the simple General MIDI voices
by themselves.  You may need to let-up on the sustain pedal more often
than you would if you were simply using a piano voice.  

Here are some combinations I like (the first full volume, the second
about 1/3 volume):

    Bright Acoustic Piano / String Ensemble 1
   
    Bright Acoustic Piano / Pad 6 (metallic)

    Acoustic Guitar (steel) / Pad 6 (metallic)

I have a cautionary note if you use two Qsynth/Fluidsynth engines.  Even
though both engines use the same soundfont, there appears to be separate
memory allocated for the soundfont of the 2nd (or n-th) Qsynth 'engine'.
With the soundfont being about 150 MB in size, you can easily run out of
memory if your machine has only 512 MB of memory, and you won't have
enough memory to do it if your machine has only 384 MB of RAM.  

A way around this, is to use a smaller, lower-quality soundfont for the
background 'engine', such as in the "musescore-soundfont-gm" package.  

But if the Fluidsynth developers can come up with a way for the
different Fluidsynth 'engines' that use the same soundfont to use the
same soundfont in memory, that would be even better.  


- Aere




On Mon, 2012-01-30 at 23:34 +0800, James Ong wrote:

> How would you suggest if my midi player in Java will play the volume
> gain at 0.5 and a Midi data sent from Midi Keyboard would play at
> volume gain 1.0,
> both background and foreground will be able to play together? Do I
> have to run with 2 Fluidsynth engine process side-by-side?
> 
> _______________________________________________
> fluid-dev mailing list
> fluid-dev@nongnu.org
> https://lists.nongnu.org/mailman/listinfo/fluid-dev


-- 

Sincerely,
Aere
_______________________________________________
fluid-dev mailing list
fluid-dev@nongnu.org
https://lists.nongnu.org/mailman/listinfo/fluid-dev

Reply via email to