Properly fix MIDI loop timing at end of record, including overdubs#108
Merged
Conversation
Contributor
There was a problem hiding this comment.
Pull request overview
This PR adjusts how MIDI loop playback/overdub timing is anchored when transitioning out of record/overdub, aiming to make end-of-record MIDI timing consistent (including overdubs) by basing MIDI phase on trigger/quantisation timing rather than audio play position.
Changes:
- Pass MIDI quantisation error into
LoopTake::Play()and use it to set the initial MIDI visual/play index. - Rework MIDI overdub merge to rebase source MIDI events relative to the captured source start sample (and stop shifting punch windows/events by a phase offset).
- Update existing MIDI timing assertions and add a regression test covering double-length overdubs with non-zero audio play positions.
Reviewed changes
Copilot reviewed 4 out of 4 changed files in this pull request and generated 1 comment.
| File | Description |
|---|---|
test/JammaLib_Tests/src/midi/MidiLoop_Tests.cpp |
Updates expectations for overdub/playback timing and adds a regression test for “no punch, double-length” overdub timing. |
JammaLib/src/engine/Station.cpp |
Threads quantisation error (errorSamps) into LoopTake::Play() at record/overdub end triggers. |
JammaLib/src/engine/LoopTake.h |
Extends LoopTake::Play() signature with optional midiQuantisationErrorSamps; updates helper signature to remove phase-offset argument. |
JammaLib/src/engine/LoopTake.cpp |
Implements new MIDI start index logic and rebased-source overdub merge behavior (including additional verbose diagnostics). |
Comment on lines
+2286
to
+2289
| std::array<midi::MidiEvent, midi::MidiLoop::DefaultCapacity> rebasedSourceEvents{}; | ||
| const auto rebasedSourceCount = BuildRebasedMidiOverdubSourceEvents(state, | ||
| rebasedSourceEvents.data(), | ||
| rebasedSourceEvents.size()); |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
No description provided.