A Hilbert transform UGen. This transformation produces two signals from a given
input with identical frequency content, but with their respective phases shifted
to be 90 degrees apart (0.5 pi radians).
The two signals output by Hilbert correspond to the real and imaginary part
of the complex transformed signal. Due to the method used (an IIR filter),
distortion occurs in the upper octave of the frequency spectrum.
The transform can be used to implemented single-side-band (SSB) modulation, but
a dedicated UGen FreqShift is already provided for this case.
// a form of envelope tracking
val in = SinOsc.ar(440)
val h = Hilbert.ar(in)
val x = h.real.squared + h.imag.squared
x.poll(1) // cos(x)^2 + sin(x)^2 == 1 (ideally)
input signal to be processed