Hi Julius,
sorry for late reply, I was busy and didn't read emails from this list.
On 06/17, Julius Smith wrote:
>
> Hi Oleg,
>
> I just now added a hilbert filter to filters.lib, and (probably what
> you really want) ssbf
Me? ;)
Heh. I know almost nothing about digital filters, to the point I don't even
know the terminology. Plus I forgot all the math I studied a long ago.
So it was not easy to me to understand what fi.ssbf does and how it works.
But what I absolutely fail to understand is the new fi.hilbert filter. It
simply makes no sense to me, could you please explain?
-------------------------------------------------------------------------
So iiuc we have the "complex" (c,s) osscillator running at ma.SR/4 frequency
and
ssbf = _,0
: si.cmul(c,-s) // *conj(c,s), shift the spectrum by -SR/4
: LPF(SR/4) // remove the negative part
: si.cmul(c,s); // shift it back by SR/4
OK, but how this
// The Hilbert transform creates the imaginary part of an
// "analytic signal" $x(n)+j y(n)$ from its real part $x(n)$.
//
hilbert = ssbf : !,_;
can work?
Unless LPF above is ideal. And even if it was ideal, I think the correct
definition would be
hilbert = ssbf : !,*(2);
no?
But it is not ideal, so I simply can't understand how/why this "hilbert" can
be used.
Suppose that LPF above has FR(f) frequency response. To simplify, suppose that
FR(f) = 0 if f > SR/4. Then afaics
cos(2*pi*F * t) : hilbert;
will output
abs(FR(SR/4 - F))/2 * sin(2*pi*F*t - arg(FR(SR/4 - F)));
even if LPF is "flat", how can we avoid the phase error == arg(FR(SR/4 - F)) ?
Thanks,
Oleg.
_______________________________________________
Faudiostream-users mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/faudiostream-users