Γ-W1-T7: make Preserve's splices pitch-synchronous — the jump is a whole number of the source's own period, detected once at load
30 Hz out-of-band energy 15.45% -> 0.00%; the 29 Hz rate-2.0 detune -133 -> +0 cents. An unknown period keeps the fixed-window geometry bit for bit. The detector cannot reach process(): sampler_core does not link it.
This commit is contained in:
@@ -264,6 +264,14 @@ struct SampleData {
|
||||
// (never per frame). Default flat y=1 — every velocity plays at unity.
|
||||
VelocityCurve velocityCurve = VelocityCurve::flat();
|
||||
|
||||
// The source's own fundamental period in SOURCE frames, which makes Preserve's splices
|
||||
// pitch-synchronous (pitch_shift.h). DERIVED from the PCM at load, not authored and never
|
||||
// persisted — a cache, not state, so it takes no rung of the payload ladder. 0 means
|
||||
// unknown (nothing detected it, or the source has no single period) and restores the
|
||||
// fixed-window splice geometry byte for byte, which is why a hand-built SampleData is
|
||||
// still exactly the bare engine.
|
||||
double sourcePeriodFrames = 0.0;
|
||||
|
||||
PlayParams play;
|
||||
|
||||
// The live-parameter block a sounding voice tracks, or null for the bare latched engine
|
||||
|
||||
Reference in New Issue
Block a user