Fix cross-rate Preserve splices, re-stamp on host-rate change, name the rate refusal
The splice crossfade now counts output frames and stops before the ring's far end (this also fixes a lap at matched rate). The search strides by the rate ratio. The editor takes its time base from its own decode. Same-rate output is pinned to hashes from before the change.
This commit is contained in:
@@ -42,7 +42,7 @@ bool ReaSamplerEditor::mouseDownWaveform(const FaceLayout& fl, int x, int y) {
|
||||
// (overlayEnvInert flips the staged one inert exactly when its envelope is in Spline mode),
|
||||
// so at most one of the two hit-tests below is ever live for the same click — both feed the
|
||||
// SAME arbitration slot below rather than either one getting its own check-order return.
|
||||
const double rate = liveSampleRate();
|
||||
const double rate = selectedSourceRate();
|
||||
const bool nodesLive =
|
||||
overlayEnv_ != OverlayEnv::kNone && !overlayEnvInert(overlayEnv_, gates);
|
||||
NodeHit envNodeHit;
|
||||
@@ -245,7 +245,7 @@ void ReaSamplerEditor::dragWaveform(const FaceLayout& fl, int x, int y) {
|
||||
// set. The StageEnvelope was snapshotted at grab (dragStartEnv_) so the delta is
|
||||
// absolute.
|
||||
const std::int64_t frames = dragSampleFrames_;
|
||||
const double rate = liveSampleRate();
|
||||
const double rate = selectedSourceRate();
|
||||
if (frames <= 0 || rate <= 0.0) return;
|
||||
const double totalSeconds = static_cast<double>(frames) / rate;
|
||||
const DragModifiers mods = dragModifiers();
|
||||
|
||||
Reference in New Issue
Block a user