<div dir="ltr"><div><font face="arial, helvetica, sans-serif" color="#000000">Hi,</font></div><div><font face="arial, helvetica, sans-serif" color="#000000"><br></font></div><div><font face="arial, helvetica, sans-serif" color="#000000">I've been looking at the [lop~] implementation (Pd-0.45-4) and noticed something that seem weird to me. </font></div>

<div><font face="arial, helvetica, sans-serif" color="#000000"><br></font></div><div><font face="arial, helvetica, sans-serif" color="#000000">In d_filter, line 176:</font></div><div><font face="courier new, monospace" color="#000000"><br>

</font></div><div><font face="courier new, monospace" color="#000000">static void siglop_ft1(t_siglop *x, t_floatarg f)</font></div><div><font face="courier new, monospace" color="#000000">{</font></div><div><font face="courier new, monospace" color="#000000">    if (f < 0) f = 0;</font></div>

<div><font face="courier new, monospace" color="#000000">    x->x_hz = f;</font></div><div><font face="courier new, monospace" color="#000000">    x->x_ctl->c_coef = f * (2 * 3.14159) / x->x_sr;</font></div><div>

<font face="courier new, monospace" color="#000000">    if (x->x_ctl->c_coef > 1)</font></div><div><font face="courier new, monospace" color="#000000">        x->x_ctl->c_coef = 1;</font></div><div><font face="courier new, monospace" color="#000000">    else if (x->x_ctl->c_coef < 0)</font></div>

<div><font face="courier new, monospace" color="#000000">        x->x_ctl->c_coef = 0;</font></div><div><font face="courier new, monospace" color="#000000">}</font></div><div><font color="#000000"><br></font></div>
<div>
<font color="#000000"><br></font></div><div><font color="#000000">Is it correct that for:</font></div><div><font color="#000000"><br></font></div><div><font face="courier new, monospace" color="#000000">y[n] = x[n] * a + y[n-1] * b</font></div>

<div><font color="#000000"><br></font></div><div><font color="#000000"><b><font face="courier new, monospace">a = 2</font><span style="line-height:18.200000762939453px"><font face="courier new, monospace">π * Fc / Fs</font></span></b><br>

</font></div><div><span style="line-height:18.200000762939453px"><font face="courier new, monospace" color="#000000">b = 1.0 - a</font></span></div><div><span style="line-height:18.200000762939453px"><font face="arial, helvetica, sans-serif" color="#000000"><br>

</font></span></div><div><span style="line-height:18.200000762939453px"><font face="arial, helvetica, sans-serif" color="#000000">where</font><font color="#000000" face="courier new, monospace"> Fc</font><font face="arial, helvetica, sans-serif" color="#000000"> is the cut-off frequency and </font><font color="#000000" face="courier new, monospace">Fs</font><font face="arial, helvetica, sans-serif" color="#000000"> the sampling frequency.</font></span></div>

<div><span style="line-height:18.200000762939453px"><font face="arial, helvetica, sans-serif" color="#000000"><br></font></span></div><div><font color="#000000"><span style="line-height:18.200000762939453px"><font face="arial, helvetica, sans-serif">I appreciate the </font><font face="courier new, monospace">a</font><font face="arial, helvetica, sans-serif"> coefficient is bounded afterwards but wouldn't that mean that </font><font face="courier new, monospace">Fc</font><font face="arial, helvetica, sans-serif"> values greater than </font><font face="courier new, monospace">Fs / 2</font></span><span style="line-height:18.200000762939453px"><font face="courier new, monospace">π</font><font face="arial, helvetica, sans-serif"> will have no impact on the sound being processed. </font></span></font></div>

<div><span style="line-height:18.200000762939453px"><font face="arial, helvetica, sans-serif" color="#000000"><br></font></span></div><div><span style="line-height:18.200000762939453px"><font face="arial, helvetica, sans-serif" color="#000000">For example if </font><font color="#000000" face="courier new, monospace">Fs</font><font face="arial, helvetica, sans-serif" color="#000000"> is 44100, then </font><font color="#000000" face="courier new, monospace">Fc</font><font face="arial, helvetica, sans-serif" color="#000000"> values above ~7020Hz will not affect the filter. </font></span></div>

<div><br></div><div>Have I missed something crucial or could this a bug in the code?</div><div><br></div><div>The simple IIR filter described in <a href="http://en.wikipedia.org/wiki/Low-pass_filter">http://en.wikipedia.org/wiki/Low-pass_filter</a> suggests that the actual coefficient calculation should be more like:</div>

<div><br></div><div><font face="courier new, monospace" style="color:rgb(0,0,0)">a = 2</font><span style="color:rgb(0,0,0);line-height:18.200000762939453px"><font face="courier new, monospace">π*Fc / (</font></span><font face="courier new, monospace" style="color:rgb(0,0,0)">2</font><span style="color:rgb(0,0,0);line-height:18.200000762939453px"><font face="courier new, monospace">π*Fc + </font></span><span style="font-family:'courier new',monospace;color:rgb(0,0,0);line-height:18.200000762939453px">Fs)</span></div>

<div><br></div><div>Looking forward to understand this more!</div><div><br></div><div>Cheers,</div><div>Joe</div><div><br></div>-- <br>Follow me on Twitter @diplojocus
</div>