Risset rhythm

Layer tempo cycles to create a beat that appears to accelerate or decelerate forever.

npx web-audio-api risset-rhythm up 120 20s
dir=<up|down>
movement direction
bpm=<number>
center tempo
-d, --duration <time>
run time (CLI accepts s/m/h suffixes; default: 20s)
sound=<preset>
click (default) or a metronome preset: classic, pendulum, quartz, wood, clave, bell, beep, signal, karatala
sample=<file>
use an audio file as the click sound instead of a preset
ready

This renders the Risset rhythm illusion, the rhythmic cousin of the Shepard tone, where layered tempo cycles create a beat that seems to keep accelerating or decelerating without ever arriving. Hear it live in the browser, or render it from the Node CLI for a talk, a test signal, or further processing.