FastLED 3.9.15
Loading...
Searching...
No Matches

◆ update()

void fl::audio::detector::Backbeat::update ( shared_ptr< Context > context)
overridevirtual

Implements fl::audio::Detector.

Definition at line 57 of file backbeat.cpp.hpp.

57 {
58 // Update Beat if we own it
60 updateBeatDetector(context);
61 }
62
63 // Update Downbeat if we own it
65 mDownbeatDetector->update(context);
66 }
67
68 // Reset backbeat flag
69 mBackbeatDetected = false;
70
71 // Check if a beat occurred
72 bool beatDetected = mBeatDetector && mBeatDetector->isBeat();
73
74 // Update beat position tracking
76
77 // Process beat if detected
78 if (beatDetected) {
79 // Get fft::FFT for multi-band analysis
80 mRetainedFFT = context->getFFT16();
81 const fft::Bins& fft = *mRetainedFFT;
82
83 // Calculate multi-band accent
84 MultibandAccent accent = calculateMultibandAccent(fft);
85
86 // Detect backbeat accent strength
87 float accentStrength = detectBackbeatAccent(accent);
88 mCurrentStrength = accentStrength;
89
90 // Detect backbeat
91 mBackbeatDetected = detectBackbeat(accentStrength, fft);
92
95
96 // Update backbeat profile
97 if (mAdaptive) {
99 }
100
101 // Store accent in backbeat history
102 if (mBackbeatAccents.size() >= MAX_ACCENT_HISTORY) {
103 mBackbeatAccents.pop_front();
104 }
105 mBackbeatAccents.push_back(accentStrength);
106 } else {
107 // Store accent in non-backbeat history
109 mNonBackbeatAccents.pop_front();
110 }
111 mNonBackbeatAccents.push_back(accentStrength);
112 }
113
114 // Update adaptive thresholds
115 if (mAdaptive) {
117 }
118
119 // Store current accent for next frame
120 mPreviousAccent = accent;
121 }
122}
AudioAnalyzeFFT1024 fft
shared_ptr< Beat > mBeatDetector
Definition backbeat.h:122
MultibandAccent calculateMultibandAccent(const fft::Bins &fft)
float detectBackbeatAccent(const MultibandAccent &accent)
deque< float > mBackbeatAccents
Definition backbeat.h:149
MultibandAccent mPreviousAccent
Definition backbeat.h:148
static constexpr size MAX_ACCENT_HISTORY
Definition backbeat.h:151
bool detectBackbeat(float accentStrength, const fft::Bins &fft)
void updateBeatDetector(shared_ptr< Context > context)
shared_ptr< Downbeat > mDownbeatDetector
Definition backbeat.h:123
shared_ptr< const fft::Bins > mRetainedFFT
Definition backbeat.h:163
void updateBackbeatProfile(const fft::Bins &fft)
deque< float > mNonBackbeatAccents
Definition backbeat.h:150

References Backbeat(), calculateMultibandAccent(), detectBackbeat(), detectBackbeatAccent(), mAdaptive, MAX_ACCENT_HISTORY, mBackbeatAccents, mBackbeatDetected, mBeatDetector, mCurrentBeat, mCurrentStrength, mDownbeatDetector, mLastBackbeatNumber, mNonBackbeatAccents, mOwnsBeatDetector, mOwnsDownbeatDetector, mPreviousAccent, mRetainedFFT, update(), updateAdaptiveThresholds(), updateBackbeatProfile(), updateBeatDetector(), and updateBeatPosition().

Referenced by ~Backbeat(), and update().

+ Here is the call graph for this function:
+ Here is the caller graph for this function: