I know that you can use the overdrive~ object to create distortion, but i'm trying to create a few different distortions without using this.
The first which I want to create is a basic razor type distortion; so for example:
if the incoming signal is less than x, and more than -x it remains the same.
if the signal is more than x it outputs as x, and if it is less than -x it outputs as -x.
so x is basically the variable threshold and anything outside of that value will be chopped off/clipped.
I would then also want to have some other selectable types, this image shows how a sinewave would be affected by the various types:
The trouble is I cannot work out how to actually do this; not even the first 'razor' one i've described above which is theoretically straight forward. Do I need to use lookup~ for this? I've been through the waveshaping tutorial, but from that I don't understand how I would use a buffer~ signal to alter an existing signal. although the lookup~ documentation implies this is possible - it shows an example of a signal being processed through lookup~ with a compression buffer to modify the signal?
I've also tried converting the signal to an integer and using 'if', then converting it back to a signal again but I must be doing something wrong there because it doesn't work.
Any pointers on this would be appreciated.