HilbertW:
Filter:
Classes (extension) | Libraries > Hilbert > Pseudo-UGens | UGens > Filters > Nonlinear

HilbertW : Object
ExtensionExtension

Applies the Hilbert Transform to an input signal. [1]
Source: Hilbert.sc

Description

Offers the Hilbert and related transforms and analyses of an input signal via Weaver's Third Method.1

[1] this is a composite pseudo UGen. HilbertW is built with DelayN, Delay1, Delay2, Impulse, LocalBuf, FFT, IFFT, and PV_BrickWall. Method *arSSB also includes SinOsc.

Class Methods

HilbertW.ar(in, size: 2048, mul: 1, add: 0)

The Hilbert Transform, returning two signals in phase-quadrature. Considered as a complex analytic signal,2 the first may be regarded as the real component and the second as the imaginary.

Arguments:

in

The input signal to transform.

size

The size of the FFT used for Weaver Half-Band filtering.

mul

Output will be multiplied by this value.

add

This value will be added to the output.

Returns:

An array of channels: [real, imag]

HilbertW.arRotate(in, angle: 0.0, size: 2048, mul: 1, add: 0)

Rotate3 the phase of the input.

Arguments:

in

The input signal.

angle

Rotation angle, in radians.

size

The size of the FFT used for Weaver Half-Band filtering.

mul

Output will be multiplied by this value.

add

This value will be added to the output.

Returns:

Phase rotated input.

HilbertW.arSSB(in, freq: 0.0, size: 2048, mul: 1, add: 0)

Single-Sideband Modulate4 (SSB) the input.

Arguments:

in

The input signal.

freq

Frequency to shift by. May be positive or negative.

size

The size of the FFT used for Weaver Half-Band filtering.

mul

Output will be multiplied by this value.

add

This value will be added to the output.

Returns:

SSB modulated input.

HilbertW.arMag(in, size: 2048, mul: 1, add: 0)

Analyze the instantaneous amplitude of the input.

Arguments:

in

The input signal to analyze.

size

The size of the FFT used for Weaver Half-Band filtering.

mul

Output will be multiplied by this value.

add

This value will be added to the output.

Returns:

Instantaneous amplitude.

HilbertW.arPhase(in, size: 2048, mul: 1, add: 0)

Analyze the instantaneous phase of the input.

Arguments:

in

The input signal to analyze.

size

The size of the FFT used for Weaver Half-Band filtering.

mul

Output will be multiplied by this value.

add

This value will be added to the output.

Returns:

Instantaneous phase, in radians.

Inherited class methods

Instance Methods

Inherited instance methods

Examples

ar

arRotate

arSSB

arMag

arPhase

Frequency response

Magnitude

The real output of HilbertW returns an allpass magnitude response.

The imag magnitude response may be regarded as bandpass, with notches at DC and Nyquist.

Phase

The real output of HilbertW returns a linear phase response. As a result, the output of the system as a whole is delayed in time. The total delay, in samples, can be calculated as size - blockSize, where blockSize is the number of samples in one control period of the Server in use.

The imag output is offset by -pi/2 radians with respect to real.

[1] - Weaver, Donald. “A Third Method of Generation and Detection of Single-Sideband Signals.” Proceedings of the IRE, vol. 44, no. 12, 1956, pp. 1703–1705.
[2] - Smith, J.O. “Analytic Signals and Hilbert Transform Filters”, in Mathematics of the Discrete Fourier Transform (DFT) with Audio Applications, Second Edition, https://ccrma.stanford.edu/~jos/st/Analytic_Signals_Hilbert_Transform.html, online book, 2007 edition, accessed 2017-08-08.
[3] - decrement
[4] - Aka, frequency-shifting.