[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [fluid-dev] Volume background and foreground

From: Aere Greenway
Subject: Re: [fluid-dev] Volume background and foreground
Date: Mon, 30 Jan 2012 11:15:31 -0700


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



reply via email to

[Prev in Thread] Current Thread [Next in Thread]