{ "name": "blink fade", "id": "kuJfFyCSkCKNasyNE", "sources": { "main": "/*\n Blink fade\n \n Blink fade is a great pattern to get acquainted with arrays in Pixelblaze.\n \n An array is a numbered collection of values. In this pattern we use two\n arrays, one for the brightness value of each pixel, and one for the color hue\n of each pixel.\n \n It's all in the name: Each pixel will blink to life, then fade out. Since we\n store every pixel in an array and do most operations between frames, this\n is also an example of frame buffering. Most of the interesting code is in \n beforeRender(), and render() just plucks out the precomputed values needed \n for that pixel.\n \n Each pixel starts its lifespan with a random brightness value between 0 and\n 1. Between every frame, we reduce each pixel's value in a linear way such\n that it loses 10% of full brightness every 200ms. That means a pixel that was\n \"born\" with a full 0.9999 brightness would take 2 seconds to decay.\n \n We know a pixel needs to be reincarnated when it's value (after reduction)\n has become negative. If that's the case, we rebirth it with a new random\n brightness value. It's new color is determined by two factors: a looping \n timer, and the position of the pixel in the overall strip. Notice in the\n preview how the pixels in the center seem to originate new colors and that\n those colors propogate to the edges.\n \n An array element can be a function instead of a value. Check out the\n \"Example: Modes and Waveforms\" pattern to see that technique in action.\n \n And remember, if you forget any of this, it's all in the concise language\n reference right on this page below your code!\n*/\n\n/*\n This is how you make an array. `pixelCount` is a special variable provided in\n all patterns that is set to the total number of pixels configured in the \n Settings tab. \n*/\nvalues = array(pixelCount)\nhues = array(pixelCount)\n\n\n// Called between frames\nexport function beforeRender(delta) {\n // Loop through every pixel\n\tfor (i = 0; i < pixelCount; i++) {\n\t // `delta` is how many ms have elapsed since the last beforeRender().\n\t // Therefore at 200 Frames Per Second (FPS), delta = 5, and each pixel's \n\t // 0..1 value would be reduced by 0.0025 each frame.\n \tvalues[i] -= .005 * delta * .1\n \t\n \t// If this pixel is now full faded fully off\n \tif (values[i] <= 0) {\n \t values[i] = random(1) // Bump it back up to a random number 0..1\n \t \n \t /*\n \t Set the new color to be the sum of two components: \n \t 1) A timer that sawtooths from 0 to 1 every 4.6 seconds\n \t 2) A 0.2 boost for the pixels at the center of the strip \n \t If you're thinking, \"Wait, aren't hue values between 0 and 1? This goes\n \t from 0 to 1.2,\" just know that hsv() 'wraps' hues for us. 1.1 => 0.1\n */\n \t hues[i] = time(4.6 / 65.536) + 0.2 * triangle(i / pixelCount)\n \t}\n\t}\n}\n\n/*\n render() will be called once per pixel per frame, and `index` is the pixel's \n position in the strip. The first pixel is index 0. If we have 60 total pixels \n (pixelCount == 60), the last one would be index 59.\n*/\nexport function render(index) {\n h = hues[index] // Retrieve the hue for this pixel\n v = values[index] // Retrieve the brightness value for this pixel\n v = v * v // Gamma scaling: v is in 0..1 so this makes small v smaller \n\thsv(h, 1, v) // Saturation is 1 -- no white is mixed in\n}\n" }, "preview": "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" }