; AnalogDelay ; ---------------- ; A analog style delay with signal degradation and saturation options ; ; aout AnalogDelay ain,kmix,ktime,kfback,ktone ; ; Performance ; ----------- ; ain -- input audio to which the flanging effect will be applied ; kmix -- dry / wet mix of the output signal (range 0 to 1) ; ktime -- delay time of the effect in seconds ; kfback -- control of the amount of output signal fed back into the input of the effect (exceeding 1 (100%) is possible and will result in saturation clipping effects) ; ktone -- control of the amount of output signal fed back into the input of the effect (range 0 to 1) opcode AnalogDelay,a,aKKKK ain,kmix,ktime,kfback,ktone xin ;READ IN INPUT ARGUMENTS ktone expcurve ktone,4 ;CREATE AN EXPONENTIAL REMAPPING OF ktone ktone scale ktone,12000,100 ;RESCALE 0 - 1 VALUE iWet ftgentmp 0,0,1024,-7,0,512,1,512,1 ;RESCALING FUNCTION FOR WET LEVEL CONTROL iDry ftgentmp 0,0,1024,-7,1,512,1,512,0 ;RESCALING FUNCTION FOR DRY LEVEL CONTROL kWet table kmix, iWet, 1 ;RESCALE WET LEVEL CONTROL ACCORDING TO FUNCTION TABLE iWet kDry table kmix, iDry, 1 ;RESCALE DRY LEVEL CONTROL ACCORDING TO FUNCTION TABLE iWet kporttime linseg 0,0.001,0.1 ;RAMPING UP PORTAMENTO TIME kTime portk ktime, kporttime*3 ;APPLY PORTAMENTO SMOOTHING TO DELAY TIME PARAMETER kTone portk ktone, kporttime ;APPLY PORTAMENTO SMOOTHING TO TONE PARAMETER aTime interp kTime ;INTERPOLATE AND CREAT A-RATE VERSION OF DELAY TIME PARAMETER aBuffer delayr 5 ;READ FROM (AND INITIALIZE) BUFFER atap deltap3 aTime ;TAP DELAY BUFFER atap clip atap, 0, 0dbfs*0.8 ;SIGNAL IS CLIPPED AT MAXIMUM AMPLITUDE USING BRAM DE JONG METHOD atap tone atap, kTone ;LOW-PASS FILTER DELAY TAP WITHIN DELAY BUFFER delayw ain+(atap*kfback) ;WRITE INPUT AUDIO AND FEEDBACK SIGNAL INTO DELAY BUFFER aout sum ain*kDry, atap*kWet ;MIX DRY AND WET SIGNALS xout aout ;SEND AUDIO BACK TO CALLER INSTRUMENT endop