On 07/05, Julius Smith wrote: > > I like to look at the dB magnitude and phase (in degrees) of the > frequency response. So feed 1-1' to analytic instead of a sinusoid. > The ideal response is 0 dB for the magnitude at all frequencies, and > 90 or -90 degrees for the phase, depending on whether the frequency is > positive or negative. > > If you do a "cd libraries && git checkout master && git pull" in your > faust master-dev clone, you can also compare to > fi.pospass(filterOrder). You appear to have four biquads in series > for your filter, so filterOrder == 8 would be a reasonable comparison.
Heh ;) I did this after our discussion about ssbf. Here we go: hilbert = _ <: H(a2), H(a1)' with { a1 = 0.6923878, 0.9360654322959, 0.9882295226860 , 0.9987488452737; a2 = 0.4021921162426, 0.8561710882420, 0.9722909545651, 0.9952884791278; H_sect(a) = f ~ _ with { f(y, x) = a^2 * (x + y') - x''; }; H(as) = seq(i, outputs(as), H_sect(ba.take(i+1, as))); }; process = 1-1' <: hilbert; http://people.redhat.com/onestero/hilbert/hilbert.png pospass(N) = unmodulate : lpf(fc), lpf(fc) : modulate with { unmodulate = _ <: *(c),*(-s); modulate(x,y) = c*x-s*y, c*y + s*x; lpf = fi.lowpass(N); // or fi.lowpass6e, etc. //lpf = fi.lowpass6e; // strongest lowpass filter in filters.lib as of this writing guard = ma.SR/(2*N); // Guard-band to allow for filter roll-off fc = ma.SR/4 - guard; c = 1-1' : +~(*(-1):mem); // ||: 1, 0, -1, 0 :|| s = c'; }; process = 1-1' <: pospass(8); http://people.redhat.com/onestero/hilbert/pospass.png process = 1-1' <: hilbert, pospass(8); http://people.redhat.com/onestero/hilbert/both.png Oleg. _______________________________________________ Faudiostream-users mailing list Faudiostream-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/faudiostream-users