[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[fluid-dev] Re: [Jack-Devel] Jack, FluidSynth, realtime and non-realtime
From: |
Stéphane Letz |
Subject: |
[fluid-dev] Re: [Jack-Devel] Jack, FluidSynth, realtime and non-realtime use cases |
Date: |
Mon, 31 May 2010 12:42:36 +0200 |
Le 31 mai 2010 à 12:34, David Henningsson a écrit :
> On 2010-05-31 08:24, Stéphane Letz wrote:
>>
>> Le 31 mai 2010 à 05:40, David Henningsson a écrit :
>>
>>> Hello Jack devs,
>>>
>>> FluidSynth has support for both Jack MIDI and Jack audio.
>>>
>>> FluidSynth should support both realtime use cases (such as live playing
>>> on a piano) and non-realtime use cases (such as rendering a mixdown). I
>>> assume that Jack also supports both use cases.
>>>
>>> Now, there are some midi messages for which FluidSynth can't guarantee
>>> low enough latency, e g program change messages. In the real-time use
>>> case, FluidSynth's best strategy would probably be to internally process
>>> these events asynchronously (i e in a different thread), and queue up
>>> other MIDI events behind to avoid reordering. And in parallel process
>>> audio callbacks (with the old MIDI state) in order to avoid dropouts.
>>>
>>> In the non real-time use case however, latency is not an issue, but
>>> predictability is, so we should just process events as they come. And
>>> the strategy outlined above will fail miserably in that use case.
>>>
>>> The question then is: How can FluidSynth, via the Jack Client API,
>>> determine if we're in "real-time" or "non real-time" mode, and choose
>>> strategy accordingly?
>>>
>>> // David
>>
>> Using "jack_is_realtime" ?
>>
>> http://jackaudio.org/files/docs/html/jack_8h.html#ab6d7b40dc5865b8011436b6853fa090f
>
> Sorry if the terms are confusing. Let me rephrase: I'm assuming that
> JACK has a faster-than-realtime mode, for performing mixdowns as fast as
> the computer can handle. Is that correct? If so, how do I know if we're
> currently in such a mode?
>
> (If the answer is still "Jack_is_realtime", the documentation is wrong.)
>
> // David
>
>
Sorry, use the freewheel callback for that :
http://jackaudio.org/files/docs/html/group__ClientCallbacks.html#gac8e87f2c4054afc41c98c8f6a2460859
Stéphane