ascii-chat
Binary v0.15.83-53-gb711d8720
Library lib/v0.3.2-701-gb711d8720
Video chat in your terminal
Loading...
Searching...
No Matches
compressor_t Struct Reference

Dynamic range compressor settings and state. More...

#include <include/ascii-chat/audio/mixer.h>

Data Fields

float threshold_dB
 Compression threshold in dB (e.g., -10.0).
float knee_dB
 Knee width in dB for soft knee (e.g., 2.0).
float ratio
 Compression ratio (e.g., 4.0 for 4:1 compression).
uint64_t attack_ns
 Attack time in nanoseconds (how fast compression kicks in).
uint64_t release_ns
 Release time in nanoseconds (how fast compression releases).
float makeup_dB
 Makeup gain in dB (compensates for gain reduction).
float sample_rate
 Sample rate in Hz (set during initialization).
float envelope
 Current envelope follower state (linear, 0-1).
float gain_lin
 Current gain multiplier (linear, calculated from envelope).
float attack_coeff
 Attack coefficient (converted from attack_ms).
float release_coeff
 Release coefficient (converted from release_ms).

Detailed Description

Dynamic range compressor settings and state.

Implements professional-quality dynamic range compression to prevent clipping and maintain consistent output levels. Uses sidechain input for gain reduction calculation.

COMPRESSION BEHAVIOR:

  • Acts above threshold_dB (no compression below threshold)
  • Applies compression ratio (e.g., 4:1 reduces 4dB above threshold to 1dB)
  • Soft knee provides smooth compression curve transition
  • Independent attack/release times for natural sound
  • Makeup gain compensates for gain reduction
Note
All time-based parameters (attack_ms, release_ms) are converted to coefficients internally for sample-by-sample processing.

Definition at line 139 of file mixer.h.


The documentation for this struct was generated from the following file: