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
Faudiostream-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/faudiostream-users

Reply via email to