Skip to content

Latest commit

Β 

History

99 Commits

Folders and files

NameName
Last commit message
Last commit date
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

ComposeYogi

ComposeYogi Logo

The open-source Ableton-style music composer for the web.

A free, open-source music composition tool for beat-making, loops, and arrangements β€” built with Web Audio, WASM, and modern web tech.

GitHub Stars Docker Pulls License: MIT Patreon

Open Source PRs Welcome Discord

Live Demo Β· Report Bug Β· Request Feature

ComposeYogi in Action

Why ComposeYogi?

ComposeYogi Traditional DAWs
Open source Closed source
Runs in browser Heavy desktop installs
Free forever Paid subscriptions
Community-driven Vendor-controlled
Hackable & extensible Locked ecosystems

Features

  • 🎹 Multi-track Timeline β€” Audio, MIDI, and Drum tracks with drag-and-drop clips
  • 🎼 Piano Roll Editor β€” Full-featured MIDI note editor with scale lock
  • πŸ₯ Drum Sequencer β€” Step sequencer with pattern presets (Four on Floor, Hip Hop, Trap, etc.)
  • 🎸 64 Built-in Instruments β€” Synths, bass, keys, leads, pads, drum kits, strings, wind and idiophones, powered by Tone.js
  • πŸ“Š Real-time Visualizer β€” Frequency bars and waveform display
  • 🎚️ Mixer Controls β€” Volume, pan, mute, and solo per track
  • ⏺️ Audio Recording β€” Record directly from your microphone with latency calibration
  • πŸ’Ύ Local-first Storage β€” Auto-save to IndexedDB, installable, works fully offline
  • 🎡 Export Anywhere β€” WAV, MP3, MIDI, or a portable JSON project file
  • ⌨️ Keyboard Shortcuts β€” Professional workflow with hotkeys
  • πŸŒ™ Dark/Light Theme β€” Easy on the eyes
  • 🌍 Internationalization β€” English and Spanish supported

Screenshots

ComposeYogi Main Interface

One-Click Deploy

Deploy with Vercel Deploy to Netlify Deploy on Railway Deploy to Render

Quick Start

Prerequisites

  • Node.js 18.17 or later
  • npm, yarn, or pnpm

Installation

# Clone the repository
git clone git@github.com:AppsYogi-com/ComposeYogi.git
cd ComposeYogi

# Install dependencies
npm install

# Start development server
npm run dev

Open http://localhost:3000 in your browser.

Production Build

npm run build
npm start

Docker

Using Docker Compose (Recommended)

# Clone the repository
git clone git@github.com:AppsYogi-com/ComposeYogi.git
cd ComposeYogi

# Start with Docker Compose
docker-compose up -d

# Access at http://localhost:3000

Using Docker directly

# Build the image
docker build -t composeyogi .

# Run the container
docker run -p 3000:3000 composeyogi

Pull from Docker Hub

docker pull appsyogi/composeyogi:latest
docker run -p 3000:3000 appsyogi/composeyogi:latest

Tech Stack

Category Technology
Framework Next.js 15 with App Router
Language TypeScript
Audio Engine Tone.js
State Management Zustand + Zundo
Styling Tailwind CSS
UI Components Radix UI
Drag & Drop @dnd-kit
Persistence IndexedDB via idb
i18n next-intl

Project Structure

composeyogi.com/
β”œβ”€β”€ app/                    # Next.js App Router
β”‚   └── [locale]/           # i18n routing
β”‚       β”œβ”€β”€ compose/        # Main DAW page
β”‚       └── page.tsx        # Landing page
β”œβ”€β”€ components/
β”‚   β”œβ”€β”€ compose/            # DAW components
β”‚   β”‚   β”œβ”€β”€ editors/        # Clip editors (DrumSequencer, PianoRoll, WaveformEditor)
β”‚   β”‚   β”œβ”€β”€ AudioVisualizer.tsx
β”‚   β”‚   β”œβ”€β”€ BrowserPanel.tsx
β”‚   β”‚   β”œβ”€β”€ EditorPanel.tsx
β”‚   β”‚   β”œβ”€β”€ Inspector.tsx
β”‚   β”‚   β”œβ”€β”€ TrackList.tsx
β”‚   β”‚   └── Transport.tsx
β”‚   └── ui/                 # Reusable UI primitives
β”œβ”€β”€ lib/
β”‚   β”œβ”€β”€ audio/              # Tone.js wrappers, recording, export
β”‚   β”œβ”€β”€ store/              # Zustand stores
β”‚   β”œβ”€β”€ persistence/        # IndexedDB operations
β”‚   β”œβ”€β”€ canvas/             # Canvas renderers
β”‚   └── design/             # Design tokens β€” the source of every colour
β”œβ”€β”€ design/                 # The design system: rules, artboards, previews
β”œβ”€β”€ hooks/                  # Custom React hooks
β”œβ”€β”€ types/                  # TypeScript definitions
β”œβ”€β”€ tests/                  # Vitest suites
└── messages/               # i18n translation files

ARCHITECTURE.md goes deeper: how scheduling, state and persistence actually work, and which invariants a change must not break.

Keyboard Shortcuts

Press / in the studio for the full, always-current list β€” it renders from the shortcut registry in lib/shortcuts/, and every shortcut is rebindable from that same panel.

The ones worth knowing before you open it β€” note that while musical typing is on (K), the letter keys play notes instead, and the shortcuts bound to them stand down until you turn it off:

Action Shortcut
Play / Pause Space
Stop (return to start) Enter
Record R
Loop L
Play with the computer keyboard K
Sustain, while playing Shift (hold)
Silence a stuck note Esc
Undo / Redo Cmd/Ctrl + Z / Shift + Z
Shortcut reference /

Roadmap

ROADMAP.md is the single source of truth for what has shipped and what is coming next. It is kept in step with every release, so this README does not repeat it.

Shipped so far: a full multi-track studio with recording and latency calibration, 64 instruments, piano roll and drum sequencer, MIDI/WAV/MP3/JSON export, offline PWA support, and local-first persistence with autosave.

Contributing

Contributions are welcome! Please read our Contributing Guide and Code of Conduct before submitting a Pull Request.

Development Commands

npm run dev          # Start dev server with Turbopack
npm run build        # Production build
npm run start        # Start production server
npm test             # Run the test suite (Vitest)
npm run check        # Locales + types + lint + tests β€” what CI runs

New to the codebase? ARCHITECTURE.md explains how the audio engine, state and persistence fit together, and where the sharp edges are. Issues labelled good first issue are scoped to be picked up without reading the whole thing first.

Building anything visual? design/ is the design system β€” tokens, usage rules and artboards. Every colour, radius and duration in the product comes from one source, and npm run check fails if a component invents its own. Read it before you start; it will save you a review round.

License

This project is licensed under the MIT License - see the LICENSE file for details.

Open Source First

ComposeYogi is built on the belief that creative tools should be:

  • Open and inspectable
  • Free from lock-in
  • Community-driven
  • Accessible to everyone

We welcome contributors, musicians, designers, and developers.

Support

If you find ComposeYogi useful, please consider:

Acknowledgments

  • Tone.js for the amazing Web Audio framework
  • Radix UI for accessible UI primitives
  • Vercel for hosting
  • The open source community πŸ’œ

Made with ❀️ by AppsYogi

Releases

Sponsor this project

Packages

Contributors

Languages