TR123e - EMCT Computing Final Project Version 1.0
Research Project Translation from gen~ to embedded Moog synth
Loading...
Searching...
No Matches
ResonanceRamp.h File Reference

Smooth parameter interpolation for filter resonance control. More...

Go to the source code of this file.

Classes

class  ResonanceRamp
 Linear parameter interpolation engine for smooth resonance control. More...

Detailed Description

Smooth parameter interpolation for filter resonance control.

This module implements sophisticated parameter smoothing for filter resonance values, preventing audio artifacts caused by abrupt control changes. The system provides configurable ramping time with sample-accurate interpolation, essential for high-Q filter applications where parameter discontinuities can cause instability, clicks, or unwanted transients in the audio output.

@technical_necessity Digital filters, particularly high-Q resonant designs like the Moog ladder filter, are sensitive to parameter changes that occur faster than their internal time constants. Abrupt resonance changes can cause:

  1. Audible Clicks: Discontinuities in filter state variables
  2. Instability: Sudden parameter jumps may exceed filter stability margins
  3. Aliasing: Rapid parameter changes can introduce high-frequency artifacts
  4. Musical Disruption: Harsh transitions that interfere with musical expression

@smoothing_theory The implementation uses linear interpolation in the parameter domain rather than the frequency domain. While this is simpler computationally, it may not provide optimal perceptual smoothing for all applications. The linear approach offers:

  • Computational Efficiency: Single increment per sample, minimal CPU overhead
  • Predictable Behavior: Linear parameter progression with known completion time
  • Numerical Stability: Simple arithmetic without transcendental functions
  • Real-time Safety: Bounded execution time suitable for audio processing

@mathematical_model Linear interpolation: p(t) = p₀ + (p₁ - p₀) × (t/T)

Discrete implementation: p[n] = p[n-1] + increment_per_sample Where: increment_per_sample = (target - current) / (ramp_time × sample_rate)

@performance_characteristics

  • Computational complexity: O(1) per sample
  • Memory footprint: 16 bytes (4 float members)
  • Convergence time: User-configurable (typically 10-100ms)
  • Precision: IEEE 754 single precision with automatic completion detection
Author
Timothy Paul Read (inferred from project context)
Date
2025/03/10 (estimated)
Version
1.0