[Top][All Lists]

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

Re: [fluid-dev] Major degradation in sound quality & cpu usage going fro

From: Aere Greenway
Subject: Re: [fluid-dev] Major degradation in sound quality & cpu usage going from Ubuntu 11.04 to 11.10
Date: Tue, 15 Nov 2011 19:36:59 -0700


I had the system monitor running initially, but had to terminate it because it was becoming part of the problem.  There was quite a bit of swap file space used at the time. 

I use the FluidR3_GM.sf2 soundfont (nearly 150 megabytes).  But in an unusual twist of that, I use what I call "composite voices", by having two FluidSynth engines.  I send the same MIDI performance data to the same channel of each Fluidsynth engine.  The first one is set as "acoustic piano 2", for example, at a loud volume (100), and the 2nd Fluidsynth engine (the same channel) is set as "string ensemble 1", at a low volume (44). 

By doing this, the sound I get is very similar to the "Piano-Strings" voice on my Yamaha S90-ES synthesizer, and much more enjoyable to perform with than just a piano.  And I can easily take my laptop and a MIDI keyboard (& speaker system) to venues where I perform, much easier than my big synthesizer. 

But each Fluidsynth engine appears to use separate storage for the soundfont - even if the same soundfont file is used.  So this adds up. 

To make it worse, I have Rosegarden set to asfxload the same (150 meg) soundfont into the emu10k1 ports on the soundcard, and that memory is not retrievable (unless I load a small soundfont after that).  I have the option set in the ALSA base configuration to allow 150 megabyte soundfonts. 

Things were so bad when I first tried this, that I had to hit the power button to escape from the hung system, which had the disk light on solid.  It appeared to be swapping things in-and-out as fast as it could. 

Remember also that I am using kubuntu (KDE desktop), though with the "low-fat" settings (which seem to help a lot).  I am experimenting with kubuntu again because the missing-menu-bar syndrome of the Ubuntu Unity desktop they are forcing on everybody (much like Microsoft attempted to force Vista on everybody), can be very confusing to users, and I want this to be easy to use. 

I set up Rosegarden to not load the soundfont into the soundcard, and I just ran JACK, Qsynth (with the two engines), and Rosegarden, and that seemed to work just fine, although it took unusually long for Qsynth to finish initializing (you can tell by noting when the "Reverb" and "chorus" check-boxes are no longer grayed-out. 

In the past, I have only experienced this sort of memory problem with one of my 512-megabyte RAM machines (which I still use successfully). 

My speculation is that the debug information (and also possible trace buffers) of the development version use enough extra space to cause the problem. 

As I pointed out, the steps I took to reduce the memory-usage caused it to work just fine, and the disk light wasn't on at all (unlike before). 

I think 12.04 may be soon enough for my music education initiative, since I want it to go out with a long-term release, though in the past I have been burned by lack of reliability of the ".04" releases.  The ".10" releases have been better in the past. 

I suggest that the real reason to get the fix out there, is that Fluidsynth will sound worse, and people won't know why.  They may never have tried it before, and just assume it to be a mere toy, going on to something else.  Not having the fix can give Fluidsynth a bad reputation, which really should be avoided. 

Personally, I firmly believe that Fluidsynth (Qsynth) is a med-level quality synthesizer - especially with the use of composite voices, and in combination with Rosegarden. 

With that combination, I can teach people to use a sequence editor, and learn music at the same time (easier, because you don't have to play all the parts at once).  And you can put your favorite MP3 file into Rosegarden as an audio track, and improvise your own tracks with it - in effect, becoming (vicariously) a part of the band.  No problem getting you kids to practice, and kids aren't afraid of technology. 

I have a methodology for teaching playing by ear, and improvising their own music with other music - a much more natural way to learn music than starting by learning to read music. 

Thanks for the link.  I will pursue the process of getting the fix included. 


On Tue, 2011-11-15 at 06:04 +0100, David Henningsson wrote:
On 11/15/2011 05:17 AM, Aere Greenway wrote:
> David:
> I installed the version of Fluidsynth in your PPA, and found that it
> definitely fixes the problem. Hooraaay!

Since Pedro also had a problem with this, it might make sense to release 
a 1.1.6 version with this bug fixed, to make sure it reaches 12.04.

> I had some difficulty testing it because (I think) this development
> version uses so much memory, that I couldn't run it on my 1 gigibyte RAM
> machine without having it the only thing running, and not loading the
> soundfont into the emu10k1's.

This is not expected. Did you run any further testing on this? Are you 
sure it was FluidSynth taking up all the memory, and nothing else? Did 
you run top / gnome-system-monitor to verify? What sizes are your 
soundfont files?

Or did you actually have some symptom (what symptom?) and just assumed 
it was due to lack of memory?

> It was also an unpleasant surprise to find
> that it took out the special configuration necessary for running JACK,
> but I was able to put that back in manually, after uttering some choice
> expletives...

Ehh...I have a hard time believing that this could be FluidSynth's fault.

> I highly recommend that this particular fix be included in the Ubuntu
> 11.10 release, due to the severe degradation in performance and sound
> quality of Fluidsynth that is in that release, without the fix.

This fix is only relevant for low-polyphony settings, so it does not 
affect most people (who I assume never run into lack of polyphony). That 
said, I don't mind you putting effort into trying to do so - it's a good 
fix. The process for trying to do so is here: 

// David



reply via email to

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