FYI: A new implementation is now ready and proposed here:

https://github.com/FluidSynth/fluidsynth/pull/604#issuecomment-616091967

It's the C++ implementation we've talked about earlier, because it received 
quite positive feedback from the mailing list compared to the glib approach.

An open concern was the event ordering at the same tick I've proposed. With 
this new implementation, events that have the same tick are given the following 
order:

- #FLUID_SEQ_SYSTEMRESET events precede any other event type.
- #FLUID_SEQ_UNREGISTERING events succeed #FLUID_SEQ_SYSTEMRESET and precede 
other event type.
- #FLUID_SEQ_NOTEON and #FLUID_SEQ_NOTE events succeed any other event type.
- Otherwise the order is undefined.

I do not see how this ordering could break any existing application. Events are 
ordered by tick and it stays that way. On the contrary, it ensures that NoteOns 
are spawned with the correct configuration that has been set up at a given 
tick. Which is important, when you consider MIDI files that have their NoteOn 
and programChange scattered over two different tracks 
(https://lists.nongnu.org/archive/html/fluid-dev/2017-05/msg00004.html).

In addition, the sequencer now supports tempo changes, because you can change 
its scale to any arbitrary value.

And No, this PR will not affect fluidsynth's MIDI player behaviour (for the 
moment).

Feedback is welcome.

Tom



_______________________________________________
fluid-dev mailing list
fluid-dev@nongnu.org
https://lists.nongnu.org/mailman/listinfo/fluid-dev

Reply via email to