Replace conditional-subtraction phase wrapping with a single stable wrap:
- OscillatorNode: `(phase + freq_mod/sr).rem_euclid(1.0)` — also wraps correctly
when FM drives freq_mod negative (the old `if >= 1.0` wouldn't).
- SynthVoice: `(phase + frequency/sr).fract()`.
Repeated `if phase >= 1.0 { phase -= 1.0 }` accumulates f32 rounding error over
long-held notes, drifting the timbre.
|
||
|---|---|---|
| .. | ||
| effect_trait.rs | ||
| eq.rs | ||
| gain.rs | ||
| mod.rs | ||
| pan.rs | ||
| synth.rs | ||