k y m a • t w e a k y — the kyma collective

/ WebHome / Microsounds / Share.CAGAsyRelease4


Share Section



All Sections


Login / Register 
Change password
Forgot password?

Symbolic Sound

Kyma Forum
Eighth Nerve

TWiki Links


Release 4 of my even more amazing asy-code.

Just unzip the files and put these in an appropiate directory. Initialize the Capy with the "User Microsound Classes.asy" (This will only work on a Capy 320!). Open the "AsyRelease4.kym" soundfile, to see the new soundfiles of release 4. The LUT directory contains lookup tables and waveforms needed for these sounds. Every sound from release 1+2+3 are still supported and not changed since there release (only AddHardLimit (part of release1) is updated). Read CAG Asy Release 3 first.

Where to start?

This release again a big demo! This time I went even futher then before. All demo material can be found in directory: DemoDumpRel4. Before you can run the demo, you first have to generate audiotracks/files. A default capy320 can not handle all the synths running at once, so sounds need to be cached.

Steps to succes:

1) Run all DiskRecorder instruments in MakeTracks.kym as described in the Readme.txt. The resulting aif-files should be written in the DemoDumpRel4 directory. Set your capybara input-output delay to 3ms. (I am still not totally sure if this is needed). Open the DSP Status window to check the recording time is finished.

2) After this you can start DemoRel4.kym.

3) Now open a normal midisequencer and open DemoRel4.MID. Route your MIDI to the Capybara and play it!

This demo uses several sounds from release1,2,3 and 4 together with what is already available. I hope you like it. I listened to it a zillion times now and I am still happy with it as a demo (ChristiaanGelauff - 24 Feb 2007).

In case you hear sync problems with the cached tracks, just redo step 1) above.

Question from K: why don't you record the demo and upload it as an mp3?

I think when placing a mp3-demo one will miss the point of the demo. The demo should demonstrate how one can use my microsounds. I believe with a mp3 version of the demo song the composition itself is judged more then all the hard work I spend on making the microsounds and the demo. I also believe it is more rewarding to spend some clicking effort to finally end up with all the needed audio files (like parts of a puzzle) that will become the final demo song...please comment if I am wrong (ChristiaanGelauff - 24 Oct 2006).

What the hell... here it is: DemoSongRel4.mp3: The Big Demo song for CAG Asy Release 4.

Why did I make this?

Why not? It is not due to the overwhelming response of previous releases (Again thanks to Camille for his review). It again cost me hours and hours of reading/programming and testing. Not only the asy-code, but also making the demo took a very long time.

When making this demo, I finally had the feeling the Capy could do what I always wanted it to do. I still hate the fact I have to cache all the sound files, it is just not an intuitive way for creating a song. I could resolve this by buying some more DSP processorboards ... who will donate to me?

What is in Release 4?

Seventeen new modules are included:

Module name Short description
Constant3 As constant2 but now with audiorate interpolation (thanks Kurt for the input).
FnGen1 Fn generator to make life easier. Most of my oscillators need an normalized frequency(=Fn) for frequency control.
WrapGain This sounds can gain a signal. If the signal is boosted to far it will wrap the signal instead of clipping it. This effect is used to create the Dsaw in RawSaw3.
RawSaw0 Two seperate 24 bit sawtooth signals for reading out a stereo wavetable or just a stereo saw
WaveTable1 Two seperate wavetable readers. Concatinated wavetables can be indexed. This sound continues where the Kyma WaveTable sound stops.
Distortion1 Simple squared symmetrical distortion. From compression to lineair to expansion.
Distortion2 Simple squared asymmetrical distortion. From lineair to curved up or down.
Distortion3 Simple clipping gain with input offset. Used as duty cycle control in the demo song.
Distortion4 As Distortion1 but for higher valued signal the transfer returns to lineair. A smooth zero crossing distortion is the result.
Distortion5 Simple softknee clipping as can be found in AddHardLimit with fixed range = 0.5.
Distortion6 As Distortion5 with fixed range = 0.25.
FBDelay1 A stereo feedback delay with LP+HP filtering and Distortion5. This is THE delay you have always wanted!
SmallDelay1 A small stereo variable delay that can be used for phasor effects or time delay panning.
Allpass2 A second order allpass filter.
BandPassNotch With Allpass2 a bandpass or notch filter is made.
BandPassNotch2 Stereo version of BandPassNotch, frequency control reduced to control rate.
BandPass3 A double version of BandPassNotch2, without the notching possibility. Use it to make vowel sounds.

Remarks about the sound modules

I do like response!

If you decide to download this release, I would like to get feedback! This can be negative, but I rather get positive. Please put your feedback below.

Some feedback from users:

Release 4:

Release 3:

Release 2:

Release 1:

Known bugs/misunderstanding

BandPass3 can not handle any random expression in the frequency control fields! I have no idea why.

Wishlist for next releases

CAG: More VCO functionallity and MANY MORE FILTERS!

Volunteers wanted

Can some one make nice icons for my prototypes?

Can some one check my english spelling?

Can some one help in making demo's?

Can some one help with making the sound classes using the class editor?

Can some one provide input for formant tracks or the EMU Z-plane filter tracks?

-- ChristiaanGelauff - 30 Sep 2006


One of the LUTs is missing 'CAG2ndAPV1x_44100_Fsz1024_28_136_Qsz128_5e-001_32.aif'

-- CristianVogel - 19 Jun 2007

Yep, a copy paste error. It is included again with CAG Asy Release 5.

-- ChristiaanGelauff - 21 Jun 2007

I really love the sound of CAG filters - I would like to design a parametric EQ using CAGBandPassNotch2? - but I don't really know how to go about this... How can exact frequency values in hz be represented in the Fc field? What would be the best way for the different bands of a 5-band parametric EQ be summed back together?

-- CristianVogel - 28 Jan 2008

The assembler code for CAGBandPassNotch2 can be made into a single parametric EQ band. However there is quite some gain normalization/calculation involved, if you want a regular parametric EQ type with peak/notch control in plus and minus dB. There is also that issue with the definition of Q (or Bandwidth). It is changing, when the peak changes into a notch. The most excepted rule for "Bandwidth" is the "-3dB points" in the frequency transfer function. In the notch case, this is at a total different location then for the peak. The CAGBandPassNotch2 prototype defines Q only according to the peak definition. It means, a deep notch is too wide and it keeps on getting wider when the EQ band is lowered in gain (to negative dB values). If you also want to have nice smooth transitions (=audio rate) for every setting you can do on this EQ band, one would have to work with a modified filter/mixing structure. All of this taken in consideration, I decided not to make a real EQ prototype from this assembler code (at the time of creation).

It all sounds a bit to negative maybe, because you can still do some nice parametric EQ type of things with it. I created an example with 3 parametric bands that can boost only. I included the CAGAddHardLimit as summer for the bands, so one can create saturated EQ-ing. The "Default" preset should give you a starting point. Download "EQForCAGAsyRel4.kym" at Sounds in the section "EQ and Mixing". I created this example with "User Microsound Classes.asy" from the "cagrel4.zip" loaded as user microsound!

The 3 bands are set up for low, mid and high range (see lowestnn and highestnn). With Fc1/2/3 you set the centre frequency of the peak for each band (see also Note1 below). Q1/2/3 pick a Q from a logarithmic-scale (Q = 1 to 4), so it defines a bandwidth. The SoftKneeRange sets the saturation amount. The bands are pre-attenuated if saturation is zero to prevent clipping (overlapping bands can still clip). Boost1/2/3 is a linear volume control for every band. This is not what you normally have in EQ’s, with the saturation at maximum it feels however quite logical. The boost just adds a band pass filtered version of the signal to the original. In order to boost a frequency band of the original signal, one can only attenuate the added original. AttOrig sets the level in dB of the added original. The last Mixer is compensated so clipping is to be prevented for different values of AttOrig. If AttOrig = 0 dB, one can only boost a frequency band by 6dB, if however you need more boosting (or let us call it frequency shaping) you have to drop the AttOrig to a lower dB value. For example: –6 dB will give you a maximal boost of +/- 9 dB and for lower settings the negated AttOrig value will indicate the maximum boost. I know this is not perfect, but this is what I could create in this short notice.

Is this example “the best way” to do it? Well I do not think so, however it could help you in a direction you want to go and from that experience make a specification for a new CAG (V6) module that I could possibly build…

If this example does not produce enough output level, one could disable the “nogain” switch in the Boost1/2/3 Attenuators and set the range for the Boost1/2/3 values to a higher value then 1 (for example 2 or 4). You could also decide to put a gain at the total end of the patch to boost the total level.

Note1: By the way, you wrote you would like to have Hertz for Fc1/2/3, but that is only because you are used to this... My question is then: do you not trust your ears? If you EQ something, do you really care about the Frequency in Hertz? For me “some rule” says: if it sounds good, it is okey. I do not really care about the exact value in Hertz. Frequency selection on a Hertz-scale is not useful. In most EQ implementations, one selects the frequency in Hertz, but on a logarithmic-scale. Maybe you did not realize this, but with the Fc (of CAGBandPassNotch2) one also selects frequency out of a logarithmic-scale. The minor difference is I specified the minimum and maximum of the scale in the Unit MidiNoteNumber (or nn in Kyma notation). If you still find it difficult to link nn to Hertz, use a simple Kyma text document with: xx nn hz and then ctrl+a and then ctrl+y to convert the note number xx into Hertz.

-- ChristiaanGelauff - 29 Jan 2008

Thankyou very much for taking the time to answer my question and create and example to learn from. Yes, the Freq in hz issue - in some ways I agree with you, but other times, especially when working in combination with other EQs , one needs a hz reference, in order to match settings from one EQ to the other. Also, use your ears is a very good point, and something that is often forgotten in sound recording, yet a fundamental approach! I have brainached over trying to convert HZ to your 0-1 scales, using xx hz / SignalProcessor? halfSampleRate , but in most of your designs, you have set a min and max MidiNoteNumber?, which makes the formula innacurate of course. Perhaps I could use ( off the top of my head ! ) (!Freq hz nn) into:#({(lowerlimit nn) @ 0}(((nyquist nn) @ 1}) ?

Christiaan, please do keep thinking about a killer digital EQ design - its really needed by me and i'm sure other mastering/mixing studios equipped with powerful Kyma systems - I don't want to have to invest in a Weiss EQ1 ! :)

-- CristianVogel - 30 Jan 2008

I see from the following text above, "xx hz / SignalProcessor halfSampleRate", you do not understand the Fc parameter and my earlier statement "with Fc (of CAGBandPassNotch2) one selects frequency out of a logarithmic-scale". The formula you write above I do use as pitch control signal in my Oscillators, but not for filter cutoff or centre frequency. My reasoning was the user (or you) would like to control the peak centre of the filter with an linear envelope or just a simple controller. In most cases these things/signals are represented as values between 0 and 1 within Kyma. Therefore I created a parameter (Fc) that controls the peak centre frequency in a logarithm trajectory, since for the feel (hand on the controller) it is more natural/useful. Your formula is stating the frequency normalised to Nyquist (=halfSampleRate) on a linear scale!

The correct conversion would be:

Fc := ((!Freq hz nn)-lowestnn)/(highestnn-lowestnn).

However it would be strange to use this in the Fc parameter, since in the capytalk code of this prototype I calculate into the inverted direction... I lieve this up to you. Do select !Freq to be a logarithmic control in the VCS, else you have a linear scale on your controls.

Note: to simplify this conversion, you could choose lowestnn = 0, then Fc := (!Freq hz nn removeUnits)/highestnn. Set Highestnn to 136 and the highest frequency will be around 21kHz. Another way would be to set Fc to 1, set lowestnn = 0 and vary Highestnn = !Freq hz nn removeUnits.

You state "one needs a hz reference"... to be more precise "one needs a reference", because the others use Hertz it would be simpler for most people if mine did so too. But then I raise the question, how to compare this created example at all with another EQ. My Boost is on linear scale and most others use dB. Next to this, how is the Q-scale implemented on other EQ's? Where is the useful range for EQ-ing and on wich scale? Btw I do not garanty that my peak frequency (in the transfer function) is exactly at the set value!

You wrote "do keep thinking about a killer digital EQ design":

Next question: where is this EQ used for? EQ's can be used for several purposes...PA normalization, speaker(/room) compensation, sound coloration, unwanted signal notching/filtering, end mix mastering ... add a few please. For every purpose, a different approax will work BEST. Although an EQ is an EQ from a technical point of view, only the small differences in implementation can make it specially good for one purpose. I feel there is never ONE best or perfect EQ. I do think about it a lot, but you should think about the purpose you use this EQ for. "mastering/mixing" is too broad. Think about ranges for freq ,Q (or maybe bandwidth in Octaves) and boost and/or cut...Y/N smooth adjustable, audio or control rate, saturation Y/N, high signal to noise ratio or just sounds good to the ear, mono,linked-stereo or true stereo (=dual mono) to enable M/S EQ-ing (many combination excists). Do not say Y to all, because it is not in the nature of development. EQ's are complex delicate components and it is unwise to start with the most complex situation you can think of. State the most importent purpose and think about it (not only in your head, also listen to the example and experiment a bit, also have a look at the "BandPass ImpulseResponse" sound in SeeDSP.kym delivered with CAG Asy Release 5)...what is most importent to you. Others then CristianVogel feel free to add your thoughts below.

-- ChristiaanGelauff - 30/31 Jan 2008

© 2003-2014 by the contributing authors. / You are TWikiGuest