TBandlimitedInterpolator Class

Header: Dew.Signal/SignalProcessing.h · Cross-compiler
tObjectTMtxComponentTAnalysisTSignalTBandlimitedInterpolator

class TBandlimitedInterpolator : public TSignal;

Changes sampling frequency by a rational factor.

The sampling frequency of the Input is changed by a rational factor by using bandlimited interpolation. An example is resampling of an audio signal with 48kHz to 44kHz. The interpolation quality can achieve SNR (signal to noise ratio) of up to 180dB in double precision. This component does not feature antialising filters. More about backgrounds of bandlimited interpolation can be found in [1].

Note: Data.Length may vary from iteration to iteration. If the input has integer number of samples and the rate is changed by a rational factor the output will have a rational number of samples (in general). For some pairs of input buffer length and resampling factors (least common nominator) the output will also have fixed length. If the frequency is changed from 8000Hz to 11025Hz, the input buffer must have a length which is a multiple of 320 and the output will be a multiple of 441. (8000/25 = 320, 11025/25 = 441)

References:

[1] Bandlimited interpolation

Constructors

NameDescription
TBandlimitedInterpolator (2)

Destructors

NameDescription
~TBandlimitedInterpolator

Properties

NameTypeDescription
ActiveboolSet active to false to suppress the propagation of the Pull request and the subsequent call to the Update method.
AutoFilterLengthboolIf True, the length of the interpolation filter will be computed and the FilterLength property will be set, when the PrepareFilter method is called.
BandWidthdoubleReturn the bandwidth of the signal.
BandwidthHdoubleReturns the upper bandwidth edge of the signal.
BandwidthLdoubleReturns the lower bandwidth edge of the signal.
BlockAssignboolBlock streaming of specific properties when storing only a "template".
ChannelCountintGet or set the number of channels multiplexed in the data property.
ComplexboolSet this property to true, to request computation using complex numbers.
ContinuousboolIf True, the component will pass on the udpate request to the connected component.
DataTVec*Stores the result of the processing.
DtdoubleTime between two consecutive samples.
EditorActiveboolReturns True, if the component editor is displayed.
FilterDelaydoubleReturns the delay of the filter in number of samples of the final sampling frequency.
FilterLengthintReturns length of the filter.
FilterStartdoubleDefines the starting frequency of the transition band of the FIR lowpass filter used for interpolation.
FilterStopdoubleDefines the stop frequency of the transition band of the FIR lowpass filter used for interpolation.
FloatPrecisionTMtxFloatPrecisionSet this property to request computation in 32bit/64bit precision with real/complex numbers.
FloatPrecisionLockboolSet this property to true to lock changes to FloatPrecision property.
HzResdoubleFrequency resolution obtained, if an FFT algorithm would be run on the data.
ImpulseFactorintDefines the interpolation accuracy of the fractional FIR impulse.
InputTSignal*
InputsTSignalCollection*
IsDoubleboolSet this property to false, to request computation in 32bit floating point precision, 64bit, if true.
ItemNumberintNumber to label the object when it is an item in the List.
LengthintGet or set the length of the signal in samples.
MarksTMarkList*Stores the time stamps and amplitude of selected samples.
MaxAmpltdoubleStores the maximum amplitude of the signal found by the MinMax method.
MaxXdoubleUse the MaxX property to store the time stamp (in seconds) of the right most sample.
MinAmpltdoubleStores the minimum amplitude of the signal found by the MinMax method.
MinXdoubleUse the MinX property to store the time stamp of the left-most sample.
MultiChannelboolSet MultiChannel to True, if Inputs property will be published, and Input property will remain hidden.
NameDewString
OnAfterUpdatetNotifyEventThe event is triggered after the call to the Update method.
OnBeforeUpdatetNotifyEventThe event is triggered just before the call to the Update method.
OnDisplayUpdatetNotifyEventThe event is triggered after the OnAfterUpdate event. Use this event to update any associated charts or graphs or result tables.
OnGetInputtNotifyEventIf the Input property is not assigned, the component will call OnGetInput.
OnNotifyUpdatetNotifyEventThe event is called after a call to InternalUpdate, OnAfterUpdate and OnDisplayUpdate from within the Update method.
OnParameterUpdatetNotifyEventThe event is triggered when ParamUpdate method is called. The ParamUpdate method is usually called by component editors when a value was changed by the user and the editor was "Live".
PipeDirtybool
PipeStateTPipeStateReturns the state of the pipe after the last update.
ReferenceTReferenceList*Stores a list of components that have to be notified, when this component is destroyed.
ResampleFactordoubleSpecifies the factor by which to change the sampling frequency.
RippledoubleDefines the ripple error of the anti-aliasing filters.
SamplingFrequencydoubleDefines the sampling frequency of the signal.
SamplingTimedoubleThe length of the signal in seconds.
ScaleFactordoubleScaling factor can optionally be applied free of charge without raising the cost of the processing required.
SuspendNotifyUpdateboolSet this property to True, to prevent calling OnNotifyUpdate from the Update Method.
UsesInputsboolSet it to True to indicate, that valid signals will be connected to the Input or Inputs properties.

Methods

NameDescription
AllowStreaming
AppendAppends Sample to the end of the signal.
Assign
AssignTemplateAssign values of "template-like" published properties from Source.
CopyCopies signal Data and sampling frequency information.
CrestCompute the CREST parameter.
DetectChannelCount
EditorClassTo be overriden in descendanr classses.
get_CValues
get_Values
GetInput
GetInputs
InputsDirtyIf all Inputs[i] are dirty the function returns true.
InternalPullWhen called, the method will pass Update requests recursively to all connected objects.
InvalidateNotifies all connected components that this component has fresh data.
LoadFromStreamLoad the component from Src stream.
LoadTemplateFromFileLoad a template from file.
LoadTemplateFromStreamLoad a template from stream.
MarksToStringsConvert marks to strings.
MinMaxFind minimum and maximum amplitude and store the result in the MinAmplt and MaxAmplt properties.
ParamUpdateThe method can be assigned to some other component even handler, as a notification that a parameter has changed and that Self should consider a recalculation.
PeakFind the maximum deviation of the signal from its mean value.
PipeResetRecursively processes all connected components backward and calls Reset method.
PrepareFilterInitializes the lowpass interpolation filter.
PullRequest recalculation of the entire chain of all connected components.
PullUntilEndCalls Pull until pipeEnd is returned.
ReferenceRemoved
ResetSets the internal FilterPrepared flag to false. When the Update method is called the next time, it will call the PrepareFilter method first.
SaveTemplateToFileSave template to file.
SaveTemplateToStreamSave template to stream.
SaveToStreamSave the component to Dst stream.
set_CValues
set_Values
SetComplex
SetFloatPrecision
SetInputs
SetIsDouble
SizeAssign the size of the signal from Src.
UpdateRequest recalculation of the data and place the result in Self.
UpdateNotifyCall this method only, if SuspendNotifyUpdate is True.
Values
ValuesToStringsConvert values to strings.

Operators

NameDescription
operator[]

Fields

NameTypeDescription
Tagintptr_t