WOLASynthesisFract32
Overview
Synthesis filterbank of an oversampled filterbank
Discussion
This module implements the synthesis portion of a weighted-overlap filterbank. As module arguments, you specify the FFT size K, the amount of attenuation between subbands (in dB), and the output time domain block size. The oversampling factor of the filterbank equals K / (output block size). You should strive to have an oversampling factor of at least 1.5. In many applications, you set the output block size to K/2 and this yields an oversampling factor of 2.
The attenuation between subbands affects the length of the synthesis filter and the latency through the processing. Higher attenuation gives lower distortion while increasing processing and 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_analysis_subsystem.m. The analysis filterbank converts from the time domain to the frequency domain. The analysis filterbank must have exactly the same settings for K, subband attenuation, and the time domain block sizes must match. This is not checked for but you will get distorted sound if this is not true.
The Audio Weaver Module Users Guide has extensive documentation for this module. Please refer to this other document for more information.
Module Pack
Advanced
ClassID
classID =
Type Definition
typedef struct _ModuleWOLASynthesisFract32
{
ModuleInstanceDescriptor instance; // Common Audio Weaver module instance structure
} ModuleWOLASynthesisFract32Class;
Variables
Properties
| Name | Type | Usage | isHidden | Default Value | Range | Units |
|---|---|---|---|---|---|---|
| latency | int | const | 0 | 88 | Unrestricted | samples |
Pins
Input Pins
| Name | f |
| Description | Frequency domain subbands |
| Data type | fract32 |
| Channel range | Unrestricted |
| Block size range | 9 |
| Sample rate range | Unrestricted |
| Complex support | Complex |
Output Pins
| Name | t |
| Description | Time domain signal |
| Data Type | fract32 |
Scratch Pins
| Channel Count | 1 |
| Block size | 9 |
| Sample rate | 384000 |
| Channel Count | 1 |
| Block size | 16 |
| Sample rate | 384000 |
| Channel Count | 1 |
| Block size | 32 |
| Sample rate | 384000 |
| Channel Count | 1 |
| Block size | 8 |
| Sample rate | 384000 |
Matlab Usage
File Name: wola_synthesis_fract32_subsystem.m
SYS = wola_synthesis_fract32_subsystem(NAME, K, ATTEN)
Creates an Audio Weaver subsystem that implements the synthesis bank of an
oversampled filterbank. The synthesis bank combines frequency domain
subbands into a time domain signal. This version returns a floating-point
implementation. Arguments:
NAME - name of the subsystem
K - size of the FFT (must be a power of 2)
ATTEN - attenuation (in dB) between neighboring subbands
Internally, the stft_design.m function is used to design the filterbank.
Refer to stft_design.m for more details. The output block size equals
K/2.
SYS = wola_synthesis_fract32_subsystem(NAME, K, ATTEN, OUTBLOCKSIZE)
An optional 3rd output argument allows you to specify the output block
size.
Copyright (c) 2026 DSP Concepts, Inc.