Chain-able Variable Curve Envelope Generator
  • I've been working on various approaches to this for a while and I think I've finally got it working. This is a multi-segment envelope generator with one attack module, any number of intermediate modules and a decay module. The last intermediate module becomes the sustain value. I looked at making the sustain module selectable, but the retrigger logic became too complex. Each module has a time knob which is exponentially scaled between 0 and 4 seconds and a level knob which represents a percentage of the initial gate (the decay module has no level since it decays to zero). Each module also has a curve knob which varies between exponential and logarithmic with linear at 0.5 on the knob. There is also an intermediate output and done gate for each module. The decay module provides smooth re-triggering. By combining intermediate modules you can create an arbitrarily complex envelope. Let me know if you find any bugs or have any suggestions.
    Screen Shot 2018-04-02 at 4.45.42 PM.png
    3482 x 1720 - 481K
  • How about a mixer, that has a master period, and then you can adjust the length of an individual segment without changing the overall length of the pattern?
  • @RobertSyrett, that’s an interesting idea. Remember, because of the sustain, the total time from start to finish is dependent on the length of the gate. As long as the gate period is longer than the total time for the modules up to the decay, you can alter a module’s time without changing the overall duration. If you drive the chain with an external clock you can have a fixed period
  • Minor bug fix - fault when time set to zero (gotta watch for divide by zero!)
    uLope V1.1 demo.audulus
    uLope V1.1 Demo II.audulus
  • Awesome! Even more excited to try this module when I get the chance later today.
  • I've been thinking about envelope generators a lot the past week or so. I've been watching the excellent series of videos on FM synthesis @RobertSyrett posted and I noticed the envelope generator did not necessarily decay to zero. I had already been considering this, so I've modified my chain-able envelope generator to allow a non-zero start and decay. The level knob on the decay module determines both the starting value and the final decay value. I chose to put it on the decay module in order to keep the modules' size uniform. Because there is no gate height before the initial gate, the level varies from 0 to 1 and doesn't scale with gate height. All other levels continue to be a percentage of the initial gate value. With the decay level set to zero, the envelope performs as before. With a non-zero gate height, it is possible to have the envelope dip at the initial trigger instead of rise.Because the decay level needs to be available to the attack module, it was necessary to add a chain from the decay module back to the attack module, so now you need to connect the chain I/O in a loop.
    Screen Shot 2018-04-06 at 9.02.42 AM.png
    2636 x 1364 - 334K
    uLope V2.0.audulus
  • Oh hey, I suppose it might be possible to make a DX7 envelope with these segments running under the hood!
  • I think that the DX7 envelope is linear, but this could certainly reproduce the DX7 envelopes. I though I might make a linear one with the keyboard tracking as one module