[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [fluid-dev] Problem with Fluidsynth and looping
Re: [fluid-dev] Problem with Fluidsynth and looping
Sat, 25 Aug 2007 19:32:15 -0700
Just an update on this issue. It seems existing FluidSynth source
clamps loop start/end points to a padding of 2 samples on either side of
the start/end of the sample data. This is the reason for the click and
would actually cause detuning problems if the loop was small (since for
example the end loop point would get modified by a couple sample
I need to get more familiar with the interpolation algorithm. I
modified the clamping so that it no longer requires padding on either
side of the loop, but the interpolation algorithms need to be updated to
prevent points off the end of the sample data from being accessed. From
what I can tell, FluidSynth also isn't interpolating around a sample
point (i.e., before and after the current point) but instead using only
points after the current sample point (that might be a misinterpretation
of the code on my part though). It also isn't interpolating around a
loop boundary, which could lead to artifacts if there are no sample
points following the loop end, or they don't match the start loop data
If there are any DSP experts here that could assist with these changes,
that would be great :) I'll continue studying the interpolation stuff
though. Best regards,
On Sat, 2007-08-25 at 17:34 -0700, Josh Green wrote:
> Hello Tomas,
> Sorry about the delay, I've been rather busy the last few months. I did
> a number of audio output tests (using jackrec to dump the audio output
> of FluidSynth). I found in those cases that the looping was in fact
> correct. When I gave that test SoundFont a try though, I found that the
> samples do indeed have clicking problems at the loop, as you mentioned.
> It looks like the commonality is that the end loop is at the end of the
> sample. As far as SoundFont files are concerned, the end loop point
> isn't actually included in the loop, but rather it is superimposed over
> the start of the loop (so the start loop point is used instead of the
> end loop point). So the loop end can indeed be 1 value off the end of
> the sample data (which is the case for all those samples). It looks
> like that is the bug with FluidSynth. I'll look into this more and get
> it fixed. Thanks for reporting it! Now to figure out how to handle
> that case with Swami in an intuitive manner :)
> I created a Trac ticket for this, which is here:
> On Mon, 2007-05-21 at 10:17 +0300, Tomas Nykung wrote:
> > Hi everyone.
> > I'm a jOrgan user, http://jorgan.sourceforge.net
> > using Linux (Debian) and Fluidsynth as an virtual pipe organ.
> > We "jOrganists" (I'm not alone with this problem) have a problem with
> > Fluidsynth and looping.
> > The problem shows up in soundfonts that have real samples of real pipe
> > organs. In a pipe, the sound isn't steady, -the sound varies slightly
> > with time, and therefore the looping point is very critical. If the
> > looping point is off, even just a little, then you get a "click" sound
> > every time the sound loops, and this is exactly what happens with
> > Fluidsynth.
> > I had never noticed this problem before, when I used soundfonts such as
> > the Jeux soundfont, http://members.aol.com/realmac/jeux1.htm
> > that have very small samples, but when I last December bought the
> > Marcussen soundfont from http://www.solcon.nl/ahoogendijk/index_uk.html
> > then the problem became very annoying.
> > We had a long thread discussing this problem on the jOrgan mailing
> > list, as there was another user that also had this problem with his
> > own soundfont(s), and then I got the "bright" idea of adjusting the
> > loop points of every sample with Swami.
> > I was just stumbling in the dark, trying anything that maybe could
> > help with the problem, and eventually found that adjusting the loop
> > point exactly two steps downwards in every sample in the whole
> > soundfont fixes the problem!
> > Just to be very clear about what I'm speaking about:
> > http://www.multi.fi/~nykungs/fluidsynth_temp/Loop_point_adjustment.jpg
> > See the red arrow, I adjusted this value exactly two steps downward
> > in every sample.
> > The problem with this "correction" of the soundfont, is that there
> > isn't a problem in the soundfont itself, it's perfectly looped, so this
> > "correction" only works around the problem in Fluidsynth, and after
> > this "correction" is applied to the soundfont, the soundfont sounds
> > wrong when played in any other sampler, be that a SoundBlaster Live!
> > hardware sampler or sfx or whatever!
> > As the Marcussen soundfont is proprietary, I can not send that to
> > anyone, but I got another user to send me an example of his soundfont
> > to illustrate the problem, and for testing.
> > It is just a very small example soundfont, one octave of
> > Great Fifteenth 2' stop, and one actave of Swell Clarion 4' stop, but
> > it's enough to illustrate the problem.
> > Here is a demo of what it sounds like before the "correction",
> > Clarion 4', note e4:
> > http://www.multi.fi/~nykungs/fluidsynth_temp/demo_original_soundfont.ogg
> > and here is the same note, played after adjusting the loop point:
> > http://www.multi.fi/~nykungs/fluidsynth_temp/demo_loop_adjusted_soundfont.ogg
> > Here is the original soundfont, before I "corrected" it:
> > http://www.multi.fi/~nykungs/fluidsynth_temp/Lumpy_loop_tinging_demo.sf2
> > And here is the same soundfont after the "correction" is applied with
> > Swami:
> > http://www.multi.fi/~nykungs/fluidsynth_temp/Lumpy_loop_tinging_demo_looping_adjusted.sf2
> > I think (but I may be wrong) that there is some kind of "off by two
> > points" bug in the Fluidsynth loop handling(?) that doesn't show up
> > with "normal" soundfonts, so therefore nobody noticed the bug before.
> > If anyone could look into this, then I would wholeheartedly thank them
> > from all us virtual organ players that wants to use Linux and
> > Fluidsynth!
> > If you need more info / testing / whatever then just ask, I'm here.
> > Regards Tomas Nykung
> > _______________________________________________
> > fluid-dev mailing list
> > address@hidden
> > http://lists.nongnu.org/mailman/listinfo/fluid-dev
> fluid-dev mailing list