Sync Playback Between Editors (And Upgrade Automation Editor Timeline) #8177
+199
−135
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This PR makes it so that when playing the Song Editor, the playheads in the Piano Roll and Automation Editor sync up when the song playhead passes over their clips. This is just like what happens when doing record-play in the piano roll, except now it happens by default.
Additionally, when pressing play in the Automation Editor, it starts playing the song relative to the position of the clip, not the start of the song.
While I was at it, I also decided to upgrade the automation editor timeline to support proper auto scrolling. It already did previously, but it was a bit broken and couldn't be turned on or off.
This feature also works when detuning a note in the piano roll via the automation editor, and also when editing midi clips or automation clips within a pattern track.
2025-12-17.17-43-39.mp4
There's a lot of repeated code across the editors, but it's a bit tricky to combine them, since our editors don't share a common inherited class (
Editorexists, but that's for the editor windows, not the editors themselves). That may have to wait for a future PR to refactor things, as I don't want to make this PR too big. For now, there is come duplicated code, but it works.