SoundScript
Version: V12 — Musical Completeness & .NET 10

Write audio like code

SoundScript is an independent open-source audio and media programming language. Write timed visuals, melodies, phrases, orchestration, vocal cues, and industrial sonification as plain text; compile them to deterministic MIDI, WAV, or a browser-playable audio-visual clip with the .NET CLI or a client-side browser playground.

Deterministic Offline Cross Platform Open Source 1,031 Tests .NET 10 Browser Playground Temporal A/V Export CLI MIT License Cross Platform CI
block intro {
    phrase { mf play arp Cmaj q }
}
pattern arp { up }
track melody {
    layer piano
    gain 0.9
    play intro
}

Live Demo

Hear and watch repository-generated outputs. Explore the audio sources below, or play and edit the Audio/Visual demo in the Playground.

Playable Audio/Visual Example

A piano-backed timeline with sequential cues, an expanding orb, overlapping sparkle, and an outro fade.

sync audio
visual "intro" for 3s
visual "circle" for 8s at 0s {
    animate radius 28 -> 170 over 3s
}

The full source includes the piano track, all cues, and animations.

Playable Piano Example

One piano track with phrase shaping and legato articulation.

Input
tempo 112
instrument piano
C4 q E4 q G4 q C5 q
View Script
tempo 112
time 4/4
instrument piano

track piano {
    phrase {
        curve gentle
        articulation legato
        mf
        C4 q E4 q G4 q C5 q
        G4 q E4 q D4 q C4 q
    }
}

Download piano.ss

Playable Orchestra Example

Violin, cello, and piano rendered from three deterministic tracks.

Input
track strings { instrument violin … }
track harmony { instrument cello … }
track pulse { instrument piano … }
View Script
tempo 92
time 4/4

track strings {
    instrument violin
    mp
    C4 q E4 q G4 q C5 q
    A4 q F4 q D4 q G4 q
}
track harmony {
    instrument cello
    p
    C3 h G3 h
    F3 h G3 h
}
track pulse {
    instrument piano
    mp
    Cmaj h Fmaj h
    Amin h Gmaj h
}

Download orchestra.ss

Playable Vocal Example

V9 Jingle Bells mix rendered from the bundled WordBank human-audio corpus and deterministic G2P pipeline.

Input
speak "Jingle bells jingle bells"
speak "Jingle all the way"
speak "Oh what fun it is"
View Script
tempo 132
time 4/4

track melody {
    instrument violin
    mf
    phrase { curve soft transition smooth play hook }
}
track harmony { instrument piano p Cmaj w Cmaj w }
track bass { instrument bass mf C2 w C2 w }

speak "Jingle bells jingle bells" seed=7 gain=1.05
speak "Jingle all the way" seed=8 gain=1.05
speak "Oh what fun it is" seed=9 gain=1.0

Download Wave script · Download karaoke MIDI source

Key Benefits

The engineering surface is deliberately small: plain text in, standard files out, with repeatability enforced by tests.

316+repository commits
18.NET projects
1,031automated tests
3 OSCI matrix
2 railsMIDI and Wave

Audio and visuals on one clock

Version timed cues and property curves alongside a musical score. Scrub exact states, preview synchronized audio, and export a WebM clip. Timeline states and source PCM are deterministic; encoded video bytes can vary by encoder.

Deterministic rendering

Identical scripts produce byte-identical MIDI. Seeded humanization and audio regression checks preserve reproducibility across runs and platforms.

Offline by design

The CLI, MIDI compiler, Wave renderer, timbre engine, and WordBank pipeline run locally. The browser playground runs client-side with no account.

Git-friendly source

Compositions are reviewable plain-text .ss and .ssw files that can be diffed, versioned, and rebuilt like code.

Standard outputs

Compile to MIDI with karaoke lyric events, render direct WAV, or use SoundCSS for deterministic MIDI-to-WAV/OGG timbre synthesis.

How SoundScript Compares

Architectural comparison. DAW and AI-generator capabilities vary by product and configuration.
PropertyTraditional DAWAI GeneratorSoundScript
ReproducibilityDepends on project, plug-ins, and versionsDepends on model, seed, and service versionByte-stable MIDI/PCM and deterministic visual states; encoded WebM varies by encoder
Git friendlyProject-format dependentPrompts can be versioned; outputs are media filesPlain-text scripts are diffable
OfflineCommon after installationProduct and model dependentCLI and synthesis pipelines run locally
DeterministicDepends on plug-ins and workflowModel and seed dependentExplicit product invariant
ProgrammableAutomation and scripting varyAPI availability variesPurpose-built language and C# libraries
AutomationHost-specificService-specificCross-platform CLI and text files
Media / Audio-VisualVideo and synchronization workflows vary by hostAudio/video generation and editing vary by modelText-authored intervals, overlays, linear property curves, shared audio clock, and browser or CLI WebM export
AccessibilityInterface and host dependentService interface dependentText input, CLI, and keyboard-operable browser UI

Output Examples

The repository includes runnable .ss and .ssw examples spanning composition, vocals, Wave synthesis, and industrial cues.

Temporal media · V11

visual-temporal.ssv

visual "intro" for 3s
visual "circle" for 8s at 0s {
    animate radius 28 -> 170 over 3s
}

Author deterministic state over time, then sample it in the Playground at 24, 30, or 60 FPS to export a WebM clip with the shared SoundScript.Wave PCM audio rail.

V11

Temporal Media Export

Visual programs remain a deterministic StateAt(t) function. The Playground samples that function only in its WebM renderer, combines it with the shared SoundScript.Wave PCM audio rail, and downloads a playable clip.

Visual timeline and export model →

Composition

full-v2-showcase.ss

tempo 120 → 140 over 2 bars
block verse { phrase { curve balanced play arp Cmaj q } }
track melody { layer flute layer cello play verse }
Vocal MIDI

vocal-song.ss

voice lead {
    vocal choir
    sing "Twinkle twinkle little star"
         C4 q C4 q G4 q G4 q
}
Industrial cue

industrial-machine-state.ss

block idle { phrase { curve gentle articulation legato … } }
block critical { phrase { transition sharp articulation staccato … } }
track machine { play idle · play running · play critical }
Accessibility

industrial-blind-assist.ss

track spatial {
    phrase { curve gentle articulation legato … }
    phrase { transition sharp articulation staccato … }
}
Expressive shaping

phrases-v3.ss

phrase { curve swell transition expressive mf C4 q E4 q G4 q }
phrase { curve fade decrescendo f C5 q G4 q E4 q }
Patterns

patterns.ss

pattern arp { up }
pattern strumPat { strum }
track melody { play arp Cmaj q play strumPat Cmaj q }

Browse the complete example catalog →

Who Is It For?

Audio/Visual Storytelling

Timed title cards, motion studies, and layered product cues with a scripted score. Explore use cases.

Developers

Versioned compositions, CLI workflows, and reusable C# libraries.

Researchers

Repeatable rule-based audio experiments and inspectable pipelines.

Education

Plain-text notation, harmony, orchestration, and synthesis examples.

Accessibility

Text and keyboard workflows plus non-speech spatial cue examples.

Industrial Systems

Versionable machine-state, timing-drift, and process-trend cues.

Music Technology

MIDI, Wave, SoundCSS, phonetics, and programmatic arrangement.

Interactive Installations

Deterministic cue generation for repeatable interactive behavior.

Media / Audio-Visual Programming

V10 adds continuous-time visual programs alongside the existing audio language. V11 projects those states into a shared scene for live playback and browser or CLI WebM export.

  • Tell a timed story — sequential visual cues and explicit waits.
  • Layer motion — absolute overlays and linear position, size, rotation, radius, and opacity curves.
  • Inspect any instant — exact scrubbing and tempo-aware audio-beat queries through StateAt(t).
  • Share a clip — sample at 24, 30, or 60 FPS during export, with a shared Wave PCM audio track.

The current presentation profile renders an intro pill, circle/orb, product card, sparkle/star, and generic named cards. These are built-in treatments, not imported image or video assets.

Try the Audio/Visual library → · Explore 20 practical compositions · Read the supported constructs

SoundScript Industrial Audio

The phrase engine maps machine data to non-speech cues using curves, articulation, dynamic envelopes, and timing modifiers. Cue libraries remain plain text and can live in version control beside system code.

  • Machine states — idle, running, and critical blocks.
  • Conveyor timing drift — swing, push, and pull modifiers.
  • Robotic motion — swell, accent, and fade phases.
  • Temperature trends — crescendo, hold, and decrescendo contours.
  • Blind-operator spatial awareness — contrasting legato and staccato cues.
Explore the Industrial Audio Toolkit →

Independent Open Source Project

SoundScript is an MIT-licensed engineering platform for writing audio like code. Notes, chords, dynamics, patterns, orchestration, vocals, and industrial cues pass through explicit, inspectable stages rather than a generative model.

It runs on Windows, macOS, and Linux through .NET 10, plus WebAssembly in Chrome, Edge, Firefox, and Safari. No server, account, DAW, or plug-in is required for the core workflow.

SoundScript is created by Anup Jayant Dharangutti, a music enthusiast and architect of enterprise-grade automation systems. He also created UniverseGlance and AutomationGlance.

Architecture

A shared parser builds the AST. Independent output rails then produce MIDI, direct Wave audio, vocal-enhanced mixes, or temporal visuals with synchronized media export.

Visual rail · ASTVisualInterpreterVisualTimeline · StateAt(t)Canonical scene
Audio/Visual outputScene + Wave PCMLive preview / export planWebMBrowser / FFmpeg CLI
ImportParser InterpreterPhraseShaper PatternExpanderOrchestration LayersHumanizeMIDI

Architecture reference · Interpreter pipeline

Technical Highlights

V10

Temporal Visual Programs

Exact time intervals, absolute overlays, linear automation, audio synchronization markers, and a tempo-aware beat bridge. Play, pause, resume, restart, and scrub the same compiled timeline.

V11

Shared Media Rendering

One canonical scene profile and fitted Wave PCM track feed live preview, browser WebM, and CLI WebM. Output FPS belongs to the export adapter. CLI encoding requires FFmpeg; browser export requires canvas capture and MediaRecorder.

V9

WordBank Vocal Engine

Offline, deterministic human-audio vocalization combines a curated CC0/CC-BY corpus with rule-based G2P timbre. V9 adds the Jingle Bells WordBank preset and corpus coverage in the Playground workflow.

What's new in V9 →

V7–V8

SoundScript.Wave and Vocal Stems

Render .ss or .ssw directly to deterministic WAV. Mix recordings through sample / speak sample=, or generate stems with soundscript vocal and wave --offline-tts.

Wave grammar · CLI wave verb

V4–V4.1.1

Cycle-Accurate Timbre Engine

SoundCSS controls deterministic MIDI-to-WAV/OGG synthesis. Per-cycle harmonics, formant Q and drift, band-shaped noise, transient modeling, and crossfading replace flat frame snapshots.

Timbre engine reference →

V3.1–V6

Text Composition and Editable Export

PhonemeComposer maps text to syllables, phonemes, gestures, and MIDI. ProsodyComposer plans phrase, word, and syllable pitch. --emit-ss round-trips composed output to editable source.

Text-to-melody · Editable export

Language Surface

Audio/Visual · V10/V11

sync audio
visual "intro" for 2s
wait 500ms
visual "circle" for 3s at 0s {
    animate radius 24 -> 120 over 3s
}

Time-based source; V11 adds downstream WebM rendering. All media constructs and properties

Imports & Blocks

import "lib.ss"
block intro { ... }
play intro

Imports · Blocks

Patterns & Phrases

pattern arp { up }
play arp Cmaj q
phrase { curve soft }

Patterns · Phrases

Metadata & Layers

gain 0.9
humanize 0.03
layer piano
layer cello

Metadata · Layers

Orchestration & Chords

double octave
Cmaj drop2
tempo 120 → 140 over 4 bars

Orchestration · Chords

Vocal Tracks

voice lead {
    vocal choir
    sing "Twinkle twinkle" C4 q C4 q G4 q G4 q
}

Lyrics bind to notes deterministically and export as karaoke events. Vocal docs

Text to Melody

compose "Twinkle twinkle little star"

Identical text yields identical MIDI bytes through the rule-based PhonemeComposer. Composer reference

CLI quick start and output workflows
  • 1
    Clone and build
    git clone https://github.com/dharangutti/sound-script.git
    cd sound-script && dotnet build
  • 2
    Compile a script to MIDI
    dotnet run --project src/SoundScript.Cli -- run examples/full-v2-showcase.ss
  • 3
    Use the browser
    Open the Playground to compile and preview client-side in Chrome, Edge, Firefox, or Safari.
  • 4
    Compose from text
    dotnet run --project src/SoundScript.Cli -- compose "Twinkle twinkle little star"
  • 5
    Export editable source
    dotnet run --project src/SoundScript.Cli -- compose "Twinkle twinkle little star" --emit-ss twinkle.ss
  • 6
    Create karaoke MIDI
    dotnet run --project src/SoundScript.Cli -- run examples/vocal-song.ss
  • 7
    Render WordBank vocal WAV
    dotnet run --project src/SoundScript.Cli -- wave examples/jingle-bells-wordbank.ssw jingle.wav --tts-dir vocal-stems/wordbank

Documentation

Version History

  • V12
    Musical Completeness & .NET 10Current
    SoundScript now targets .NET 10 and broadens conventional notation with the full MIDI pitch and General MIDI program ranges, extended harmony, dotted rhythm, tuplets, grace notes, and expanded dynamics—while keeping the deterministic MIDI, Wave, SoundCSS, voice, and temporal-media workflows compatible. Capability details →
  • V10
    Temporal Visual Playground. The original frame-free visual timeline, shared clock playback, exact scrubbing, and StateAt(t) inspector.
  • V8
    Previous release. Vocal stems in Wave export: mix recordings with sample / speak sample=, or generate offline stems with soundscript vocal and wave --offline-tts.
  • V7
    SoundScript.Wave renders .ss / .ssw directly to deterministic WAV through speak, effects, and seeded humanization.
  • V6
    --emit-ss serializes composed output to editable source that round-trips to byte-identical MIDI.
  • V5
    ProsodyComposer plans pitch from phrase to word to syllable with stress detection and the prosody CLI verb.
  • V4.1.1
    Harmonic rolloff, formant Q and drift, band-shaped noise, sharpened transients, and cycle/frame crossfading tune the timbre engine.
  • V4.1
    Cycle-accurate synthesis reconstructs audio per pitch cycle with per-cycle harmonics, formants, and noise.
  • V4
    SoundCSS-driven offline timbre synthesis adds deterministic MIDI-to-WAV/OGG rendering.
  • V3.1
    PhonemeComposer and the compose verb turn plain text into melody through syllables, phonemes, and musical gestures.
  • V2
    Imports, blocks, patterns, phrases, orchestration, metadata, tempo automation, layers, deterministic humanization, and advanced chord voicing.

Full release notes →