
Bass Pulse
Background3DSeamless loop8 seconds
A two-octave piano playing a repeating tune: keys press down and glowing notes and colour rings rise from them. 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 preview runs the same code your AI receives. These settings travel with the hand-off.
A keyboard playing itself. A two-octave piano of ivory and ebony keys plays a little tune that repeats every loop: each note presses its key down on its hinge, and as it sounds a glowing note rises from the key on a lazy sway, followed by rings of colour that spread as they climb and fade, hue by pitch. Choose the tune (arpeggio, scale or chords), the colours of the rising sound (rainbow, aurora, ember or mono), how high the sound climbs, the finish of the piano (ivory, rose or midnight), the backdrop colour and whether the camera sways.
src/piano-keys.js is the ingredient your AI reuses. demo.js is only the example scene around it, and uses chrome-material only for the demo.
src/piano-keys.jscreatePiano({ tune?, palette?, rise?, body? }) => { group, setProgress(progress), dispose() }TUNES: { arpeggio, scale, chords }PALETTES: { rainbow, aurora, ember, mono }three@0.185.1 (source) — Renderer, geometry and shader materials.chrome-material@1.1.0 (demo) — Studio environment light, backdrop and contact shadow.apw-runtime@1.0.0 (demo) — Demo harness.Coordinates: Fourteen white keys 1 wide and 5 long run along x from −6.5 to 6.5, hinged at z = −2.5; the casing stands behind them; sound rises from y ≈ 1 to y ≈ 8.
Lighting: A warm key light with a shadow map, a shadow-catching floor and the studio environment; the rising sound is self-lit and additive.
Timing: setProgress(progress) presses each struck key and places each note and ring; frames render in any order.
npm install
npm run render -- piano-keys/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:c69fb8a50445390a…
Background3DSeamless loop8 seconds

Background3DSeamless loop10 seconds

3D object3DSeamless loop9.6 seconds

3D object3DSeamless loop16 seconds

3D object3DSeamless loop16 seconds

3D object3DSeamless loop16 seconds

3D object3DSeamless loop16 seconds

3D object3DSeamless loop16 seconds