Overview
Audio sample decimator with IIR filter
Discussion
The IIR decimator subsystem implements an IIR filter followed by a downsampler. IIR low-pass filter is realized by adding allpass pair subsystem output. Vaiable cutoffFreq must be smaller than Fs*0.5/D, where Fs is a sampling rate and D is a decimation factor
The block size of the input pin must be divisible by the decimation factor D. The output block size equals the input block size divided by D. The output sample rate equals the input sample rate divided by D.
Type Definition
typedef struct _ModuleFIRInterpolatorFract32 { ModuleInstanceDescriptor instance; // Common Audio Weaver module instance structure INT32 L; // Upsampling factor INT32 N; // Length of the filter INT32 postShift; // Number of bits to shift INT32 polyphaseLen; // Length of each polyphase filter component INT32 stateIndex; // Index of the oldest state variable in the array of state variables INT32 stateLen; // Length of the circular state buffer FLOAT32* coeffs; // Filter coefficient array in normal order fract32* coeffsFract32; // Filter coefficient fract32 array in normal order fract32* state; // State variable array. The size of the array equals stateLen * numChannels } ModuleFIRInterpolatorFract32Class;
Variables
Properties
Name | Type | Usage | isHidden | Default value | Range | Units |
cutoffFreq | float | parameter | 0 | 10800 | 20:24000 | Hz |
Rs | float | parameter | 0 | 60 | 10:100 | dB |
D | int | const | 0 | 2 | Unrestricted |
Pins
Input Pins
Name: in
Description: Audio input
Data type: float
Channel range: Unrestricted
Block size range: Unrestricted
Sample rate range: Unrestricted
Complex support: Real
Output Pins
Name: out
Description: Audio input
Data type: float
Scratch Pins
Channel count: 1
Block size: 32
Sample rate: 48000
Channel count: 1
Block size: 32
Sample rate: 48000
Channel count: 1
Block size: 32
Sample rate: 48000
MATLAB Usage
File Name: iir_decimator_subsystem.m
SYS=iir_decimator_subsystem(NAME, D) Create a sub-system that decimates audio samples with IIR filter(s). IIR filters are implemented with allpass_pair sub-system with Elliptic filter option. Arguments: NAME - name of the module. D - Decimation factor. Copyright 2018. DSP Concepts, Inc. All Rights Reserved. Author: Taka Unno