188 {
191 }
192
193
195
197
199 if (!do_frame) {
200 continue;
201 }
202
203
205
206 static float floatBuffer[512];
207 size_t numSamples =
fl::min(
sample.pcm().size(), (
size_t)512);
208 for (size_t i = 0; i < numSamples; i++) {
209 floatBuffer[i] =
sample.pcm()[i] / 32768.0f;
210 }
211 pitchEngine->processFrame(floatBuffer, numSamples);
212 }
213
216
218
221
223 for (
size_t i = 0; i <
sample.pcm().size(); ++i) {
227 }
228 }
229 float anim =
232
234
235
236
238
240 auto max_x =
fftOut.raw().size() - 1;
242 for (
size_t i = 0; i <
fftOut.raw().size(); ++i) {
245
250
251
252
253
255 c.fadeToBlackBy(255 - heatIndex);
257
258 }
259 }
260
263 }
264
271 }
272
273
275
277 notePos =
fl::clamp(notePos, 0.0f, 1.0f);
280
282 }
283
284 if (true) {
287
291 }
292 }
293
294
296
298}
fl::UIAudio audio("Audio Input")
fl::CRGB framebuffer[NUM_LEDS]
fl::MaxFadeTracker audioFadeTracker(attackTimeSeconds.value(), decayTimeSeconds.value(), outputTimeSec.value(), 44100)
fl::audio::SoundLevelMeter soundLevelMeter(.0, 0.0)
fl::audio::fft::Bins fftOut(WIDTH)
float rms(fl::span< const int16_t > data)
fl::XYMap frameBufferXY(WIDTH, HEIGHT, IS_SERPINTINE)
fl::UICheckbox enableRMS("Enable RMS visualization", false)
fl::UICheckbox enableFFT("Enable FFT visualization", true)
fl::UICheckbox enablePitchDetect("Enable pitch detection", false)
fl::XYMap ledsXY(WIDTH/2, HEIGHT/2, IS_SERPINTINE)
fl::UICheckbox enableVolumeVis("Enable volume visualization", false)
FL_DISABLE_WARNING_PUSH FL_DISABLE_WARNING_GLOBAL_CONSTRUCTORS CFastLED FastLED
Global LED strip management instance.
constexpr common_type_t< T, U > max(T a, U b) FL_NOEXCEPT
fl::SoundToMIDIEngine * pitchEngine
CRGB ColorFromPalette(const CRGBPalette16 &pal, fl::u8 index, fl::u8 brightness, TBlendType blendType)
const TProgmemRGBPalette16 HeatColors_p
Approximate "black body radiation" palette, akin to the FastLED HeatColor() function.
FL_DISABLE_WARNING_PUSH U constexpr common_type_t< T, U > min(T a, U b) FL_NOEXCEPT
void downscale(const CRGB *src, const XYMap &srcXY, CRGB *dst, const XYMap &dstXY)
FASTLED_FORCE_INLINE U map_range(T value, T in_min, T in_max, U out_min, U out_max) FL_NOEXCEPT
FASTLED_FORCE_INLINE float fade(float t)
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.
constexpr enable_if< is_fixed_point< T >::value, T >::type clamp(T x, T lo, T hi) FL_NOEXCEPT
#define FASTLED_UNUSED(x)