A desktop app for live coding music with Strudel, optionally powered by AI (Claude, ChatGPT, or Gemini).
Write patterns by hand, ask AI to generate them, or let autopilot evolve your music in real time. Record to WAV. Ship your own sounds.
Strudel Jam embeds the full Strudel REPL inside a native desktop window and adds a side panel where you can chat with AI about your music. Choose your provider: Claude, ChatGPT (OpenAI), or Gemini (Google).
Co-pilot mode - describe what you want ("dark ambient in F minor", "add a walking bass", "make it more glitchy") and the AI writes the Strudel code, injects it, and plays it.
Autopilot mode - hit start and the AI creates patterns on its own, evolving the music every 15 seconds.
No AI required - the Strudel REPL works standalone. Use the built-in pattern tips, slash commands, and learning panel to get started without an API key.
- Full Strudel REPL with all samples and synths
- AI chat panel with co-pilot and autopilot modes (Claude, ChatGPT, or Gemini)
- Slash commands:
/play,/stop,/record,/random,/help,/clear - WAV recording with save dialog
- Transport bar with prominent play/stop/record controls
- Learn panel with Strudel quick reference and embedded docs
- Local HTTP server (port 17643) for external control via curl
- 15 bundled pattern presets (ambient, DnB, metalcore, odd meters, generative)
Go to Releases and grab the latest build for your platform:
| Platform | File |
|---|---|
| macOS (Apple Silicon) | Strudel.Jam_x.x.x_aarch64.dmg |
| macOS (Intel) | Strudel.Jam_x.x.x_x64.dmg |
| Windows | Strudel.Jam_x.x.x_x64-setup.exe |
| Linux (Debian/Ubuntu) | strudel-jam_x.x.x_amd64.deb |
| Linux (AppImage) | strudel-jam_x.x.x_amd64.AppImage |
No npm, no Rust toolchain, no build step. Just download, install, and open.
- Node.js 18+
- Rust 1.77+
- Tauri CLI system dependencies
- The Strudel repo cloned as a sibling directory:
parent/
strudel/ # git clone https://github.com/tidalcycles/strudel
strudel-jam/ # this repo
# Clone both repos
git clone https://github.com/tidalcycles/strudel.git
git clone https://github.com/YOUR_USERNAME/strudel-jam.git
# Install Strudel dependencies
cd strudel
npm install
cd ..
# Install Strudel Jam dependencies
cd strudel-jam
npm install
# Build the embedded Strudel REPL
npm run build:strudel
# Run in development mode
npx tauri dev
# Or build a release binary
npx tauri buildThe release binary lands in src-tauri/target/release/bundle/.
- Open the app and click the gear icon in the side panel
- Pick a provider (Claude, ChatGPT, or Gemini) and enter your API key
- Anthropic for Claude
- OpenAI for ChatGPT
- Google AI Studio for Gemini
- Your keys stay local, stored only in the app's memory for the session
- You can add keys for multiple providers and switch between them
In co-pilot mode, type what you want and the AI writes Strudel code. In autopilot mode, the AI generates and evolves patterns autonomously.
Type / in the chat input to see available commands:
| Command | What it does |
|---|---|
/play |
Evaluate and play the current pattern |
/stop |
Stop playback |
/record |
Start/stop WAV recording |
/random |
Load a random preset pattern |
/help |
Toggle the Strudel quick reference panel |
/clear |
Clear chat history |
Strudel Jam runs a local HTTP server on port 17643 for external automation:
# Check if the app is running
curl http://127.0.0.1:17643/health
# Send a pattern
curl -X POST http://127.0.0.1:17643/pattern \
-H "Content-Type: application/json" \
-d '{"code": "sound(\"bd sd hh sd\").bank(\"RolandTR909\")"}'
# Stop playback
curl -X POST http://127.0.0.1:17643/stop
# Send a chat message (requires API key set in app)
curl -X POST http://127.0.0.1:17643/message \
-H "Content-Type: application/json" \
-d '{"message": "make it more ambient"}'The patterns/ directory contains 15 ready-to-play Strudel patterns:
| Pattern | Style |
|---|---|
deep-space-meditation.js |
Generative ambient, Perlin-driven |
liquid-dnb.js |
170bpm liquid drum & bass |
bellow-breath.js |
Accordion-inspired folk |
seven.js |
7/8 time, D dorian |
five-petals.js |
5/4 time, F lydian |
polymetric-garden.js |
3 vs 5 vs 7 polymetric phasing |
everything-i-learned.js |
Minimal 7/8, mostly silence |
balkan-7.js |
Balkan-flavored odd meter |
generative-garden.js |
Evolving generative piece |
the-drop.js |
Build-up and drop |
e-minor-bloom.js |
E minor melodic bloom |
kitchen-sink-lp.js |
Lo-fi kitchen sink |
linkin-park-tribute.js |
Nu-metal tribute |
slipknot-iowa.js |
Heavy metalcore |
final-form-metal.js |
Full metalcore with vocal sim |
Load any of them through the Cowork API:
curl -X POST http://127.0.0.1:17643/pattern \
-H "Content-Type: application/json" \
-d "{\"code\": \"$(cat patterns/liquid-dnb.js | python3 -c 'import sys,json; print(json.dumps(sys.stdin.read())[1:-1])')\"}"Strudel Jam is a Tauri v2 app with:
- Frontend: React + TypeScript + Tailwind CSS, with Strudel REPL in an iframe
- Backend: Rust (Tauri), handles AI API calls (Claude/OpenAI/Gemini) and runs the local HTTP server
- Communication:
postMessagebetween React and the Strudel iframe; Tauri events between Rust and React
See ARCHITECTURE.md for the full technical breakdown.
Contributions welcome. See CONTRIBUTING.md for guidelines.
MIT. See LICENSE.