@SansNom Thanks for the excellent tool! The retriggering is also a nice touch. What I find interesting is that these old moog envelope generators have an exponential response but display a log-exp-exp shape. @Lagomorph said elsewhere on these forums that the shape wasn't really logarithmic but inverted exponential behavior, I'm not sure what that even means really but it is consistent with how AHJ describes the behavior. BUT on the 0-Coast the exponential parameter symmetrically affects rising and falling voltages such that they look like you have multiplied the linear envelope by itself. On the whole I like the wysiwyg approach and I will be sure to play with this guy soon :)
@biminiroad - Thanks, it took me some time as well... @RobertSyrett - Thanks for your comments. Yes I've seen Lagomorph comments but to me it's just a terminology issue. That's why I define my own terms in the thread. The actual shapes are the same.
Just an update with virtual analog ADSR and AR envelope generators. They are fully built around a 1-pole LP filter. Compared to the previous patch, they're simpler. Very effficient if you want that analog vibe without taking too much cpu (the new ADSR takes 4 times less CPU than the first patch!). I'll edit the first ADSR with some built in explanations soon too.
Excellent idea using the original linear node just for the display. I built a couple of exponentially curved ADSRs but mine were timer based. I use the low pass node as a slew limiter fairly often but I hadn’t considered using it as an ADSR. It’s a very elegant solution. I’ve never been very happy with the linear ramps. Yours is very natural sounding. Thanks!
@stschoen - Thanks! Yes and pretty close to the original hardware behavior. I'm happy with the result and the cpu utilization which is kept low thanks to the use of a single LP filter and only a few expression nodes. And when only used for the display the linear node takes 0% cpu... The first patch is timer based too, very flexible and convenient but cpu heavy. I'm not sure to have seen your ADSRs?
Had a chance to read the earlier posts in the thread (don’t know how I missed this one :) ) and I just wanted to point out (as I’m sure you’re aware) that multiplying a value by itself does not produce an exponential curve. x^2 is a quadratic equation, 2^x is exponential. They both have their place, I find the quadratic (or higher order) curve is often more useful when scaling a knob because the exponential curve is too steep. Natural decays tend to be exponential such as the step response of a first order filter. I’m curious as to the purpose of the unit delay.
There were already multiple ADSRs on the forum and I was never very happy with my design. I think the filter is definitely the best approach. It is after all, essentially the circuit we are trying to model. I’m looking forward to a better expression node. I realize that you can often substitute add and multiply nodes, but the expression node is so much cleaner.
- about the multiplying trick: sure, I just wanted to comment about the popular and cheap way to get non linear shapes. Good enough sometimes, not all the time ;) . - about the unit delay: there's a feedback loop. When the output value reaches its maximum the decay-sustain phase is triggered by applying a new multypling factor to the input and a new cutoff frequency to the LP filter. This must be very fast and precise, otherwise output values could be wrong, hence the use of the z-1 node. For some reasons it also helped in terms of cpu, no idea why... - yes, I think that the filter approach is the best, as long as what you want to do is a VA EG. That's the purpose of these new patches. However I think the timer and polynomial approach is better if you want different curve shapes and a perfect control over time periods of each section.
I was really clarifying the multiply approach for the benefit of other readers. Thanks for the explanation on the z-1 node. It's always a bit of a challenge to reverse engineer someone else's work. Much better to have the designer explain. I've found the z-1 nodes are not too much of a problem in most cases since Taylor changed the way Audulus handles them. I used 16 modeling an audio rate shift register that wouldn't run at high frequencies and they really didn't add a significant amount of load.
@sansnom Great Idea! I had been using my uSlew module for pretty much the same thing with the A R Env but having a separate control for two stages is definitely a plus. Also, these are ALMOST no expression modules. Very interesting designs :)