Maybe bug with LFO and Logic chop triggering on LFO cycle

I would love if someone could verify this. If you create an LFO chop, change “Type” to ramp, connect it to a Logic chop, change “Convert Input” it to “Off when Zero Or Less”, everything should work fine and the Logic chop should pulse when the LFO cycles to zero. However if you adjust the LFO Frequency after all this is connected, the Logic chop will stop pulsing. Even after setting the frequency back to where it was at 1, it will not begin pulsing again.

I would have uploaded an example toe, but wasn’t sure how to do so or if I have permissions to do that. And thanks ahead of time for looking into this.

Hi @bobdimin,

you can see this as an artefact on how the LFO ramp works with the limited framerate we have (by default 60fps) and the increments for each frame. With a frequency of 1, each frame increases the ramp’s value by 1/60 so after 60 frames it loops back to 0. Now if you set the frequency to 7, each frame increments by 7/60 and only after 7 complete cycles will the ramp be able to return to 0.
(7/60, 14/60, 21/60, 28/60, 35/60, 42/60, 49/60, 56/60, [now it loops] 63/60…420/60) before that you will always hit values above 0 - like at the 63/60. So with “full frequencies” you can see a larger pattern where it returns to 0 but with frequencies that have float values, these patterns can be much larger… Generally speaking, if (frequency * frame_count) / framerate equals a whole number, the ramp is able to return to 0.

Now additionally to this, when you change the frequency, the ramp is not reset introducing an additional offset which results in the artefact you observed that even when returning to the default frequency of 1, the ramp actually never reaches 0.

Hope this explanation helps a bit.
cheers
Markus

Thanks @snaut, I really appreciate you taking the time to explain all that. I had a feeling that it was something like that going on but wanted to make sure it wasn’t something else. The fact that returning the LFO to a frequency of 1 and even doing a Reset pulse still doesn’t trigger the Logic chop is interesting.

To get around this (with a requirement where I needed to use LFOs and not a Timer chop or Speed chop with a Limit chop on cycle or something), I just use a second LFO chop set to Pulse and bind the frequency, offset, phase, etc to the other LFO. This seems to work out for my needs for now.

Again thanks for all the insight!