- Replace per-sample animateValues() with block-based processing
- Process each parameter as a complete block instead of sample-by-sample
- Move LFO type and sidechain checks outside sample loops (reduces branching)
- Remove unnecessary per-sample caching (phaseInc, cachedSmoothingWeight,
lastLfoRate, lfoStartNorm, lfoEndNorm, cachedLfoMinBound, etc.)
- Keep only essential state: phase (LFO) and rngState (noise)
- Simplify prepareToPlay() - only stores sample rate
- Remove nextPhase() helper function (inlined into animateValues)
- Replace jassert in SimpleEffect with fallback to static parameter values
- Remove OSCI_UNINITIALIZED_F sentinel (no longer needed)
This refactor significantly reduces CPU overhead by eliminating redundant
per-sample branching and cache checks, while maintaining exact same behavior.