<div dir="ltr">Whoops, I didn't realise that the link I posted was wrong and I never publicly corrected it (several people emailed in private), here is the correct link:<div><br></div><div><a href="http://cytomic.com/files/dsp/dynamic-smoothing.png">http://cytomic.com/files/dsp/dynamic-smoothing.png</a></div><div><br></div><div><div>The basic idea is to use a two pole multimode filter with a low cutoff, then use the bandpass output as a measure of how much the signal is changing and increase the cutoff. The absolute value of the bandpass output is used since it doesn't matter if the change is upwards or downwards, and this is also scaled by a sensitivity factor, added with the initial low cutoff gain factor and used to filter the input. It's a very straight forward algorithm once you know it, but it did require some careful thought to come up with in the first place. I'm very pleased with how well it works and how conceptually elegant it is :)<br></div></div><div><br></div><div><div><div>Looking back at the code I see I switched from using and SVF to using two cascaded one pole low passes since it was more stable, so the updated algorithm operation count is 8+- and 5*. Here is a technical paper with details on the algorithm:</div><div><br></div><div><a href="http://cytomic.com/files/dsp/DynamicSmoothing.pdf">http://cytomic.com/files/dsp/DynamicSmoothing.pdf</a></div></div><div><br></div></div><div>Cheers,</div><div><br></div><div>Andrew</div><div><br></div></div><div class="gmail_extra"><br><div class="gmail_quote">On 3 December 2016 at 21:41, Tom Wiltshire <span dir="ltr"><<a href="mailto:tom@electricdruid.net" target="_blank">tom@electricdruid.net</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">That looks very interesting, Andrew. Can you tell us more? How does the "dynamic" part work? (Since we know what two-pole filters are already!)<br>
<br>
Thanks,<br>
Tom<br>
<div class="HOEnZb"><div class="h5"><br>
On 3 Dec 2016, at 09:40, Andrew Simper <<a href="mailto:andy@cytomic.com">andy@cytomic.com</a>> wrote:<br>
<br>
> If you have enough DSP to throw at multiple boxcar filters and an IIR<br>
> you may be interested in a dynamic 2 pole low pass filtering approach<br>
> I've designed which gives these kinds of results:<br>
><br>
> <a href="http://www.cytomic.com/files/dsp/dynamic-smooting.png" rel="noreferrer" target="_blank">www.cytomic.com/files/dsp/<wbr>dynamic-smooting.png</a><br>
><br>
><br>
> It takes 2 multiples, 6 additions, 3 bit shifts and an absolute value<br>
> for fixed point, or 5 multiplies, 6 additions and an absolute value<br>
> for float. Please let me know if this sort of algorithm may be<br>
> appropriate.<br>
><br>
> All the best,<br>
><br>
> Andrew<br>
<br>
</div></div></blockquote></div><br></div>