fluid-dev
[Top][All Lists]
Advanced

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

Re: [fluid-dev] [PATCH] sampledata caching


From: Kjetil Matheussen
Subject: Re: [fluid-dev] [PATCH] sampledata caching
Date: Wed, 10 Oct 2012 09:51:05 +0200
User-agent: Roundcube Webmail/0.6

On 10.10.2012 08:05, David Henningsson wrote:
On 10/09/2012 11:13 AM, Kjetil Matheussen wrote:
Hi,

I'm embedding FluidSynth as an instrument in the Radium music editor
(http://users.notam02.no/~kjetism/radium).

It works fine (thanks for the great work!), but the memory usage was
sometimes shockingly high because fluidsynth reloads
entire soundfonts for every new synth, even if the soundfont was already
used in a different synth.

Maybe I have misunderstood something, but instead of spending several
more hours trying to figure out if I had misunderstood
something, I modified fluidsynth to cache already loaded sampledata from
soundfonts.

Here's the patch:
http://users.notam02.no/~kjetism/fluid_defsfont_patch.diff

Please let me know if there's anything that's needed to do in order for
you to use it.

I also have a question: Can delete_fluid_defsfont and
fluid_defsfont_load_sampledata be called from different threads at the
same time?
In so, we also need a lock protecting the global list of cached sampledata.

Hi Kjetil and thanks for your patch!

You're correct in your last sentence - as of how it works today, I'd
say fluidsynth client software expects to be able to call
fluid_defsfont_* in parallel. So yes, it needs to be protected.


Great, I'll fix that.

Another thing we need to verify is that the sampledata is read-only
once it's been bigendian converted. If it is not, chances are that two
threads would both modify the sampledata, causing problems.


Okay. I'll see if there's any trouble changing the sampledata field from short* to const short*.


Element - you've been more into this part of FluidSynth than I, would
you mind confirming that the sampledata is strict read-only and there
are no hacks that change it?

// David




reply via email to

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