FastLED 3.9.15
Loading...
Searching...
No Matches
fl::audio::SignalConditioner Class Reference

Detailed Description

SignalConditioner performs low-level audio preprocessing to clean raw PCM samples before FFT analysis or beat detection.

Pipeline stages:

  1. Spike filtering - Rejects I2S glitches (samples beyond threshold)
  2. DC offset removal - Subtracts running average to center signal at zero
  3. Noise gate - Applies hysteresis gating to suppress background noise

Usage:

SignalConditioner conditioner;
config.spikeThreshold = 10000;
conditioner.configure(config);
Sample rawSample = ...; // From I2S microphone
Sample cleanSample = conditioner.processSample(rawSample);
Sample processSample(const Sample &sample) FL_NOEXCEPT
Process a raw audio sample through the conditioning pipeline.
void configure(const SignalConditionerConfig &config) FL_NOEXCEPT
Configure the signal conditioner.
i16 noiseGateOpenThreshold
Noise gate open threshold (signal must exceed to open gate)
i16 spikeThreshold
Spike detection threshold (absolute value) Samples beyond ±spikeThreshold are rejected as glitches.
Configuration for signal conditioning pipeline.

Definition at line 54 of file signal_conditioner.h.

#include <signal_conditioner.h>

+ Collaboration diagram for fl::audio::SignalConditioner:

Classes

struct  Stats
 Get current statistics (for debugging/monitoring) More...
 

Public Member Functions

 SignalConditioner () FL_NOEXCEPT
 
 SignalConditioner (const SignalConditionerConfig &config) FL_NOEXCEPT
 
 ~SignalConditioner () FL_NOEXCEPT
 
void configure (const SignalConditionerConfig &config) FL_NOEXCEPT
 Configure the signal conditioner.
 
const StatsgetStats () const FL_NOEXCEPT
 
Sample processSample (const Sample &sample) FL_NOEXCEPT
 Process a raw audio sample through the conditioning pipeline.
 
void reset () FL_NOEXCEPT
 Reset internal state (DC estimate, noise gate state)
 

Private Member Functions

void applyNoiseGate (span< const i16 > pcm, vector< i16 > &output) FL_NOEXCEPT
 Apply noise gate with hysteresis.
 
i32 calculateDCOffset (span< const i16 > pcm, const vector< bool > &validMask) FL_NOEXCEPT
 Calculate DC offset from valid samples only.
 
size filterSpikes (span< const i16 > pcm, vector< bool > &validMask) FL_NOEXCEPT
 Detect and reject spike samples.
 
void removeDCOffset (span< const i16 > pcm, i32 dcOffset, vector< i16 > &output) FL_NOEXCEPT
 Remove DC offset from samples.
 

Private Attributes

SignalConditionerConfig mConfig
 
bool mNoiseGateOpen = false
 Noise gate state.
 
vector< i16 > mOutputBuffer
 
Stats mStats
 
vector< i16 > mTempBuffer
 
vector< bool > mValidMask
 Working buffers (reused to avoid allocations)
 

The documentation for this class was generated from the following files: