Skip to content

FIRReader

Overview

FIR filter which works together with the DelayStateWriter module

Discussion

This module implements an FIR filter which works in conjunction with an upstream delay_state_writer_module.m. The delay_state_writer_module.m holds the state variables and can be shared by multiple FIRReader modules.

You need to make sure that the maximum number of coefficients does not exceed the allocated size of the upstream state buffer and that the number of channels match those from the state's buffer input pin. Checkings are made though at run-time and provided in the error code state: 0 = OK; -23 = channel count do not match; -67 = numTaps > (maxDelay-blockSize)); -79 = input ptr NULL; Output will be muted in case one of the above errors have occurred.

Module Pack

Advanced

ClassID

classID = 1440

Type Definition

typedef struct _ModuleFIRReader
{
ModuleInstanceDescriptor instance;            // Common Audio Weaver module instance structure
INT32 numTaps;                                // Length of the filter.
INT32 errorCode;                              // Captures errors that could arise at run-time and which appears on the inspector
INT32 dswObjectID;                            // Object ID of the upstream DelayStateWriter module
FLOAT32* coeffs;                              // Filter coefficient array in normal order
void * dswObjectPtr;                          // Points to the upstream DelayStateWriter module
void * hardware_specific_struct_pointer;      // This is the internal TCB array used for ADI FIR accelerator
} ModuleFIRReaderClass;

Variables

Properties

Name Type Usage isHidden Default Value Range Units
numTaps int const 0 20 Unrestricted
errorCode int state 0 0 Unrestricted
dswObjectID int state 1 -1 Unrestricted
coeffs float* parameter 0 [20 x 1] Unrestricted
dswObjectPtr void * state 1 Unrestricted
hardware_specific_struct_pointer void * state 1 Unrestricted

Pins

Input Pins

Name ID
Description delayStateWriter instance input
Data type int
Channel range 1
Block size range 1
Sample rate range Unrestricted
Complex support Real

Output Pins

Name out
Description audio output
Data Type float

Matlab Usage

File Name: fir_reader_module.m 
 M = fir_reader_module(NAME, NUMTAPS, NUMCHAN, BLOCKSIZE, SAMPLERATE) 
 Creates an FIR filter which works in conjunction with the  
 delay_state_writer_module.m.  The "writer" module stores the circular  
 state buffer while this "reader" module does the actual processing.   
 The "writer" module output is a pointer to its instance structure.   
 The "reader" module uses the instance pointer to read data out of the  
 state buffer. 


 Arguments: 
    NAME - name of the module. 
    NUMTAPS - length of the filter (number of taps) 
    NUMCHAN - output channel count.   
              By default, NUMCHAN = 1. 
    BLOCKSIZE - output block size (number of samples to generate). 
        If this is empty then we use the blockSize from the system 
        input.  By default, BLOCKSIZE = []. 
    SAMPLERATE - sample rate of the output data.  If this is empty 
        then we use the sample rate of the first input pin of the 
        containing system.  By default, SAMPLERATE = []. 

Copyright (c) 2026 DSP Concepts, Inc.