Jamoma API  0.6.0.a19
TTHilbert9 Class Reference

A 9th-order Hilber Transform filter built-up from allpass building blocks. More...

#include <TTHilbert9.h>

+ Inheritance diagram for TTHilbert9:
+ Collaboration diagram for TTHilbert9:

Protected Member Functions

virtual TTErr test (TTValue &returnedTestInfo)
 Unit Tests. More...
 

Protected Attributes

TTAudioObject mF0
 path0
 
TTAudioObject mF2
 path0
 
TTAudioObject mF1
 path1
 
TTAudioObject mF3
 path1
 
TTAudioObject mDelay
 path1
 

Detailed Description

A 9th-order Hilber Transform filter built-up from allpass building blocks.

Based on Multirate Signal Processing for Communication Systems, Chapter 10 and "The Digital All-Pass Filter: A Versatile Signal Processing Building Block" by REGALIA, MITRA, and P.VAIDYANATHAN, 1988.

This filter is so-named because we base this filter on TTHalfband9 filter, which we transform to produce the phase quadrature by flipping coefficient signs and decoupling the output of the two paths.

This particular Hilbert filter may be a bit too crude for many applications, as the distortion to the phase quadrature (perfect 90º) begins to distort somewhat rapidly as the frequencies at the input get further and further away from f_s/2. Because of this, a higher-order filter would be a better match for most applications. For example, TTHilbert17 will offer more accurate results, albeit at a higher computational cost.

An additional caveat regards phase linearity with regard to the input signal. While the output phases of the real and imaginary signals from this filter are 90º to each other, the phase response of both in relation to the input signal is non-linear. To acheive a linear-phase version, a linear halfband filter needs to serve as the base from which to transform. E.g. TTHalfbandLinear33 could be modified to become TTHilbertLinear33.

Current implementation does not perform resampling. As with the halfband filters, we could make a version of this object that has downsampling and upsampling (e.g. for inverse hilber transforms) built-in.

At the moment, however, we do not have any applications in Jamoma which require the use of hilbert-transformed signals to be processed at a lower rate.

Definition at line 65 of file TTHilbert9.h.

Member Function Documentation

TTErr TTHilbert9::test ( TTValue returnedTestInfo)
protectedvirtual

Unit Tests.

Parameters
returnedTestInfoUsed to return test information
Returns
TTErr error code if the method fails to execute, else kTTErrNone.

The following values are not necsessarily to be trusted. They were calculated from this filter unit itself at a time when the filter was assumed to work. As such, if this test fails in the future, it should be considered an indication that something has changed in the code or compiler that causes the calculated impulse response to differ from earlier results, but this test is not able to say anything meaningful about whether the old or new behaviour is to be trusted (or eventually none of them).

Reimplemented from TTAudioObjectBase.

Definition at line 20 of file TTHilbert9.test.cpp.

References TTAudioSignal::allocWithVectorSize(), TTAudioSignal::clear(), TTAudioObjectBase::inputArray, TTObject::instance(), TTAudioSignal::mSampleVectors, TTAudioObjectBase::outputArray, TTAudioObjectBase::process(), TTObjectBaseInstantiate(), and TTObjectBaseRelease().

+ Here is the call graph for this function:


The documentation for this class was generated from the following files: