A standalone React + TypeScript browser workstation for designing, previewing, visualizing, and exporting discrete or continuous Shepard tone sound effects. Build happy reward chimes, wrong-answer falls, classic endless Shepard scales, loopable risers/downsweeps, UI blips, and engine-ready .wav packs without a backend.
Built for Geocore workflows and general-purpose game audio export.


| Feature |
Description |
| Discrete Notes |
Short game/app feedback notes with attack, decay, sustain, release, and reverb tails |
| Continuous Glide |
Non-discrete Shepard motion for more constant rising or falling illusions |
| Circular Loop Mode |
Bounded pitch classes with log-frequency layer weighting for endless-rise perception |
| Octave Climb Mode |
Explicit octave expansion when a literal rising or falling scale is preferred |
| Layer Controls |
Octave layers, center octave, layer spread, Gaussian/cosine amplitude curves |
| Timbre Models |
Soft bell, warm mallet, glassy chime, kalimba, music box, and minimal sine-like tones |
| Feature |
Description |
| Scale Presets |
Major pentatonic, major, natural minor, chromatic, whole tone, and custom |
| Custom Scale Editor |
Enable/disable semitone degrees for custom scales |
| Sequence Degree Editor |
Directly edit degree order for custom streak patterns |
| Direction Control |
Flip any preset between ascending reward motion and descending failure cues |
| Selected Note Preview |
Audition and export a specific note index |
| Loop Steps |
Set how many scale steps form one circular loop cycle |
| Preset |
Purpose |
| Happy Success Streak |
Pentatonic positive-feedback notes; cheerful but less illusion-forward |
| Endless Success Reward |
Happy major reward loop tuned for a clearer continuous Shepard rise |
| Continuous Success Riser |
Non-discrete happy glide for constant upward motion |
| Classic Endless Shepard Scale |
Chromatic reference preset for hearing the illusion plainly |
| Gentle Major Scale |
Calm full-major bell-like scale |
| Glassy Arcade Correct |
Bright short correct-answer chime |
| Soft Music Box Climb |
Delicate music-box style climb |
| Minimal UI Blip Shepard |
Short subtle layered UI feedback |
| Dreamy Reward Chime |
Softer, wider reward chime with a longer tail |
| Wrong Answer Soft Fall |
Descending minor fall for incorrect answer feedback |
| Gentle Failure Drop |
Soft whole-tone fall for misses, retries, and low-stakes failures |
| Continuous Reset Downsweep |
Continuous chromatic Shepard fall for reset or timeout states |
| Subtle Error Blip |
Compact descending cue for invalid actions and light warnings |
| Feature |
Description |
| Waveform |
Last rendered buffer amplitude preview |
| Spectrum Bars |
Lightweight frequency-energy display |
| Spectrogram |
Time/frequency heatmap for the rendered note, sequence, or loop |
| Pitch Motion |
Sequence pitch-height trace for quick motion sanity checks |
| Layer Graph |
Octave-layer amplitude visualization |
| Feature |
Description |
| Single WAV |
Export selected note as .wav |
| Sequence WAVs |
Export each sequence note as individual .wav downloads |
| ZIP Pack |
Export all sequence WAVs plus manifest.json in an uncompressed browser-built ZIP |
| Loop WAV |
Render finite loop WAVs using extra-cycle crop handling |
| Manifest JSON |
Human-readable metadata describing note labels, filenames, direction, settings, and loop behavior |
| Preset JSON |
Portable preset export/import for sharing settings |
| Feature |
Description |
| Custom Presets |
Save modified presets to browser local storage |
| Import/Export Presets |
Read and write portable JSON presets |
| A/B Snapshot |
Capture current settings and replay them for quick comparison |
| Trim Silence |
Optional export-time silence trimming |
| No Backend |
Runs fully in the browser with Web Audio and local downloads |
The easiest way to hear the illusion is Classic Endless Shepard Scale, because chromatic motion gives the ear small, steady upward steps. Happy Success Streak stays pentatonic because it sounds more like a friendly reward, but pentatonic jumps make the endless-rise illusion less obvious.
For a happy sound with stronger continuous rise, use Endless Success Reward or Continuous Success Riser. For negative feedback, use Wrong Answer Soft Fall for friendly incorrect-answer cues, Gentle Failure Drop for soft failure states, Continuous Reset Downsweep for loopable falling motion, or Subtle Error Blip for compact UI blocking sounds.
src/
audio/ Web Audio rendering, preview playback, normalization, trimming, WAV encoding
components/ React panels, controls, icons, and visualizers
export/ Download helpers, manifest building, ZIP writing, filename formatting
presets/ Built-in presets, schema upgrades, local-storage helpers
theory/ Notes, scales, and sequence expansion
types/ Portable preset and render metadata types
npm run dev
npm run lint
npm run build
The app is initialized with Vite, React, TypeScript, and React Compiler support.
Anahat Mudgal - GitHub - Geocore Technologies