A Single Page Application (SPA) that provides a place for live coding music in the browser.
🌐 Live Demo: https://bbodensieck.github.io/live-coding-studio/
- Live Code Editor: Write and evaluate musical patterns in real-time
- Strudel Pattern Logic: Use Strudel's powerful mini-notation for musical patterns
- Web Audio API: High-quality audio synthesis and effects
- Instant Feedback: Evaluate code with keyboard shortcuts (Ctrl/Cmd + Enter)
- Interactive Controls: Play and stop patterns with easy-to-use buttons
- Framework: React (for component-based UI)
- Audio Engine: Strudel - Pattern-based live coding system
- Build Tool: Vite (for fast development and optimized production builds)
- Node.js (version 16 or higher)
- npm or yarn
- Clone the repository:
git clone https://github.com/bbodensieck/live-coding-studio.git
cd live-coding-studio- Install dependencies:
npm install- Start the development server:
npm run dev- Open your browser and navigate to
http://localhost:5173
npm run buildThe built files will be in the dist directory.
npm run previewThis project is automatically deployed to GitHub Pages when changes are pushed to the main branch. The deployment workflow:
- Builds the project using Vite
- Uploads the build artifacts to GitHub Pages
- Deploys to https://bbodensieck.github.io/live-coding-studio/
The deployment is configured in .github/workflows/deploy.yml and uses GitHub Actions.
- Write Code: Enter your Strudel pattern code in the editor
- Evaluate: Press
Ctrl/Cmd + Enteror click the "Execute" button - Listen: Hear your audio play in real-time
- Stop: Click the "Stop" button to halt playback
Use Strudel's powerful pattern notation for expressive musical patterns:
// Simple note pattern
note("c3 e3 g3 b3").s("piano")
// Drum pattern with rhythm
s("bd sd, hh*4").bank("RolandTR808")
// Pattern with transformations
note("c3 [e3 g3] b3").s("sawtooth").lpf(1000).fast(2)
// Complex polyrhythmic pattern
stack(
note("c3 e3 g3").s("piano"),
s("bd*2 sd").bank("RolandTR808")
)- Mini-notation: Concise pattern syntax like
"c3 e3 g3" - Rhythmic variations: Use
*for subdivision,/for elongation - Pattern transformations:
.fast(),.slow(),.rev(),.every() - Effects:
.lpf(),.hpf(),.delay(),.reverb()and more - Stacking: Combine multiple patterns with
stack()
This project is open source and available under the MIT License.