[Top][All Lists]

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

Re: [fluid-dev] Multi-kernel system test

From: David Henningsson
Subject: Re: [fluid-dev] Multi-kernel system test
Date: Sun, 03 Oct 2010 05:20:15 +0200
User-agent: Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv: Gecko/20100922 Thunderbird/3.1.4

Hi Bernd,

I've been puzzled when you describe that the sound changes when you change the number of FS instances, but now I have a theory of what might be going on...

If you have a sound and you play it back in the left and right channel, and you do so at exactly the same point in time, the result will be one sound only, coming from the center. However, if you delay one of the sounds by a few samples, the result is some kind of "stereo effect", some would say it almost sounds like a chorus effect, you might call it a "widescreen stereo effect".

Now when you put one sound in the first instance of FS and the other sound in the second instance, these FS instances are not completely synchronised, which leads to the "widescreen stereo effect" discussed above.

I bet jOrgan starts up the FluidSynth instances one after another (and to complicate matters, each FS instance starts up rendering threads, which are scheduled asynchronously by the OS...). So whenever the speed of "startup" changes somehow - due to e g different hardware, or me changing something in how quick FS starts up, or even in jOrgan - you will go something like "oh, the sound just is amazing now" or "oh, the sound just doesn't sound as rich anymore", and we will think you're nuts, because we haven't even changed the sound! :-)

So, given that my theory is true: since your organ won't sound the same anywhere else than on your computer, I'd advise you to have FS instance only, then experiment with delaying the different voices in a few samples (and I don't have a good estimate of how many "a few" actually is, but at least a few milliseconds) and see if you can can accomplish the same effect that way.

// David

On 2010-10-01 12:33, Bernd Casper wrote:
Hi David,
many thanks for the recommendations.
I've tested the most various combinations for buffers/buffer
size/polyphony/kernels, also 2/1024/1024/1 and 2/1024/1024/2, and those
setting increased the latency to a kind of "echo". In a real-time
scenario, I cannot use a buffer size bigger than 512 (in respect to my
average system).
 >It is not intended to use more than one instance of FS. This means more
than one reverb engine, which in turn would consume more CPU in total.<
I don't use the FS reverb engine at all, in my personal setup.
number of instances:
I already expected you to mention the number of instances. I experienced
absolutely no slowdown of my system when using up to 20 instances of FS.
There wasn't any noticeable change in FS reaction, when using just one
single instance.
I'd enjoy to use one single instance of FS only. For several reasons
this isn't possible presently.
- Technical reasons:
One important reason is that I separate the divisions of my instrument
to output into different soundcards.
- Sound quality reasons:
I continue to use more than one instances of FS, since usage of only one
instance of FS (and increase polyphony 8 times instead, to compensate)
delivers no identical sound result - even if I know it should,
theoretically. The stereo horizon is not the same, as well as the
transparency of sound (in admiration for the great improvement the sound
has taken with FS 1.1.2). If the number of samples increases over a
certain point (no influence, how high I set the polyphony number), the
"widescreen stereo" sound seems to change to a kind of "joint stereo"
sound, what I want to avoid in any case.

    ----- Folgende Nachricht wurde empfangen -----

    *Absender:* David Henningsson <mailto:address@hidden>
    *Empfänger:* bca <mailto:address@hidden>
    *Zeit:* 2010-10-01, 09:25:27
    *Betreff:* Re: [fluid-dev] Multi-kernel system test
    On 2010-09-30 13:23, Bernd Casper wrote:
     > Hi David,
     > this is quite interesting.

    It is.

     > In a real-time scenario using two kernels *slows down* latency and
     > overall performance here, when using many programs
    simultaneously, while
     > seemingly increases polyphony performance at te same moment (personal
     > impression of my ears - stereo horizon is enlarged). I use
     > buffers/size/polyphony 6/384/1024, and 8 instances of FS.
     > Is this what's intended?

    It is not intended to use more than one instance of FS. This means more
    than one reverb engine, which in turn would consume more CPU in total.

    So in theory, for best performance, I would recommend you to

    1) use only one instance of FS (and increase polyphony 8 times instead,
    to compensate)

    2) use 2 buffers only - and increase size to 1024 to compensate. You
    then might be able to decrease size to "trim" your system for better

    3) experiment to see if increasing the "kernels" parameter, gives
    or worse performance. Extending it beyond the number of physical CPU
    cores should give worse performance.

    So if this gives the best performance in practice is more than I know -
    I'm not a computer scheduling expert, especially not on Windows.

    (Btw, a few weeks ago I tried to set up jOrgan on Ubuntu Maverick here,
    but I never got any sound output. I had to use jdk though, since
    sun-java wasn't available for Maverick. Perhaps you or Sven could help
    me out some day.)

    // David

fluid-dev mailing list

reply via email to

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