instrument: the filter's velocity depth knob returns and multiplies the bipolar curve; the pre-v12 lift is a pure domain re-tag
This commit is contained in:
@@ -110,21 +110,23 @@ struct PitchEnvParams {
|
||||
// normalized control positions verbatim rather than a parallel set, so no control range is
|
||||
// re-derived here; `filter_params.h` owns every law that maps them to Hz/Q/depth.
|
||||
//
|
||||
// The modulation depths below land in that same normalized cutoff domain and sum before a
|
||||
// single clamp; all are zero/neutral by default.
|
||||
// The three modulation depths below land in that same normalized cutoff domain and sum
|
||||
// before a single clamp; all three are zero/neutral by default.
|
||||
struct FilterParams {
|
||||
bool enabled = false;
|
||||
instrument::engine::filter::FilterSettings settings;
|
||||
double modAmount = 0.0; // bipolar [-1,+1], envelope -> cutoff
|
||||
double velAmount = 0.0; // bipolar [-1,+1], scales velocityCurve's output
|
||||
double keyTrack = 0.0; // octaves of cutoff per octave of (note - root)
|
||||
// The filter envelope takes the same shape the amp does under the active play mode:
|
||||
// AHDSR in Gate, AHD in Trigger. Both are stored, so a mode flip cannot lose either
|
||||
// mode's dialled values (see core/instrument/CLAUDE.md).
|
||||
AdsrParams env; // Gate: the same staged AHDSR the amp runs; frames
|
||||
AhdParams trigEnv; // Trigger: the same staged AHD the amp runs; frames
|
||||
// Velocity -> cutoff, in the normalized cutoff domain. BIPOLAR, so the curve is both the
|
||||
// shape and the amount — there is no separate depth knob behind it (the retired velAmount
|
||||
// was exactly that, and a signed depth multiplying a signed curve made the sign unreadable).
|
||||
// Velocity -> cutoff, in the normalized cutoff domain. The contribution is
|
||||
// velAmount * velocityCurve.eval(velocity): the BIPOLAR curve carries the shape (and its
|
||||
// own sign), the depth knob scales it, and BOTH apply. The curve is flat at 0 by default,
|
||||
// so no depth setting produces velocity modulation until a curve is drawn.
|
||||
VelocityCurve velocityCurve = VelocityCurve::zero();
|
||||
};
|
||||
|
||||
|
||||
Reference in New Issue
Block a user