Synthstrom Deluge: keep the loop when the source omits the loop end#160
Open
douglas-carmichael wants to merge 1 commit into
Open
Synthstrom Deluge: keep the loop when the source omits the loop end#160douglas-carmichael wants to merge 1 commit into
douglas-carmichael wants to merge 1 commit into
Conversation
A Deluge sample oscillator stores no endLoopPos when the loop runs to the end of the sample. The detector only set the loop end when endLoopPos was present, so in that case the loop end stayed at the model default of -1. Creators then wrote a negative, degenerate loop (e.g. the Waldorf QPAT sample map got a loop end of -1/frames), and the sound lost its sustain - a looping pad ended abruptly instead of sustaining until the release. Default the loop end to the zone/sample end when endLoopPos is absent.
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.
A Deluge sample oscillator stores no
endLoopPoswhen the loop runs to the end of the sample — onlystartLoopPosis written. The detector set the loop end only whenendLoopPoswas present:so in the (common) loop-to-end case the loop end stayed at the model default of −1. Creators then wrote a negative, degenerate loop, and the sound lost its sustain — a looping pad ended abruptly instead of sustaining until the release.
Example
The "R663 A4 Organ Dream Pad" preset (firmware 3.x) has
startLoopPos="111218",endSamplePos="164574"and noendLoopPos. Converted to a Waldorf Iridium (QPAT), the sample-map row was:loopEnd = −1 / 164574. With the loop start (0.676) past the loop end (~0) the device can't loop, so the sample plays once and stops; the sustaining pad lost its sustain and ended abruptly instead of fading out over its (correctly converted) ~6 s release.Fix
Default the loop end to the zone/sample end (
endSamplePos, falling back to the sample frame count) whenendLoopPosis absent. The same preset now writes:a valid forward loop, and the pad sustains again. Verified end-to-end (Deluge → QPAT).
Follow-up to the Deluge format support (#152); independent of the root-tag read fix (#159).