FastLED 3.10.8
Loading...
Searching...
No Matches
silence.h
Go to the documentation of this file.
1#pragma once
2
4#include "fl/stl/function.h"
5#include "fl/stl/vector.h"
6#include "fl/stl/noexcept.h"
7
8namespace fl {
9namespace audio {
10namespace detector {
11
12class Silence : public Detector {
13public:
16
17 void update(shared_ptr<Context> context) FL_NO_EXCEPT override;
18 void fireCallbacks() FL_NO_EXCEPT override;
19 bool needsFFT() const FL_NO_EXCEPT override { return false; } // Uses RMS from Sample
20 const char* getName() const FL_NO_EXCEPT override { return "Silence"; }
21 void reset() FL_NO_EXCEPT override;
22
23 // Callbacks (multiple listeners supported)
24 function_list<void(u8 silent)> onSilence;
25 function_list<void()> onSilenceStart;
26 function_list<void()> onSilenceEnd;
27 function_list<void(u32 durationMs)> onSilenceDuration;
28
29 // State access
30 bool isSilent() const FL_NO_EXCEPT { return mIsSilent; }
33 float getCurrentRMS() const FL_NO_EXCEPT { return mCurrentRMS; }
34
35 // Configuration
36 void setSilenceThreshold(float threshold) FL_NO_EXCEPT { mSilenceThreshold = threshold; }
37 void setMinSilenceDuration(u32 durationMs) FL_NO_EXCEPT { mMinSilenceDuration = durationMs; }
38 void setMaxSilenceDuration(u32 durationMs) FL_NO_EXCEPT { mMaxSilenceDuration = durationMs; }
39 void setHysteresis(float hysteresis) FL_NO_EXCEPT { mHysteresis = hysteresis; }
40
41private:
47
53
54 // History for smoothing
58
62
63 static constexpr u32 DEFAULT_MIN_SILENCE_MS = 500;
64 static constexpr u32 DEFAULT_MAX_SILENCE_MS = 60000; // 1 minute
65 static constexpr float DEFAULT_SILENCE_THRESHOLD = 0.01f;
66 static constexpr float DEFAULT_HYSTERESIS = 0.2f;
67 static constexpr int DEFAULT_HISTORY_SIZE = 5;
68
70 bool checkSilenceCondition(float smoothedRMS) FL_NO_EXCEPT;
71};
72
73} // namespace detector
74} // namespace audio
75} // namespace fl
u32 getSilenceDuration() const FL_NO_EXCEPT
PendingSilenceEvent mPendingEvent
Definition silence.h:60
void setMinSilenceDuration(u32 durationMs) FL_NO_EXCEPT
Definition silence.h:37
static constexpr u32 DEFAULT_MIN_SILENCE_MS
Definition silence.h:63
static constexpr u32 DEFAULT_MAX_SILENCE_MS
Definition silence.h:64
float getSilenceThreshold() const FL_NO_EXCEPT
Definition silence.h:32
function_list< void(u32 durationMs)> onSilenceDuration
Definition silence.h:27
bool isSilent() const FL_NO_EXCEPT
Definition silence.h:30
float getCurrentRMS() const FL_NO_EXCEPT
Definition silence.h:33
void setMaxSilenceDuration(u32 durationMs) FL_NO_EXCEPT
Definition silence.h:38
bool needsFFT() const FL_NO_EXCEPT override
Definition silence.h:19
function_list< void()> onSilenceStart
Definition silence.h:25
function_list< void()> onSilenceEnd
Definition silence.h:26
~Silence() FL_NO_EXCEPT override
bool checkSilenceCondition(float smoothedRMS) FL_NO_EXCEPT
function_list< void(u8 silent)> onSilence
Definition silence.h:24
void reset() FL_NO_EXCEPT override
vector< float > mRMSHistory
Definition silence.h:55
void setHysteresis(float hysteresis) FL_NO_EXCEPT
Definition silence.h:39
float getSmoothedRMS() FL_NO_EXCEPT
void setSilenceThreshold(float threshold) FL_NO_EXCEPT
Definition silence.h:36
const char * getName() const FL_NO_EXCEPT override
Definition silence.h:20
static constexpr float DEFAULT_SILENCE_THRESHOLD
Definition silence.h:65
void fireCallbacks() FL_NO_EXCEPT override
static constexpr float DEFAULT_HYSTERESIS
Definition silence.h:66
static constexpr int DEFAULT_HISTORY_SIZE
Definition silence.h:67
void update(shared_ptr< Context > context) FL_NO_EXCEPT override
unsigned char u8
Definition stdint.h:131
u8 u8 fract8 blur_amount FL_NO_EXCEPT
Definition blur.h:186
Base definition for an LED controller.
Definition crgb.hpp:179