[PD] Implementing "switch-and-ramp" technique to cancel discontinuities
fbar at footils.org
Wed May 2 20:56:31 CEST 2007
simon wise hat gesagt: // simon wise wrote:
> That is: the whole example/technique described depends on the
> assumption that the re-triggered sample starts from zero, it doesn't
> make sense otherwise.
Well, that's what's keeping me awake ATM: I believe in theory it is
possible, to use the technique to also ramp to new values that don't
start at zero.
Assuming you have the old control value (envelope) end at time t0 at
value "old[t0] and the new starts at value "new[t0]". The difference
between the two is: "diff = old[t0] - new[t0]"
Now the switch-ramp idea is this: You create a signal "ramp" that at
t0 is exactly the difference between the two signals, and then you add
this to the new envelops:
ramp[t0] = old[t0] - new[t0]
ramp[t0] + new[t0] = old[t0]
without any discontinuity if new[t0] is zero or not. Then you let
ramp[t] fade out to 0 so that after the fade, only new[t] is left.
And now while writing this, I have found the error in my patch: I
didn't do the "old[t0] - new[t0]" subtraction at all to get the
ramp[t0] value! Because of that, it was of course only working if
new[t0] = 0, because then ramp[t0] simply is equal to old[t0].
Attached patch shows switch and ramp correctly in action. Note to "hard
off": Crossfading of course also works, however I was trying to
understand the technique Miller describes. (Now I wonder, if the
description in the book is complete. Miller, do you copy?)
Frank Barknecht _ ______footils.org_ __goto10.org__
-------------- next part --------------
A non-text attachment was scrubbed...
Size: 1893 bytes
Desc: not available
More information about the Pd-list