DSPark 1.6.1
Header-only audio DSP framework in pure C++20 — zero dependencies
Loading...
Searching...
No Matches
DynamicEQ.h File Reference

Dynamic parametric equalizer with per-band level detection and true VCA ballistics. More...

#include "../Core/AudioBuffer.h"
#include "../Core/AudioSpec.h"
#include "../Core/Biquad.h"
#include "../Core/DspMath.h"
#include "../Core/Oversampling.h"
#include "../Core/RingBuffer.h"
#include "../Core/DenormalGuard.h"
#include "../Core/StateBlob.h"
#include <algorithm>
#include <array>
#include <atomic>
#include <cmath>
#include <cstddef>
#include <cstdint>
#include <cstdio>
#include <memory>
#include <type_traits>
#include <vector>
Include dependency graph for DynamicEQ.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

class  dspark::DynamicEQ< T, MaxBands >
 Dynamic parametric EQ with dual above/below threshold per band. More...
 
struct  dspark::DynamicEQ< T, MaxBands >::BandConfig
 Full configuration for a single dynamic EQ band. More...
 

Namespaces

namespace  dspark
 Main namespace for the DSPark framework.
 

Detailed Description

Dynamic parametric equalizer with per-band level detection and true VCA ballistics.

Implements a high-performance dynamic EQ. Unlike standard envelope followers, this implementation applies attack/release ballistics directly to the gain reduction signal, accurately modeling analog VCA behavior and allowing true independent times for Above and Below threshold processing.

Architecture per band:

Sidechain -> [Detector: BP / LP / HP per shape] -> Peak Detect -> Gain Computer -> Ballistics -> [Bell / Shelf EQ]

Threading model:

  • prepare() / reset() / setOversampling() / getState() / setState(): setup or UI threads only, never concurrently with processBlock().
  • setBand() (seqlock publish, single producer) / setNumBands() / setLookahead(): RT-safe from one control thread; the audio thread applies them at the next block. Non-finite band fields keep the previous value.
  • getBandGainDb() is an atomic metering read; getLatency() is safe from any thread once prepared.
  • Lookahead changes take effect immediately and may click (configure before playback).

Dependencies: AudioBuffer.h, AudioSpec.h, Biquad.h, DspMath.h, Oversampling.h, RingBuffer.h, DenormalGuard.h, StateBlob.h.

Definition in file DynamicEQ.h.