A VS Code extension for live-coding music with Strudel, the JavaScript port of TidalCycles.
Demo: https://github.com/shihanqu/Strudel-Antigravity/raw/main/Strudel%20Demo.mp4
- 🎵 Full Strudel Engine — Complete audio synthesis and sampling, running entirely in VS Code
- 🎹 Csound Integration — Load and use Csound orchestras for advanced synthesis
- ✨ Live Hap Highlighting — See your code light up in sync with the music
- 🎨 Responsive Control Panel — Play, stop, and record with a sleek UI
- 🎧 Audio Recording — Record your sessions directly to WebM audio files
- 📝 Syntax Highlighting — Full support for
.strudeland.strfiles - ⌨️ Keyboard Shortcuts —
Cmd+Enterto play,Cmd+.to stop
Choose one of these options:
- Download the latest
.vsixfrom Releases - Install it:
code --install-extension strudel-repl-v40.vsix --forceThat's it! You're ready to go.
Only needed if you want to modify the extension:
git clone https://github.com/shihanqu/Strudel-Antigravity.git
cd Strudel-Antigravity
npm install
npm run build:all
npx vsce package -o strudel-repl.vsix
code --install-extension strudel-repl.vsix --force- Create a new file with
.strudelextension - Write your first pattern:
s("bd sd hh sd").bank("RolandTR909")
- Press
Cmd+Enter(Mac) orCtrl+Enter(Windows/Linux) to play - The Strudel Control panel will open automatically
- Toggle the Audio Engine switch to connect
| Shortcut | Action |
|---|---|
Cmd/Ctrl + Enter |
Play/Update pattern |
Shift + Cmd/Ctrl + Enter |
Play selection only |
Cmd/Ctrl + . |
Stop playback |
This fork includes significant enhancements over the original:
- Full integration with
@strudel/csound - Load Csound orchestras with
await loadOrc('...') - Use
.csound("InstrumentName")for advanced synthesis
- Real-time code highlighting synchronized to the music
- Works with all sound sources including Csound instruments
- Visual feedback shows exactly which code is triggering
- Control panel adapts to narrow side panels
- Buttons stack vertically when space is limited
- Clean, modern gradient design
- ZZFX Synths:
z_sine,z_sawtooth,z_triangle,z_square,z_noise - Supersaw: Rich, detuned saw waves for pads
- All Soundfonts: Full General MIDI instrument library
- Sample Libraries: Dirt-Samples, TR-808, TR-909, and more
- Fixed Csound timing errors (negative p2)
- Fixed "sound not found" for ZZFX synths
- Fixed scheduling issues with heavy patterns
- Improved audio engine stability
# Install dependencies
npm install
# Build extension host (TypeScript)
npm run build
# Build Strudel engine bundle
npx esbuild static/strudel.js --bundle --outfile=dist/strudel.js --target=es2021 --format=esm
# Build everything and package
npm run build:all
npx vsce package├── src/ # Extension TypeScript source
│ └── extension.ts # Main extension entry point
├── static/ # Strudel engine source
│ └── strudel.js # Audio engine and UI logic
├── dist/ # Built bundles (gitignored)
├── assets/ # Extension icons
├── examples/ # Sample .strudel files
├── syntaxes/ # Syntax highlighting grammars
├── package.json # Extension manifest & dependencies
└── README.md # This file
- @strudel/core — Pattern engine
- @strudel/mini — Mini-notation parser
- @strudel/webaudio — Web Audio synthesis
- @strudel/tonal — Music theory utilities
- @strudel/soundfonts — General MIDI sounds
- @strudel/transpiler — Code transpilation
- @strudel/csound — Csound integration
- StrudelVS: This is a significantly modified fork of strudel-vscode by cmillsdev. See What's New for details.
- Strudel: strudel.cc by Felix Roos and contributors
- TidalCycles: tidalcycles.org by Alex McLean
AGPL-3.0-or-later — See LICENSE for details.