252 {
254
258
261#if defined(FL_IS_WASM)
262 streamDetectorFrames.setGroup("Debug");
263#endif
264
265
268 FL_WARN(
"HydroPack: no audio processor available");
269 return;
270 }
271
272 gAudio->setNoiseFloorTrackingEnabled(
true);
274
275
276
279#if defined(FL_IS_WASM)
280
281
282
283
284
285 if (streamDetectorFrames.value()) {
288 "HYDRO frame=%lu spl=%.1f zcf=%.3f silent=%u "
289 "beat=%.3f bpm=%.1f tempo=%.3f tempo_bpm=%.1f "
290 "vibe_bass=%.3f vibe_att=%.3f vibe_conf=%.3f spike=%u "
291 "bass_raw=%.3f gate=%u\\n",
299 }
300#endif
304 }
308 return;
309 }
316 }
317 });
318}
FL_DISABLE_WARNING_PUSH FL_DISABLE_WARNING_GLOBAL_CONSTRUCTORS CFastLED FastLED
Global LED strip management instance.
fl::UISlider stageThresholdDbSpl("Minimum Music Level (dB SPL)", kDefaultStageThresholdDbSpl, 60.0f, 105.0f, 1.0f)
CRGB previewLeds[kPreviewLedCount]
uint32_t gTriangleFireAtMs
constexpr uint8_t kPreviewLedCount
float gSoundPressureDbSpl
constexpr float kTriangleBassThreshold
void fireAnalyzer(float bass, float threshold, float minIntensity, float &trigger)
fl::UISlider minimumBeatConfidence("Minimum Vibe Beat Confidence", kDefaultMinimumBeatConfidence, 0.0f, 1.0f, 0.05f)
float getVibeBeatConfidence(const fl::audio::detector::VibeLevels &levels)
constexpr uint32_t kTriangleLaunchDelayMs
fl::shared_ptr< fl::audio::Processor > gAudio
fl::UIAudio audioUi("Audio Input", audioConfig)
float gPendingTriangleLevel
constexpr float kCenterBassThreshold
fl::u32 millis()
Universal millisecond timer - returns milliseconds since system startup.
void printf(const char *format) FL_NO_EXCEPT
CRGB sample(const CRGB *grid, const XYMap &xyMap, float x, float y, SampleMode mode)
Sample a pixel from a 2D CRGB grid at floating-point coordinates.