Repository navigation
Stem curves play with real stems; transition editor details from DJ.Studio - #2
Merged
Merged
Conversation
…tudio Stem curves had no audible effect: when a library stem separation finished, the app reloaded the track's analysis (so the editor showed stems) but kept the engine's cached copy of the track, loaded without stems. Mix playback kept using that copy and only imitated the curves with volume and EQ. TrackUpdated now drops the cached track, and redraws the open mix's timeline (a new grid moves its beats and tempo lane). A stem file whose length doesn't fit the audio is logged instead of dropped silently. New engine test: a transition lane mutes each stem on both sides. Transition editor, from screenshots of DJ.Studio and its help pages (docs/interop/djstudio.md §5.4): - Stem rows: the stem's colour fills the area under its gain curve; the waveform stays full size, grey over hatching where the stem is cut. - Stem on/off toggles sit outside the window, the outgoing track's at its end and the incoming track's at its start. - Equalizer category holds Volume, Low, Mid and High; every column has a "Manual" entry (selected for hand-drawn curves, opens drawing) and "None" names the no-change mode outside the stems. - Lane knobs show their value; each track's unplayed audio is drawn faded beside its clip. - Column headers in full stem / band colours, the chosen mode filled and outlined in them. - Entering a transition with the playhead selects it and opens its settings. Devctl gains `tcat <category>` for screenshots of the editor. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…the app's look Stem separation for mix playback covers only the parts stem automation plays in (each stem transition's window and a track's own stem lanes, plus 3 s), at the Fast quality: about 5 s per transition instead of ~2.5 min per track at Best. They are separated automatically when a mix needs them, whatever the background setting, kept in a partial stem file (<hash>.regions.stems.flac, listing its chunks in CLUBCRAFT_CHUNKS) and replaced by complete stems at the export quality before a render. The transition warning, "Stems missing" and the imitation preview count those parts as stems. - Savepoints: keep the mix under a name, go back or forward to any of them; none is deleted on the way, and an unsaved state is kept first. Stored in the library (mix_savepoints). Duplicate this mix in the Mixes menu. - Opening another mix stops the preview of the previous one. - Transport: the play button is centred; the groups never overlap and use compact labels when the window is narrow. - Settings is a dialog in the app's look (panel, header, sidebar, segmented choices, checkboxes); Home's Go live / Open library no longer flicker on hover. - Devctl: duplicate, savepoint, goto-savepoint; mix prefers an exact name. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Stem curves had no audible effect
When a stem separation from the library queue finished, the app reloaded the track's analysis, so the transition editor said the stems were there. But it kept the engine's cached copy of the track, which had been loaded without stems. Mix playback kept using that copy and only imitated the stem curves with volume and EQ.
TrackUpdatednow drops the cached track, so the next load picks up the stems. It also redraws the open mix's timeline: a re-analysed grid moves beats and the tempo lane, which explains a flat 120 BPM lane seen after launch.transition_stem_lanes_mute_each_stem_on_both_sides.Before the fix, I checked the engine on a real imported mix (Selected Deep Summer Copy, transition 1). Flattening the stem curves changes the rendered output by about 0.25–0.30 RMS, so the engine itself was fine.
Transition editor details adopted from DJ.Studio
Sources: screenshots of DJ.Studio in use and its public help pages, as
docs/clean-room.mdallows. The toggle placement is already documented indocs/interop/djstudio.md§5.4. No new features; DJ.Studio's risers, loop effects, side-chain and per-column solo were left out.tcat <category>command, used for the screenshots.Testing
cargo clippy --workspace --all-targets -- -D warnings: cleancargo test --workspace: passes🤖 Generated with Claude Code