A lightweight, fast digital audio workstation for Windows, written without any UI framework (its own software-rendered UI toolkit on Win32) and inspired by the workflow of Logic Pro. Documentation: docs/ (user manual, developer guide, project documents). It stays approachable for beginners and still offers what a producer expects: a multitrack arrangement, MIDI editing, a built-in synthesizer and Drummer, a Loop Browser, channel strips with insert effects and sends, VST3 plug-ins, tempo and time-signature tracks, time stretching, automation, recording and bouncing.
MiniDAW is an independent open-source project. It is not affiliated with, endorsed by or sponsored by Apple Inc. "Logic Pro" is a trademark of Apple Inc. VST is a trademark of Steinberg Media Technologies GmbH.
Version 0.11 · License: GPL-3.0-or-later
- Multitrack Tracks area with a ruler that follows the time signature, a smart snap grid, zoom (Ctrl + wheel) and scrolling.
- Four track types: Audio, Software Instrument, Drummer and Drum Machine.
- Regions: move, resize, split at the playhead, duplicate, delete, and cut / copy / paste (
Ctrl+X/Ctrl+C/Ctrl+V, or right-click a region or an empty part of a lane). Drag audio or MIDI files from Explorer or from the Loop Browser straight onto the timeline. - Duplicate Track (
Ctrl+Shift+D) copies a track with its regions, instrument and effects. - Cycle range (right-drag on the ruler), metronome (accents follow the time signature) and an optional one-bar count-in. Volume automation per track. Undo / redo for edits and tempo changes.
- The native version is now the product:
MiniDAW-<version>-setup.exeinstalls it (and upgrades an old Qt installation); the Qt version only remains as a portable zip. - Plug-ins without Qt: MiniDAW plug-ins (
plugin-sdk) and VST3 instruments and effects, with their own editor windows. - New look and workflow, designed from a comparison of Logic Pro and Ableton Live (
docs/project/ui-design.md): a searchable Browser with drag and drop (loops, instruments, effects), a Devices tab with a chain of cards and knobs, three track heights, a hover help line in the status bar. - Piano roll multi-selection (Shift-click, rubber band,
Ctrl+A), copy / paste / duplicate of notes. - Documentation in
docs/: user manual, developer guide and project documents.
- The native version (
MiniDAWNative.exe, no Qt) now has almost everything of the Qt version: piano roll, step sequencer, Drummer editor, inspector, smart controls, automation and tempo lanes, markers, loop browser, all parameter dialogs, preferences, recent projects, tap tempo, musical typing, MIDI keyboard input, autosave and recovery, and all four languages. Only VST3 / plug-in SDK hosting is still Qt-only.
- Native user interface without Qt (experimental):
MiniDAWNative.exeis built next toMiniDAW.exe. It has its own look (slate colours, teal accent), the transport and a LCD, an arrangement with waveforms and note previews, a mixer, menus and shortcuts, and it opens and saves the same.mdawprojects. It does not have the piano roll, the drum step editor, the inspector, preferences, automation lanes and plug-in windows yet, so the Qt version stays the main program for now. - Eight more Logic Pro style editing features: Fix Overlaps, Remove Duplicate Notes, Fixed Note Length, Retrograde, Invert Pitches, Scale Velocity, Strip Silence and Measure Loudness (LUFS). They are in the native Functions menu.
- Platform layer without Qt (
src/platform/): own WASAPI audio output / input, winmm MIDI input and Media Foundation decoding; the Qt Multimedia module is no longer required. Saved audio device choices from older versions are ignored once and the system default device is used. - Seven more Logic Pro style editing features:
- Legato (Edit > MIDI Transform): extends every note up to the next one.
- Transpose…: moves the notes by -48 to +48 semitones.
- Crescendo / Decrescendo…: velocity ramp from a start to an end velocity over the region.
- Repeat Region… (
Ctrl+R): puts N copies directly after the selected region. - Join Regions (
Ctrl+J): merges a region with the next one (MIDI, or neighbouring parts of one recording). - Detect Tempo… (Edit): analyses an audio region and lets you follow the project tempo or set the project tempo.
- Convert Pattern to MIDI Region (Track): turns the step pattern of a drum machine track into a MIDI region.
- Qt-free core (first step towards MiniDAW's own engine): the whole music engine, project model, undo,
project files (own JSON reader / writer), autosave, bounce and MIDI operations now live in
src/core/andsrc/dsp/and use only the C++ standard library. Qt remains for the user interface, audio devices and file decoding. The core has its own test suite that runs without Qt. See docs/dev/architecture.md. - Six Logic Pro style editing features:
- Bounce in Place (
Ctrl+Alt+B): renders a track with instrument, effects, fader and pan to a new audio track and mutes the original. - Quantize with Strength and Swing (Edit > MIDI Transform > Quantize Region…,
Ctrl+Shift+Q). - Arpeggiator (
Ctrl+Shift+A): turns chords into arpeggios (up, down, up & down, down & up, random, as played; rate, octave range, gate). - Scale Quantize: moves the notes into a key and scale (12 scales, key C to B).
- Humanize: randomises timing and velocity of programmed notes.
- Chord Trigger: turns every note into a chord (major, minor, diminished, augmented, sus2, sus4, major 7, minor 7, dominant 7, octave) with inversions. The MIDI transformations work on the selected MIDI region, are one undo step each and are applied to the notes (they are not real-time MIDI plug-ins).
- Bounce in Place (
- Pan and send automation next to volume: Edit > Automation Parameter chooses which lane
Aedits. - Autosave and crash recovery: the project is autosaved while it has unsaved changes (default every 3 minutes, Preferences > General). After a crash MiniDAW offers to restore the last autosave.
- Markers:
Madds a marker at the playhead, double-click the marker strip above the ruler to add or rename one, drag to move it,Alt+Left/Alt+Rightjump between markers. - Move tracks up and down (
Ctrl+Alt+Up/Down) and choose a track color from the header menu. - Mute regions (
Ctrl+M) without deleting them. - Chorus and Filter (low cut / high cut with resonance) insert effects.
- Open Recent menu and Tap Tempo (
Shift+T). - MiniDAW plug-in SDK: write your own audio effects as a small shared library and load them from the
pluginsfolder. Seeplugin-sdk/README.md; a tremolo and a bitcrusher are included.
- Cut, copy and paste regions between tracks and projects; pasting follows the tempo at the new position.
- Duplicate Track with its own copy of the instrument and the insert effects.
- Audio input device and recording latency compensation in Preferences > Audio.
- Region gain, fade in / fade out, Reverse and Normalize for audio regions (Inspector). Fades are drawn on the region and are saved with the project.
- Bounce dialog: whole project or cycle range, 16-bit, 24-bit or 32-bit float WAV, TPDF dither, normalization to a chosen peak level and an optional reverb / echo tail.
- Tempo track (
G): click to add tempo points, drag to change them, right-click for Ramp to Next Point. Tempo ramps glide linearly between points. - Time signature changes at any bar (
Transport > Time Signature…or click the signature in the LCD): 2/4, 3/4, 6/8, 7/8, 5/4 and so on. Click, count-in, ruler and bar numbers follow. - Edit the tempo at the playhead directly in the LCD.
- Time stretch and pitch shift (WSOLA): audio regions can Follow Tempo (enter the source tempo
in the Inspector) and be transposed by ±24 semitones. Loops with a tempo in their name, such as
Funk Bass 100 bpm.wav, follow the project tempo automatically.
- Built-in 16-voice subtractive synthesizer (two band-limited oscillators, sub oscillator, resonant filter, ADSR, six presets) and a synthesized drum kit.
- Drummer: pick a style (Rock, Pop, Hip-Hop, House, Funk, Disco), move the XY pad between Simple / Complex and Soft / Loud, add swing and fills, or press New Variation.
- MIDI keyboards (any USB or class-compliant device, including the sustain pedal), Musical
Typing (
Ctrl+K) and MIDI recording. Import and export Standard MIDI Files. - Piano Roll: draw, move and resize notes, velocity lane, grid and quantize.
- 16-step Step Sequencer.
- VST3 instruments and effects with their own editor windows and saved state (see below).
- Loop Browser (
O): search the loops folder, preview, double-click or drag to add. Sample loops are included.
- Inspector with the channel strip of the selected track, and a Logic-style Mixer: audio FX slots, sends, pan, dB fader with level meter, mute / solo / record-enable and coloured name tags.
- Insert effects: Channel EQ, Compressor, Echo, Reverb, Overdrive and any VST3 effect.
- Two aux sends (Reverb and Echo buses) and a master Limiter.
- Bounce to WAV (16 / 24-bit or 32-bit float, 44.1 kHz; whole project or cycle range).
English, Korean (한국어), Japanese (日本語), Simplified Chinese (简体中文) and Spanish (Español). The language
follows the system by default and can be chosen in Preferences > General. Translations are plain text
files in translations/: add fr.tsv (copy ko.tsv, translate the right-hand column, change the
#name line) and it appears in the list. Untranslated texts fall back to English.
- Save and open
.mdawprojects (JSON). Recordings are stored next to the project file.
| Action | Shortcut | Action | Shortcut |
|---|---|---|---|
| Play / pause | Space |
Record | R |
| Stop (twice = go to start) | . |
Go to beginning | Return |
| Cycle on / off | C |
Metronome | K |
| Inspector | I |
Loop Browser | O |
| Mixer | X |
Smart Controls | B |
| Piano Roll | P |
Step Sequencer | Shift+S |
| Drummer editor | Shift+D |
Show / hide editors | E |
| Tempo track | G |
Volume automation | A |
| Split at playhead | Ctrl+T |
Duplicate region | Ctrl+D |
| Delete | Del |
Musical Typing | Ctrl+K |
| Cut / copy / paste region | Ctrl+X / Ctrl+C / Ctrl+V |
Duplicate track | Ctrl+Shift+D |
| Add marker | M |
Previous / next marker | Alt+Left / Alt+Right |
| Bounce in place | Ctrl+Alt+B |
Arpeggiate region | Ctrl+Shift+A |
| Quantize region (strength, swing) | Ctrl+Shift+Q |
Repeat / join regions | Ctrl+R / Ctrl+J |
| Mute region | Ctrl+M |
Move track up / down | Ctrl+Alt+Up / Down |
| Tap tempo | Shift+T |
Automation on / off | A |
| New audio / instrument / drum machine track | Ctrl+Alt+A / S / D |
New Drummer track | Ctrl+Alt+R |
| Undo / redo | Ctrl+Z / Ctrl+Shift+Z |
Import audio | Ctrl+I |
| Save / open | Ctrl+S / Ctrl+O |
Bounce | Ctrl+B |
| Preferences | Ctrl+, |
Musical Typing: A W S E D F T G Y H U J K O L P ; play a chromatic keyboard starting on C;
Z / X shift the octave. In the Piano Roll press Q to quantize. Double-click an empty part of an
instrument lane to create a MIDI region, or of a Drummer lane to create a Drummer region.
Download MiniDAW-<version>-setup.exe from the Releases page and run it. The
installer places MiniDAW in Program Files (or in your own folder without administrator rights), adds a Start
menu entry and can associate .mdaw files; it upgrades an older Qt installation. A portable ZIP
(MiniDAW-windows-x64-portable.zip) is published next to every installer, and the old Qt version only as
MiniDAW-Qt-windows-x64-portable.zip. See docs/user/installation.md.
Open File > Preferences... and choose another output device or a larger buffer. The status line shows the device MiniDAW opened. More in docs/user/troubleshooting.md.
MiniDAW plug-ins (plugin-sdk/) are loaded from <install folder>\plugins and %LOCALAPPDATA%\MiniDAW\plugins.
VST3 plug-ins are scanned in C:\Program Files\Common Files\VST3 and %LOCALAPPDATA%\Programs\Common\VST3 (more
folders in Preferences); installers built with the VST3 SDK host them. They appear in the Browser (Effects /
Instruments); their own windows open from the E button of a device card. See
docs/user/plugins.md.
MiniDAW is built by a single shell script, build.sh (no CMake required). The native version needs no Qt.
Requirements: Windows 10/11, Visual Studio 2022 or newer (MSVC x64 tools), Git Bash (or MSYS2), and optionally Inno Setup 6 for the installer. The old Qt version additionally needs Qt 6.5+.
# In Git Bash started from the "x64 Native Tools Command Prompt" (so that cl.exe is on PATH):
export VST3_SDK_DIR=C:/dev/vst3sdk # optional: git clone --recurse-submodules https://github.com/steinbergmedia/vst3sdk
./build.sh native-release # build + portable folder / ZIP + installer -> installer-out/MiniDAW-<version>-setup.exe
./build.sh native # only build/MiniDAWNative.exe
./build.sh qt # the old Qt version as a portable ZIP (needs QT_DIR)
./build.sh cleanThe tests need only g++: bash tests/run.sh (also on Linux). Without VST3_SDK_DIR (or if the SDK fails to
build) MiniDAW is built without VST3 hosting. Set MINIDAW_VERSION to override the version string. The GitHub
Actions workflow in .github/workflows/build.yml runs the tests, builds the installer and attaches it and the portable
ZIP to a release when a tag such as v0.11 is pushed. Details: docs/dev/building.md.
| Path | Purpose |
|---|---|
src/dsp/ |
Qt-free DSP: parameters, effects, synth, drum kit, Drummer generator, tempo map, WSOLA stretcher, MIDI files, tempo detection, loudness |
src/core/ |
Qt-free engine: Session, project files, MIDI operations, translations |
src/platform/ |
WASAPI audio, winmm MIDI, Media Foundation decoding, MiniDAW plug-in host |
src/ui/ |
Qt-free software-rendered UI toolkit and the whole user interface |
src/native/ |
The Windows shell (Win32App.cpp) and the VST3 host (Vst3Native.cpp) |
src/*.cpp, src/Engine.*, src/vst3/ |
The old Qt user interface (kept as a portable build only) |
translations/, loops/, plugin-sdk/ |
Language files, sample loops, plug-in SDK shipped next to the executable |
docs/ |
User manual (user/), developer guide (dev/), project documents (project/) |
See docs/dev/architecture.md for the layers, the rules and the threads.
- Output uses MiniDAW's own WASAPI backend (shared mode, roughly 50 ms latency). ASIO or exclusive mode is planned.
- VST3 parameters are edited in the plug-in's own window; they are not yet exposed as automation lanes. Plug-in state is stored, but a plug-in that is missing on another computer is skipped when loading.
- Time stretching is a single constant ratio per region (taken at the region start) rather than a tempo-curve-aware flex.
- Drummer uses the built-in drum kit; no sampler or per-drum editing yet.
- No time-stretched recording, comping, score editor or audio-unit hosting. Planned: loop-browser tempo detection, more automation targets, Smart Tempo.
Issues and pull requests are welcome. Please keep the DSP code free of Qt dependencies and write code
comments in English. bash tests/run.sh runs the DSP unit tests (no Qt required). By contributing you agree that your work is licensed under the GPL.
MiniDAW is free software: you can redistribute it and/or modify it under the terms of the
GNU General Public License as published by the Free Software Foundation, either version 3 of the
License, or (at your option) any later version. See LICENSE for the full text.
MiniDAW links against Qt, which is available under the LGPL v3 / GPL. The sample loops in loops/
were synthesized for this project and are released under the same license.