Forum index > Question

non-linear waveshaping

hi folks,

heres a great way to unleash some hidden power from the EssenceFM and this method also applies to some other FM synths [but not all]. the method is pretty straightforward, and i've enclosed an example voice as a starting point for programming/tutorial purposes. all thats required is to set an operator/oscillator to fixed mode at 0hz, which effectively turns it into a non-linear waveshaper [classic component of buchla/serge], and its waveform becomes the transfer function. i mentioned this on the PreenFM2 forum here

my original source for this is in section 5.6 in this great little SY Programming book by Herbert Janssen

also see this paper for all the classic refs
A Tutorial on Non-Linear Distortion or Waveshaping Synthesis
C. Roads
Computer Music Journal
Vol. 3, No. 2 (Jun., 1979), pp. 29-34

can be read online free

the example voice i've included has op1 set as a fixed 0hz shaper and op2 as the source waveform to be processed. theres also an LFO adjusting op2 amplitude so you can hear the effect straightaway. this voice could of course be an fm stack/alg into a shaper[s], or the shaper[s] could be positioned somewhere within an algorithm. other useful points of departure are adjusting op1 phase [rotating the transfer function], feedback amount and feedback source.

the EssenceFM also has the bonus of user waveforms, so you can make your own non-linear waveshaper transfer functions!

Thanks Dave !
thanks for bringing that up, dave, and collecting the ressources here!
the janssen paper is a classic, which i used on the sy99 (for which it was written, i think)

reminds me, that i wanted to recreate some chebyshev polynomials to use as waveshapers,
similar as applied in this recreation of the buchla 700:

btw, here is a utility for creating waveforms (or doubling as waveshapers)

hwk thanks for the waveform util link, not seen tht b4.

yes written for sy99, really helped me with my sy99 & tg77 programming, and beyond of course.

the buchla 700 looks great, just hope they make it available on osx / pc.
Colin Muir Dorward
Hi, this waveshaping ability is a little unintuitive for me. Maybe this thread can help folks like me to better grasp its potential.

To start, I'm trying to set up a "transparent" waveshaper. I think this should look like a saw wave, right? It seems I can get closest using the ESS saw wave, so I set that up with frequency zero. The modulator must then be set for very low output, but still, it's definitely adding harmonics.

Part of the problem may be that the ESS saw is not a pure saw, but I can't find a way to create perfect functions, am i missing something?

Any other suggestions on how I can achieve this?

Thanks for the links and hints above!
sorry for my late reply, i have been offline for some time with the efm, but got it setup again now.

the built in saw wave2 has rounded edges, but also its not the correct shape for pass through. so saw wave2 rises from 0 to about +1, then goes directly-ish to -1 rising again to 0.

but a transparent passthru requires a perfect saw wave starting at -1 and rising to +1 at the end [or -.99999.. & +.99999.. is sometimes better depending how nums are handled internally]. that way u have a perfect match for the incoming & outgoing waveform. and gain changes will not introduce or remove any harmonics

ie -0.37 in, should give -0.37 out etc. so for every possible value a wave can take, the ramp should give exactly the same value. if you flipped the ramp to +1 to -1, u would invert the waveform. any good wave editor should let u build wavetabs eg

hope that helps ?
this reminds me, that i wanted to upload some waveforms based on chebychev polynomials, which make for good waveshapers. the level of the incoming wave -start with a sine- determines the harmonic content of the resulting spectrum.
(some background here:
i also include the "ideal saw", noyzelab mentioned in an up- and down flavour.
and a very straight square wave i was having fun with because of the artifacts it generates😄
thanks for posting those waveforms, will b checkin those out L8R !👍