Noisy canvas – Dynamic
First published on Ka of Isis 140528
This is a follow-up to an earlier article, Noisy background – Static. As the title of that article suggests, the main goal at the time was to fill a container with, well, static noise. The present article will take the concept one step further, and knowing full well that future search engine results will suggest this work for anything connected to dynamic audio noise, I just could not resist the temptation to use the term dynamic as opposed to static. Animated might have been more proper.
The work is based on a discussion at Stack Overflow and each technique has already been described in enough detail to render rants from this author superfluous. The first two examples were suggested by Ken Fyrstemberg, aka Epistemex, and shown in the jsfiddle demostrations TV noise (SO) and TV noise analouge (SO) Fast. The third technique was contributed by John Bupit with an accompanying jsfiddle demo. Please study the source code for the web page you are currently on, for implementation on Impossiblue.
canvas container. Remember that the
canvas element uses a set number of pixels based on its width and height, and if scaled, this will ultimately scale its contents. This is a limitation if the
canvas is used in responsive web layouts. Special considerations for this are not discussed here. Instead, each
canvas tag is dropped into a wrapping
div tag and extraneous
canvas noise is hidden from view with
overflow:hidden in CSS whenever the width of the wrapper is smaller than the set maximum.
Method 1 – No-nonsense noise
Fig. If you see no noise above, your browser probably does not support the
Method 2 – Closer to TV noise
Fig. If noise can be clean, this is it!
Method 3 – Bad TV reception
Fig. The noise is overlayed with a moving sinusoidal wave. There is a slight (unintentional) time-based jump in the animation, but that only adds to the realism.
John Bupit explains: ‘I set each pixel random value, and … overlayed a sinusodial (sic) wave that traveled upwards with time just to make it look more realistic. You can play with the constants in the wave to get different effects.’
Method 4 – Bad TV reception with CSS animation
Fig. My own humble contribution; Method 2 overlayed with a CSS transform animation.
Method 5 – GIF animation
Fig. Easy to forget on the bleeding edge, but a GIF animation may be all that is needed – at times. No
A flimsy tutorial on how the GIF animation came to life:
1. Photoshop – RGB – 960x120 pixels – White background.
2. With black as the foreground colour:
Filter > Noise > Add Noise…
3. Duplicate the (now noisy) background (aka the 1st layer) and rotate it 180°. This becomes the 2nd layer.
4. Again duplicate the 1st layer and flip horizontally. This becomes the 3rd layer.
5. Duplicate the 2nd layer and flip horizontally. This becomes the 4th layer.
6. Save each layer independently as a TIF/LZW image.
Note: From now on, the order of the layers is really not important, but if you still follow me…
7. Open the 1st layer in Fireworks and add a new (empty) state.
8. Open the 2nd Photoshop TIF in Fireworks and drag the image into the empty Fireworks state.
9. Repeat for the remaining two TIFs. The original Fireworks file now has four states.
10. Shift-select all four states in the
STATES panel and choose
Properties… from the panel’s fly-out menu.
11. Add state delay as shown below:
12. Save as an animated GIF with an adaptive palette, witout dither, no transparency and no image preview, and let the application remove unused colours.