Skip to content

WOLAAnalysisV2

Overview

Analysis filterbank of an oversampled filterbank with selectable prototype filter

Discussion

This module implements version 2 of the analysis portion of a weighted-overlap filterbank. The first parameter is the filter type, v1 is the same prototype filter from the original WOLA. An additional parameter - timeFlip, has been introduced and is only valid for V1. By default the filter will be minimum phase at anaylsis, and maximum phase for synthesis. It may be advantageous to switch this for AEC applications - i.e. use min/max for input and max/min for reference. Note that final signal through analysis / synthesis is always linear phase. For v2, the module argument for attenuation is replaced by filter order. As a module argument, you specify the FFT size K, and the prototype filter order. The module inherits the block size from the input wire. The oversampling factor of the module is defined as K / (input block size). For example, if the block size of the input pin is K/2 then the module has an oversampling factor of 2. For reasonable reconstruction accuracy you should keep the oversampling factor to be at least 2. The module decimates by the input block size and the output sample rate will be reduced accordingly. In general, the V2 version will be equivalent or overperform V1 for lower latencies when the oversampling factor is >= 2, and should be considered for lower latency applications.

The length of the prototype filter (L) affects the latency through an analysis filter by: L - blockSize. Higher L will have higher attenuation (or less aliasing distortion), but also more latency. The module displays the latency on the canvas allowing you to compensate for it in other parts of the signal flow. The latency shown is the latency through the combination of the analysis and synthesis banks.

This module is usually used in conjunction with the wola_synthesis_v2_subsystem.m. The synthesis filterbank converts back from the frequency domain to the time domain. The synthesis filterbank must have exactly the same settings for K, the filter order, and the output block size of the synthesis bank must match the input block size of the corresponding analysis bank. This is not checked for but you will get distorted sound if this is not true.

This module is equivalent to V1, except for the method of design of the prototype filters. The Audio Weaver Module Users Guide has extensive documentation for v1 of this module. Please refer to this other document for more general WOLA information.

Module Pack

Advanced

ClassID

classID =

Type Definition

typedef struct _ModuleWOLAAnalysisV2
{
ModuleInstanceDescriptor instance;            // Common Audio Weaver module instance structure
} ModuleWOLAAnalysisV2Class;

Variables

Properties

Name Type Usage isHidden Default Value Range Units
latency int const 0 352 Unrestricted samples

Pins

Input Pins

Name t
Description Time domain signal
Data type float
Channel range Unrestricted
Block size range Unrestricted
Sample rate range Unrestricted
Complex support Real

Output Pins

Name f
Description Frequency domain subbands
Data Type float

Scratch Pins

Channel Count 1
Block size 128
Sample rate 48000
Channel Count 1
Block size 65
Sample rate 48000
Channel Count 1
Block size 129
Sample rate 48000

Matlab Usage

File Name: wola_analysis_v2_subsystem.m 
 SYS=wola_analysis_v2_subsystem((NAME, K, ATTEN) 
 Creates an Audio Weaver subsystem that implements the analysis bank of an  
 oversampled filterbank.  The analysis bank splits a time domain input 
 signal into multiple decimated frequency subbands.  This version returns 
 a floating-point implementation.  The input block size is inherited and 
 should be >= (and close) to K/2. 
 Arguments: 
   NAME - name of the subsystem 
   FILTERTYPE - prototpe filter design type 
   PARAM1 - type 1/2: K - size of the FFT (must be a power of 2) 
   PARAM2 - type 1 - attenuation, type 2 filter order 
   PARAM3 - reserved, enter 0 
   TIMEFLIP - option to use normal (1): min phase in / max phase out, or  
              (2) time flipped: max phase in, min phase out. This option 
              is ignored for FILTERTYPE == 2 

 Internally, the stft_design_v2.m functions is used to  
 design the filterbank. Refer to this file for more details. 

Copyright (c) 2026 DSP Concepts, Inc.