; PanTrem ; ---------------- ; Auto-panning and tremolo effects ; ; aout1,aout2 PanTrem ainL,ainR,,krate,kdepth,kmode,kwave ; ; Performance ; ----------- ; ainL -- first/left input audio ; ainR -- second/right input audio ; 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) ; kmode -- mode of the effect (0=auto-panning 1=tremolo) ; kwave -- waveform used by the lfo (0=sine 1=triangle 2=square) opcode PanTrem,aa,aaKKKK ainL,ainR,krate,kdepth,kmode,kwave xin ;READ IN INPUT ARGUMENTS krate expcurve krate,5 ;CREATE AN EXPONENTIAL REMAPPING OF krate krate scale krate,50,0.1 ;RESCALE VALUE ktrig changed kwave ;IF LFO WAVEFORM TYPE IS CHANGED GENERATE A MOMENTARY '1' (BANG) if ktrig=1 then ;IF A 'BANG' HAS BEEN GENERATED IN THE ABOVE LINE reinit UPDATE ;BEGIN A REINITIALIZATION PASS FROM LABEL 'UPDATE' SO THAT LFO WAVEFORM TYPE CAN BE UPDATED endif ;END OF THIS CONDITIONAL BRANCH UPDATE: ;LABEL CALLED UPDATE klfo lfo kdepth, krate, i(kwave) ;CREATE AN LFO rireturn ;RETURN FROM REINITIALIZATION PASS klfo = (klfo*0.5)+0.5 ;RESCALE AND OFFSET LFO SO IT STAY WITHIN THE RANGE 0 - 1 ABOUT THE VALUE 0.5 if kwave=2 then ;IF SQUARE WAVE MODULATION HAS BEEN CHOSEN... klfo portk klfo, 0.001 ;SMOOTH THE SQUARE WAVE A TINY BIT TO PREVENT CLICKS endif ;END OF THIS CONDITIONAL BRANCH if kmode=0 then ;PAN ;IF PANNING MODE IS CHOSEN FROM BUTTON BANK... alfo interp klfo ;INTERPOLATE K-RATE LFO AND CREATE A-RATE VARIABLE aoutL = ainL*sqrt(alfo) ;REDEFINE GLOBAL AUDIO LEFT CHANNEL SIGNAL WITH AUTO-PANNING aoutR = ainR*(1-sqrt(alfo)) ;REDEFINE GLOBAL AUDIO RIGHT CHANNEL SIGNAL WITH AUTO-PANNING elseif kmode=1 then ;TREM ;IF TREMELO MODE IS CHOSEN FROM BUTTON BANK... klfo = klfo+(0.5-(kdepth*0.5)) ;MODIFY LFO AT ZERO DEPTH VALUE IS 1 AND AT MAX DEPTH CENTRE OF MODULATION IS 0.5 alfo interp klfo ;INTERPOLATE K-RATE LFO AND CREATE A-RATE VARIABLE aoutL = ainL*(alfo^2) ;REDEFINE GLOBAL AUDIO LEFT CHANNEL SIGNAL WITH TREMELO aoutR = ainR*(alfo^2) ;REDEFINE GLOBAL AUDIO RIGHT CHANNEL SIGNAL WITH TREMELO endif ;END OF THIS CONDITIONAL BRANCH xout aoutL,aoutR ;SEND AUDIO BACK TO CALLER INSTRUMENT endop