// Drone — tanpura, pad, shruti, harmonic, or cinematic strings; optional slow melody. // Tanpura strings: Pa, Sa, Sa (detuned), SA (low octave). // Run: node examples/drone.js 130.81 30s // Run: node examples/drone.js freq=C3 -d 2m // Run: node examples/drone.js voice=pad freq=D3 -d 1m // Keys: space pause · ↑/↓ ±semitone · ←/→ ±5 cents · 1-7 scale degrees · q quit import { AudioContext } from 'web-audio-api' import { init } from './graphs/drone.js' import { args, num, sec, keys, status, clearLine, noteName, pausedTag, help } from './utils.js' help({ description: 'play a sustained drone or cinematic string ensemble with optional melody', usage: ['', '[frequency] [duration]', 'freq=C3 dur=2m', 'voice=pad freq=D3 -d 1m'], options: [ ['voice=', 'tanpura (default), pad, shruti, harmonic, or strings'], ['melody=', 'off (default), pentatonic, or dorian'], ['freq=', 'Sa frequency or note name (default: 130.81 / C3)'], ['-d, --duration