470 {
471
473
476 delay(20);
477 return;
478 }
479
480
481 AudioSample sample =
audio.next();
482 if (sample.isValid()) {
483
485
486
487 float rms = sample.rms() / 32768.0f;
488
489
490 int32_t maxSample = 0;
491 for (size_t i = 0; i < sample.pcm().size(); i++) {
492 int32_t absSample = fabsf(sample.pcm()[i]);
493 if (absSample > maxSample) {
494 maxSample = absSample;
495 }
496 }
497 float peak = float(maxSample) / 32768.0f;
499
500
502
503
506 }
507
508
510 sample.fft(&fftBins);
511
512
514
515
517 for (
int i = 0; i <
NUM_LEDS; i++) {
518 leds[i].fadeLightBy(-50);
519 }
520 }
521
522
524 case 0:
526 break;
527
528 case 1:
530 break;
531
532 case 2:
534 break;
535
536 case 3:
538 break;
539
540 case 4:
542 break;
543
544 case 5:
546 break;
547
548 case 6:
550 break;
551 }
552 }
553
555
556
557 #ifdef __EMSCRIPTEN__
558 delay(1);
559 #endif
560}
float rms(Slice< const int16_t > data)
FL_DISABLE_WARNING_PUSH FL_DISABLE_WARNING_GLOBAL_CONSTRUCTORS CFastLED FastLED
Global LED strip management instance.
UICheckbox beatFlash("Beat Flash", true)
void drawMatrixRain(float peak)
SoundLevelMeter soundMeter(0.0, 0.0)
bool detectBeat(float energy)
void drawRadialSpectrum(FFTBins *fft, float)
static const int NUM_BANDS
void drawVUMeter(float rms, float peak)
void drawFireEffect(float peak)
void updateAutoGain(float level)
void drawWaveform(const Slice< const int16_t > &pcm, float)
void drawSpectrumBars(FFTBins *fft, float)
UIDropdown visualMode("Visualization Mode", {"Spectrum Bars", "Radial Spectrum", "Waveform", "VU Meter", "Matrix Rain", "Fire Effect", "Plasma Wave"})
UIAudio audio("Audio Input")
UICheckbox beatDetect("Beat Detection", true)
void drawPlasmaWave(float peak)
UICheckbox enableAudio("Enable Audio", true)
void fill_rainbow(struct CRGB *targetArray, int numToFill, fl::u8 initialhue, fl::u8 deltahue=5)
Fill a range of LEDs with a rainbow of colors.