; Distortion ; ---------------- ; A distortion effect offering stomp-box-like controls ; ; aout Distortion ain,klevel,kdrive,ktone ; ; Performance ; ----------- ; ain -- input audio to be distorted ; klevel -- output level of the effect (range: 0 to 1) ; kdrive -- intensity of the distortion effect (range: 0 to 1) ; ktone -- tone of a lowpass filter (range: 0 to 1) opcode Distortion, a, akkk ain,klevel,kdrive,ktone xin ;READ IN INPUT ARGUMENTS klevel scale klevel,0.8,0 ;RESCALE LEVEL CONTROL kdrive expcurve kdrive,8 ;EXPONENTIALLY REMAP kdrive kdrive scale kdrive,0.4,0.01 ;RESCALE kdrive kLPF expcurve ktone,4 ;EXPONENTIALLY REMAP ktone kLPF scale kLPF,12000,200 ;RESCALE klpf kGainComp1 logcurve ktone,700 ;LOGARITHMIC RESCALING OF ktone TO CREAT A GAIN COMPENSATION VARIABLE FOR WHEN TONE IS LOWERED kGainComp1 scale kGainComp1,1,5 ;RESCALE GAIN COMPENSATION VARIABLE kpregain = (kdrive*100) ;DEFINE PREGAIN FROM kdrive kpostgain = 0.5 * (((1-kdrive) * 0.4) + 0.6) ;DEFINE POSTGAIN FROM kdrive aDist distort1 ain*(32768/0dbfs), kpregain, kpostgain, 0, 0 ;CREATE DISTORTION SIGNAL aDist butlp aDist/(32768/0dbfs), kLPF ;LOWPASS FILTER DISTORTED SIGNAL xout aDist*klevel*kGainComp1 ;SEND AUDIO BACK TO CALLER INSTRUMENT. RESCALE WITH USER LEVEL CONTROL AND GAIN COMPENSATION endop