Hallo, 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]
which gives:
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__