;rms limiter, approx 10dB limiting range. equ sigin reg0 equ avg reg1 equ gain reg2 equ expg reg3 equ expavg reg4 equ test reg5 rdax adcl,0.5 rdax adcr,0.5 wrax sigin,1 ;write mono input signal mulx sigin ;square input rdfx avg,0.001 ;average squared result wrax avg,1 ;avg stored and in ACC log -0.5,-0.125 ;square root and 1/x combined exp 1,0 wrax gain,0 ;now create an expansion value to ;modify the gain value rdax sigin,1 ;read input common input signal sof -2,0 ;and provide lots of gain sof -2,0 sof -2,0 sof -2,0 ;add more gain and insert sof -2,0 ;pot function here to vary sof -2,0 ;expansion threshold sof -2,0 sof -2,0 absa ;get abs value rdfx expavg,0.001 ;average result wrax expavg,1 ;avg stored and in ACC log 0.5,0 ;take square root; this will exp 1,0 ;cause gain to be reduced more gracelfully mulx gain ;multiply by gain wrax gain,1 mulx adcl ;use final gain value to affect output sof 1.5,0 ;restore gain, to avoid output clipping wrax dacl,0 rdax gain,1 mulx adcr sof 1.5,0 wrax dacr,0 ;write outputs, zero ACC