Questions and Answers

These are a bunch of answered questions asked by users and beta-testers of CAG Asy Release 5:


Back one page


Q = Question, A = Answer


Q: Could you explain a little bit about your stereo philosophy?

A: Well there is little philosophy about it. Maybe I should use the term "Dual mono".


I found out by studying the architecture of the motorola 56309 that the processor can be used most efficient (for certain algorithms) when creating a stereo version of a prototype. 1 x stereo is then +/- 30...50% more efficient then 2 x mono. Since I already made some stereo (or read complex numbers) prototypes I decided to extent the amount of stereo prototypes.


Q: Yesterday I compared the complexities of the standard ADSR to CAGADSR1. The result is: 0.079% for the standard ADSR, 0.189% - 0.337% for CAGADSR1. Now I ask myself, where the difference lays between the standard ADSR and CAGADSR1 (besides being stereo)? Maybe there is one feature, which I've overseen?

A: Well there is no secret feature increasing this complexity % indication one gets from Kyma. The problem is the % indication does not indicate a correct number for my prototypes. To get a correct % indication I would have to manually count all instruction cycles for every CAG microsound. This is drudgery if I would have to do this for every created microsound. Sorry, but this is not going to be done in my lifetime. Kyma does not provide a perfect automatic instruction cycle count and therefore % indication is higher then it really is. Being the assembler programmer, I cannot imagine the standard ADSR to be 4 times faster then mine.


Q: Often an LFO (or envelope) controls parameters/inputs/sounds, which expect a mono signal. What happens, when I assemble LFO1 with MixMode=0 and Spread=1 into such a sound (when inserting LFO1 e.g. in CutOff Modulation from VCF)? Which channel is taken?

A: In case you paste the LFO into a blue parameter field, you can select L or R after the yellow block.

In the VCF CutOffModulation case: I have no idea how this is implemented. In my prototypes with a mono control input, I only use the left input. It could well be that this sound adds L+R. In that case, you should use a Channeller to select left or right output from the LFO (or stereo envelope) and use this as input. Although making the output of the LFO stereo (Spread=1) and then use it as mono control is off course not how it is intended.


Q: The other principal question for me: what is the benefit of being stereo (which costs clarity)? Which requirements can I solve only with this Stereo construction that I can't solve with two independent mono LFOs/envelopes? (My only guess: it is a matter of performance efficiency?)

A: Your guess is totally right! Forget the term “stereo” here; think of it as being “dual mono”.


Q: Is it (or should it be) possible to bypass the low-pass filter in LFO1 (I couldn't find any setting for cut off, so that the filter didn't alter the wave output)?

A: No you cannot bypass the low-pass filter, but if you put cut off to 22050 it almost has no effect. Be aware that the Interpolate block is always in between and that control rate signals can not output higher frequencies then 500 Hz + harmonic distortions due to the linear interpolation.


Q: Am I right, that (0@1) as only parameter in EnvXarr means avoiding an envelope at all?

A: Yep, the envelope is constant 1 then!


Q: I encountered some problems when playing the oscillators with the continuum. Changing the pitch and volume (= each small movement on the surface) makes a crackling noise. Would it be possible to diminish this?

A: Well it hit me a bit later, but the CTM can change !KeyVelocity on the fly. This can only happen when the CTM re-sends the note-on MIDI-command, since the !KeyVelocity belongs to the note-on message in the MIDI-standard. As a result the CTM generates a zillion Note-On commands (or !KeyDowns in Kyma). So by placing !KeyDown in the Reset of the oscillators they are reset at any given time, resulting in a ugly clicking sound. It is clear to me now. Conclusion: Never use the Reset function in case you use a CTM. Just put a 1 in all Reset fields.


Q: For the RawSaw etc. I replaced the Reset (!KeyDown) with 1. This works. However, a slight noise is still here when changing the velocity when the key is already pressed or when pressing the surface of the CTM not fast enough (with a very fast attack). You can hear it when changing !Scale of the Envelope via VCS. Even smoothed does not reduce it completely (besides  the !Attack gets slower).

This isnīt an issue if the sound is rich of harmonics (this happens also with the KYMA- Oscillators), but it is audible with sine- sound (CAGSTVCO1). Do you know, why this happens?

A: The noise you still get is called zipper noise. This is due to the fact you are changing the volume with a controller (via !hotvariable) in a control field (blue field like !Scale). I always call this control, since this represents control of parameters etc. not the audio itself. Indeed, with rich sounds this is not heard anymore due to masking of the ear.


How to solve: Use Constant3 of my modules to convert the !KeyVelocity to audio (L/Rinit= 0 and L/RSmoothT =1). Use this audio signal in a Kyma Product or a Kyma VCA to scale the amplitude. Leave all other amplitude Scalings (in all blue fields) a fixed value (for example 1). If you still hear zipper noise increase the L/RSmoothT with 1 until it is gone, but remember; with higher smoothing attack also slows down.


Q: The Twiddles inspired me for a rudimentary organ sound. Why is it not possible to change the volume of Twiddle4 during !KeyDown?

A: A very good question... I looked at my prototype again and it is still not really clear to me too. I did do some tricks with auto reset of the phase and more stuff depending on the !KeyDown actions... I would need to investigate further to get this working if needed...

I did already found out this strange behaviour when creating the wrapper class. To my opinion you should not change the !Scale during keydown, because it will introduce zipper noise (see above). For that reason I left this "problem" as it was. I do not consider it as a "problem". If you want amplitude changes other then the build in ..ASR envelope, use a VCA and a mono envelope or any other modulator.


Q: A suggestion for a future release: audio-rate modulation of the Index to a wavetable, with cross-fading for non-integral settings of the Index. I have wanted fore a while to do some advanced wavetable sequencing, and your wavetables have many of the features I'm looking for, but lack the cross-fading of the Kyma multicycle-crossfading oscillator.

A: I have made some examples of how to create X-Fading MultiCycle oscillators with my CAG modules. I have put the Kyma patch on Tweaky (link to Tweaky page) or one can download MultiCycle1.kym here.

"X-Fade MultiCycle1" is just for understanding the idea. It is not perfect, since very fast changes could lead to audible "index"-jumps. A stereo wavetable is reading for "even" and "odd" indexes: on the left index 0 or 2 and right 1 and 3 is used. In “X-Fade MultiCycle2” I made "X-Fade MultiCycle1" into a stereo oscillator with the minimum amount of extra modules needed. The waveshapers are just for fun.  Comparing “X-Fade MultiCycle2” and “X-Fade MultiCycle3” should reveal the parts of the formula's that are changing due to a different wavetable size (I think the nr of wavetables need to be "even" always).

I did not think I would ever need the CAGWrapGain for this purpose. The limits I put in are a bit small now. Due to these limits within CAGWrapGain, one cannot address more then 17 wavetables in this way.


Q: Wow is the CAGMultiEnv1 programmed in Capytalk!? I had no idea. I thought all your sounds were programmed in assembly language.

A: I have described under Kyma -> Introduction -> Microsounds+Wrapper Sound Classes, the interface to Kyma is always CapyTalk. In the CAGMultiEnv1 example, the assembler code (or underlying microsound) is the same as for CAGLFO1, you can also see this in the "Link Tree" under Kyma -> CAG Asy Release 5 -> Separate microsound files -> How does this work? The resulting functionality (LFO or MultiEnv) is only different due to different CapyTalk code.


Q: Is it possible for me (the user) to generate LUTs for CAG filters, for 48KHz?

A: No. However, I can make new LUTs for any of my filters. Download the new set,, here and unzip into the LUTs directory.


Back one page


Page last updated: Saturday, December 08, 2007