On Saturday 16 February 2013 03:58:10 Frank Kober wrote: > I've tried to do that move from an ALSA backend to a JACK MIDI one in > QMidiArp, and used vectors as a queue for event timings. It doesn't > support tempo changes on the fly and I even didn't think about how to > implement this. The ALSA sequencer queue has a very convenient features
A few people have mentioned tempo changes on the fly as a troublesome area. So let me think about this: Changing a tempo doesn't change the number of ticks. It does change the time value (in nanoseconds) of each tick. So suppose at time x a tempo change occurs. We let startTick = nanosToTicks(x) be our new starting tick for future calculations according to our new tempo. nanosToTicks() is then set to use the new tempo. So really our function could be nanosToTicks(x, tempo). This is essentially what we do if we're playing a smf with a tempo change. Presumably, what seems to concern people is an additional tempo adjustment (e.g. pushing a button to slow playback to half speed). But this is just a scale factor. Then we have nanosToTick(x, tempo, scale), which is the same calculation above except that we multiply by scale at the end. I don't really see the issue here. Or is everyone else talking about something different? -- 7:8 _______________________________________________ Linux-audio-dev mailing list [email protected] http://lists.linuxaudio.org/listinfo/linux-audio-dev
