[Top][All Lists]

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

[fluid-dev] kaaaabooom, Was: Jamming with FluidSynth :)

From: Peter Hanappe
Subject: [fluid-dev] kaaaabooom, Was: Jamming with FluidSynth :)
Date: Fri, 04 Apr 2003 00:18:49 +0200
User-agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.0.0) Gecko/20020623 Debian/1.0.0-0.woody.1

Hi Josh,

I'm pulling in this old mail from the iiwusynth-devel mailing list.

All the parameters for the reverb - roomsize, damp, width, level -
should be between 0 and 1. It seems like Swami allows values
outside that range. I changes the reverb module in FluidSynth: it now
clips the values to the allowed range.

You were right that the kaaaabooom problem comes from the filter and not
the reverb. In particular, the filter interpolation seemed to cause the
noise. The coefficients are now interpolated over one synthesis buffer
(64 samples) instead of two buffers. This solved it.
However, I can't find any bug in the interpolation code so I assume
that the filter somehow becomes instable. IIRC, the direct form of the
filter that Markus introduced is stays stable when the coefficients are
interpolated. So it could be a problem with round off erros, or so.

Can you check on your side whether this change effectively removed the


BTW: I've been using Swami CVS (HEAD branch) a lot today. It rocks!

Josh Green wrote:
> On Mon, 2003-03-03 at 00:48, M. Nentwig wrote:
>>OK, I have an idea what could cause the effect. I believe the 'width'
>>parameter in the reverb unit should be 0 < width < 1.
>>>From iiwu_rev.c:
>>  rev->wet1 = rev->wet * (rev->width / 2 + 0.5f);
>>  rev->wet2 = rev->wet * ((1 - rev->width) / 2);
>>If it were like this, then the range check in iiwu_cmd would have to be
>>Could you try again, just use a reverb width of 1?
> Nope.. Does it as well, even lowered it to 0.8. I still think its a
> problem with the filter, triggering something with reverb. I just did a
> test. I put this at the beginning of the for loop in
> iiwu_revmodel_processmix in iiwu_rev.c:
>     if (input < 0.0 || input > 1.0) printf ("Out of range: %f\n",
> input);
> When things go kaaaabooom, I get a whole string of this messages with
> the values going < 0 and sometimes going all the way down to
> -483714662400.000000. I put some of these printfs in the iiwu_dsp_core
> filter loop as well and I find things get out of range on kaboom. I'm
> not really sure whats getting messed up though. Perhaps filter
> coefficients? I'm assuming its the filter that is the source of the
> problem, reverb just doesn't like the values it is getting. I think at
> this point you could probably figure out whats going on much faster than
> me. Cheers.
>    Josh

reply via email to

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