; Flanger
; ----------------
; A flanger effect following the typical design of a so called 'stomp box'
;
; aout  Flanger  ain,krate,kdepth,kdelay,kfback
;
; Performance
; -----------
; ain    --  input audio to which the flanging effect will be applied
; krate  --  rate control of the lfo of the effect *NOT IN HERTZ* (range 0 to 1)
; kdepth --  depth of the lfo of the effect (range 0 to 1)
; kdelay --  static delay offset of the flanging effect (range 0 to 1)
; kfback --  feedback and therefore intensity of the effect (range 0 to 1)


opcode	Flanger,a,akkkk
	ain,krate,kdepth,kdelay,kfback	xin					;READ IN INPUT ARGUMENTS
	krate		expcurve	krate,50				;CREATE AN EXPONENTIAL REMAPPING OF krate
	krate		scale	krate,14,0.001					;RESCALE VALUE	
	kdelay		expcurve	kdelay,200				;CREATE AN EXPONENTIAL REMAPPING OF kdelay
	kdelay		scale		kdelay,0.1,0.00015			;RESCALE VALUE	
	ilfoshape	ftgentmp	0, 0, 131072, 19, 0.5, 1, 180, 1	;U-SHAPE PARABOLA FOR LFO
	kporttime	linseg		0, 0.001, 0.1 				;USE OF AN ENVELOPE VALUE THAT QUICKLY RAMPS UP FROM ZERON TO THE REQUIRED VALUE PREVENTS VARIABLES GLIDING TO THEIR REQUIRED VALUES EACH TIME THE INSTRUMENT IS STARTED
	kdlt		portk		kdelay, kporttime 			;PORTAMENTO IS APPLIED TO A VARIABLE. A NEW VARIABLE 'kdlt' IS CREATED.
	adlt		interp		kdlt					;A NEW A-RATE VARIABLE 'adlt' IS CREATED BY INTERPOLATING THE K-RATE VARIABLE 'kdlt'
	kdep		portk		kdepth*0.01, kporttime 			;PORTAMENTO IS APPLIED TO A VARIABLE. A NEW VARIABLE 'kdep' IS CREATED.
	amod		oscili		kdep, krate, ilfoshape			;OSCILLATOR THAT MAKES USE OF THE POSITIVE DOMAIN ONLY U-SHAPE PARABOLA WITH FUNCTION TABLE NUMBER ilfoshape
	adlt		sum		adlt, amod				;STATIC DELAY TIME AND MODULATING DELAY TIME ARE SUMMED
	adelsig		flanger 	ain, adlt, kfback , 1.2			;FLANGER SIGNAL CREATED
	aout		sum		ain*0.5, adelsig*0.5			;CREATE DRY/WET MIX 
			xout		aout					;SEND AUDIO BACK TO CALLER INSTRUMENT
endop
