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
[email protected]
https://lists.sourceforge.net/lists/listinfo/faudiostream-users