Skip to content

IIRDecimator

Overview

Audio sample decimator with IIR filter

Discussion

The IIR decimator module implements an IIR low-pass filter followed by a downsampler. The IIR filter is implemented as an 8th order elliptical filter. The module variable cutoffFreq must be smaller than Fs*0.5/D, where Fs is the sampling rate and D is the decimation factor.

  • This module accepts any input block size.

  • The output block size equals the input block size divided by the decimation factor D.

  • The output sample rate equals the input sample rate divided by D.

Module Pack

Advanced

ClassID

classID =

Type Definition

typedef struct _ModuleIIRDecimator
{
ModuleInstanceDescriptor instance;            // Common Audio Weaver module instance structure
} ModuleIIRDecimatorClass;

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 

Copyright (c) 2026 DSP Concepts, Inc.