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: jean-jacques.ceresa
Subject: Re: [fluid-dev] Adding Poly/mono functionality to FluidSynth
Date: Thu, 07 Jul 2016 14:35:35 +0200
User-agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:38.0) Gecko/20100101 Thunderbird/38.1.0

Hi Ben and others RPi2 developper

in the aim to compile FluidSynth v 1.1.6 from git repository
1) I have prepared a RPi2 jessie in the aim to compile FluidSynth v 1.1.6 using the compiler from the jessie image.
2) I have done the same thing on another machine running Debian.
3) I have done the same thing on another machine running Windows XP.

From the same source, the compiler results behavior is the same on 2(Debian)  and 3(Windows) but not on RPi2 compiler.
particulary when using char type affected by short (which is a bad practice , i admit) anaway the Jessie RPi2 compiler
may produce bad code behavior.
In others words, be carefull with  the warning displayed by this compiler at make time !.

jjc

Le 07/07/2016 01:04, Ben Gonzales a écrit :
Hi all.

I loaded the changed file, and rebuilt.

The problem is fixed. I tried all presets in legatomode 3 and cc 68 127, both with and without chorus and reverb. The CPU usage climbed to 30+% while playing (with reverb/chorus) then fell back to 4% when I stopped playing.

Thanks

Ben

On 07/07/16 04:08, jean-jacques.ceresa wrote:
Hi Ben,

Thanks a lot for your contribution you have done a good job.

After looking the result of the compiler you have posted on your site, I have found
some differences that strike me.
You will find below an new attached file: fluid_synth_mono.c.

Please may you:
1) substitute the one you have: in   /src/synth/fluid_synth_mono.c  by the attached new one.
2) rebuild.
3) And tell if the issue is always there ?.

Thanks you very much

jjc

Le 06/07/2016 14:37, Ben Gonzales a écrit :
Hi all.

When I said "are there any tests...?" I didn't expect so many!
Nevertheless, I have completed the tests, and I have put all the resulting files in:

http://gonzos.net/fluid-dev

Also in that directory are the soundfont, and other files I have referenced in this discussion.

cmakelog.txt  is the results of the command <cmake ..> from the empty build directory
makelog.txt is the results of the command <make> from the build directory

I think I covered all the variations that you requested. They are summarised in polymonotests.pdf

ewi.conf is the configuration file I use to start fluidsynth, and the command line in the batch file is

        nice -20 fluidsynth --server --no-shell --audio-driver=alsa \
               -o audio.alsa.device=hw:$CARDNO \
                   --load-config=$CONFIG --portname="$SYNTHPORT" &> /home/pi/ewi/scripts/fluidsynth.out &

Notes:
- The %CPU is taken from the <top> command, and represents what is used by FluidSynth only. I arriving at the readings, I had to do a bit of "averaging" in my head, as the % utilisation fluctuated. I was not running the Xwindows graphical interface - it was all done via ssh.
- each test was done with a fresh instance of fluidsynth
- the ewi.conf file is a "snapshot" of one of its possible states - it gets changed depending on what options are selected.
- I tested all the presets in the soundfont. The tenor sax displays the worst effects on the CPU, the clarinet displays the least.
- The test with 24 notes was the test I did to see how far I could go before getting audio distortion as a result of high CPU load


Ben

On 06/07/16 19:17, jean-jacques.ceresa wrote:
Hi Ben,

>Is there any test I could run on the Pi....

While i'm preparing my RPi2, could you please:

Describe and localize when you see excess CPU usage. followings the tests below:
0)Building steps:
0.1) Which options did you choose at cmake time (please send the summary log or put it to your WebSite) ?.
0.1) Please send the log of compiler or put it on your WebSite ?.
0.2) What are the fluidsynth arguments when you start it ?.

1)Playing steps
1.1) What is the meter you use to see CPU usage (probably the one to top right of X windows graphic interface) ?
1.1.1) Please note the meter value when issue occurs.

1.2) Using your soundfont (gonzos-20160702.sf2), which preset causes the issue ?, and which preset doesn't cause the issue ?.
1.3) I remember the issue is when you play (in mono mode) (at the the noteOn time), but i 'm not sure ?. Please confirm.

1.4) Assuming the issue occurs in mono mode, does this issue occur in poly mode ? (using the same preset).
1.4.1) Is it when you play staccato  (n1On,n1Off,n1On,n1Off,...) on the same note ?
1.4.2) Is it when you play staccato  (n1On,n1Off,n2On,n2Off,...) on different note ?
1.4.2) Is it when you play legato  (n1On,,n2On,n1Off,n3On,n2Off...) ?, please note the legato mode number (0 to 3).

The following test are related to Element remarks
2) Please do the test 1.x.x with Reverb and Chorus On   and when the issue occurs, do the same tests without Reverb/Chorus.

Thanks a lot.

jjc

Le 06/07/2016 00:28, Ben Gonzales a écrit :
Hi all.

Is there any test I could run on the Pi that would help you analyse the problem?

Ben

On 06/07/16 04:55, Element Green wrote:
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:

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



_______________________________________________
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



_______________________________________________
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]