Fix slowdown issue
The slowdown appeared after playing for a few minutes. The bug appeared
after the move to QML because QML timers have a minimum interval of
16ms. Now, instead of cutting the timer interval in half, the evaluation
is split into substeps.