LFO retriggering with smooth is broken

I think this is a bug (not sure how it could be intended behavior, but maybe I’m wrong), an LFO always retriggers from zero phase and then moves (under normal circumstances, jumps) to the current “intended” phase. The GUI doesn’t show this behavior but it’s happening.

Repro steps:

  1. set simple ramp LFO to Sync mode. This should cause the LFO’s phase to progress even when a note is not pressed.
  2. set LFO to have a noticeably high smoothing rate (e.g. 0.5 seconds)
  3. se the LFO rate to something slow (e.g. 8/1) and map it to something where parameter interpolation will be very obvious (e.g. note coarse tune)

expected behavior: as you retrigger notes, the LFO slowly ascends
actual behavior: as you retrigger notes, the LFO interpolates from 0 (at note off) to the current intended phase position.

at default smoothing rates (e.g. 0.005) this isn’t really apparent, but I was trying to use LFO smoothing + Freeze rate + LFO phase automation to create a sort of “internal slew limiter” or slide effect for parameters. This actually works perfectly well if you sustain a note while automating the phase marker. But if you retrigger a note, you will hear the smoothed LFO ‘open up’ from zero every time.

Just wanted to mention Sync mode only takes effect WITH a note press. It is not free running as you mention in step 1 to Repro.

Also maybe worth turning Legato mode on if not already to ensure the Sync continues between the notes

Hope this helps but don’t know if it will?

Well, that’s sort of the problem. Sync mode is meant to be “the LFO keeps running even if you are not playing” but in fact what DOES happen is that it resets to 0 and only takes effect again when you press a note, it just sets its new value to where it WOULD have been had it been running the whole time. Which presumably is a CPU optimization and does make sense; if there are no active voices, actually computing the LFO every block update is silly, you just need to calculate where it WOULD be when a new voice enters. The issue is, the way LFO smoothing is set up, it naively interpolates the LFO’s phase position, ignoring the fact that the sync mode “jump” on note restart is designed as a CPU-saving hack to avoid true free running LFOs, not desired behavior (at least, I don’t think it’s desired behavior)