Channel recorder, visualizer, and TinyBooth project exporter. Native Rust + egui desktop app for Windows — the bedroom-studio opposite of a corporate DAW.
Mix tab in v0.4.37 — multitrack lanes with synchronized playhead, per-track Correction chains (HPF / EQ / de-esser / gate / compressor / Coherence Restoration), live BS.1770-4 LUFS metering on the master, and cross-band coherence telemetry per stem (the green ≈ / pink AI pills).
The fast path: turn a Suno bundle into a finished release.
- Import — drop a Suno folder or
.zip. Stems get auto-classified by role, copied into a self-contained.tinyboothproject (JSON manifest + sibling WAVs), and seeded with role-specific cleanup chains (Suno-Vocal,Suno-Drums,Suno-Bass,Suno-ElectricGuitar,Suno-Synth, etc. — eleven in total). The bundled mixdown is held aside as the loudness reference rather than summed into the mix. - Verify — every import runs a coherence pass: sum the stems at unity, subtract the mixdown, flag any stem that's polarity-flipped or doesn't compose into the bundled mix. Surfaced in the import-result dialog and the rotating per-import log.
- Clean — per-stem DC-offset trim, top-octave Nyquist cleanup for AI shimmer, one-click polarity flip (
Øbutton on every channel strip), and a fully editable processing chain (HPF / 4-band EQ / de-esser / gate / compressor / makeup) attached to each stem. Sensible defaults out of the box; tuneable from the Mix tab's per-track Correction window. - Mix — multitrack lanes with synchronized playhead, per-track fader + recordable Catmull-Rom volume automation, per-track A/B against the unprocessed source, global Disable for a quick before/after of the whole project. Master bus shows live BS.1770-4 LUFS (momentary + integrated), measured against the bundled Suno mixdown's own loudness so you can target streaming (Spotify −14, Apple Music −16, broadcast −23) without guessing.
- Export — mixdown to WAV native, or FLAC / MP3 / Ogg Vorbis / Ogg Opus / M4A-AAC via the bundled static-LGPL
ffmpeg.exe(shipped inside the MSI; no separate download needed).
Plus a project-wide ✂ Trim panel (Project tab) for cropping dead air or count-ins at the start / end of a song — every WAV in the project (stems + bundled mixdown) gets cropped to the same range atomically, coherence stays valid because every file shares the new frame-0.
The other path: capture your own takes. Pick an input device, choose channel or stereo L/R, hit ⏺. Live scrolling waveform + FFT spectrum + peak meter while recording. Takes always land in a dedicated app-owned recordings filespace at %APPDATA%\TinyBooth Sound Studio\recordings\, kept fully separate from any stem-mixing project — recording into a Suno project never contaminates its filespace. Recordings get their own Project tab / Mix tab via File → Open Recordings; the Record tab itself shows a paged list of every take ever captured, with one-click ▶ to send any take to the main mixer. Each take is processed through the active recording-tone preset (Guitar default; Vocals / Wind / Drums / Raw also shipped).
Opinionated presets for shoestring-budget capture. Guitar is the default — the tool is tuned for one person, one mic, one take.
| Preset | HPF | Gate | Compressor | Notes |
|---|---|---|---|---|
| Guitar (default) | 60 Hz | off | 2.5:1, 20 / 150 ms, +3 dB makeup | Keeps decay, evens strums |
| Vocals | 100 Hz | −42 dB, 3 / 80 ms | 3.5:1, 8 / 120 ms, +4 dB | Intelligibility over air |
| Wind / Brass | 50 Hz | off | 2:1, 15 / 180 ms, +1 dB | Breath is the sound |
| Drums / Percussion | off | off | 4:1, 3 / 80 ms, +2 dB | Transient-forward, wide headroom |
| Raw / Clean | off | off | off | No processing, bit-exact capture |
Plus an eleven-preset Suno-X library (Suno-Vocal, Suno-BackingVocal, Suno-Drums, Suno-Bass, Suno-ElectricGuitar, Suno-AcousticGuitar, Suno-Keys, Suno-Synth, Suno-Pads, Suno-Percussion, Suno-FxOther) tuned for each role's typical Suno artefacts — DC removal, top-octave Nyquist cleanup for AI shimmer, role-appropriate EQ / de-essing / compression. Auto-mapped onto each stem at import time. See docs/suno-cleaning.md for the per-role tunings and the full workflow.
Every parameter is editable under Admin → Recording-tone profiles… and persists to %APPDATA%\TinyBooth Sound Studio\profiles.json.
Working with Suno stems? Start at docs/suno-cleaning.md — the dedicated workflow guide that walks the bundle → cleanup → mix → release path end-to-end, naming the v0.4.0 features (per-role presets, coherence verification, polarity flip, Nyquist cleanup, LUFS metering, project trim) at each step.
The full manual lives at docs/manual/ — twelve chapters covering every shipped feature, with appendices on troubleshooting and file formats. The same Markdown files are embedded into the binary at compile time, so the in-app Help → Manual… window (or F1 anywhere) shows byte-identical content. Edit a chapter and it updates both surfaces on the next build.
For developers / contributors:
docs/architecture.md— current application anatomy: module map, threading model, three principal flows, schema versioning, build & release pipeline.docs/design-vibes.md— creative brief for the visual / tactile direction. Frame of mind, sound-visualization explorations, tactile mini-game-feel controls, and a sober "what would actually ship next." Read when planning a polish or visualization push.docs/sound-vision-philosophy.md— long-form essay on what it means to transform sound into vision. Why most audio visualizers are sterile, the multi-timescale structure of musical experience, the "onion-skin" insight, the AI-fingerprint diagnostic that shaped the visualizer's design — and the mathematics underneath each of the visualizer's modes.docs/rust-survival-guide.md— opinionated field manual for shipping Rust desktop apps. Project structure, error handling, threading, GUI patterns, serialisation compatibility, build/dist, CI, self-update, logging, testing, dependency hygiene, performance, security.docs/audit/— periodic clinical audits of the codebase with categorised findings and prioritised refactor suggestions. Latest: 2026-04-27 (v0.3.5).docs/feature-requests/— formal RFCs (TBSS-FR-NNNN) for past and proposed features.
Grab the latest .msi from Releases and run it. The installer places the app in Program Files with a Desktop shortcut; the built-in updater surfaces new releases on each launch.
cargo build --releaseFor the Windows MSI (requires WiX Toolset 3.11 on PATH):
cargo install cargo-wix
cargo wix.
├── Cargo.toml
├── build.rs # git-tag versioning + winres icon embed
├── src/
│ ├── main.rs # eframe entry + viewport icon
│ ├── app.rs # tab state, top + bottom bars
│ ├── audio.rs # cpal input, SourceMode, WAV writer
│ ├── player.rs # multitrack playback engine (cpal output)
│ ├── dsp.rs # Profile + FilterChain / FilterChainStereo
│ ├── analysis.rs # FFT spectrum + waveform peak decimator
│ ├── coherence.rs # sum-of-stems vs mixdown residual + polarity check
│ ├── lufs.rs # BS.1770-4 K-weighting + integrated loudness
│ ├── trim.rs # project-wide WAV crop (atomic, .tmp + rename)
│ ├── cleanup.rs # cleanse protocol — migrate Recorded orphans
│ ├── automation.rs # AutomationLane + Catmull-Rom SplineSampler
│ ├── project.rs # .tinybooth JSON manifest
│ ├── export.rs # WAV native + ffmpeg subprocess
│ ├── git_update.rs # GitHub releases self-updater
│ ├── manual.rs # in-app manual: include_str! of docs/manual/
│ ├── suno_import.rs # Suno stem-bundle ingester
│ └── ui/ # record, project, export, admin, mix, correction,
│ # profile_editor, trim, manual, viz, update_dialog,
│ # import_dialog, import_conflict
├── docs/
│ ├── manual/ # ← single source of truth, browsable on GitHub,
│ │ # embedded into the exe at build time
│ ├── feature-requests/
│ └── research/
├── wix/main.wxs # MSI installer
├── assets/ # icon, banner, source PNGs
└── .github/workflows/ # tag-push → MSI → GitHub Release
Current version: see Releases. Feature requests live under docs/feature-requests/.
Built with Rust + egui · cpal · hound · rustfft · biquad.
Ships a static-LGPL build of FFmpeg (sourced from BtbN/FFmpeg-Builds) bundled inside the MSI. FFmpeg is licensed under the LGPL v2.1+; source available from the FFmpeg project. TinyBooth uses it as a separate executable, invoked as a subprocess from the Export tab.
