An open-source, pattern-based digital audio workstation for the desktop — a familiar step-sequencer / piano-roll / playlist / mixer workflow built with Electron and the Web Audio API, with no build step.
Stable and current: v1.0.0 — ready-made packages for Windows, macOS and Linux (
.exe,.dmg,.AppImage,.deband.rpm) on the releases page. See what's new.
Sound
- 261 General MIDI instruments and 13 drum kits (TR-808/909, Electronic, Jazz, Orchestral, …) from the GeneralUser GS SoundFont, played by a built-in sampler engine (velocity, loops, envelopes, filters, vibrato, hi-hat choke).
- Built-in generators with presets: a subtractive synth (dual oscillator, 11 waveforms, unison, sub, 12/24 dB filter, LFO, mono / legato with glide for 808 slides), a wavetable synth (morphing tables with position envelope / LFO), an FM synth, a tonewheel organ, Karplus-Strong plucked strings and a Sound FX generator (risers, impacts, sweeps, textures); 26 synthesized drum voices (808, punchy, acoustic-style); and a sampler for your own audio (root note, start / end, loop region, Slicex-style slicing at the hits, and multi-sample key / velocity zones).
- Mixer effects, each in its own window: parametric EQ (graphical, with a live spectrum), spectrum analyser, reverb, delay (stereo / ping-pong), chorus, phaser, flanger, tremolo, distortion, bitcrusher, filter, 3-band EQ, compressor, multiband compressor, sidechain compressor, volume shaper (tempo-synced pumps and gates), gate, limiter, stereo width, pitch shifter, pitch correction (key / scale, from natural to robot) and a 16-band vocoder.
Workflow
- Opens FL Studio projects (.flp) — patterns, notes, playlist, channels and mixer, with built-in stand-ins for FL plugins and samples found beside the project.
- Channel rack step sequencer — pads are real piano-roll notes — with swing, mute/solo, mixer routing and drag-and-drop of samples.
- Piano roll with draw / select / delete / mute / slice tools, scale highlighting, chord stamps, ghost notes, velocity / pan / mod X / mod Y / fine-pitch lanes, slide notes, quantize, legato, arpeggiate, strum, chop, flam, articulate, scale snap and limit.
- Playlist with pattern, audio and automation clips, time markers, loop region, split by channel, audio-clip fades, gain, reverse and tempo-following (stretch or resample), and drag-and-drop of patterns, samples and audio files.
- Mixer with 125 inserts, routing (to the master, to buses, or both — feedback-protected), sidechain, 10 effect slots per track, stereo meters with peak hold and mixer groups (group 1–8 tracks whose faders, mutes and solos move together; hold Alt to adjust one track alone).
- Automation of any knob, fader, effect parameter or the tempo; time signatures; MIDI controller links (right-click → Link to controller).
- Recording of notes from the computer or a MIDI keyboard, and of audio from any input into the playlist, with loop takes and input monitoring.
- Browser with your own sample folders (preview, drag in), every instrument, preset, drum voice and effect.
- Accessibility & remappable shortcuts — knobs, faders and menus are focusable sliders that screen readers announce with their value, every dialog is reachable from the keyboard, the system's "reduce motion" setting turns animations off, and Settings → Keys lets you add, remove or reset the keys of any command (with clash detection).
- Export to WAV, FLAC, MP3 (192-320 kbps, gapless), per-mixer-track stems and MIDI;
.ospprojects with autosave, recent files and undo/redo. - AI agents can do everything you can through a built-in MCP server — and they work like a producer: pick a style, get a matching set of instruments, write a whole arrangement in key and in form, have the writing reviewed by a music critic, mix from measured stems, then render. You watch it happen live and can undo any of it.
Desktop
- Theming — 12 preset themes (including light ones), 10 accent palettes and custom colours in a Settings drawer (gear button, Ctrl+,); 8 preset wallpapers, gradients, solid colours or your own image (with fit, dim and blur), plus Theme from wallpaper, which builds a matching theme from an image's colours.
- Tiling or floating layout — niri-style tiling (Alt+T): windows tile in columns on a sideways-scrolling strip, the window you're working in grows to fit and the others make room; every binding, the gaps, centre-focus and each window's preferred shape are configurable in Settings → Windows & keys. Floating stays the default.
- In-app updates — Help → Check for updates… finds the newest GitHub release and installs it in one click, with
SHA-256 verification; Linux AppImages ship a statically-linked runtime so they run without
libfuse2. - Export audio with a progress bar you can cancel; a first-launch welcome; hover menus that close themselves; and a transport with back-to-start, PLAYING / PAUSED / STOPPED indicators and a song-position slider.
Channel rack & mixer — step sequencing with swing, mute/solo and mixer routing, beside a 125-insert mixer with sends and stereo meters.
Piano roll — draw, select, delete, mute and slice tools, scale highlighting, ghost notes, quantize and a velocity lane.
Theming — pick a preset theme, accent and colours, and match the whole UI to your wallpaper in one click.
Layout — floating or tiling, with per-window shape presets, gaps and centre-focus behaviour you can tune.
Browser & wallpapers — browse instruments, drum kits and project content beside the wallpaper picker.
Requirements: Node.js 22 or newer.
git clone <this repository>
cd openstudio
npm startThat's it. npm start automatically installs anything missing before launching (via the prestart hook in scripts/ensure.mjs), including dependency repair and the ~31 MB checksum-verified GeneralUser GS instrument bank, so you never need to run npm run assets by hand. On a machine with no Node.js/npm at all, run ./start.sh instead — it installs Node.js/npm first (apt, dnf, pacman, zypper, or Homebrew) and then starts the app.
Then choose File → Open demo project, press Space to play, and F1 for shortcuts.
If Electron's binary is broken by a skipped postinstall step or a corrupted download cache, delete the stale copy with rm -rf node_modules/electron && npm install — or just rely on npm start, which repairs it for you.
| Key | Action |
|---|---|
| Space | Play / pause |
| F5 F6 F7 F9 | Playlist, Channel rack, Piano roll, Mixer |
| Z…M / Q…U | Play the selected channel from the keyboard |
| Ctrl+Z / Y | Undo / redo |
| Ctrl+S / O / R | Save, open, export audio |
| Right-click a knob | Create an automation clip |
OpenStudio serves the Model Context Protocol on http://127.0.0.1:6736/mcp while it runs (this computer only;
--no-mcp turns it off), so an AI agent can compose, arrange, mix and export in the open app while you watch.
Quick setup: download the OpenStudio app from the releases page, then copy this prompt into your coding agent (Claude Code, Codex, OpenCode, Antigravity, Pi, Cursor, …) and it will connect itself:
Set up OpenStudio (an open-source DAW) so you can work on music projects in it through its built-in MCP server.
1. Find the OpenStudio app I downloaded (look in Downloads and the usual app locations: OpenStudio-*.exe,
OpenStudio-*.AppImage, OpenStudio.app) and launch it. If you can't find it, ask me where it is. Linux AppImages
may need `chmod +x` first. Leave it running.
2. Check that http://127.0.0.1:6736/mcp is up: POST a JSON-RPC `ping` to it. If the port is busy, the app prints
`[mcp] listening on <url>` on start-up; use that URL instead.
3. Register it as an MCP server named "openstudio" (Streamable HTTP, no auth) in whichever way YOUR client supports.
For Claude Code: `claude mcp add --transport http openstudio http://127.0.0.1:6736/mcp`. For OpenCode: add
`"mcp": { "openstudio": { "type": "remote", "url": "http://127.0.0.1:6736/mcp", "enabled": true } }` to
`~/.config/opencode/opencode.json` and restart it. For Codex: `codex mcp add openstudio --url http://127.0.0.1:6736/mcp`.
For Pi: `pi mcp add openstudio --url http://127.0.0.1:6736/mcp`. For Antigravity: add
`"mcpServers": { "openstudio": { "serverUrl": "http://127.0.0.1:6736/mcp" } }` to `~/.gemini/config/mcp_config.json`
(it needs `serverUrl`, not `url`) and refresh its MCP servers. For other clients with a JSON
config: `{ "mcpServers": { "openstudio": { "url": "http://127.0.0.1:6736/mcp" } } }`. If your client only
supports stdio MCP servers, use the bridge in the OpenStudio repo instead:
`node scripts/mcp-stdio.mjs --launch` (clone https://github.com/Ember2819/openstudio if needed).
4. Reload or restart yourself if your client needs that to pick up new MCP servers, then confirm the `openstudio`
tools are available (e.g. call `get_project`).
5. Read https://github.com/Ember2819/openstudio/blob/main/docs/AGENTS.md for the tool list and conventions
(time is in steps: 16 = 1 bar; MIDI 60 = C5; use `render_audio` to check the mix since you can't hear it).
6. Tell me when it works, then ask what I'd like to make. Don't overwrite my unsaved work.
More setup options, the tool list and the security model are in docs/AGENTS.md.
npm run lint # ESLint
npm test # unit tests (node:test) — store, automation, MIDI writer, SoundFont parser
npm run test:e2e # launches the real app headlessly and smoke-tests playback, mixing, export
npm run test:e2e:mcp # drives the real app through its MCP server with the official clientThe app is plain ES modules loaded straight by Electron — edit a file and restart. A headless screenshot /
scripting harness is built into main.js (see CONTRIBUTING).
For a tour of the code read docs/ARCHITECTURE.md.
Plugin (VST/CLAP) hosting, plugin settings and automation clips in imported FL Studio projects, and many of the commercial DAWs' bundled instruments and effects are not implemented. OpenStudio is an independent project and is not affiliated with, endorsed by, or derived from any commercial DAW; product names mentioned in this repository belong to their respective owners.
Bug reports, ideas and pull requests are welcome — start with CONTRIBUTING.md and the Code of Conduct. Report security issues privately as described in SECURITY.md.
Code: MIT. Audio assets are covered by their own licenses — see assets/CREDITS.md.





