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