tuidaw
A full-featured DAW with a TUI and a Web UI, built with OpenTUI, Vue 3.6 Vapor, and miniaudio. Practice guitar at half speed without pitch shift. Record multi-track audio. Export mixdowns. From your terminal or browser.


.tuidaw project files (interoperable between TUI and Web)git clone https://github.com/crossatko/tuidaw.git
cd tuidaw
./setup.sh
bun run start
The setup script will check for required system dependencies, download the Zig 0.14.0 toolchain, install JS dependencies, and build the native audio library.
If you're on x86_64 Linux, the repo ships a pre-built native library. You can skip the native build:
git clone https://github.com/crossatko/tuidaw.git
cd tuidaw
bun install
bun run start
The Web UI runs entirely in the browser -- no server-side audio processing. The same C audio engine is compiled to WebAssembly via Emscripten, and miniaudio uses the Web Audio backend automatically.
# Development (Vite dev server on port 3666)
bun run dev
# Production build
bun run build:web
# Serve web/dist/ with any static file server
# COOP/COEP headers required for SharedArrayBuffer
Press F1 in the TUI for the full reference.
| Key | Action |
|---|---|
Space | Play / Stop (record if tracks armed) |
A | Add track |
D | Delete track (two-step: clear, then delete) |
R | Arm/disarm track for recording |
M | Mute/unmute track |
S | Solo/unsolo track |
C | Toggle metronome click |
+ / - | Adjust BPM (changes speed via WSOLA) |
< / > | Pan left / right |
V | Cycle volume (25/50/75/100%) |
Up / Down | Select track |
Left / Right | Scroll timeline (Shift: by bar) |
[ / ] | Scrub playhead by 1 bar |
Home / 0 | Jump to beginning |
End | Jump to end |
F1 | Help overlay |
F2 | Select input device |
F3 | Select output device |
F5 | Save project |
F6 | Open project |
I | Import WAV |
E | Export mixdown |
Q | Quit |
| Area | Action | Effect |
|---|---|---|
| Main waveform | Scroll wheel | Scroll timeline by beats |
| Main timeline | Click | Set playhead position |
| Sidebar track | Scroll wheel | Adjust volume |
| Sidebar pan zone | Scroll wheel | Adjust pan |
| Sidebar click row | Scroll wheel | Adjust click volume / pan |