// Shepard tone — infinitely rising or falling pitch illusion. // Run: node examples/shepard.js up 15s // Run: node examples/shepard.js dir=down rate=0.3 -d 20s // Keys: space pause · ←/→ ±0.1 oct/s rate · r reverse direction · q quit import { AudioContext, AudioWorkletNode } from 'web-audio-api' import { init } from './graphs/shepard.js' import { args, sec, keys, status, clearLine, pausedTag, help } from './utils.js' help({ description: 'play an endlessly rising or falling pitch illusion', usage: ['', '[up|down] [rate] [duration]', 'dir=down rate=0.3 dur=20s'], options: [ ['dir=', 'movement direction (default: up)'], ['wave=', 'sine, triangle, square, or sawtooth (default: sine)'], ['rate=', 'movement speed (default: 0.5)'], ['-d, --duration