Yea -- it may be one buffer off. It's not ideal to duplicate the logic from BpmControl in EngineBuffer though. There probably is a much better solution here. 

Queueing up requests and processing them at the start of the callback is one way but we really need to completely isolate the engine for this to work consistently (otherwise some requests will take place immediately and some will queue -- this is what got us into trouble with the preview deck "load and play" issue -- loading happened asynchronously and play happened synchronously so the play would fail b/c the load didn't happen yet).