Music / Audio Synthesis Languages Family Index


type: language-family-index family: music-audio languages_catalogued: 18 tags: [language-reference, family-index, music, audio, synthesis, dsp, live-coding]

Music / Audio Synthesis Languages — Family Index

Family overview

The lineage of computer music languages traces back to Max Mathews’s MUSIC I (Bell Labs, 1957) and the Music-N family that followed. That genealogy runs through MUSIC IV → MUSIC V → Cmix → Csound (Barry Vercoe at MIT, 1986) and branches into SuperCollider (James McCartney, 1996) and Pure Data (Miller Puckette, 1996). Puckette had earlier built Max at IRCAM, which Cycling ‘74 commercialized as Max/MSP — making Pd and Max a textbook open-source/commercial split with shared DNA. The Music-N model — orchestra (instruments/UGens) plus score (events in time) — still shapes nearly every language in this family.

Two architectural axes divide the field. First, synthesis vs composition: some languages emphasize DSP graph construction (Faust, Reaktor Core, Kyma), others emphasize event/pattern scheduling (TidalCycles, FoxDot, Sonic Pi, Common Music), and the survivors of the Music-N tradition do both (SuperCollider, Csound, Pd, Max). Second, real-time vs offline: Csound began as a renderer and grew real-time capabilities; SuperCollider split language (sclang) from server (scsynth) precisely so the audio graph runs in a hard-real-time process while the language drives it over OSC.

The third dimension is performance practice. Live-coding — writing and rewriting code on stage as the performance — emerged in the early 2000s and crystallized around the Algorave scene (TOPLAP manifesto, 2004). TidalCycles, Sonic Pi, FoxDot, Overtone, and Extempore are its primary instruments. Orthogonal to that is the text vs visual-dataflow split: Pd, Max, Reaktor, and Kyma are patcher languages where you wire boxes; SuperCollider, Csound, Faust, and the live-coding hosts are textual. The visual-dataflow story is its own family — see visual-dataflow for the broader patcher/node-graph world (LabVIEW, TouchDesigner, Houdini VEX, shader graphs).

In our deep library

Cross-reference:

  • haskell — TidalCycles host (patterns are Haskell values)
  • clojure — Overtone host (Clojure → SuperCollider scsynth via OSC)
  • ruby — Sonic Pi host (Ruby DSL, also drives scsynth)
  • python — FoxDot host (Python live-coding, also targets scsynth)
  • scheme / common-lisp — Common Music ran on both; Extempore embeds Scheme alongside xtlang
  • See also visual-dataflow for the patcher/node-graph cousins

Tier 3 family table

LanguageFirst appearedParadigmHost / standaloneStatus (2026)URL
Csound1986Music-N orchestra/score, imperative DSPStandalone (C core)Active; Csound 7 dev linehttps://csound.com/
Max/MSP1985 (Max), 1997 (MSP)Visual dataflow, message + signal patchingStandalone (commercial, Cycling ‘74)Active; Max 9https://cycling74.com/products/max
Pure Data (Pd)1996Visual dataflow, real-time DSPStandalone (open source)Active; Pd-vanilla + Pd-extended/Plugdata forkhttps://puredata.info/
SuperCollider1996Smalltalk-influenced OO + functional; client/serverStandalone (sclang + scsynth)Active; v3.13+https://supercollider.github.io/
Common Music1989Algorithmic composition, Lisp-family DSLHosted on Common Lisp / SchemeMaintained but quiet; CM3 in S7 Schemehttps://commonmusic.sourceforge.net/
RTcmix1995Music-N descendant, real-time schedulerStandalone + embeddableNiche but maintainedhttps://rtcmix.org/
Nyquist1991Functional, lazy sound expressionsHosted on XLISPMaintained via Audacity scriptinghttps://www.cs.cmu.edu/~music/nyquist/
Kyma1986Visual signal-flow; Smalltalk-rootedStandalone (Symbolic Sound, hardware-coupled)Active; Kyma 7 + Pacarana/Paca(rana) DSPhttps://kyma.symbolicsound.com/
Reaktor Core2005Visual block-DSP at sample levelHosted in Reaktor (Native Instruments)Active; Reaktor 6https://www.native-instruments.com/en/products/komplete/synths/reaktor-6/
Faust2002Pure functional signal processors; block-diagram algebraSource language; compiles to C++/LLVM/Wasm/JUCE/VSTVery active; Faust IDE + faust2* toolchainhttps://faust.grame.fr/
ChucK2003Strongly-timed, concurrent (shreds)StandaloneActive; ChucK 1.5+https://chuck.cs.princeton.edu/
Extempore2011Live-coding; xtlang (LLVM-JIT’d, statically typed) + SchemeStandaloneMaintained; less active than peershttps://extemporelang.github.io/
Overtone2009Clojure DSL driving scsynthHosted on ClojureMaintained; live-coding + studio usehttps://overtone.github.io/
Sonic Pi2012Ruby DSL, live-coding pedagogyHosted on Ruby; uses scsynthActive; v5+https://sonic-pi.net/
TidalCycles2009Pattern algebra (cyclic), live-codingHosted on Haskell; sends OSC to SuperDirt/scsynthVery active; Algorave staplehttps://tidalcycles.org/
FoxDot2015Python live-coding patternsHosted on Python; drives scsynthMaintained; Renardo fork activehttps://foxdot.org/
ABC notation1991Plain-text music notation (not synthesis)Format + tooling (abcm2ps, abc2midi)Active; community standard for folk/tradhttps://abcnotation.com/
LilyPond1996Functional engraving DSL (Scheme-extensible)StandaloneActive; v2.24+https://lilypond.org/

Notable threads

  • Live-coding and the Algorave: the TOPLAP manifesto (2004) and the first Algorave (Sheffield, 2012) made live-coded music a performance genre. Tidal, Sonic Pi, FoxDot, Overtone, and Extempore are the dominant instruments; their common substrate is usually scsynth (the SuperCollider audio server) accessed over OSC. The “show your screen” projection norm is part of the aesthetic — the code is the score and the visual.
  • The SuperCollider client/server split: sclang and scsynth are separate processes connected by OSC. This means any language that can speak OSC can drive the audio graph — which is exactly how Overtone, Sonic Pi, TidalCycles, and FoxDot exist. SuperCollider is as much a protocol target as a language. SuperDirt (the Tidal sample engine) is itself written in sclang.
  • Faust as a multi-target compiler: Faust isn’t just a language, it’s a compiler to C++, LLVM IR, WebAssembly, JUCE plugins, VST/AU/LV2, Pd/Max externals, Csound opcodes, and Web Audio. A pure functional signal-processor description compiles to whatever DSP host you need. This makes Faust the lingua franca for portable DSP code in 2026 — far beyond its own runtime.
  • Pd vs Max — the open-source / commercial twins: Miller Puckette built Max at IRCAM in the mid-1980s; Cycling ‘74 took it commercial in 1997 (adding MSP for audio). Puckette then built Pd (1996) as an open-source rewrite addressing Max’s data-structure limits. They look almost identical, share concepts, but have diverged in patch format. Plugdata (a modern Pd fork with Juce-based UI) is closing the polish gap on the open-source side.
  • Why DAW automation isn’t in this family: Ableton/Logic/Cubase clip envelopes, MIDI CC lanes, and parameter automation are data interpolation, not languages — there’s no syntax, no abstraction, no composition of expressions. Max-for-Live, Reaktor Core, and CLAP/AU plugins built in Faust are in the family because they have a programmable layer.
  • Modular synthesis as a DSL: Reaktor Core and Kyma are the strongest case that a visual modular synth can be a programming language — they have data flow, abstraction (macros / classes), composition, and Turing-complete control structures. VCV Rack, Bitwig’s Grid, and Softube Modular sit in the same conceptual zone but are weaker as languages (no first-class abstraction over patches). The patcher-as-language idea bridges directly into visual-dataflow.

Citations