SoundScript
Version: V9 — WordBank Vocal Engine

Write audio like code

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

Deterministic Offline Cross Platform Open Source 505+ Tests .NET 8 Browser Playground 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

These are repository-generated outputs, not stock or placeholder audio. Each card includes its input, source, MIDI, and WAV.

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.

275+repository commits
14.NET projects
505+automated tests
3 OSCI matrix
2 railsMIDI and Wave

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 outputs covered by regression tests
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
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.

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?

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.

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 8, 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, or vocal-enhanced mixes.

ImportParser InterpreterPhraseShaper PatternExpanderOrchestration LayersHumanizeMIDI

Architecture reference · Interpreter pipeline

Technical Highlights

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

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

  • V9
    WordBank Vocal EngineCurrent
    Brings the WordBank workflow and Jingle Bells preset to the Playground, with complete corpus coverage for the bundled song and a CLI path-resolution fix. Release details →
  • 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 →