472 {
473
475
478 delay(20);
479 return;
480 }
481
482
483 AudioSample sample =
audio.next();
484 if (sample.isValid()) {
485
487
488
489 float rms = sample.rms() / 32768.0f;
490
491
492 int32_t maxSample = 0;
493 for (size_t i = 0; i < sample.pcm().size(); i++) {
494 int32_t absSample = fabsf(sample.pcm()[i]);
495 if (absSample > maxSample) {
496 maxSample = absSample;
497 }
498 }
499 float peak = float(maxSample) / 32768.0f;
501
502
504
505
508 }
509
510
512 sample.fft(&fftBins);
513
514
516
517
519 for (
int i = 0; i <
NUM_LEDS; i++) {
520 leds[i].fadeLightBy(-50);
521 }
522 }
523
524
526 case 0:
528 break;
529
530 case 1:
532 break;
533
534 case 2:
536 break;
537
538 case 3:
540 break;
541
542 case 4:
544 break;
545
546 case 5:
548 break;
549
550 case 6:
552 break;
553 }
554 }
555
557
558
559 #ifdef __EMSCRIPTEN__
560 delay(1);
561 #endif
562}
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.