7.0 RELEASE Csound 7.0.0 is here — Modern syntax, structs, and new APIs

Build your own world of sound.

Create synthesizers, audio effects, interactive installations, and generative music with Csound — the free, open-source audio programming language with over 1,500 unit generators running on desktop, web, mobile, and embedded hardware.

1,500+ Synthesis & DSP Opcodes Desktop, WebAssembly, Mobile & Embedded Free & Open Source (LGPLv2.1+) since 1985
Live Browser Engine (WASM)

Pling — Self-scheduling modal resonator percussion in few lines of code.

instr Pling
  // Modal filter excited by an impulse with random pitch & damping
  plg:a = mode(mpulse(ampdb(random(-22, 0)), p3),
               mtof(random(80, 100)), 10^(p3 - 1))
  out(pan2:a[](plg, random(0, 1)))
  // Recursively schedule the next event
  schedule(Pling, rnd(1), random(1, 4))
endin
schedule(Pling, 0, 1)
instr start_sequences
  rate:k = scale(rspline:k(0,1,0.1,2)^2,10,0.3)
  cps:k = cpsoct(rspline:k(4.3,9.5,0.1,1))
  pan:k = rspline(0.1,4,0.1,1)
  wgoct1:k = rspline(6,9,0.05,1)
  wgoct2:k = rspline(6,9,0.05,1)
  schedkwhen(metro(rate),0,0,wguide2_note,0,4,cps,wgoct1,wgoct2,pan)
endin
schedule(start_sequences, 0, -1)
instr Tone
  amp:i, freq:i = p4, p5
  hrd:i, pos:i = random:i(0.1,0.9), random:i(0,1)
  res:a = vibes(amp,freq,hrd,pos,1,6,0.05,2,0.1)
  // panning and dry output
  dryl:a,dryr:a = pan2(linen(res,0,p3,p3/2),random:i(0,1))
  out(dryl,dryr)
  // send part of it to reverb
  rsend:i = random(0.2, 0.4)
  Rev1 += rsend * dryl
  Rev2 += rsend * dryr
endin
Why Csound

One audio engine. Every sonic paradigm.

From classic additive and FM synthesis to spectral phase vocoders, granular clouds, and physical models—Csound gives you sample-accurate control and unmatched longevity.

Deep Sound Design

Combine over 1,500 built-in opcodes for subtractive, FM, granular, spectral (PVS), waveguide, and modal synthesis—or write custom DSP with User-Defined Opcodes.

Plugins & Standalone Apps

Design custom graphical interfaces with Cabbage to export VST3/AU plugins for any DAW, build interactive instruments in CsoundQt, or score in Blue.

Host APIs & Live Coding

Drive Csound from Python (Jupyter notebooks, ctcsound, csoundengine), C/C++, JavaScript/WASM, Max/MSP, or PureData.

Run Anywhere

Deploy the exact same .csd orchestra on macOS, Windows, Linux, iOS, Android, Unity, Godot, WebAssembly, Raspberry Pi, Bela, ESP32, and ARM Cortex-M7.

What's New in Csound 7

Expressive modern syntax meets 40 years of stability.

Csound 7.0 introduces explicit colon type annotations (sig:a, cutoff:k), user-defined struct types, function-style UDO definitions, and a modernized host API—while running classic Csound pieces from the 1980s without modification.

  • Explicit Types & Structs: Descriptive variable names and custom data structures.
  • Functional & Classic Styles: Write outall(moogladder:a(vco2:a(0.2, 440), 2000, 0.4)) or classic orchestra lines.
  • Zero-Install Browser Workflow: Learn interactively in the Csound Web IDE and FLOSS Manual.
Csound 7 Syntax Example subtractive-synth.csd
instr SubSynth
  // Explicit variable typing in Csound 7
  amp:i    = p4
  freq:i   = p5
  env:k    = madsr:k(0.05, 0.3, 0.6, 0.4)
  osc1:a   = vco2:a(amp, freq)
  osc2:a   = vco2:a(amp, freq * 0.995)
  filtered:a = moogladder:a((osc1 + osc2) * 0.5, 4500 * env, 0.35)
  outall(filtered * env)
endin

schedule(SubSynth, 0, 2.5, 0.25, 220)
schedule(SubSynth, 0, 2.5, 0.25, 330)
Events & Heritage

Join the Global Community

Four Decades of Sound Exploration

With roots in Max Mathews' pioneering MUSIC-N series and released by Barry Vercoe at MIT in 1985, Csound is one of the longest-running open-source audio systems in computing history.