fix: corrected tick lookup for swing playback#2702
Conversation
5bf5ed6 to
9d0c95b
Compare
9d0c95b to
cd3c02f
Compare
|
Daniel, we retested the SRV / Pride and Joy shuffle cursor issue against alphaTab 1.8.3 after #2702. Bug is still here but much worse! alphaTab 1.8.3 appears to degrade native cursor motion globally: Original Baseline Testing Prior to the V1.8.3 Version Update: What the 1.8.1 baseline proves
Both regression objects show: timeDelta: +2.666ms So alphaTab’s playback clock is not moving backward during the observed slingshot.
First jump: currentTick: 613 Second jump: currentTick: 1449 visual observation: the native cursor races/slingshots forward. After V1.8.3 installed: The issue still reproduces in a native alphaTab testbed, without Maestro’s custom cursor involved. Environment:
1.8.1 baseline:
1.8.3 comparison:
Conclusion: In 1.8.1, native alphaTab cursor behavior showed discrete sharp forward jumps in SRV/Pride and Joy shuffle playback. In 1.8.3, the issue is worse: the native cursor appears to park/hop from anchor to anchor across playback. currentTime and currentTick remain monotonic, but native cursor X stays frozen over many ticks and then jumps to a new visual anchor. This suggests the remaining bug is not playback clock reversal. It is native cursor visual-anchor lookup/interpolation in swung/shuffle passages. Additional 1.8.3 evidence: A longer 1.8.3 run through the opening M1 region produced: (As was just captured in the video evidence that was just recorded)
This is materially worse than the 1.8.1 baseline, which produced only 2 native cursor sharp-move regressions. Observed behavior:
Probe pattern:
activeBeatsChanged also appears too coarse for this passage:
Further Conclusion: Will Attach YouTube video here: Or with the compact |
Issues
Fixes #2657
Proposed changes
There were some incorrect usages of playbackStart and playbackDuration where we should actually use the midi tick lookup.
Especially in swing cases this could lead to wrong playback ranges and seeks.
Checklist
Further details