Feedback on Cain CZ

In order to further improve the functionality and sound quality of my plugin, I am dependent on your feedback. Please feel free to add your comments.

Question 1:
I would like to add simple sine where the shape dial on its own will have no effect, but the resonance will effect it. Also, it could soften the spectrum in combination with others.

Question 2:
Do you prefer two separate parameters for wave A and wave B, or should I just use one parameter to switch through all possible (21) combinations?

sawsquarepulsedouble sinehalf sinesine

double sine

half sine




  1. Sebastian Cordoves

    Hi, I’ve just tried Cain CZ, I was hoping someone did a PD oscillator, so I’m exited about it.
    I think the idea is great but I found some bugs/strangeness.

    When I turn the Shape Knob between 0% and about 15% i can hear some noise/crackle.

    If I change Wave A (and keep Wave B = 1) sometimes it changes the second wave (the one with the Shape knob at 100%), and sometimes changes both waves. I was expecting that Wave A just change the first wave (the one with the Shape knob at 0%).
    If I keep Wave A at 1 and change Wave B, I have almost the same conbinations of waves that changing Wave A, so both controls practically do the same… I can have some extra conbinations if I set Wave A and Wave B to various numbers, but in general is confusing.

    With the most complex waves if I turn the Shape knob between 80% to 100% I hear some glitching.

    When I use the LFO to modulate the Shape, it behaves strange, like the Shape is not responding in a linear way, using a triangle LFO with deep modulation sounds almost like a square LFO.

    As you are aware the modulation options in the Logue family are very limited (especially in the Prologue), to me the most usefull oscilators are the ones that have an internal modulation source, especially when they have an envelope (as I alredy can use the Prologue LFO for some modulation), so if you can implement at leas a simple AD envelope will be great.

    I hope my comments help you.
    Thanks a lot for doing this oscillator!

    • Hi Sebastian,
      thank you so much for the feedback. I will take a deeper look into the topics you mentioned.
      The behavior should be, that Wave A and Wave B both can be set to one of the 5 available wave forms. This is how the CZ oscillators did it.
      I have implemented a key follow dampening to avoid glitches, at least for the phase distortion. Maybe I can reduce the amount further to avoid this.
      The ‘resonance’ will go into aliasing and I am currently not sure, if I want to clean it or if it is just up to the user to not turn it on too much.
      On my roadmap already:
      User Parameter 3: Envelope type (CZ had 8 stage envelopes, so I want to implement maybe 4 or 5 shapes)
      User Parameter 4: Envelope depth -50 to +50
      User Parameter 5: Envelope speed, affecting all velocity parts

  2. Hi, you have found a lot of nice tonalities with this implementation. I agree with Sebastian, an EG would compliment this nicely. You could also, implement both internal LFO* and EG with menu switching. Good work!

    * 2 LFO’s are great for pads on Prologue

    • Thank you. I am working on the improvements now and then the extensions are next on my list. Very happy, that you like it already.

  3. Oh, consider coding the LFO or EG intensity as a bipolar value like on the hardware LFO and EG intensities. I don’t know why other oscillators don’t do this too. I miss it all the time.

  4. Sebastian Cordoves

    Hi, I will try the new version today.
    About the waveform selection, I would prefer two separate parameters for wave A and wave B, it will be easier to set, more intuitive. But it is fine for me to have just one parameter if you plan to add some feature that will use that extra free parameter slot that you will have by using just one parameter to switch through all possible combinations…

    John, I don’t know if I’m misunderstanding you, but you already can use the hardware LFO in a bi-polar way, just set Target to Shape and using Shift+Int you can set the LFO depth inverted…
    Also, the hardaware EG can’t be routed to the Multi Engine (a shame), that’s why most developers (including Korg in the VPM osc) implement their own envelope.

    • Hi Sebastian, I was referring to a hypothetical EG or LFO Cain might want to code for his oscillator. I know how the hardware works 🙂

      Good feedback on 1.1.0. It’s sounding good. I only had some crackle on the first couple of turns after init. Looking forward trying some of my old CZ patch ideas.

  5. Sebastian Cordoves

    Just tried the new version (1.1.0). In general sounds much better.

    The LFO works better, but still having this non-linear depth problem. If I set the Shape knob to a low value, a little depth of the LFO sweeps the entire range, but if I set the Shape at a high value,I have to set the depth of the LFO very high to get a significant sweep. Also the resolution seems to be lower in the upper range, as a triangle LFO sounds like a square LFO in the upper range of the Shape knob…

    The noise/crackle when I move the Shape Knob on the first 15% is much lower, but still hear some of it. I just hear it when move the knob by hand, when I set the LFO to modulate the Shape, I don’t hear any noise.

    The noise/crackle at high values of Shape with complex waveforms seems to be gone.

    I noted a lot of aliasing at high resonace in the higher octaves, I didn’t noted that with the previous version, may be I didn’t tried enough. Anyway you talked about implementing antialiasing, if you could do it will be great, even if not perfect…

    And just a ashtetic thing. In the Multi Engine display of my Prologue the name of the oscillator shows as “Cain C”, if you take out the space between Cain and CZ will be displayed as “CainCZ” or maybe “Cain C2” as the Z will look like a 2…


  6. Sebastian Cordoves

    Hi Cain:
    I just tried the 1.2.1 version of Cain CZ, it is getting better and better, thank you!

    I still having noise when I move the Shape control, It is almost non noticeable when I modulate it with the envelope…

    I still having trouble with the waveform selection, just don’t understand how it works, as I said sometimes I change Wave A nothing happens to one wave and change the other wave, and sometimes is the oposite… May be I missunderstanding how it works… Can you explain it a bit… At the moment I just select numbers until I hear somehing I like…

    The envelopes are a great addition, can you document what each one do and how the speed control affect them, some of them are pretty obvious but some of them are a bit hard to decipher.
    Also can you add some extra envelopes shapes?

    I did a small donation, I hope in the future I can do another, this times are a bit difficult…

    Thank you!!!

    • Thank you!! My second donation! I really appreciate it!

      Besides my day time job as Batman (don’t tell anyone) I am now busy learning how to create videos, write proper and consumable documentation and how to keep a web-presence alive.

      Yes, you are absolutely right, that I should document – or even better – provide a video on how to use the oscillator. I am working on both topics in parallel. And as I really am into the PD synthesis, because it was my first Synthesizer back in the days I will definitely provide at least the description.

      Not being a native English speaker I do have a bit more trouble getting the instructional video together .

      Concerning the wave selection, I think I will change it to just one parameter, where it should be easy to dial through the 21 wave combinations. More and more I come to the conclusion, that this is more intuitive.

      The 11 envelopes are, as I call them:
      * Standard ADSR (fast attack, medium decay, sustain with minimal loop movement, fairly long decay)
      * Standard Swell ( I have implemented a linear envelope, so this emulates an exponential swell curve)
      * Standard Bass (not so well modeled envelope with a slightly longer attack)
      * CZ Trumpet (best used with saw-distortion. Two brief attack attempts before the decay and sustain. Found that on my CZ how they were doing the trombones and trumpets)
      * Echo (Fast attack, medium decay to sustain at 50% and then three ‘echoes’ on the release)
      * Multi Attack (Two brief attack, decay phases before the real decay and release)
      * Triangle Loop
      * saw Loop
      * square Loop
      * rhythmic Loop
      * rhythmic Loop 2

      The envelope speed has a range of 0 to 4 times the speed of the standard speed of the envelope.

      I need to investigate on the noise, when manually changing the shape a bit more.



      • Sebastian Cordoves

        I’m not a native english speaker either, so sometimes is a bit hard to me to express what I want to say.

        May be changing the waveform selection to a single parameter will be easier. I already did some nice patches, if you change the waveform selection I will have to change those patches, but I think in the end it will be easier to dial a sound.

        Now I have a better picture of what the envelopes are, thank you!
        Just one more request, if you going to add more envelopes, could you add one like envelope 1 (Standard ADSR) but where Decay and Releas be the same (both medium, like the current Decay).
        Also I noted you listed 11 envelopes, I only have 7 en the ver 1.2.1, I think the extra 5 will be on the next version, right?

        About the noise, if you want I can do a recording of it…

        Thanks again!

        • Hi Sebastian,
          thank you for your comment.
          I have updated both oscillators yesterday.
          PD-wave-dial is now on param1. Starting with the basic combinations and then adding the permutations. I saw you are into coding so this is the mapping:

          static const int waveforms[21][2] = { { 0, 0 }, { 1, 1 }, { 2, 2 }, { 3, 3 }, { 4, 4 }, { 5, 5 }, { 0, 1 }, { 0, 2 }, { 0, 3 }, { 0, 4 }, { 0, 5 }, { 1, 2 }, {1, 3 }, { 1, 4 }, { 1, 5 }, { 2, 3 }, { 2, 4 }, { 2, 5 }, { 3, 4 }, { 3, 5 }, { 4, 5 } };

          Also I enhanced the envelopes
          * Standard ADSR (fast)
          * Standard Swell
          * Standard Bass (fast)
          * Standard ADSR (D=R) (the one you wanted, I think)
          * Standard Trumpet
          * Echo
          * Multi Attack
          * inv Multi Attack
          * Triangle Loop
          * saw Loop
          * square Loop
          * rhythmic Loop
          * rhythmic Loop 2
          I hear the noise, when dialing in the PD and spend some time trying to get rid of it, without success, yet. I put a ‘low pass’ on the parameter value itself to smoothen the steps, tried to do it on the phase accelerator and the resulting wave, too but without success so far. It is a topic I will investigate further.

          • Sebastian Cordoves

            Hi, I have very (very) basic knowledge of coding, so I can read the table, wich is very useful as it saved me a lot of time porting my patches from the previous version to this one.
            I have a doubt, I used in some patches Wave A = 4 and Wave B = 3, so in the table should be {3,2} (as in the table you start to count from 0), but there is not {3,2} so I assumed that {3,2} is the same as {2,3}, it sounded the same to me (I think, as I didn’t compare with the previous version). Am I right?

            Also the new envelopes are great, the new ADSR with D=R is exactly what I wanted, thank you!
            A strange thing happens to me, I have a Env Type 14 (not documented), if I select it after play a few notes the Prologue gets silent, and no matter what I do it remains silent, even if a change to a patch that don’t use the CZ osc, I have to turn the power off and on again…

            I used to have a CZ-101 (about 20 years ago) and I’m doing some sounds that reminds me it a lot 🙂
            Thanks you!

        • Hi Sebastian,
          sorry for the flaw with the last envelope. I fixed it and updated the download.

Leave a Comment

Your email address will not be published. Required fields are marked *