CZ envelope generator
  • @RobertSyrett posted a link to a Casio CZ “Insiders Guide” that described the 8 step envelope generator in the CZ series. It sounded like it would be interesting so I had a go at modeling it. It has up to 8 steps with one step as the sustain step. The sustain step can be any step but the last. You can also turn it off entirely by setting it to 0. Each step has a level from 0 to 99 and a rate from 0 to 99. The rate controls how fast the envelope changes for each step. It varies from approximately 1 level unit per millisecond to 1 per minute. The output is scaled from 0 to 1. It does not retrigger and gate height has no effect. The ramps are linear.

    11-18-17 - Files updated for bug fix - see below
    2048 x 1536 - 270K
  • Wow! dADHSR envelopes ain't got nothing on this puppy.
  • Screen Shot 2017-11-17 at 7.53.56 PM.png
    930 x 701 - 141K
    Screen Shot 2017-11-17 at 7.56.28 PM.png
    931 x 674 - 143K
  • One thing I forgot to mention. Like the original, there needs to be a difference of at least one between two steps or there will be no delay between them. It makes sense because the rate is how fast the envelope moves between levels. No difference in level means no time to move.
  • @RobertSyrett, that’s very strange. I get the same results. The light must introduce some additional delay. I’ll try to figure it out.
  • Well I finally got the envelope generator working correctly. (I hope :) ). I found a couple of bugs, but I never really figured out why adding a light caused the output to change. Definitely weird!
    Screen Shot 2017-11-18 at 5.11.58 PM.png
    2266 x 1472 - 314K
    CZ envelope generator V1.1.audulus
    CZ envelope generator V1.1 demo.audulus
  • @RobertSyrett I wanted to point out that the minimum rate is approximately 1 minute to change from 0 to 99 so it would require little modification to make a suitable generator for scheduling a performance piece. Each stage has a running and done gate and the output of each stage is also readily accessible. I currently have the rate quantized from 0 to 99 with 0 being the slowest with a linear curve so there is not enough control over long periods, but you could remove the floor() expression and change the constant for finer control of longer periods.
  • I put together a “slow” version. Unlike the CZ this one has a set-able start and end value. There is a gate and value output for each step. Times for a 0 to 99 swing vary from 4 seconds to 10 minutes for each step. There is also a “done” gate.
    2048 x 1536 - 235K
    performance envelope.audulus