[Top][All Lists]

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

Re: [fluid-dev] Patch for bad MIDI timing (with large buffer sizes)

From: Antoine Schmitt
Subject: Re: [fluid-dev] Patch for bad MIDI timing (with large buffer sizes)
Date: Sun, 15 Mar 2009 18:26:04 +0100

Le 15 mars 09 à 14:43, Pedro Lopez-Cabanillas a écrit :

David Henningsson wrote:
Pedro Lopez-Cabanillas skrev:
David Henningsson wrote:
* file output driver (fluid_aufile.c) uses another timer instance. This
should be fixed as well, to solve ticket #15.


Please take into account that the file output can be used also without
rendering a MIDI file, when FluidSynth is used as a real time MIDI
synthesizer. In this case, the clock timer needs to be preserved, unless
you find a better solution.

We also have the case where the user wants to play a MIDI file, play
along himself, and put the result into a file. So we can only enable
fast rendering if we have both -i, and -n, and file output, and the
player does not use system clock timers. Did I forget something?

There is also the MIDI sequencer case (fluid_seq.c) where you can find another timer instance. This would be used by an application scheduling (queueing) timestamped MIDI events, for instance a drum machine, or a MIDI arpeggiator,
or something like that.

My two cents on the sequencer timer... The sequencer timer has the same problem that the midi timer had, as we discussed last january : it is not synchronized to the audio time. This led to audio glitches when the audio time was much different from the real time (which it is especially true with DirectX drivers which can request up to 16 buffers at a time, so audio time can by much ahead of real time). I have implemented a fix for this, where the sequencer timer uses the audio ticks. I had the intention to commit a branch with this fix, but time flies and I did not do it.

Now with the new slave timer attached on the audio stream that will be introduced, I think that it is a much better solution also for the sequencer. Much cleaner than the fix that I had introduced. The sequencer timer should just be redirected to this slave timer. This introduces a change in the API though, since this timer must be provided to the sequencer.

I did not follow all the discussions about what will be introduced when (1.0.9 or 2.0), but I think that whenever the slave timer is introduced, the sequencer should be ported to it.

++ as

reply via email to

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