You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Currently, seeking randomly will cause all sorts of desync problems for all visualizers based on RootDisplay (basic.mjs). Skipping backwards will freeze the event feed, until the player head reaches wherever it was before. Skipping forwards mid-play will cause hanging notes at best, total state desync at worst. No matter which direction a skip occurs, it will also induce problems with current position in bars.
Proper support for random seeking should solve this long-standing pain nicely. For a proper implementation, some ideas are drawn below.
For the current position, a separate table of offsets could be built. The player then only needs to query for the correct offsets.
The simplest solution for supporting seeking backwards would be resetting Octavia entirely, and replay all events from the beginning up to the desired point. This approach is cheap on memory, but not so on CPU, and it doesn't play well with synths at all.
A more complex solution would be building out a timed raw state graph beforehand. Whenever a seek happens, the state could be overridden with the queried state from the graph, either by plain events (when possible) or setup SysEx messages. Has an added potential benefit of supporting loops when the middleware gets finished. It plays nicely with synth, and is easy on the CPU, but has an unknown impact on memory usage.
The text was updated successfully, but these errors were encountered:
The simpler approach shall land in 0.5.x, along with the time offset graph. The simple seeking support should not be brought to 0.6.x where middleware is planned to receive an overhaul, as it could be disastrous for synths on the receiving end.
Currently, seeking randomly will cause all sorts of desync problems for all visualizers based on
RootDisplay
(basic.mjs
). Skipping backwards will freeze the event feed, until the player head reaches wherever it was before. Skipping forwards mid-play will cause hanging notes at best, total state desync at worst. No matter which direction a skip occurs, it will also induce problems with current position in bars.Proper support for random seeking should solve this long-standing pain nicely. For a proper implementation, some ideas are drawn below.
The text was updated successfully, but these errors were encountered: