A DAW built from scratch in Rust as a deliberate learning project. No frameworks — raw wgpu, CPAL, and winit.
- step sequencer with per-pattern sequences, MIDI velocity, and velocity bar view per track
- piano roll — place and edit notes per track per pattern, scrollable note grid and fixed key column
- load .wav tracks at runtime, add/delete tracks dynamically
- variable step counts per track
- multiple patterns, switchable from the UI, with duplicate support
- playlist view — arrange patterns across a timeline with x/y scroll and scissor clipping per region
- mixer window with master volume slider
- per-track volume knobs and mute controls
- draggable, z-ordered mini-windows with correct click and hover ownership across overlapping windows
- track detail windows per track
- right-click context menus on patterns and tracks
- SVG icon pipeline — toolbar icons rasterized via resvg, tooltip system on hover
- custom text rendering via fontdue — glyph cache, textured quads, painter's algorithm interleaving
- multiple font support (variable + monospace)
- play/pause, stop, BPM control, keyboard shortcuts (space, ctrl+s)
- cursor icon feedback on all interactive elements
- project save/load via TOML
- footer status bar showing project path and FPS
audio— CPAL stream, sequencer callback, event-driven trigger resolution by track IDapp— winit event loop, input handling, ring buffer dispatch, file dialog threadsproject— serialization structs, WAV loadinggraphics/mod— wgpu pipeline, draw loop, painter's algorithm, click owner and hover blockinggraphics/font— fontdue glyph cache, texture upload, NDC quad generationgraphics/widgets— Rectangle, Square, draw_slider, window_title_bar, layout constantsgraphics/primitives— ScreenConfig, Vertex, draw_rectangle, draw_knob, padding constantsgraphics/icons— SVG rasterization via resvg, icon cache, Tooltipgraphics/color— named color constantsgraphics/context_menu— ephemeral right-click menusgraphics/components/toolbar— toolbar draw, icon positions, BPM controlsgraphics/components/pattern_tray— pattern list and selectiongraphics/components/footer— status bargraphics/mini_window/sequencer— step sequencer windowgraphics/mini_window/mixer— mixer windowgraphics/mini_window/playlist— playlist arrangementgraphics/mini_window/piano_roll— piano roll windowgraphics/mini_window/track— track detail window
wgpu · winit · CPAL · fontdue · ringbuf · hound · serde/toml · rfd · resvg