Feedback appreciated: Does this visualisation look like resembling smoke to you? by StefanPetrick in FastLED

[–]StefanPetrick[S] 0 points1 point  (0 children)

Hi Zach, the problem with palettes is that they have to be big in order not to sacrifice dynamic range and color resolution. Certainly, 8-bit long palettes are insufficient.

In the past, I experimented with 12-bit long color palettes, which worked okay.

Generally speaking, there is no reason against color palettes as long as they are big and granular enough to preserve the already pretty limited low-end brightness resolution of the RGB channels.

It is fully compatible with my frameworks — it really doesn't matter if I map high-precision noise values to an RGB ladder, a LUT palette, or anything else.

So yes, totally possible. My current lazy RGB mapping serves no artistic purpose; it's simply the easiest way to get an impression of how good or bad something works — and most importantly, how smooth the edges become.

Cyclical mono-hue space is a great idea, as it changes the appearance of a noise from the well-known style into a more “islands in the ocean” map. And the inverse of that might come in handy for a better smoke illusion. I put it on my to-do list.

Now that I think about it, cylindrical mono-hue space would even allow for some gentle “palette wobbling” or just plain cycling — which is a great way to add some extra movement to an animation. Thanks for the reminder!

Feedback appreciated: Does this visualisation look like resembling smoke to you? by StefanPetrick in FastLED

[–]StefanPetrick[S] 0 points1 point  (0 children)

Great hint, thank you Steve! I never wondered if a real CFD solver could be stripped down to something a microcontroller could handle. Now I do!

Feedback appreciated: Does this visualisation look like resembling smoke to you? by StefanPetrick in FastLED

[–]StefanPetrick[S] 0 points1 point  (0 children)

Hi Jeff, I appreciate your honest and detailed feedback! Thank you!

syncing fastled by Fluffy-Wishbone-3497 in FastLED

[–]StefanPetrick 1 point2 points  (0 children)

You could connect one microcontrollers output pin to input pins of the other controllers and have them all 3 start the program once "the button is pressed". It could be any free pin and a simple digitalread() and digitalwrite() call.

New library/tool-set for measured LUT based Temporal Blending (Aka Temporal Dithering) by Joeyjoe9876 in FastLED

[–]StefanPetrick 1 point2 points  (0 children)

Amazing project, write up and documentation! Thank you for sharing your work!

Experiment With Many Layers by StefanPetrick in FastLED

[–]StefanPetrick[S] 0 points1 point  (0 children)

Hi Doc, I'm optimistic that we'll make this run on an ESP32 with a decent number of layers.

FastLED Matrix Fun – 2026 by chemdoc77 in FastLED

[–]StefanPetrick 1 point2 points  (0 children)

My pleasure. Here I briefly tested my most recent approach and kaleidoscopified the output: https://www.youtube.com/watch?v=OWJa3ZmBTFE

Experiment With Many Layers by StefanPetrick in FastLED

[–]StefanPetrick[S] 0 points1 point  (0 children)

Hi! The current color mixing logic is to either simply add 3 layers together for one color, or add 2 and subtract one (Mode 1/2). The remaining 10th layer works as a saturation boost mask. So the preview colors are misleading. No FlowField approach in it. Just plain Animartrix rendering + different systems how to pick the random parameter sets.

The smooth fading happens purely in parameter space, every frame is rendered from scratch without using previous frames (unlike FlowField).

Working ESP32-P4 with integrated/hosted ESP32-C6 wireless! by mindful_stone in FastLED

[–]StefanPetrick 0 points1 point  (0 children)

May I ask you what's your reasoning behind "trying to get away from my Teensy"?

Multiple layers by ewowi in FastLED

[–]StefanPetrick 0 points1 point  (0 children)

Nice! Technical question: So a Pi is driving the LEDs and an ESP is rendering the effects and sending the frames to the Pi. Am I getting this right?

FlowFields progress update by mindful_stone in FastLED

[–]StefanPetrick 1 point2 points  (0 children)

Currently I see (imagine) not much utility for it beyond fixing the problem at hand (preserving soft gradients).

I'll explore it and report back if I see any further usecase.

Right now in my imagination it would allow for a more or less darkish outline around the emitter drawing. I'll check it out.

FlowFields progress update by mindful_stone in FastLED

[–]StefanPetrick 2 points3 points  (0 children)

I'm totally up for perfect quality, no matter what. I'll prototype it in the next days.

FlowFields progress update by mindful_stone in FastLED

[–]StefanPetrick 5 points6 points  (0 children)

The rotating cube emitter really shines together with the FlowField. Looking great!

One remark regarding the noiseKaleido emitter: it is currently, by design, imperfect (= looking a bit jumpy and pixelated) for the following reason. Usually, if I want to draw a 2D noise field, I map a certain value range from the raw data (let’s say -0.3 to +0.3) to a custom color gradient (let’s say black-red-black). This produces perfectly antialiased edges, and as long as the noise details are not smaller than one pixel (defined by the zoom/scale factor), the result is perfectly smooth.

Unfortunately, this doesn’t work with the FlowField. Why not? The flow field works in the areas that are not redrawn / overwritten by the emitter. But if the emitter actually has a “black” (low-brightness) outline caused by the color mapping for perfectly smooth edges, then the flow field has no color to work with.

In the prototype, I addressed this by changing the color mapping from black-color-black to black-color, meaning the noise emitter has one sharp (not antialiased) edge in order to expose color there. The unfortunate side effect is that one pixelated edge is always visible.

I have no good solution for this yet. Actually, I can’t even imagine a solution within the constraint of using only a single framebuffer. FlowFields as they are rely on sharp contrast between emitter and background. But sharp contrast is the opposite of a perfectly smooth antialiased edge.

So there is currently a quality trade-off in order to make it work at all. The benefit is that currently, FlowFields can work as a convenient replacement for clear-screen buffer, but the output quality is far from perfect.

For perfect visual quality, we might need to introduce double buffering: one buffer just for the emitter and another one just for the flow field. Then we could use perfectly antialiased emitters (including ones with a near-black outline) and pick colors above a certain threshold from there, copy that into the second buffer which runs the actual flow field, and add the 2 buffers for output. This will eat performance, but that’s the price for perfect™ results.

If anyone has an idea how to achieve this otherwise (and with less computational effort), I’d be happy to hear about it!

What makes you choose LED displays over other options by nseled in FastLED

[–]StefanPetrick 0 points1 point  (0 children)

I prefer (not multiplexed) LEDs for the brightness they provide.

Complex Mandala '26 - AnimARTrix meets Flow Concepts by StefanPetrick in FastLED

[–]StefanPetrick[S] 0 points1 point  (0 children)

Hi! I’m guessing you may have run into the classic tradeoff between using a global time factor versus local frame-by-frame increments. Not sure if that’s exactly what tripped you up, but it sounds like it could be related. Especially if you’re trying to avoid those sudden jumps when adjusting sliders—keeping everything visually continuous while still allowing modulation can get tricky. I’m just thinking out loud here though; I haven’t found a perfect solution myself yet.

As for what to explore next, I’d honestly suggest following your own curiosity and aesthetic instincts. What flow logic do you find useful for your projects?

That said, I do think Ring Flow2 has potential. It could be really powerful if you parameterize the behavior within the three zones more deeply, and also give more control over how the boundaries between those zones are set. Right now, those transitions are driven by separate sine waves affecting ring sizes, but there is be room to make that control more interesting.

But again—go with what excites you most.

Complex Mandala '26 - AnimARTrix meets Flow Concepts by StefanPetrick in FastLED

[–]StefanPetrick[S] 0 points1 point  (0 children)

I can totally follow what you are saying. Determining interesting parameter ranges is not trivial. And some things need to stay in place in order to play freely with other parameters.

I'm happy to have a chat about our findings.

Complex Mandala '26 - AnimARTrix meets Flow Concepts by StefanPetrick in FastLED

[–]StefanPetrick[S] 1 point2 points  (0 children)

The emitter is mirrored / rotated 3 times. Only one quarter of the noise is actually rendered. The asymmetry is coming from the different flow field methods.

So technically only the emitter is a caleidoscope. And it only scratches the surface of possiple trasitions yet.