<div dir="ltr"><p class=""><span class=""><span style="font-size:12.727272033691406px;color:rgb(80,0,80);font-family:arial,sans-serif">&quot;</span><span style="font-size:12.727272033691406px;color:rgb(80,0,80);font-family:sans-serif">I&#39;d start with a look at the [bp~] source to see if you can extract some hints about how the filter is implemented.&quot;<br>
</span><br>Anyway, this is what I got from the code. But I wasn&#39;t successful to extract biquad coefficients from it. I still assume it can be done. It says it&#39;s a 2-pole bandpass filter, so I understand you can get to it with biquad, cause biquad is 2-pole and 2-zero. It&#39;s just a matter to get rid of the zeros somehow. I was able to leave them with a vlue of 0, but didn&#39;t seem to do the job.</span></p>
<p class=""><span class=""><br></span></p><p class=""><span class="">thanks </span></p><p class=""><span class=""><br></span></p><p class=""><span class="">static</span> t_float sigbp_qcos(t_float f)</p>
<p class="">{</p>
<p class="">    <span class="">if</span> (f &gt;= -(<span class="">0.5f</span>*<span class="">3.14159f</span>) &amp;&amp; f &lt;= <span class="">0.5f</span>*<span class="">3.14159f</span>)</p>
<p class="">    {</p>
<p class="">        t_float g = f*f;</p>
<p class="">        <span class="">return</span> (((g*g*g * (-<span class="">1.0f</span>/<span class="">720.0f</span>) + g*g*(<span class="">1.0f</span>/<span class="">24.0f</span>)) - g*<span class="">0.5</span>) + <span class="">1</span>);</p>

<p class="">    }</p>
<p class=""><span class="">    </span>else<span class=""> </span>return<span class=""> (</span><span class="">0</span><span class="">);</span></p>
<p class="">}</p>
<p class=""><br></p>
<p class=""><span class="">static</span> <span class="">void</span> sigbp_docoef(t_sigbp *x, t_floatarg f, t_floatarg q)</p>
<p class="">{</p>
<p class="">    t_float r, oneminusr, omega;</p>
<p class="">    <span class="">if</span> (f &lt; <span class="">0.001</span>) f = <span class="">10</span>;</p>
<p class="">    <span class="">if</span> (q &lt; <span class="">0</span>) q = <span class="">0</span>;</p>
<p class="">    x-&gt;x_freq = f;</p>
<p class="">    x-&gt;x_q = q;</p>
<p class="">    omega = f * (<span class="">2.0f</span> * <span class="">3.14159f</span>) / x-&gt;x_sr;</p>
<p class="">    <span class="">if</span> (q &lt; <span class="">0.001</span>) oneminusr = <span class="">1.0f</span>;</p>
<p class="">    <span class="">else</span> oneminusr = omega/q;</p>
<p class="">    <span class="">if</span> (oneminusr &gt; <span class="">1.0f</span>) oneminusr = <span class="">1.0f</span>;</p>
<p class="">    r = <span class="">1.0f</span> - oneminusr;</p>
<p class="">    x-&gt;x_ctl-&gt;c_coef1 = <span class="">2.0f</span> * sigbp_qcos(omega) * r;</p>
<p class="">    x-&gt;x_ctl-&gt;c_coef2 = - r * r;</p>
<p class="">    x-&gt;x_ctl-&gt;c_gain = <span class="">2</span> * oneminusr * (oneminusr + r * omega);</p>
<p class=""><span class="">    </span>/* post(&quot;r %f, omega %f, coef1 %f, coef2 %f&quot;,</p>
<p class="">        r, omega, x-&gt;x_ctl-&gt;c_coef1, x-&gt;x_ctl-&gt;c_coef2); */</p>
<p class="">}</p></div><div class="gmail_extra"><br><br><div class="gmail_quote">2014-04-08 22:21 GMT-03:00 Alexandre Torres Porres <span dir="ltr">&lt;<a href="mailto:porres@gmail.com" target="_blank">porres@gmail.com</a>&gt;</span>:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div class="">&quot;<span style="font-family:sans-serif;font-size:12.727272033691406px">I&#39;d start with a look at the [bp~] source to see if you can extract some hints about how the filter is implemented.&quot;</span><div>

<span style="font-family:sans-serif;font-size:12.727272033691406px"><br></span></div></div><div><span style="font-family:sans-serif;font-size:12.727272033691406px">Done that, way out of my head. What I can deal with is wether I can get to it with biquad coefficients.</span></div>

<div><span style="font-family:sans-serif;font-size:12.727272033691406px"><br></span></div><div><span style="font-family:sans-serif;font-size:12.727272033691406px">thanks</span></div><div><span style="font-family:sans-serif;font-size:12.727272033691406px"><br>

</span></div></div><div class="gmail_extra"><br><br><div class="gmail_quote">2014-04-08 21:28 GMT-03:00 Bill Gribble <span dir="ltr">&lt;<a href="mailto:grib@billgribble.com" target="_blank">grib@billgribble.com</a>&gt;</span>:<div>
<div class="h5"><br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">



<div>
<div style="font-family:sans-serif">
<p>The quick and dirty way is just to feed the filter white noise and plot
the output signal&#39;s spectrum.   Guaranteed to show the actual
performance of the filter, and not somebody&#39;s idea of how it ought to be
working.</p>
<p>If you need a theoretical curve, I&#39;d start with a look at the [bp~]
source to see if you can extract some hints about how the filter is
implemented.  It may be quite easy to figure out the poles and zeros
if the code is clear and/or documented.</p>
<p>Good luck! <br><span><font color="#888888">
Bill Gribble<br>
</font></span></p>
</div>
</div>

</blockquote></div></div></div><br></div>
</blockquote></div><br></div>