Look! A noise field that is completely modulated by itself.

Look!
A noise field that is completely modulated by itself.
The most vivid and alive animation I have ever created. A self-fertilizing one! :wink:
(Yes, humbleness and understatement I still have to learn.)
Sometimes I can feel the animation breathing… wondering where to go next.

No external paramerters are used, not even millis(). This animation is based on only one single noise layer. And it takes not much code at all.
If you“re ready to have a closer look - here you go: https://gist.github.com/StefanPetrick/e6aeee3a7d75ee9f713b0d451fba6607

https://www.youtube.com/watch?v=H9V0Dc_6hv0&feature=youtu.be

@Stefan_Petrick ​ great job

@Stefan_Petrick - Awesome! Thank you for sharing your code.

Thanks, @Michael_Aramini_Mick and you“re welcome @Ken_White . In case something in the code is unclear - don“t hesitate to ask.

The noise values perform sometimes rapid changes resulting in fast movements / changes of the animation. We could soften this by averaging over some neighbor values or even over a small rectangle of data. But then the code might become a bit messy or long. Just saying.

@Stefan_Petrick amazeballs! programmatic animations are my favourite things!

im confused as to where you are getting width and height . also scale x[0]. and where are you getting buffer from?
buffer[XY(x, y)]

@Tommy_Sciano , the variables are defined in the beginning:
// matrix size and center
uint8_t Width = 16;
uint8_t Height = 16;
uint8_t CentreX = (Width / 2) - 1;
uint8_t CentreY = (Height / 2) - 1;

#define NUM_LAYERS 1
uint32_t x[NUM_LAYERS];
uint32_t y[NUM_LAYERS];
uint32_t z[NUM_LAYERS];
uint32_t scale_x[NUM_LAYERS];
uint32_t scale_y[NUM_LAYERS];
uint8_t noise[3][16][16];

Where did you read buffer[XY(x, y)] in the code?

Here is the complete code that should run out of the box: https://gist.github.com/StefanPetrick/c856b6d681ec3122e5551403aabfcc68

ahh, sorry I read buffer in the audio one

@Tommy_Sciano Buffer in the other snippet is a CRGB array with the same size as leds. So:
#define NUM_LEDS 256
CRGB leds[NUM_LEDS];
CRGB buffer[NUM_LEDS];

thanks! cant wait to test it out!

This is pretty slick just on a short strip of WS2801’s. I’m doing a project for my niece, and this was a good addition. I’ll post some shots when I’m done, but it’s still a work in progress. Thanks for this. It’s cool.

Great to know you guys play with it! Here an improved version of this animation. I got the particularly erratic movements smoother now by averaging every control point over 4 neighbor noise values.
I also added a noise influence causing the colormapping to become slightly desaturated controlled by the noise. That adds a bit more ā€œbreathingā€ to the animation.

Would you happen to have the other gradient pallets for pit? Or am I missing something, cant seem to find them =(

Hi, @Tommy_Sciano . The code shows everything you need to replicate the very same animation. https://gist.github.com/StefanPetrick/c856b6d681ec3122e5551403aabfcc68 Which ā€œotherā€ palette do you mean? There is just one palette - this blue/orange one (defined in line 23). The other colors come from the HSV overlay (line140). This is basically just a rainbow as described here https://github.com/FastLED/FastLED/wiki/Pixel-reference#setting-hsv-colors-

I’m sorry, I meant noise_audio2().

CRGBPalette16 Pal2( pit4 )
CRGBPalette16 Pal( pit3 );

DEFINE_GRADIENT_PALETTE( pit3 ) {
0, 3, 3, 3,

128, 255, 3, 3,

255, 3, 3, 3
};

DEFINE_GRADIENT_PALETTE( pit4 ) {
0, 3, 3, 3,

128, 3, 3, 255,

255, 3, 3, 3
};

I switched to a red palette for a heart display I’m doing. It looks AWESOME, and the blend from red to violet to white with hints of orange is perfect for the form.

Thanks again for this. It’s wonderful. I may pull it into my window lights if I ever get that rebuilt (we put new windows in, the led strips no longer fit right).

@Peter_Buelow Nice to hear that you find it usefull. Maybe you like to share a photo or video here when you got everything done.