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

◆ setup()

void setup ( )

Definition at line 138 of file Animartrix.ino.

138 {
139 Serial.begin(115200);
140 FL_WARN("*** SETUP ***");
141
142 auto screen_map = xyMap.toScreenMap();
143 screen_map.setDiameter(LED_DIAMETER);
144 FastLED.addLeds<WS2811, PIN_DATA, COLOR_ORDER>(leds, NUM_LEDS)
145 .setCorrection(TypicalLEDStrip)
146 .setScreenMap(screen_map);
147 FastLED.setBrightness(brightness);
149 fxEngine.addFx(animartrix);
150
151 colorOrder.onChanged([](fl::UIDropdown &dropdown) {
152 int value = dropdown.as_int();
153 switch(value) {
154 case 0: value = static_cast<int>(RGB); break;
155 case 1: value = static_cast<int>(RBG); break;
156 case 2: value = static_cast<int>(GRB); break;
157 case 3: value = static_cast<int>(GBR); break;
158 case 4: value = static_cast<int>(BRG); break;
159 case 5: value = static_cast<int>(BGR); break;
160 }
161 animartrix.setColorOrder(static_cast<fl::EOrder>(value));
162 });
163
164 // Hook Vibe bass level to FxEngine timewarp.
165 // onVibeLevels fires every frame with self-normalizing levels:
166 // bass ~1.0 = average, >1.0 = louder than normal, <1.0 = quieter
167 // We map bass level directly to animation speed so beats accelerate
168 // the animation.
169 audioProcessor.onVibeLevels([](const fl::audio::detector::VibeLevels &vibe) {
170 if (!enableVibeReactive.value()) {
171 return;
172 }
173 // Print beat/mid/treble levels and spike flags each frame
174 FL_WARN("Vibe: bass=" << vibe.bass << " mid=" << vibe.mid << " treb=" << vibe.treb
175 << " | spikes: bass=" << vibe.bassSpike << " mid=" << vibe.midSpike << " treb=" << vibe.trebSpike);
176
177 float bassBoost = (vibe.bass - 1.0f) * vibeSpeedMultiplier.value();
178 float speed = vibeBaseSpeed.value() + bassBoost;
179 speed *= timeSpeed.value();
180 fxEngine.setSpeed(speed);
181 });
182
183 // Log spike events
184 audioProcessor.onVibeBassSpike([]() {
185 FL_WARN(">>> BASS SPIKE!");
186 });
187 audioProcessor.onVibeMidSpike([]() {
188 FL_WARN(">>> MID SPIKE!");
189 });
190 audioProcessor.onVibeTrebSpike([]() {
191 FL_WARN(">>> TREB SPIKE!");
192 });
193}
#define COLOR_ORDER
fl::UISlider vibeSpeedMultiplier("Vibe Speed Multiplier", 3.0, 0.0, 10.0, 0.1)
fl::XYMap xyMap
fl::audio::Processor audioProcessor
fl::UICheckbox enableVibeReactive("Enable Vibe Reactive", false)
fl::FxEngine fxEngine(NUM_LEDS)
#define NUM_LEDS
fl::Animartrix animartrix(xyMap, FIRST_ANIMATION)
#define PIN_DATA
#define LED_DIAMETER
fl::CRGB leds[NUM_LEDS]
fl::UISlider timeSpeed("Time Speed", 1, -10, 10,.1)
fl::UISlider brightness("Brightness", BRIGHTNESS, 0, 255)
fl::UIDropdown colorOrder("Color Order", {"RGB", "RBG", "GRB", "GBR", "BRG", "BGR"})
void setup_max_power()
fl::UISlider vibeBaseSpeed("Vibe Base Speed", 1.0, 0.0, 5.0, 0.1)
FL_DISABLE_WARNING_PUSH FL_DISABLE_WARNING_GLOBAL_CONSTRUCTORS CFastLED FastLED
Global LED strip management instance.
uint16_t speed
Definition Noise.ino:66
int as_int() const FL_NOEXCEPT
Definition dropdown.h:127
constexpr EOrder BGR
Definition eorder.h:22
constexpr EOrder RBG
Definition eorder.h:18
constexpr EOrder BRG
Definition eorder.h:21
constexpr EOrder GRB
Definition eorder.h:19
constexpr EOrder RGB
Definition eorder.h:17
constexpr EOrder GBR
Definition eorder.h:20
@ TypicalLEDStrip
Typical values for SMD5050 LEDs.
Definition color.h:15
#define FL_WARN(X)
Definition log.h:276
EOrder
RGB color channel orderings, used when instantiating controllers to determine what order the controll...
Definition eorder.h:13
#define Serial
Definition serial.h:304

References animartrix, fl::UIDropdown::as_int(), audioProcessor, fl::audio::detector::VibeLevels::bass, fl::audio::detector::VibeLevels::bassSpike, BGR, BRG, brightness, COLOR_ORDER, colorOrder, enableVibeReactive, FastLED, FL_WARN, fxEngine, GBR, GRB, LED_DIAMETER, leds, fl::audio::detector::VibeLevels::mid, fl::audio::detector::VibeLevels::midSpike, NUM_LEDS, PIN_DATA, RBG, RGB, Serial, setup_max_power(), speed, timeSpeed, fl::audio::detector::VibeLevels::treb, fl::audio::detector::VibeLevels::trebSpike, TypicalLEDStrip, vibeBaseSpeed, vibeSpeedMultiplier, and xyMap.

+ Here is the call graph for this function: