fluid-dev
[Top][All Lists]
Advanced

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

Re: [fluid-dev] Adding Poly/mono functionality to FluidSynth


From: Element Green
Subject: Re: [fluid-dev] Adding Poly/mono functionality to FluidSynth
Date: Tue, 5 Jul 2016 12:55:40 -0600

Hello,

I'm not sure if it could be the issue or not.  But I remember a long while back (many years) FluidSynth used to have issues with denormal numbers causing excessive CPU usage.  That would be floating point numbers which are very small, but not 0.  I don't know if ARM processors deal with denormal numbers in software, which would result in poor performance and possibly floating point exception handlers being triggered.  It seems like this would more often occur when the audio went towards silence.

Some general information on this:
https://en.wikipedia.org/wiki/Denormal_number#Performance_issues

Might be worth looking in to.  Code was added in certain areas to detect if a number was below a very small value and if it was, then it would be forced to 0.  Maybe there are still some areas where this is occurring which are only affecting this particular platform?

Best regards,

Element

On Tue, Jul 5, 2016 at 11:21 AM, jean-jacques.ceresa <address@hidden> wrote:
Hi Ben,

On Windows, using your soundfont (gonzos-20160702.sf2), in mono mode i haven't expererienced absolutely no cpu excess usage, on alls 6 presets.
I have look inside the preset. Each preset make use of 2 simulateneous voices maximum. So this is a very low CPU usage soundfont.
Normally on a RPi2 you can run 180 voices (using the 4 cores of course). Even if fluidsynth use only one core, the maximum number of voices
falls to 45 which is sufficient to play any preset on this soundfont. So really, i don't understand what happens on your setting.

Anyway, i have got a RPi2. So I will try this and also an other machine with Debian. I will return the results, using the same soundfont.

>The legato is working, and I have noticed that if I do a long descending glissando to the lower register on the clarinet, the voice that I end up with
> on the low note is the voice I started with - I don't get the low reedy sound until I stop and play the note again. Jean-Jacques said this was a limitation.

Yes , i confirm this is currently a know limitation and it occurs only on legato mode  1,2,3 but not on legato mode 0.
Playing a legato passage, n1,n2,n3,... using legato mode 1,2,3:
The notes (n2,n3,..) following the first (n1) make use of running voices of n1, (regardless of the keyRange and Velocity Range), so the notes n2,n3,... make use
of the IZ (Instruments Zone) of note n1 ignoring possible others IZ with their samples. In others words, the actual patch doesn't not follows fully the instructions
given by the soundfont designer. This is a serious limitation. But anyway, i 'm working to cancel this limitation.

jjc



Le 02/07/2016 14:02, Ben Gonzales a écrit :
Hi

I downloaded the git snapshot, used the patch from Mr(?) Horn (thankyou), and re-complied.

I'm still experiencing the CPU runaway. It happens a) if I put the channel I'm using into MONO or b) if I use cc ch 68 127  (legato on). It doesn't matter which setlegatomode I am using for the channel. Note that it happens on 5 out of 6 of the voices I am using. I can't see any significant config differences between the voices when using Swami. One voice works fine.

The legato is working, and I have noticed that if I do a long descending glissando to the lower register on the clarinet, the voice that I end up with on the low note is the voice I started with - I don't get the low reedy sound until I stop and play the note again. Jean-Jacques said this was a limitation.

For info, I'm running a RPi2 with Raspbian Jessie, all latest updates installed. I'm trying to get legato working on channels 10-15 inclusive, and I'm not using the other channels. 


Ben

On 02/07/16 20:12, R.L. Horn wrote:
On Sat, 2 Jul 2016, Ben Gonzales wrote:

patch < fluid_polymono-0001.patch
This prompted me for each file to patch, and I typed in the path to each file

I don't know how Jean-Jacques generated his patch, but the diff should be against a complete source tree so this isn't necessary.  I've combined everything, including the new files, into a single patch (against a git snapshot from a couple of hours ago...the original patch fails against the 1.1.6 distribution) which should be attached.

Just execute patch -p1 < fluidsynth-polymono.patch (or zcat fluidsynth-polymono.patch.gz | patch -p1) from the top of the source tree and you should be ready to run cmake and build.


_______________________________________________
fluid-dev mailing list
address@hidden
https://lists.nongnu.org/mailman/listinfo/fluid-dev



_______________________________________________
fluid-dev mailing list
address@hidden
https://lists.nongnu.org/mailman/listinfo/fluid-dev


_______________________________________________
fluid-dev mailing list
address@hidden
https://lists.nongnu.org/mailman/listinfo/fluid-dev



reply via email to

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