Originally shared by Daniel Garcia All these videos are running the same code.

Originally shared by Daniel Garcia

All these videos are running the same code. The only difference are values for flags controlling 8 or 16 bit noise, how many octaves, the scale for the x&y axis, and how fast to advance along the a axis. (And toggling between if hue cycles via noise or not).

I can’t wait to get a playground program for people out there to play with. It’s fantastic, to me, the variety of things I can pull out of here.

And I really can’t wait to see locus lit up now.

So far, everywhere I look online, when I see people asking/talking about using perlin (or its successor, simplex) noise on arduino, the response is almost universally “compute a few points using the noise functions, then interpolate between them for the rest of your points.”

With this code - you can compute simplex noise for every point, while still maintaining 15-51fps on a 256 pixel array (based on how many octaves you’re using) - and that’s if you’re using 3d noise to fill/animate a 2d matrix. If you’re using 2d noise, then it’s more like 30-100fps on a 256 pixel array.

I think this has the potential to change things up a lot for people who are still doing led work on 8-bit platforms like the AVRs. I’m also hoping to turn my eye to some arm based optimizations to allow for even higher frame counts/numbers of leds next.

f3245877a8a70c1cdcd26317cfbdd3de.gif

56bdcc5bed5a6f7d72882783cc546fbe.gif

fa8e0f5b0f9849002c4d27f17cc377e5.gif

90e21dceb8817db6559ea1b96954a72c.gif

Thanks for your effort in making this happen. Indeed the response was always interpolation, glad you proved this wrong. This sure makes interesting effects more accessible for the Arduino community.