Skip to content

Latest commit

 

History

159 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

TinyBooth Sound Studio

TinyBooth Sound Studio

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, per-track Correction chains, LUFS metering, AI-fingerprint telemetry
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).

What it does

The fast path: turn a Suno bundle into a finished release.

  1. Import — drop a Suno folder or .zip. Stems get auto-classified by role, copied into a self-contained .tinybooth project (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.
  2. 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.
  3. 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.
  4. 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.
  5. 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).

Recording tones

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.

Documentation

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.
Welcome Reference Appendix
Welcome Recording Troubleshooting
Getting started Recording tones File formats
Editing profiles (Admin)
Projects
Export
Importing Suno stems
Self-update
Mix tab — remastering
Using this manual

Install

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.

Build from source

cargo build --release

For the Windows MSI (requires WiX Toolset 3.11 on PATH):

cargo install cargo-wix
cargo wix

Project layout

.
├── 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

Status

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.

About

Channel recorder, visualizer, and TinyBooth project exporter

Resources

Stars

1 star

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages