MCPcopy Create free account
hub / github.com/FastLED/FastLED / begin

Method begin

src/fl/audio/audio_reactive.cpp.hpp:40–158  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

38Reactive::~Reactive() FL_NOEXCEPT = default;
39
40void Reactive::begin(const ReactiveConfig& config) {
41 setConfig(config);
42
43 // Reset state
44 mCurrentData = Data{};
45 mSmoothedData = Data{};
46 mLastBeatTime = 0;
47 mPreviousVolume = 0.0f;
48
49 // Configure signal conditioning components
50 SignalConditionerConfig scConfig;
51 scConfig.enableDCRemoval = config.enableSignalConditioning;
52 scConfig.enableSpikeFilter = config.enableSignalConditioning;
53 scConfig.enableNoiseGate = config.noiseGate && config.enableSignalConditioning;
54 mSignalConditioner.configure(scConfig);
55 mSignalConditioner.reset();
56
57 NoiseFloorTrackerConfig nfConfig;
58 nfConfig.enabled = config.enableNoiseFloorTracking;
59 mNoiseFloorTracker.configure(nfConfig);
60 mNoiseFloorTracker.reset();
61
62 // Configure frequency bin mapper (obligatory - fixes hardcoded sample rate)
63 FrequencyBinMapperConfig fbmConfig;
64 fbmConfig.mode = FrequencyBinMode::Bins16;
65 fbmConfig.sampleRate = config.sampleRate;
66 fbmConfig.useLogSpacing = config.enableLogBinSpacing;
67 fbmConfig.minFrequency = 20.0f;
68 fbmConfig.maxFrequency = static_cast<float>(config.sampleRate) / 2.0f; // Nyquist
69 // fftBinCount will be set when we know the fft::FFT size (after first processSample)
70 fbmConfig.fftBinCount = 256; // Default, overridden when actual fft::FFT size known
71 mFrequencyBinMapper.configure(fbmConfig);
72
73 // Compute pink noise compensation gains from log-spaced CQ bin centers.
74 // CQ bins are log-spaced from fmin to fmax (default: 90-14080 Hz),
75 // matching Bins::binToFreq().
76 {
77 const float fmin = fft::Args::DefaultMinFrequency();
78 const float fmax = fft::Args::DefaultMaxFrequency();
79 const float m = fl::logf(fmax / fmin);
80 float binCenters[16];
81 for (int i = 0; i < 16; ++i) {
82 binCenters[i] = fmin * fl::expf(m * static_cast<float>(i) / 15.0f);
83 }
84 computePinkNoiseGains(binCenters, 16, mPinkNoiseGains);
85 mPinkNoiseComputed = true;
86 }
87
88 // Reset enhanced beat detection components
89 if (mSpectralFluxDetector) {
90 mSpectralFluxDetector->reset();
91 mSpectralFluxDetector->setThreshold(config.spectralFluxThreshold);
92 }
93
94 // Configure musical beat detection (Phase 3 middleware - lazy creation)
95 if (config.enableMusicalBeatDetection) {
96 if (!mMusicalBeatDetector) {
97 mMusicalBeatDetector = fl::make_unique<detector::MusicalBeat>();

Callers

nothing calls this directly

Calls 9

logfFunction · 0.85
expfFunction · 0.85
computePinkNoiseGainsFunction · 0.85
getEnergyMethod · 0.80
configureMethod · 0.45
resetMethod · 0.45
setThresholdMethod · 0.45
sizeMethod · 0.45
setSampleRateMethod · 0.45

Tested by

no test coverage detected