; LoFi
; ----------------
; 'Low Fidelity' distorting effects of bit reduction and downsampling (foldover)
;
; aout LoFi ain,kbits,kfold
;
; Performance
; -----------
; ain -- input audio to have low fidelity distortion effects applied
; kbits -- bit depth reduction (suggested range 0 to 0.6)
; kfold -- amount of foldover (range 0 to 1)
opcode LoFi,a,aKK
ain,kbits,kfold xin ;READ IN INPUT ARGUMENTS
kfold expcurve kfold,500 ;CREATE AN EXPONENTIAL REMAPPING OF kfold
kfold scale kfold,1024,1 ;RESCALE 0 - 1 VALUE TO 1 - 1024
kvalues pow 2, ((1-(kbits^0.25))*15)+1 ;RAISES 2 TO THE POWER OF kbitdepth. THE OUTPUT VALUE REPRESENTS THE NUMBER OF POSSIBLE VALUES AT THAT PARTICULAR BIT DEPTH
k16bit pow 2, 16 ;RAISES 2 TO THE POWER OF 16
aout = (int((ain*32768*kvalues)/k16bit)/32768)*(k16bit/kvalues) ;BIT DEPTH REDUCE AUDIO SIGNAL
aout fold aout, kfold ;APPLY SAMPLING RATE FOLDOVER
xout aout ;SEND AUDIO BACK TO CALLER INSTRUMENT
endop