Skip to content

Repository files navigation

Shepard Tone Engine

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.

License TypeScript React Vite Web Audio

Links

Website GitHub Geocore Geocore Technologies

Screenshots

Workbench

Features

Shepard Synthesis

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

Musical Control

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

Presets

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

Visualizers

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

Export Formats

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

Editing & Workflow

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

Shepard Loop Notes

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.

Project Structure

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

Development

npm run dev
npm run lint
npm run build

The app is initialized with Vite, React, TypeScript, and React Compiler support.

Author

Anahat Mudgal - GitHub - Geocore Technologies

About

A standalone React + TypeScript browser workstation for designing, previewing, visualizing, and exporting discrete or continuous Shepard tone sound effects. Build happy reward chimes, classic endless Shepard scales, loopable risers, UI blips, and engine-ready .wav packs without a backend.

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages