Skip Navigation


Csound is my passion! I've been programming bleeps and bloops with it for nearly 25 years now. Short of one of the other synthesis languages (I've been meaning to check out Supercollider for years) no software, VST, or hardware synth can do a fraction of what's possible with Csound.

Lately, I've been playing with wavetable synthesis in Csound. The cool thing about using Csound for wavetables, is that there are very few limits of what you can do with those wavetables.

For instance, a piece I recently worked on I wrote an instrument that used a sin wave from a table with 16384 points between -1 and 1 for its single wavelength.

Inside the instrument, I made an if statement that ran once per cycle and randomly either squared the value of a random point or took the square root of the value of a random point (and made them negative again if they were initially negative.) Since all the values are between -1 and 1, this means they never go outside of that range, but they do either get closer to zero if squared, or closer to -1/1 if rooted.

In the end, it means the harmonic spectrum slowly changes in an odd and random manner. The change could be sped up or slowed down by using fewer or more points since the randomization is happening once per wavecycle. I tried some other values, but settled on 16384 because 8192 was a little too quick, and 32768 was a bit sluggish. (Csound likes its powers-of-2, which isn't a strict rule since there are oscillators that will use tables with lengths that aren't such, but I kept it simple.)

Unfortunately, for all its complexity, the end result doesn't really sound too dissimilar to a plain old filter sweep on a harmonically rich waveform. You never know until you try I guess. Ha!