← Gallery № 71 · canvas-2d

Murmuration

Thousands of flocking particles forming flowing ribbons with emergent density waves against a warm twilight sky.

What is Murmuration?

Murmuration is a free Canvas 2D web effect in the TappyPrism library. Thousands of flocking particles forming flowing ribbons with emergent density waves against a warm twilight sky. It is drawn with the Canvas 2D API, which trades some GPU efficiency for the widest possible browser and device support. It ships as a single self-contained HTML file (murmuration.html) with zero dependencies — no npm package, no framework, no build step. It exposes 3 live parameters — Flock Size, Cohesion, Twilight — adjustable in the browser or at runtime.

Parameters

ParameterKeyRangeDefault
Flock SizeFLOCK_SIZE0.3 – 21
CohesionCOHESION0.3 – 21
TwilightPALETTE0 – 11

How to add Murmuration to your page

  1. Download the standalone file murmuration.html and copy its source into your project.
  2. Or embed it as a background iframe:
    <iframe src="https://prism.tappypotato.com/fx/murmuration.html" style="position:fixed;inset:0;width:100%;height:100%;border:0;z-index:-1" title="Murmuration"></iframe>
  3. Tune it at runtime with postMessage:
    iframe.contentWindow.postMessage({ type: 'param', name: 'FLOCK_SIZE', value: 1 }, '*');

Frequently asked questions

What is Murmuration?

Murmuration is a free Canvas 2D web effect in the TappyPrism library. Thousands of flocking particles forming flowing ribbons with emergent density waves against a warm twilight sky. It is drawn with the Canvas 2D API, which trades some GPU efficiency for the widest possible browser and device support. It ships as a single self-contained HTML file (murmuration.html) with zero dependencies — no npm package, no framework, no build step. It exposes 3 live parameters — Flock Size, Cohesion, Twilight — adjustable in the browser or at runtime.

How do I add Murmuration to my website?

Download the standalone file at https://prism.tappypotato.com/fx/murmuration.html and copy its source into your page, or embed it as a background iframe: <iframe src="https://prism.tappypotato.com/fx/murmuration.html" style="position:fixed;inset:0;width:100%;height:100%;border:0;z-index:-1" title="Murmuration"></iframe>. Tune it live with postMessage, e.g. iframe.contentWindow.postMessage({ type: 'param', name: 'FLOCK_SIZE', value: 1 }, '*').