[Top][All Lists]

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

Re: [fluid-dev] fluid_sequencer_send_at ignoring time when not using an

From: Pedro Lopez-Cabanillas
Subject: Re: [fluid-dev] fluid_sequencer_send_at ignoring time when not using an audio driver
Date: Tue, 19 Jun 2012 10:56:44 +0200

On Tue, Jun 19, 2012 at 10:17 AM, Raja Mukherji <address@hidden> wrote:
On Tue 19 Jun 2012 08:09:34 IST, David Henningsson wrote:

Ok, the problem can be reproduced in your second example file by setting
"audio.period-size" to 3 * sample_rate (rendering a 3 second block at a
time). After checking the documentation, I see that the range for
"audio.period-size" is 64 - 8192, however I'm not using an audio driver
and there's no such limit mentioned for the fluid_synth_write_float
function. My sequencer is essentially the same as your code, but applies
events to the fluid_synth_t object directly. So it seems that the issue,
if you consider it an issue, applies only to the fluid_sequencer_t
object when used with large period sizes.

The sample timer was designed to avoid these kinds of problems. Make
sure you create the sequencer with new_fluid_sequencer2(FALSE) - i e,
not using the system timer. Together with the seqbind object it will
advance the sequencer automatically when audio is rendered.

// David

I've done that, and that is how it is in Pedro's sample files. I tried using new_fluid_sequencer2(TRUE) to make sure there is a difference and as expected that gives a completely different incorrect result.
That incorrect result using the system timer with large buffers is officially called here the "drunken drummer" effect :-)
OTOH, setting "audio.period-size" to 3 * sample_rate is not possible, because the function fluid_settings_setint()  automatically trims the value to the maximum allowed (8192). If you want to test larger buffers, you need to avoid the fluid_file_renderer altogether, but I don't have time to write another test program version. Anyway, I don't see why  fluid_synth_write_float() should impose any limit on the buffer size.

reply via email to

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