Bass Ripple
Vibrating speaker mesh with beat-synced wave displacement and metallic specular sheen.
What is Bass Ripple?
Bass Ripple renders a speaker mesh as a height field and drives it with a beat-synced wave. A low-frequency oscillator displaces the mesh outward from the centre, and its phase is tied to a beat rate you control, so the cone pulses in time instead of wobbling at random. A metallic specular term rides on the displacement, so light rakes across the ridges as they move. Beat speed and bass intensity are the two live parameters. It is a single full-screen fragment shader with noise for the fine grain, device pixel ratio is capped at 2, and it honours prefers-reduced-motion. Best as a hero for music, audio or event pages where the motion should feel like it is keeping time with something.
Bass Ripple is a free WebGL web effect in the TappyPrism library. Vibrating speaker mesh with beat-synced wave displacement and metallic specular sheen. It is rendered on the GPU by a fragment shader, so it costs almost nothing on the CPU and works well as a full-screen background. It ships as a single self-contained HTML file (bass-ripple.html) with zero dependencies — no npm package, no framework, no build step. It exposes 2 live parameters — Beat Speed, Bass Intensity — adjustable in the browser or at runtime.
Parameters
| Parameter | Key | Range | Default |
|---|---|---|---|
| Beat Speed | BASS_FREQ | 0.1 – 2 | 0.4 |
| Bass Intensity | BASS_INTENSITY | 0.3 – 2 | 1 |
How to add Bass Ripple to your page
- Download the standalone file bass-ripple.html and copy its source into your project.
- Or embed it as a background iframe:
<iframe src="https://prism.tappypotato.com/fx/bass-ripple.html" style="position:fixed;inset:0;width:100%;height:100%;border:0;z-index:-1" title="Bass Ripple"></iframe> - Tune it at runtime with postMessage:
iframe.contentWindow.postMessage({ type: 'param', name: 'BASS_FREQ', value: 0.4 }, '*');
Frequently asked questions
What is Bass Ripple?
Bass Ripple renders a speaker mesh as a height field and drives it with a beat-synced wave. A low-frequency oscillator displaces the mesh outward from the centre, and its phase is tied to a beat rate you control, so the cone pulses in time instead of wobbling at random. A metallic specular term rides on the displacement, so light rakes across the ridges as they move. Beat speed and bass intensity are the two live parameters. It is a single full-screen fragment shader with noise for the fine grain, device pixel ratio is capped at 2, and it honours prefers-reduced-motion. Best as a hero for music, audio or event pages where the motion should feel like it is keeping time with something. Bass Ripple is a free WebGL web effect in the TappyPrism library. Vibrating speaker mesh with beat-synced wave displacement and metallic specular sheen. It is rendered on the GPU by a fragment shader, so it costs almost nothing on the CPU and works well as a full-screen background. It ships as a single self-contained HTML file (bass-ripple.html) with zero dependencies — no npm package, no framework, no build step. It exposes 2 live parameters — Beat Speed, Bass Intensity — adjustable in the browser or at runtime.
How do I add Bass Ripple to my website?
Download the standalone file at https://prism.tappypotato.com/fx/bass-ripple.html and copy its source into your page, or embed it as a background iframe: <iframe src="https://prism.tappypotato.com/fx/bass-ripple.html" style="position:fixed;inset:0;width:100%;height:100%;border:0;z-index:-1" title="Bass Ripple"></iframe>. Tune it live with postMessage, e.g. iframe.contentWindow.postMessage({ type: 'param', name: 'BASS_FREQ', value: 0.4 }, '*').