Serverless Live Music Compiler

Conduct Electronic Music
Simply by Speaking

A localized, interactive speech-to-music live coder embedded inside a nostalgic Windows 98 SE dashboard. Convert conversational commands into valid, production-ready Strudel scripts.

Speak2Compose Workstation (qbasic-terminal)
◄■► Strudel Workspace ◄■►
// Real-time Strudel Javascript Code Output
stack(
  s("kick*4").gain(0.8),
  s("~ snare").gain(0.5),
  note("c3 e3 g3 b3").s("sawtooth").gain(0.6).delay(0.4)
)
<F1=Help> <Enter=Execute> <Caps=Off> Strudel Synthesizer Active

Design Philosophy: Conversational Interfaces

Live-coding music environments offer tremendous creative power, but their syntax rules can act as barriers to immediate expression. Speak2Compose changes this dynamic by translating natural speech into structured code on the fly.

The layout draws inspiration from the text-adventures of the 80s and 90s, where players navigated complex worlds using simple verbs and nouns. By mapping basic English statements like "give me a bass drum" or "make it faster" directly to underlying Web Audio nodes and Strudel algorithms, the workstation lets anyone conduct electronic music in real time.

Every command spoken compiles instantly into copy-pasteable Strudel script inside a retro QBasic terminal. This bridge between speech and code demystifies programmatic composition and lets users learn synth routing patterns organically.

Chained Phrase Parser

Supports compound sentence structures. Connect speech phrases using "and" or "then" to construct or modify multiple tracks in one command.

Fuzzy Alignment Search

Underpinned by a Levenshtein Distance algorithm that aligns misheard words or approximate speech inputs to the nearest valid synthesizer action.

Strudel Script Output

Compiles directly into clean Javascript-based Strudel syntax. Highlight, edit, and paste directly into the main Strudel REPL.

Voice Command Spellbook

Rhythmic Beats

  • "give me a bass drum" or "add a kick" → s("kick*4")
  • "add a snare" → s("~ snare")
  • "give me hi hats" → s("hat*8")
  • "add a clap" → s("~ clap")

Instruments

  • "give me a bass line" → plays sub-bass arpeggios
  • "add a synth" or "play notes" → triggers lead line
  • "play chords" → plays atmospheric chord pads
  • "ring bells" → triggers chime notes
  • "play strings" → layers analog string sweeps

DJ Modifiers & Sweeps

  • "drop the bass" → increases kick gain and plays low sweep
  • "build the drums" → triggers snare roll riser
  • "filter sweep" → modulates highpass frequency filter
  • "make it faster" / "slow it down" → changes BPM
  • "add echo" → enables stereo delays