Amazingly, In a strange late night twist ChatGTP seems to have solved it for me in SuperCollider.
Is this sort of filtering pretty standard then?
(
SynthDef("AnalogInputs",{ arg inPin=0;
var input0 = AnalogIn.ar(inPin);
input0 = Lag.ar(input0, 0.1); // Smooth input with a short lag
input0 = input0.clip(0.0001, 0.3);
SendReply.kr(Impulse.kr(10), '/input', input0);
}).add;