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.
|
||
|---|---|---|
| .. | ||
| audio | ||
| command | ||
| dsp | ||
| effects | ||
| io | ||
| tui | ||
| lib.rs | ||
| main.rs | ||
| tempo_map.rs | ||
| time.rs | ||