Skip to content

Studio: drop files onto the timeline, new Add tracks dialog - #5

Merged
beneaze merged 2 commits into
mainfrom
feat/studio-add-tracks
Oct 21, 2026
Merged

beneaze merged 2 commits into
mainfrom
feat/studio-add-tracks

Conversation

@beneaze

@beneaze beneaze commented Oct 21, 2026

Copy link
Copy Markdown
Owner

Builds on #4 (Opus decoding), which is not merged yet, so this branch contains that commit too. Merging this PR lands both; #4 can then be closed.

Drop files onto the studio

Files dragged from Finder onto the studio timeline were only imported into the library; nothing appeared in the mix. Now they are imported as before and join the end of the mix, in drop order, as soon as each has an analysis (mix points need the beat grid and cues). Once background jobs are idle, tracks whose analysis failed still join, and files that could not be imported are skipped. Sample lanes still take drops as samples; drops in the library only import.

Add tracks dialog

+ Add tracks opens a dialog in the app's look (track_picker.rs) instead of a dropdown:

  • search box focused on open, columns for title, artist, BPM, key, fit, energy and length, sortable by header
  • Fit against the mix's last track: green when the key is harmonic and the tempo is within 6 %, amber when close; a Fits the mix filter; sorted by fit by default
  • Preview: ▶ plays the track from its first drop; a strip with the waveform overview shows the playhead and jumps on click or drag; the preview stops when the dialog closes
  • click to multi-select (added in click order), double-click to add one track

Developer control

devctl gains drop <path> (injects a Finder-style drop), add-tracks [query], picker-preview <query> and mute.

Testing

  • In a throwaway library (CLUBCRAFT_HOME in a temp folder, master volume at 0): drop of a folder onto the studio added both tracks to the mix in order with a stem blend; the dialog opened, previews played from the drop with a moving playhead, and switching previews worked.
  • cargo clippy --workspace --all-targets -- -D warnings passes; cargo test -p clubcraft -p clubcraft-audio passes.
  • Not tested: a real Finder drag (the macOS drag layer) and real mouse clicks in the dialog.

🤖 Generated with Claude Code

beneaze and others added 2 commits October 20, 2026 19:42
Symphonia has no Opus decoder, so .opus files (what yt-dlp and many web
sources hand out) imported into the library but could never be analysed
or played. Register symphonia-adapter-libopus alongside Symphonia's own
decoders in the one shared decode path.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Files dropped from Finder onto the studio were only imported into the
library, so nothing appeared in the mix. They now join the end of the
mix, in drop order, once each is imported and analysed (mix points need
the grid and cues). Sample lanes still take drops as samples.

"+ Add tracks" opens a dialog instead of a dropdown: search, sortable
columns (BPM, key, energy, length), a fit column and filter against the
mix's last track (harmonic key, tempo within 6 %), a preview from the
track's first drop with a clickable waveform, and multi-select.

devctl gains `drop <path>`, `add-tracks [query]`, `picker-preview
<query>` and `mute` for automated checks.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@beneaze
beneaze merged commit c36ee8d into main Oct 21, 2026
2 checks passed
@beneaze
beneaze deleted the feat/studio-add-tracks branch October 23, 2026 22:55
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant