Perfect Human Interface wrote:Okay, so, the big question I'm wondering here is whether there was ever a problem in the first place... Personally I would like to see the "bad" timing demonstrated in order to see the behavior and what needs improving (if anything). Assuming it hasn't been done already.
Well, firstly, I'd agree with billy, it seems that it has been realised - both in his designs, and to a lesser degree in my own PPQ thread (mine constantly re-syncs using PPQ, which can't be done so easily in FL, so billy has managed to do it in the most demanding environment that we have yet found).
I think the 'problems' boiled down to twp things...
1) The legacy from SM.
There is no doubt that SM, which has only 'green' triggers and not Ruby events, was hopelessly inadequate - events could only be scheduled using Windows timers, which are not accurate even to the millisecond, let alone each sample (to be fair, Microsoft never designed them to be so).
There were 100's of attempts to improve upon this - and using PPQ and pure stream schematics, it was possible for 'audio only' designs, but never anywhere close for MIDI events.
2) What is time?
Our sequencers show us time (most often) in bars and beats - Ruby events are scheduled in seconds - but the underlying measure of time is really the sample clock. That clock may be shared between the two systems, but there's no guarantee that the maths for converting bars and beats to samples, or time in seconds to samples, will be calculated in quite the same way in those two systems - or even that it is safe to assume that the values are calculated for every single sample, rather than being quantised in some way.
And no example was provided with FS that adequately demonstrated this kind of accuracy in practice (note; accuracy, not precision, two very different things)
So, in a sense the problem was not that Ruby events had a known fault that needed fixing, rather that we didn't know for sure either way until a fully working example had been shown to be reliable in practice - something that everyone could use with absolute confidence.
As any good scientist knows, proving a positive is a damned sight harder that proving a negative, so like you, I have total admiration for billy's hard work and patience to get to the bottom of this. No doubt there will now be some optimisation of the implementation to follow, but billy has done the lion's share of the hardest part - showing beyond doubt that it CAN be done. (and after our experiences with SM, it's no surprise that there was quite a lot of doubt floating about!)
So, thankyou billy, and thankyou DSPr - the 'holy grail' of us MIDI freaks seems to be here at last!
