
Bass Pulse
Background3DSeamless loop8 seconds
A siren moving through the dark, its sound rings bunching up and turning blue ahead of it and stretching out red behind. Loops perfectly.
In Science & maths, Music & sound, Light, glass & shine
Next: Bass PulseSurprise me
Your current settings go with it. Combine several clips and hand them over together from your sequence.
Presets
The siren's speed over the speed of the waves; above 1 the rings pile into a shock cone.
The preview runs the same code your AI receives. These settings travel with the hand-off.
The Doppler effect made visible. A siren moves along a closed path and sends out a ring of sound at regular moments; every ring keeps its own centre, where the siren was when it left, so the rings crowd together and turn blue ahead of the siren and stretch apart and turn red behind it. Make the siren faster than the sound and the rings pile up into a shock cone. Choose the siren's speed against the sound, the number of rings, the path (circle, sweep or figure eight), the colours, the line thickness, the brightness and the size of the path.
src/doppler-siren.js is the ingredient your AI reuses. demo.js is only the example scene around it, and uses the demo harness only for the demo.
src/doppler-siren.jscreateDopplerSiren({ mach?, waves?, path?, palette?, thickness?, brightness?, radius? }) => { scene, camera, setSize(width, height), update(time, loopSeconds), dispose() }createBloomPass(renderer, { width, height, glow?, exposure?, grain? }) => { render(scene, camera, output?), dispose() }PALETTES: { classic, neon, gold, mono }three@0.185.1 (source) — Renderer and a full-screen shader material.apw-runtime@1.0.0 (demo) — Demo harness.Coordinates: Screen-centred, ±1 vertically; the siren moves on a path of the chosen radius around the origin; a ring's radius is the wave speed times its age.
Lighting: Self-lit lines; the bloom provides the glow.
Timing: update(time, loopSeconds) sets the loop phase; frames render in any order.
npm install
npm run render -- doppler-siren/1.0.0 --out my-video.mp4Needs Node 18+, ffmpeg and Chrome/Chromium. Add --params my-settings.json (from Copy settings) for your own settings.sha256:dd591cfa52462ecd…
Background3DSeamless loop8 seconds

3D object3DSeamless loop16 seconds

Background3DSeamless loop12 seconds

Background3DSeamless loop15 seconds

Background3DSeamless loop14 seconds

Background3DSeamless loop12 seconds

Background3DSeamless loop10 seconds

Background3DSeamless loop12 seconds