Skip to content
glenwrhodesPublic

About

OpenDaw — a free, open-source Digital Audio Workstation for Windows. Qt 6 UI, Tracktion Engine audio, MIDI piano roll, VST3 instruments, built-in effects, Claude AI assistant.

Topics

Resources

Contributing

Stars

71 stars

Watchers

3 watching

Forks

Repository files navigation

OpenDaw

A free, open-source Digital Audio Workstation for Windows, macOS, and Linux

Latest Release

License: GPL v3 Windows macOS Linux C++20 Qt 6 PRs Welcome

Built with Qt 6 for the UI and Tracktion Engine (JUCE) for the audio backend. Audio and MIDI tracks, a built-in piano roll, sheet music notation, a destructive audio clip editor, VST3 instrument support, bus routing, track automation, audio export, 8 built-in effects, 12 colour themes, a live looper that records your performance to the timeline, an AI assistant powered by Claude — all free and open source.


OpenDaw splash screen

OpenDaw main window: an orchestral MIDI arrangement with colour-coded harp, timpani, strings, woodwinds and brass tracks, the mixer below, and the AI assistant panel describing the piece it composed
An orchestral sketch composed by the AI assistant: arrangement, mixer, and the assistant's notes on what it wrote

Download

Grab the latest release from the Releases page:

Download Platform Description
OpenDaw-vx.x.x-setup.exe Windows Installer with Start Menu shortcut and uninstaller
OpenDaw-vx.x.x-portable.zip Windows Portable build — unzip and run, no installation needed
OpenDaw-vx.x.x-mac.dmg macOS Disk image — open and drag to Applications
OpenDaw-vx.x.x-linux-x86_64.AppImage Linux AppImage — chmod +x and run, no installation needed

Features

Themes

Pick a look from Edit > Theme. The whole window restyles instantly — no restart, and your project, playback and undo history carry on. Your choice is remembered.

Theme Look
Studio Graphite Neutral graphite with a blue accent (default)
Nebula Station Sci-fi: cold blue-grey panels, teal accent, cyan readouts
Conservatory Light and friendly: cream panels, walnut readouts, brass accent
Code Rain Green-on-black terminal style
Midnight Amber Navy with amber lamps
Synthwave Deep purple with neon magenta and cyan
Arctic Daylight Light and cool, with a clean blue accent
Vintage Console Warm brown analogue desk with teal readouts
Ember Charcoal with a red-orange glow
Forest Canopy Moss greens and bark browns
Slate Dusk Soft slate with peach and pastels
High Contrast Black, white and yellow, for legibility

Each theme has its own 12-colour track palette. Tracks remember a palette slot rather than a fixed colour, so they recolour with the theme.

The same orchestral project shown in six themes: Nebula Station, Conservatory, Code Rain, Synthwave, Midnight Amber and Arctic Daylight
One project, six of the twelve themes

The Edit menu open on its Theme submenu, listing twelve themes with colour swatches
Edit > Theme, with a colour swatch for each theme

Timeline / Arrangement

  • Starts with 4 audio tracks by default
  • Every track gets a colour from the current theme's palette, shown on its header strip, its clips and its mixer strip; change it with right-click > Track Colour
  • Clips are drawn in their track's colour with a title bar showing the clip name
  • Multi-track audio and MIDI arrangement with horizontal scrolling
  • Drag-and-drop audio files (.wav, .mp3, .flac, .ogg, .aiff) and MIDI files (.mid, .midi) from the built-in file browser onto any track
  • Waveform display on audio clips; note preview on MIDI clips
  • Move clips by dragging -- snaps to the grid horizontally and locks to track lanes vertically
  • Move clips between tracks by dragging up/down
  • Split clips at the playhead (S key or toolbar button)
  • Delete selected clips (Delete / Backspace)
  • Non-destructive clip fades — drag fade-in and fade-out handles at the top corners of any audio clip
  • Clip copy/paste — Ctrl+C / Ctrl+X / Ctrl+V to copy, cut, and paste clips at the playhead position
  • User-assignable clip colors — right-click any clip > Set Color to pick a custom color
  • Clip context menu: Edit in Piano Roll, Quantize, Duplicate, Set Color, Delete
  • Timeline context menu: Add Audio Track, Add MIDI Track, Create Empty MIDI Clip, Remove Track
  • Grid snapping: Off, Bar, 1/2, 1/4, 1/8, 1/16 or 1/32 (the Grid setting in the transport bar)
  • Horizontal and vertical zoom (Ctrl+= / Ctrl+-)
  • Ctrl+drag the right edge of a clip to loop it (non-destructive clip looping); clips dropped from the browser loop when you drag their edge
  • Freeze tracks to reduce CPU load; bounce MIDI tracks to audio via the track context menu
  • Animated playhead cursor that tracks playback in real time

Edit Tools

Pick a tool in the toolbar, under Edit > Edit Tool, or with the keys 1–5 while the timeline has focus:

Tool Key What it does
Smart 1 Move clips; drag the lower part of either edge to trim; drag the top corners for fades; drag the dB readout in an audio clip's title bar for clip gain (double-click resets it); Alt+drag to slip the audio inside the clip; drag empty space on an audio track to select a time range
Range 2 Drag across one or more tracks, over clips too, to select a time range; click to place the playhead
Razor 3 Click a clip to cut it there; Shift+click cuts every track at that point
Pen 4 Drag on a MIDI track to draw a clip
Eraser 5 Click a clip to delete it
  • Time selections span tracks: Delete removes what's inside, Shift+Delete ripple-deletes it (later clips move left), S splits every selected track at both edges, Ctrl+C / Ctrl+X / Ctrl+V copy, cut and paste the range (pasting at the playhead replaces what's there), and right-click loops it or makes it the punch range
  • Ripple editing (toolbar button, or Edit > Edit Tool > Ripple Editing): deleting clips or a range closes the gap on those tracks
  • Crossfades: clips crossfade automatically where they overlap on a track. Right-click an audio clip for Fade Shape (linear, fast, slow, S-curve) and to turn its crossfading off
  • Clip gain: each audio clip has its own gain, shown in its title bar and in the height of its waveform
  • Nudge: Alt+Left / Alt+Right moves the selected clips one grid step (add Shift for a quarter step), or the time selection when no clips are selected
  • Edit > Select Clips After Playhead (Ctrl+Shift+End)
  • A clip that doesn't loop stops where its audio file ends, so trimming never pulls in silence

Recording, Takes and Comping

  • Arm a track (R), pick its input, and press Record. Each pass you record on a track is kept as a take
  • While recording, the clip being recorded grows on the track with the playhead, and its waveform (or, on a MIDI track, its notes) is drawn as it comes in. When loop recording, it shows which pass you're on, with the previous pass drawn faintly ahead of the playhead
  • Loop recording: with Loop on, every pass around the loop becomes a take, and the track plays the last complete one. A pass cut short by stopping is kept but isn't used
  • Recording over existing audio replaces it on the track, but the old audio is kept as a take, so nothing is lost
  • Take lanes: the layers button on an audio track's header shows one lane per take under the track (they open by themselves after a loop recording). The parts of each take that are playing are drawn brighter
  • Comping: drag across a take lane to use that part of the take; double-click a take, or click its ✓, to use all of it. Takes join with short fades so the edits don't click. Right-click a take to delete it, or to delete the takes you aren't using
  • Punch in/out: turn on Punch in the transport bar and recording happens only inside the range on the ruler, drawn in red. Its arrow sets the pre-roll (how much plays before punch-in) and post-roll (how much plays after punch-out before it stops). Punch and Loop share the ruler range, so turning one on turns the other off
  • Edit > Audio Settings > Recording sets input monitoring (off, while the track is armed, or always) and a recording offset in milliseconds for lining recordings up with what you played along to

Looper

A live looper in the style of a looper pedal or looping app, built into the DAW. Build a song up loop by loop, bring parts in and drop them out, and when you stop, the whole performance is already on the timeline as ordinary clips you can edit, mix and export. Open it with View > Looper (Ctrl+L) or the pads button on the toolbar.

OpenDaw looper in action: on the right, the Looper window with four pads playing (Drums 1 bar, Bass 2 bars, Keys 2 bars, Lead 4 bars), each with a coloured ring showing where its loop is, and pad 5 recording in red; on the left, the timeline with each pad's track drawing what it plays as it plays, including a gap where the bass was stopped and started again
Performing with the looper: four loops playing in time and a fifth recording, while the timeline draws each pad's part as it happens

The same performance after pressing Stop: the Drums, Bass, Keys, Lead and Vox tracks hold ordinary audio clips, with the bass as two clips either side of the bar where it was stopped
Press Stop and the performance is on the timeline as clips, each loop exactly where it came in and dropped out

  • Pads: a grid of 8 loop pads (16 with More Pads). Click an empty pad to record, click again to close the loop, then click to stop it and start it again. The ring round each pad shows where the loop is; a blinking outline means it's waiting for the beat
  • First loop sets the tempo: record the first loop freely and its length sets the project tempo (as a whole number of beats or bars). Turn it off to loop at the project tempo instead, with an optional bar of count-in and the click
  • In time: taps land on the next beat, bar or loop (Start/stop on). A tap just after the beat still counts as on it. Loops after the first are whole beats, bars or loops long and play in phase with each other. Record can also stop a recording by itself after 1–16 bars
  • Overdub (Shift+click, or right-click > Overdub): adds a layer to a playing loop until you click again. Undo and Redo step back and forward through the layers
  • Right-click a pad to clear it, make it a one-shot (plays once, then stops) or put it in a group (A–D) so pads in the group take turns, like scenes
  • Hear input plays the input through the speakers while you loop (off by default when tracks don't monitor either, since a mic near speakers howls). Recordings are lined up with what you heard, allowing for the audio device's latency and the recording offset in Audio Settings
  • The performance goes on the timeline, with no need to press Record: each pad is its own track (Loop 1, Loop 2, ...; rename them like any track), and the looper runs as the transport plays forward. Whenever the transport is running and a pad is sounding, what it plays is drawn growing on its track; when you stop, it becomes clips covering exactly when each pad was playing, so the song keeps every loop coming in and dropping out. Each stop is one undo step (Ctrl+Z removes a take you don't want). A pad's track has its own fader, effects and routing, and the clips play through them like the live loops did. What you play over the loops without recording into a pad isn't included: arm a normal track and press Record for that
  • Keys 1–9 and 0 tap the pads (Shift: overdub), Space plays and stops, Esc stops every loop, Ctrl+Z / Ctrl+Y undo and redo the last pad's layer
  • The loops are saved with the project and come back when you open it

Track Automation

  • Toggle automation lanes per track from the track header
  • Automate any parameter: volume, pan, and all effect parameters
  • Add breakpoints by double-clicking the automation lane
  • Freehand drawing tool for painting automation curves
  • Drag individual points or rubber-band select and move groups of points
  • Drag curve segments between points to reshape them
  • Automation lanes resize vertically by dragging the lane border
  • Bypass automation per parameter via the lane header
  • Parameter selector dropdown to switch which parameter the lane displays

MIDI & Piano Roll

  • Add MIDI tracks via Edit > Add MIDI Track (Ctrl+Shift+T)
  • Create empty MIDI clips or import .mid / .midi files by dragging them onto a track
  • Multi-track MIDI file import with automatic merge
  • Full Piano Roll editor (docked as a tab alongside the Mixer):
    • Add notes with Ctrl+click or double-click
    • Move and resize notes by dragging
    • Delete notes with Delete / Backspace
    • Select all notes (Ctrl+A)
    • Quantize notes to grid
    • Velocity lane for per-note velocity editing
    • CC lane for MIDI continuous controller editing (modulation, expression, sustain, etc.) with freehand and line draw tools
    • Snap modes: Off, 1/4 Beat, 1/2 Beat, Beat, Bar
    • Zoom in / out
    • Right-click context menu: Select All, Delete Selected, Quantize, Add Note Here
    • Drum names on the keys when the track plays a drum kit (Kick, Snare, Closed Hi-Hat, Crash and so on, from the General MIDI drum map), and the view opens on the kit's core range
OpenDaw piano roll editing a harp part, with note grid, velocity lane, CC lane and MIDI channel list
Piano Roll — edit MIDI notes, velocity, and timing with snap-to-grid precision

AI Piano Hand Split

Recorded a piano part onto one track? Split Piano Hands (AI) separates it into a right-hand (treble) and a left-hand (bass) track.

  • A fixed split point always gets some notes wrong: a low melody note ends up in the bass, or a high left-hand note in the treble. Instead, Claude reads the notes in order and decides which hand played each one, from hand position, reach and voice leading — the way the part would be written across a grand staff
  • Run it from the track header's right-click menu or from Edit > Split Piano Hands (AI)...
  • The original track becomes " (RH)" and a new " (LH)" track is added beneath it; the split is a single undo step
  • Long performances are cut at bar lines and analysed in parallel, with a progress dialog you can cancel
  • Uses the same Anthropic API key as the AI assistant

Sheet Music View

  • Renders MIDI clips as standard music notation in a dedicated Sheet Music tab (alongside the Mixer, Piano Roll, and other bottom panels)
  • Grand staff display with treble and bass clefs, proper beam grouping, and ledger lines
  • Automatic note spelling with key signature support — choose from all 15 major/minor key signatures via a toolbar dropdown
  • Correctly quantizes MIDI note durations to whole, half, quarter, eighth, and sixteenth notes (with dotted variants)
  • Rests are automatically inserted to fill gaps in each measure
  • Measure numbers and bar lines for easy orientation
  • Zoom slider to adjust the horizontal scale
  • Scrollable score area with click-and-drag panning for navigating longer pieces
  • Opens automatically when you double-click a MIDI clip (alongside the Piano Roll)
OpenDaw sheet music view showing a harp part as a grand staff with treble and bass clefs, beamed notes, rests and measure numbers
Sheet Music View — see your MIDI clips rendered as standard notation with key signatures and proper engraving

Audio Clip Editor

  • Dedicated waveform editor for audio clips — double-click any audio clip to open the Audio Clip tab at the bottom
  • Destructive editing with full undo/redo — edits modify the source audio file directly, with a warning banner and confirmation prompt
  • Waveform display with time-based selection (click and drag to select regions)
  • Snap modes: Off, Beat, Bar
  • Mini transport controls: play from start, play/pause, stop, with real-time position display
  • Non-destructive gain slider with normalize and bake-gain buttons
  • Loop toggle, reverse toggle, and auto-tempo detection
  • Selection-based editing operations:
    • Cut, Copy, Paste, Delete selection
    • Silence selection
    • Fade in / Fade out
    • Normalize selection
    • Reverse selection
    • Adjust volume
    • Insert silence
    • DC offset removal
    • Swap channels / Mix to mono
    • Crossfade
  • Bake clip fades into the audio file
  • Info bar showing BPM, beat count, duration, format (sample rate / bit depth), and file path
OpenDaw audio clip editor showing waveform display, editing toolbar, and file browser
Audio Clip Editor — destructive waveform editing with cut, fade, normalize, reverse, and more

Built-in Instruments

MIDI tracks make sound out of the box, with no plugins to install, on Windows, macOS and Linux.

  • A full General MIDI sound set built in: pianos, electric pianos, organs, guitars, basses, strings, choirs, brass, woodwinds, synth leads and pads, world instruments and sound effects (all 128 General MIDI sounds plus about 150 variations), and 12 drum kits (Standard, Room, Power, Electronic, 808/909, Dance, Jazz, Brush, Orchestral and more)
  • New MIDI tracks start on the Grand Piano. Click the instrument button on a MIDI track's header or mixer strip to pick another sound from the menu, grouped by family, or a VST instrument
  • Follow MIDI Program Changes (in the same menu) turns the instrument into a General MIDI player: program changes in the MIDI choose each channel's sound and channel 10 plays drums, so imported General MIDI files play with their intended instruments on one track
  • The AI assistant picks fitting sounds for the parts it writes (set_track_instrument)
  • The sounds come from GeneralUser GS by S. Christian Collins, played by TinySoundFont

Surge XT synth. OpenDaw ships with Surge XT, the free, open-source hybrid synthesizer from the Surge Synth Team, with its 600+ factory patches, wavetables and skins. Choose Surge XT Synth in a MIDI track's instrument menu: it goes on the track and its window opens, where you browse presets by clicking the patch name (or the arrows beside it) and shape the sound. It's a regular VST3, so it also appears in the VST instrument list, and its settings are saved with the project. The AI can put it on a track too (set_track_instrument with "Surge XT").

VST3 Plugin Support

  • Scan for installed VST3 plugins (Edit > Scan VST Plugins)
  • Plugin list cached to %AppData%/OpenDaw/plugin-cache.xml
  • VST3 instruments — assign to MIDI tracks via a searchable selector dialog
  • VST3 effects — add scanned VST3 effect plugins to any track's effect chain alongside built-in effects
  • Open native plugin editor windows for full parameter control
  • Instrument button on MIDI track headers and mixer channel strips (click to open editor, right-click to change instrument)
  • VST3 plugin parameters are automatable via the automation lane system

Transport

  • Return to Start, Stop, Play, Record, Loop, Punch and Metronome buttons
  • Punch records only inside the ruler range, with pre-roll and post-roll set from its arrow (see Recording, Takes and Comping)
  • Count-in before recording (1 or 2 bars, or 1 or 2 beats)
  • Position counter showing bars | beats | ticks, with elapsed time (m:ss.ms) underneath
  • Tempo (20-300 BPM), meter and grid in a display panel beside the counter — type a value, or scroll over it to change it
  • Click the time ruler to jump the playhead (snaps to grid)
  • Click and drag the ruler to scrub smoothly without snapping
  • MIDI Panic (Ctrl+Shift+P) — sends all-notes-off on every channel to silence stuck notes
  • Engine On/Off — suspend the audio engine to free the audio device for another app

Export Audio

  • File > Export Audio (Ctrl+Shift+E) opens the export dialog
  • Export a mix or stems: the mix as one file, a file per track, or a file per bus (tracks routed into a bus share its file; tracks going straight to Master get their own). Each stem is that track's share of the mix, including the buses and effect returns it goes through, so the stems add up to the mix. Stem file names follow a pattern such as {project} - {name}
  • Range: the whole song, the loop / punch range, or the timeline's time selection
  • Four export formats: WAV (uncompressed), FLAC (lossless), OGG Vorbis and MP3 (lossy)
  • WAV: configurable bit depth (16 / 24 / 32-bit float)
  • FLAC: configurable bit depth (16 / 24)
  • OGG: configurable quality (0-10); MP3: 128 to 320 kbps
  • Sample rate: 44.1 / 48 / 88.2 / 96 kHz
  • Dither for 16-bit WAV and FLAC
  • Include Master effects: on for a mix, off for stems by default
  • Optional normalize on export
  • Loudness report: after exporting a mix, OpenDaw measures the file and tells you its integrated loudness, true peak and loudness range, and warns when the true peak is above -1 dBTP or streaming services will turn it down
  • Tracks that are disconnected or play out of another output aren't part of the mix, so they aren't exported
  • Remembers format, quality, and export directory between sessions

Audio Settings

  • Edit > Audio Settings opens the device configuration dialog
  • Select audio driver type (WASAPI, ASIO, DirectSound)
  • Choose output device, sample rate, and buffer size
  • Shows calculated latency in milliseconds
  • Recording: input monitoring (off, while the track is armed, or always) and a recording offset in milliseconds
  • Settings persist across sessions

Autosave & Recovery

  • OpenDaw automatically saves your work periodically in the background
  • If the application closes unexpectedly, a recovery dialog appears on next launch
  • Lists all recoverable sessions with timestamps
  • Choose to restore a previous session or discard recovery data

Track Headers (left panel)

  • Compact layout: a colour strip, the track name and its type badge (AUDIO, MIDI or BUS) on the first row
  • Second row: Record Arm (R), Solo (S), Mute (M), plus Mono/Stereo, Freeze and Automation toggles
  • Below those: the instrument button (MIDI tracks), the input and output selectors (Master or any bus), and volume and pan sliders
  • Click the ▾ arrow to collapse a track to its name row
  • Real-time level meter (green/yellow/red) that reacts to playback audio
  • Right-click for Rename, Track Colour and Split Piano Hands (AI)
  • Drag to reorder — drag track headers up/down to rearrange track order
  • Vertically synchronized with the timeline scroll

Mixer (bottom panel)

OpenDaw mixer: colour-coded channel strips with input and output selectors, track nameplates, VST instrument selectors, pan knobs, faders with dB scales, dB readouts and M/S/R buttons, and the master strip on the right
  • Channel strip per track: input and output selectors, a Sends button for aux sends, a nameplate in the track's colour, pan knob, volume fader with dB scale and readout, level meter, Mute / Solo / Record Arm, mono toggle and automation mode (Read / Touch / Latch / Write)
  • Instrument selector and MIDI channel on MIDI track strips
  • Bus channel strips alongside regular tracks
  • Master channel strip on the right
  • Loudness meter beside the master strip, measuring what OpenDaw plays to ITU-R BS.1770 / EBU R128: integrated, short-term and momentary loudness in LUFS, loudness range, and true peak (red above -1 dBTP). Pick a target (streaming -14, Apple Music -16, broadcast -23, ...) and it tells you how far off the mix is. It starts a new measurement each time playback starts, or when you press Reset
  • Drag channel strips to reorder tracks directly in the mixer
  • Always left-aligned, horizontally scrollable

Built-in Effects

Add any of these to a track with one click from the Effects panel or mixer FX slots:

Effect Description
Reverb Room size, damping, wet/dry
EQ 4-band equalizer with per-band gain
Compressor Threshold, ratio, attack, release
Delay Delay time, feedback, mix (with tempo-sync mode)
Chorus Rate, depth, mix
Phaser Rate, depth, feedback
Low Pass Filter Cutoff frequency
Pitch Shift Semitone shift

Routing (bottom panel, tabbed)

OpenDaw routing graph: input channels, tracks with OUT and SEND jacks, a Reverb effects bus fed by two dashed send cables labelled -3.0 dB and -6.0 dB, the Master node, and three hardware outputs with the main one badged MAIN
Graph view: dashed cables are aux sends, labelled with their level

OpenDaw routing matrix: one row per track, OUTPUT TO columns for Master, buses, hardware outputs and None with a dot on each track's current output, and SEND TO columns showing send levels
Matrix view: patch many tracks at once
  • Aux sends — send a copy of any track or bus into a bus at its own level while its output keeps going where it goes: shared reverbs and delays, parallel compression, headphone mixes. Each send has a level (-60 to +6 dB), pre/post-fader, mute and phase invert
  • Effects buses — one click creates a Reverb, Delay, Chorus or Phaser bus with the effect fully wet, ready for sends
  • Subgroup buses — route tracks into a bus to process and level them together; buses can feed other buses
  • Direct hardware outputs — play a track straight out of another output of your interface, skipping Master (cue mixes, outboard gear)
  • Sidechain keys — drop a track's OUT on a compressor's SC jack
  • Feedback-loop protection — connections that would feed a bus back into itself are refused, through outputs and sends alike
  • Graph view: drag OUT to route, drag SEND to add a send. While you drag, inputs that can't take the cable dim and a label says what letting go will do. Drop on empty space to create a new bus or effects bus right there. Grab a plugged-in cable end to move it, or pull it away to unplug it. Scroll over a send to change its level; double-click it for all of that track's sends
  • Live signal flow: each node shows its level, and cables carrying audio pulse while it plays. Muted (or soloed-out) tracks grey out
  • Mute and solo on every node, plus a right-click menu for output, input, sends, effects, rename and delete. Select several tracks and right-click to route them all into a new bus or send them all to a bus
  • Matrix view: one row per track, columns for every output and every bus. Click a dot to change an output; click under SEND TO to add a send, then drag or scroll it to set the level
  • Sends in the mixer — each channel strip has a Sends button that opens the same send controls
  • Node positions are saved with the project; Auto Layout and Zoom to Fit tidy the view

Effects Panel (right panel, tabbed)

  • Select a track to see and edit its effect chain
  • Add effects via the "+ Add Effect" button and dialog
  • Per-effect bypass and remove controls
  • Rotary knobs for up to 4 parameters per effect

File Browser (right panel, tabbed)

  • Browse your file system filtered to audio and MIDI files
  • Quick-jump locations: Desktop, Music, Documents, Home
  • Drag files directly from the browser onto timeline tracks

AI Assistant — Your Studio Co-Engineer

OpenDaw ships with a built-in AI assistant powered by Anthropic's Claude that can control the entire DAW through natural language. This isn't a chatbot that tells you what buttons to click — it actually executes operations directly on your project, calling up to 30 different tools in an autonomous loop until your request is fulfilled.

Press Ctrl+Shift+Space from anywhere to open the quick prompt overlay, type what you need, and watch it happen.

OpenDaw AI assistant panel: the assistant reports writing the woodwind, brass, harp and timpani parts, then summarises the orchestral piece in A minor with a bar-by-bar chord table
AI Assistant — describe what you want in plain English and watch it build tracks, compose MIDI, set up routing, and more

Why it matters

Most DAW workflows involve dozens of repetitive clicks: creating tracks, naming them, setting up routing, dialing in effects. The AI assistant collapses these into a single sentence. It reads your current project state — every track name, every effect chain, every routing connection — and figures out the right sequence of operations to get you where you want to be.

Session setup in seconds

Skip the tedious part of starting a new project. Describe what you need and the AI builds it:

"I'm recording a jazz quartet. Set up tracks for upright bass, piano, drums, and tenor sax. Route them all to master. Add a light reverb to every track and set the tempo to 132 BPM in 4/4."

The AI creates four named tracks, adds reverb to each one, sets the tempo, and confirms what it did — all in one go. What would take 30+ clicks takes one sentence.

"Set up a full orchestra template: Violins 1, Violins 2, Violas, Cellos, Basses, Flutes, Oboes, Clarinets, Bassoons, French Horns 1-2, Trumpets 1-2, Trombones 1-2, Tuba, Timpani, Harp, and Percussion. Create a Strings bus and a Brass bus. Route the string sections to the Strings bus and the brass to the Brass bus."

Twenty-plus tracks, two buses, and all routing — done before you could have right-clicked twice.

Bulk editing without the tedium

Make sweeping changes across your entire project with plain English:

"Mute everything except the vocals and drums."

"Set all tracks to -6 dB and pan the guitars hard left and right."

"Rename every track by adding 'Session 3 - ' to the front of each name."

"Solo only Track 1 and Track 4."

The AI reads the current state, figures out which tracks need changing, and calls the right tools for each one.

Sound design by description

You don't need to know that the reverb's "room size" parameter is at index 0 and normalized to 0.0–1.0. Just describe what you want to hear:

"Make the reverb on the vocal track sound much longer and more ethereal."

The AI inspects the current reverb parameters, understands that "longer" means increasing room size and decay, and "ethereal" means pushing wet mix higher while reducing damping — then sets the values accordingly.

"The delay on the guitar feels too busy. Reduce the feedback and pull back the mix."

"Add a compressor to the drum bus. Set it up for gentle glue — low ratio, medium attack, fast release."

"Bypass all the effects on Track 3 so I can hear it dry."

Routing and signal flow

Building complex routing by dragging cables is powerful but slow. The AI handles it conversationally:

"Create a bus called 'Room', put a reverb on it, and send tracks 1, 2 and 5 to it at -8 dB."

"Move the bass and kick drum to a new 'Low End' bus."

"Disconnect the output on every track except the master bus."

"What are my available input devices? Assign the first one to Track 1."

MIDI composition and arrangement

This is where OpenDaw's AI goes far beyond any traditional DAW assistant. You can describe musical ideas in plain English and the AI will compose and write actual MIDI notes directly into your project — no scripting, no templates, no manual entry.

Under the hood, the AI uses create_midi_clip and add_midi_notes to place real notes with precise pitch, timing, duration, and velocity into your piano roll. It understands music theory and translates your intent into actual note data.

"Create a string arrangement for the chord progression C, Am, F, G. Four bars, lush and cinematic."

The AI creates MIDI tracks for Violins, Violas, and Cellos, works out the correct chord voicings and inversions for each part, adds movement and passing tones so the arrangement breathes, and writes all the notes directly into the piano roll — ready to play back immediately with your VST strings.

"Write a bass line following the root notes of C, Am, F, G over two bars. Eighth notes, punchy."

"Harmonize that melody with thirds above it on a new MIDI track."

"Add an arpeggiated piano part over the C Am F G progression — broken chords, gentle, three beats per chord."

"Double the violin line an octave lower on a cello track."

The AI knows which notes belong to each chord, how to voice them across registers, and how to make an arrangement feel intentional rather than mechanical. It can also read your existing MIDI clips and build on what you already have.

More composition scenarios:

"I have a 4-bar loop with drums and bass. Add a Rhodes piano comping Em, D, C, G in a syncopated style."

"Generate an 8-bar melody over C major that peaks at bar 5 then resolves."

"Create a countermelody that responds to the main melody on Track 2."

"Set up a full string section: Violin 1, Violin 2, Viola, Cello, Bass — each on its own MIDI channel."

This is real MIDI note generation backed by actual tool calls — not suggestions, not instructions on what to click. The notes appear in your piano roll, ready to edit, play, and export.

Project housekeeping

Keep your session organized without breaking flow:

"Delete all the empty tracks."

"What effects are on each track? Give me a summary."

"Save the project."

"Undo that last change."

"What's the current tempo and time signature?"

Teaching and exploration

The AI knows what tools it has and can explain your project to you:

"I'm new to mixing. Can you explain what each of my tracks is doing right now?"

"What effects do I have available?"

"Walk me through a basic mixing approach for my 8-track rock session."

Because it can read your actual project state, its advice is grounded in what you really have — not generic suggestions.

How it works under the hood

The assistant uses agentic tool use: when you send a message, it decides which tools to call, executes them, reads the results, and continues calling more tools if needed — up to 20 rounds per request. It's not scripted or template-based; it reasons about your request and your project state dynamically.

30 tools cover the full surface of the DAW:

Category Tools
Track management Create audio/MIDI/bus tracks, delete, rename
Instruments List the built-in sounds and installed VST instruments, and choose each MIDI track's sound
Track properties Mute, solo, volume, pan, mono, record arm
Routing Assign inputs, set outputs to master or buses, disconnect
Effects Add/remove built-in effects, set parameters, bypass
MIDI composition Create MIDI clips, add notes with pitch/timing/velocity/duration
Transport Play, stop, record, seek, tempo, time signature
Analysis Track levels, live master loudness, an exact offline loudness measurement of the mix (LUFS, true peak, loudness range), frequency balance, stereo image, transients, masking
Project Save, undo, redo, get project info

Key features:

  • Streaming responses — tokens appear word-by-word as the AI thinks, so you see progress immediately
  • True agentic behavior — the AI calls tools, inspects results, and loops until the task is complete
  • Destructive action safety — optionally prompts for confirmation before deleting tracks or removing effects (on by default)
  • Tool output toggle — click "Tools: OFF/ON" to show or hide detailed tool call information (off by default for a clean experience)
  • Dynamic project awareness — the system prompt is rebuilt with your current project state at each conversation, so the AI always knows exactly what tracks, effects, and routing you have
  • Persistent chat sessions — conversations are saved alongside your project file and restored when you reopen the project
  • Audio analysis — the AI can analyze track and master levels, frequency balance, stereo image, transients, and inter-track masking to give mix advice grounded in actual measurements
  • Conversation memory — the AI remembers what you've discussed and done within a session
  • Privacy-first — bring your own Anthropic API key, stored locally in app settings, never sent anywhere except Anthropic's API

Project Management

  • File > New Project -- start fresh with 4 empty audio tracks
  • File > Open Project -- load a .tracktionedit file
  • File > Open Recent -- your last 10 projects
  • File > Save / Save As -- save your arrangement
  • File > Import Audio (Ctrl+I) / Import MIDI (Ctrl+Shift+I) / Import Video
  • File > Export Audio -- mix down to WAV, FLAC or OGG (Ctrl+Shift+E)
  • Edit > Undo (Ctrl+Z) / Redo (Ctrl+Y), Delete Selected Clips, Select All Clips (Ctrl+A)
  • Edit > Add Audio Track / Add MIDI Track / Remove Selected Track
  • Edit > Split Piano Hands (AI) -- split a piano track into right- and left-hand tracks
  • Edit > Theme -- choose one of 12 colour themes
  • Edit > Audio Settings -- configure audio device, sample rate, buffer size
  • Edit > Scan VST Plugins -- scan for installed VST3 instruments
  • View -- show or hide each panel (Mixer, Routing, Browser, Effects, AI Assistant, Sheet Music, Piano Roll, Audio Clip Editor); a tick shows which are open
  • Panel sizes, positions and window size are remembered between sessions
  • Transport > MIDI Panic (Ctrl+Shift+P) -- silence stuck notes
  • Help > About OpenDaw

Logs and Crash Reports

  • Each run writes OpenDaw.log; the previous run's log is kept as OpenDaw.prev.log
  • If OpenDaw crashes, it writes a minidump, OpenDaw-crash.dmp, plus a crash summary in the log
  • These go next to OpenDaw.exe for the portable build, or to %LOCALAPPDATA%\OpenDaw\OpenDaw when the program folder isn't writable (the installer's Program Files location)
  • Attach them when you report a bug

Prerequisites

You need the following installed on Windows:

Tool Version Notes
Visual Studio 2022 Community or higher Provides the MSVC C++ compiler
Qt 6.10+ MSVC 2022 64-bit kit Install via Qt Online Installer or aqtinstall
CMake 3.22+ Bundled with Qt at c:\qt\Tools\CMake_64\
Ninja 1.10+ Bundled with Qt at c:\qt\Tools\Ninja\
Git 2.x For cloning and submodule management

Installing Qt MSVC kit via command line (optional)

If you only have the MinGW Qt kit, you can add the MSVC kit without the Qt Maintenance Tool:

pip install aqtinstall
aqt install-qt windows desktop 6.10.2 win64_msvc2022_64 --outputdir c:\qt

Building

All commands are for PowerShell on Windows.

1. Clone the repository with submodules

git clone --recurse-submodules https://github.com/glenwrhodes/OpenDaw.git
cd OpenDaw

If you already cloned without submodules:

git submodule update --init --depth 1

2. Check out the correct JUCE version

Tracktion Engine requires a specific JUCE commit. After cloning:

cd libs/JUCE
git fetch origin 7c89e11f6b7316c369f3d3f22227c60e816e738b
git checkout 7c89e11f6b7316c369f3d3f22227c60e816e738b
cd ../..

3. Configure with CMake

This must be run from a Visual Studio Developer Command Prompt (or use the vcvarsall.bat wrapper below):

cmd /c "`"C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Auxiliary\Build\vcvarsall.bat`" x64 && c:\qt\Tools\CMake_64\bin\cmake.exe -B build -G Ninja -DCMAKE_PREFIX_PATH=c:/qt/6.10.2/msvc2022_64 -DCMAKE_C_COMPILER=cl -DCMAKE_CXX_COMPILER=cl -DCMAKE_MAKE_PROGRAM=c:/qt/Tools/Ninja/ninja.exe"

Adjust paths if your Qt or Visual Studio installation differs.

4. Build

cmd /c "`"C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Auxiliary\Build\vcvarsall.bat`" x64 && c:\qt\Tools\CMake_64\bin\cmake.exe --build build"

The first build takes 2-4 minutes (compiling JUCE and Tracktion Engine). Subsequent rebuilds are fast (10-15 seconds).

Quick Build Script

Instead of the manual steps above, you can use the included build.ps1 PowerShell script:

# Incremental build (fast, ~10-15 seconds)
.\build.ps1

# Full reconfigure + build (needed after CMakeLists.txt changes or new git tags)
.\build.ps1 -Clean

The script automatically sets up the MSVC environment, configures if needed, and builds. It will also kill any running OpenDaw instance before building. Use -Clean after updating a git tag so the new version number gets picked up.

5. Run

# Add Qt DLLs to PATH for runtime
$env:PATH = "c:\qt\6.10.2\msvc2022_64\bin;" + $env:PATH

# Launch
.\build\OpenDaw_artefacts\Debug\OpenDaw.exe

Or deploy Qt DLLs alongside the executable:

c:\qt\6.10.2\msvc2022_64\bin\windeployqt.exe .\build\OpenDaw_artefacts\Debug\OpenDaw.exe
.\build\OpenDaw_artefacts\Debug\OpenDaw.exe

How to Use OpenDaw

Getting started

  1. Launch OpenDaw. The window opens with 4 empty audio tracks, a transport bar at the top, track headers on the left, the timeline in the center, the mixer at the bottom, and the file browser / effects panel tabbed on the right.

  2. Set your tempo. In the panel beside the position counter, type a new Tempo or scroll over it (default 120). Set the Meter the same way (default 4/4).

  3. Set your grid. Use the Grid dropdown in the same panel: 1/4 (default), Bar, 1/2, 1/8, 1/16, 1/32, or Off.

  4. Pick a theme (optional) from Edit > Theme.

Adding audio to the timeline

  1. In the Browser tab (right panel), navigate to a folder containing audio or MIDI files. Use the dropdown at the top for quick access to Desktop, Music, Documents, or Home.

  2. Drag an audio file (.wav, .mp3, .flac, .ogg, .aiff) or MIDI file (.mid, .midi) from the browser and drop it onto a track lane in the timeline. The clip will snap to the grid at the drop position.

  3. Audio clips display their waveform; MIDI clips display a note preview. You can drag any clip to reposition -- it snaps horizontally to the grid and vertically to track lanes.

  4. To add more tracks, go to Edit > Add Audio Track (Ctrl+T) or Edit > Add MIDI Track (Ctrl+Shift+T).

Playback

  • Click Play (or press Space) to start playback from the current playhead position.
  • Click Stop to stop and return the playhead to the beginning.
  • Click on the time ruler (the bar/beat numbers at the top) to jump the playhead to that position (snapped to grid).
  • Click and drag on the ruler to scrub smoothly through the timeline.
  • Toggle Loop to loop playback over the current region.

Mixing

Each track has controls in two places:

Track headers (left of timeline):

  • M -- Mute the track
  • S -- Solo the track (only this track plays)
  • R -- Arm for recording
  • Mono/Stereo toggle -- switch between mono and stereo processing
  • Volume and Pan sliders
  • Input selector -- choose an audio input device
  • Output selector -- route to Master, a bus, a direct hardware output, or nowhere
  • Level meter -- shows real-time audio level (green = good, yellow = hot, red = clipping)

Mixer panel (bottom):

  • Same controls in a traditional vertical channel strip layout
  • Volume fader -- vertical, drag up/down; the dB readout sits underneath
  • Pan knob -- rotary control
  • Automation mode button -- Read, Touch, Latch or Write
  • Master strip on the far right -- controls overall output level

Routing

  1. Switch to the Routing tab (tabbed alongside the Mixer, Piano Roll, Audio Clip, and Sheet Music at the bottom). Graph and Matrix at the left of its toolbar switch between the two views.
  2. The graph shows your signal chain as draggable nodes: input channels on the left, then tracks, buses, Master, and your hardware outputs on the right.
  3. Group tracks into a bus: click + Bus, then drag each track's OUT jack onto the bus's IN jack. Or select several tracks, right-click one and choose "Route Selected into a New Bus".
  4. Share a reverb: click + Effects Bus > Reverb Bus, then drag each track's SEND jack onto the Reverb bus's IN. Or drag a SEND onto empty space and pick "Send to a New Reverb Bus". Scroll over a send's label to set its level; right-click it for pre/post-fader, mute and phase.
  5. Move or remove a connection by grabbing the cable at its plugged-in end: drop it on another input to move it, or on empty space to unplug it. Pressing Delete with a cable clicked also removes it.
  6. Play a track straight out of another output (for a cue mix) by dragging its OUT onto that output's node.
  7. In the Matrix, click a dot to change a track's output, and click under SEND TO to add a send. Then drag up or down on it, or scroll, to set its level.
  8. Add effects to a bus like any track: select it, then add effects in the Effects panel.

Working with MIDI

  1. Add a MIDI track via Edit > Add MIDI Track (Ctrl+Shift+T). It plays the built-in Grand Piano; click its instrument button to choose another sound.
  2. Create a MIDI clip by right-clicking a MIDI track lane and selecting "Create Empty MIDI Clip", or drag a .mid file from the browser.
  3. Open the Piano Roll by double-clicking a MIDI clip (or right-click > Edit in Piano Roll).
  4. Add notes with Ctrl+click or double-click on the grid. Drag notes to move them, drag edges to resize.
  5. Edit velocity in the velocity lane at the bottom of the Piano Roll -- drag the bars up/down.
  6. Quantize notes from the right-click context menu or the Piano Roll toolbar.
  7. View as sheet music — switch to the Sheet Music tab at the bottom to see your MIDI clip rendered as standard notation. Use the key signature dropdown to change enharmonic spelling.

Editing audio clips

  1. Double-click an audio clip in the timeline to open the Audio Clip tab at the bottom.
  2. The waveform editor shows the full audio file. Click and drag to select a region.
  3. Use the toolbar buttons for Cut, Copy, Paste, Silence, Fade In/Out, Normalize, Reverse, and more.
  4. Edits are destructive (they modify the source file) but fully undoable — the editor maintains its own undo/redo stack.
  5. Adjust the non-destructive Gain slider, or click Norm to normalize, then Bake to write the gain into the file.
  6. The info bar at the bottom shows BPM, duration, sample rate, bit depth, and the source file path.

Using VST3 instruments

MIDI tracks already play the built-in sounds; VST3 instruments are for when you want something else.

  1. Scan for plugins via Edit > Scan VST Plugins. This only needs to be done once (results are cached).
  2. Assign an instrument to a MIDI track by clicking the instrument button on the track header or mixer channel strip.
  3. Open the plugin editor by clicking the instrument button on a MIDI track that already has an instrument assigned. Right-click to change the instrument.

Adding effects

  1. Select a track, then open the Effects tab in the right panel.
  2. Click + Add Effect to open the effect selector dialog.
  3. Choose from 8 built-in effects and click OK (or double-click).
  4. The effect appears with parameter knobs. Adjust to taste.
  5. Click Byp to bypass an effect, or X to remove it.

Using the AI Assistant

  1. Set your API key. Click the AI tab in the right panel, then click Settings. Enter your Anthropic API key (sk-ant-...) and click OK. The key is stored locally and only sent to Anthropic's API.

  2. Quick prompt (Ctrl+Shift+Space). Press Ctrl+Shift+Space from anywhere in the app. A floating text input appears — type your request and press Enter. The AI panel opens and the assistant begins working.

  3. Chat panel. Click the AI tab on the right panel to open the full chat interface. Type in the input box at the bottom and press Enter (or click Send). Shift+Enter adds a new line.

  4. Watch it work. The AI streams its response in real time. If tools are needed (creating tracks, changing settings, adding effects), it calls them automatically and continues until the task is done.

  5. Tool output toggle. Click the Tools: OFF button in the header to see detailed tool call information — useful for understanding exactly what the AI did. Toggle it back off for a cleaner view.

  6. Destructive action safety. By default, the AI will ask for confirmation before deleting tracks or removing effects. You can toggle this in Settings.

  7. Clear conversation. Click Clear to start a fresh conversation. The AI will re-read your current project state at the start of the next message.

Saving, loading, and exporting

  • File > Save As (Ctrl+Shift+S) -- save your project as a .tracktionedit file.
  • File > Save (Ctrl+S) -- save to the current file.
  • File > Open (Ctrl+O) -- load a previously saved project.
  • File > New (Ctrl+N) -- start a fresh empty project.
  • File > Export Audio (Ctrl+Shift+E) -- mix down your project, or export stems, to WAV, FLAC, OGG Vorbis or MP3. Choose what to export, the range, format, sample rate, bit depth (or quality), dither and whether to normalize. A mix export ends with a loudness report.

Keyboard shortcuts

Global

Shortcut Action
Space Play / Pause
R Record (press again to stop)
S Split clip at playhead, or every selected track at the edges of the time selection
Delete / Backspace Delete the time selection, or the selected clips
Shift+Delete Ripple delete (close the gap)
1 / 2 / 3 / 4 / 5 Smart / Range / Razor / Pen / Eraser tool (timeline)
Alt+Left / Alt+Right Nudge the selected clips one grid step (with Shift, a quarter step)
Esc Clear the time selection
Ctrl+Shift+End Select clips after the playhead
I / O Set loop start / end at the playhead
Ctrl+Z / Ctrl+Y Undo / Redo
Ctrl+A Select all clips
Ctrl+T Add audio track
Ctrl+Shift+T Add MIDI track
Ctrl+N New project
Ctrl+O Open project
Ctrl+S Save project
Ctrl+Shift+S Save As
Ctrl+C Copy the selected clips or time selection
Ctrl+X Cut the selected clips or time selection
Ctrl+V Paste at the playhead
Ctrl+I Import audio
Ctrl+Shift+I Import MIDI
Ctrl+Shift+E Export audio
Ctrl+Shift+P MIDI Panic (all notes off)
Ctrl+L Looper
Ctrl+Q Quit
Ctrl+= Zoom in (timeline)
Ctrl+- Zoom out (timeline)
Ctrl+Shift+Space Open AI quick prompt

Piano Roll

Shortcut Action
Ctrl+click / Double-click Add note
Delete / Backspace Delete selected notes
Ctrl+A Select all notes

Project Structure

AudioMixer/
  CMakeLists.txt                          Root build configuration
  README.md                               This file
  LICENSE                                 GPLv3 license
  CONTRIBUTING.md                         Contribution guidelines
  build.ps1                               PowerShell build script (incremental / -Clean)
  .github/
    workflows/
      release.yml                         CI/CD: build + release on tag push
  installer/
    opendaw.iss                           Inno Setup installer script
  resources/
    splash.png                            Splash screen artwork
    icon.png                              Application icon (PNG)
    OpenDaw.ico                           Windows application icon
    audio-clip-editor.png                 Audio clip editor screenshot
    screenshots/                          README screenshots (main window, themes, mixer, piano roll, ...)
    fontaudio.ttf                         Icon font for audio controls
    MaterialSymbolsOutlined.ttf           Material Design icon font
    Bravura.otf                           SMuFL music notation font
    mixerStripBG.png                      Mixer channel strip background
  libs/
    JUCE/                                 JUCE framework (git submodule)
    tracktion_engine/                     Tracktion Engine (git submodule)
    tinysoundfont/                        TinySoundFont, the SoundFont player behind the built-in instruments
  src/
    main.cpp                              Entry point, JUCE-Qt bridge
    app/
      OpenDawApplication.h/cpp            Application lifecycle, recovery check
      JuceQtBridge.h/cpp                  QTimer-based JUCE message pump
    engine/
      AudioEngine.h/cpp                   Wraps tracktion::engine::Engine, MIDI device enumeration
      LoudnessMeter.h/cpp                 BS.1770 / EBU R128 loudness meter, the output tap and file analysis
      LooperPlugin.h/cpp                  The looper's audio: input hub, per-pad recording, overdub, playback and print
      LooperEngine.h/cpp                  The looper: pads, timing, layers, saving, and printing the performance
      instruments/
        SoundFontInstrument.h/cpp         The built-in General MIDI instrument and its sound library
        BundledPlugins.h/cpp              Plugins shipped with OpenDaw (Surge XT): finding and registering them
      EditManager.h/cpp                   Manages the current Edit: tracks, clips, routing, export, autosave
      PluginScanner.h/cpp                 VST3 plugin scanning and cache
    ui/
      MainWindow.h/cpp                    Main window with menus, docks, toolbar
      SplashScreen.h/cpp                  Borderless splash screen (click to dismiss)
      dialogs/
        ExportDialog.h/cpp                Export dialog: mix or stems, range, format, bit depth, dither
        RecoveryDialog.h/cpp              Crash recovery session picker
        AudioSettingsDialog.h/cpp         Audio device and buffer configuration
      timeline/
        TimelineView.h/cpp                Arrangement view with track headers and automation
        TimeRuler.h/cpp                   Beat/bar ruler with click and drag
        TrackHeaderWidget.h/cpp           Per-track controls, level meter, instrument button
        TrackLane.h/cpp                   Track lane data model
        ClipItem.h/cpp                    Audio/MIDI clip: move, trim, slip, fades, clip gain
        EditTool.h/cpp                    The active edit tool (Smart, Range, Razor, Pen, Eraser) and ripple mode
        TakeLanes.h/cpp                   Take lanes and their headers, for comping recorded takes
        RecordingPreview.h/cpp            The clip being recorded (and the looper's print), drawn live
        GridSnapper.h/cpp                 Snap-to-grid logic
        AutomationLaneItem.h/cpp          Parameter automation lane (curve, points, freehand draw)
        AutomationPointItem.h/cpp         Draggable automation breakpoint
        AutomationLaneHeader.h/cpp        Parameter selector, bypass, close for automation lane
        EnvelopeUtils.h                   Beat/pixel/value math and envelope path building
      pianoroll/
        PianoRollEditor.h/cpp             Piano roll dock widget container
        PianoRollRuler.h/cpp              Beat/bar ruler for the piano roll
        NoteGrid.h/cpp                    Note editing grid (add, move, resize, delete)
        NoteItem.h/cpp                    Individual MIDI note graphics item
        VelocityLane.h/cpp                Per-note velocity editor
        CcLane.h/cpp                      MIDI CC editor lane (freehand / line draw)
        PianoKeyboard.h/cpp               Piano keyboard sidebar
        ChannelColors.h                   16 fixed colors for MIDI channels 1-16
      sheetmusic/
        SheetMusicView.h/cpp              Sheet music tab container with toolbar
        NotationModel.h/cpp               MIDI-to-notation model (measures, beams, rests)
        ScoreScene.h/cpp                  QGraphicsScene renderer for engraved notation
      audioclip/
        AudioClipEditor.h/cpp             Audio clip editor tab with destructive editing
        AudioWaveformView.h/cpp           Zoomable waveform display with selection
        AudioFileOperations.h/cpp         Cut, fade, normalize, reverse, etc.
        AudioFileUndoManager.h/cpp        Undo/redo stack for destructive file edits
        WaveformSelection.h               Selection model for audio waveform view
      mixer/
        MixerView.h/cpp                   Horizontal mixer panel
        ChannelStrip.h/cpp                Per-track mixer strip with instrument selector
        SendsPanel.h/cpp                  Popup for a track's aux sends (level, pre/post, mute, phase)
        LoudnessPanel.h/cpp               Loudness meter beside the master strip
      looper/
        LooperWindow.h/cpp                The looper window: pads, settings, input meter
      transport/
        TransportBar.h/cpp                Transport buttons, position counter, tempo/meter/grid panel
      controls/
        RotaryKnob.h/cpp                  Custom painted rotary knob
        VolumeFader.h/cpp                 Custom painted vertical fader
        LevelMeter.h/cpp                  Animated green/yellow/red level meter
        WaveformWidget.h/cpp              Waveform rendering widget
      effects/
        EffectChainWidget.h/cpp           Per-track effect chain editor
        DelayEffectWidget.h/cpp           Delay effect UI with tempo-sync mode
        EffectSelectorDialog.h/cpp        Effect picker dialog
        PluginEditorWindow.h/cpp          Native VST plugin editor window
        VstSelectorDialog.h/cpp           Searchable VST instrument selector
        InstrumentMenu.h/cpp              The instrument picker: built-in sounds by family, VSTs, none
      routing/
        RoutingView.h/cpp                 Routing graph: nodes, cables, sends, live signal flow
        RoutingMatrixView.h/cpp           Routing matrix: outputs and sends as a grid
        RoutingNode.h/cpp                 Draggable routing node (input/track/bus/master/output)
        CableItem.h/cpp                   Cable between jacks (output, send, sidechain)
      browser/
        FileBrowserPanel.h/cpp            File system browser with drag support
    ai/
      AiTypes.h                           Shared types: messages, tool calls, roles
      AiToolDefs.h/cpp                    30 tool JSON schemas for Anthropic API
      AiToolExecutor.h/cpp                Dispatches tool calls to engine APIs
      AiService.h/cpp                     Anthropic API client with SSE streaming
      AiChatWidget.h/cpp                  Chat panel UI with streaming & markdown
      AiChatStore.h/cpp                   Persistent chat sessions (saved alongside project)
      AiQuickPrompt.h/cpp                 Ctrl+Shift+Space overlay prompt
      AiAudioAnalysis.h/cpp               Mix analysis: levels, spectrum, stereo, transients, masking
      AiHandSplitter.h/cpp                AI piano hand split (assigns each note to a hand)
    utils/
      WaveformCache.h/cpp                 Audio file waveform thumbnail cache
      ThemeManager.h/cpp                  The 12 colour themes and their track palettes
      IconFont.h                          Icon font registration and glyph constants

Architecture

OpenDaw bridges two frameworks:

  • Qt 6 Widgets handles all GUI rendering, layout, and user interaction
  • Tracktion Engine (built on JUCE) handles all audio: playback, recording, effects processing, plugin hosting, and the project data model

A QTimer pumps JUCE's MessageManager every 10ms from Qt's event loop, allowing both frameworks to coexist. Tracktion Engine's audio processing runs on its own real-time thread, independent of either GUI event loop.


Contributing

Contributions are welcome! Whether it's bug reports, feature requests, or pull requests — all help is appreciated.

See CONTRIBUTING.md for details on how to get started, coding conventions, and the PR process.


License

This project is licensed under the GNU General Public License v3.0 — see the LICENSE file for details.

OpenDaw uses Tracktion Engine (GPLv3) and JUCE (AGPLv3), both of which are compatible with this license.

The built-in instruments use TinySoundFont (MIT licence, in libs/tinysoundfont) and the GeneralUser GS SoundFont by S. Christian Collins, which is free to use and redistribute in software (its licence ships beside it in the soundfonts folder). The SoundFont is downloaded when CMake configures the build.

OpenDaw ships the Surge XT synthesizer by the Surge Synth Team (GPLv3; the unmodified official 1.3.4 release, whose source is at release_xt_1.3.4). Its licence ships beside it as Surge XT LICENSE.txt. CMake downloads the release and its factory content when it configures the build (pass -DOPENDAW_BUNDLE_SURGE_XT=OFF to leave it out).


Made with care for musicians and producers everywhere.

If OpenDaw is useful to you, consider giving it a star on GitHub.

About

OpenDaw — a free, open-source Digital Audio Workstation for Windows. Qt 6 UI, Tracktion Engine audio, MIDI piano roll, VST3 instruments, built-in effects, Claude AI assistant.

Topics

Resources

Contributing

Stars

71 stars

Watchers

3 watching

Forks

Releases

Packages

Contributors

Languages