Performance-driven Takes (#65) #122
No reviewers
Labels
No labels
bug
duplicate
enhancement
help wanted
invalid
needs-info
needs-triage
question
ready-for-agent
ready-for-human
wayfinder:grilling
wayfinder:map
wayfinder:prototype
wayfinder:research
wayfinder:task
wontfix
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
crowmaki/ai-studio!122
Loading…
Reference in a new issue
No description provided.
Delete branch "issue-65-performance-driven-takes"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Closes #65. Part of #24.
What it does
A Shot whose Lines the Scene's Performance all covers is now driven by it:
Shot length follows the Performance marks of its Lines, plus the usual handles and frame grid.
The slice. A Take gets the Performance audio from the first Line's mark minus the head handle, for exactly the Take's frame count. Audio before the Performance starts or after it ends is silence. The slice is sent in two ways:
VAEEncodeAudioencodes the slice, a 0 noise mask keeps it as it is, and it is joined to the video half of H3's latent at the sampler. The splice point is declared in theh3.draftandh3.finalmanifests (forced_audio).fully_copyaudio slot. The audio Slot list holds only "Performance vN", always sent and not editable. Voice references drop out.Prompt.
retention_analysisgains<Audio N>: fully_copy - the dialogue of this shot, ….Provenance. The Take records the Performance version and the slice's start and end (a new
performancekind oftake_input). It also snapshots the Performance marks inside the slice. Those marks become its default Line marks, so later mark edits never move them. Nudging and resetting work as before; a reset goes back to the snapshot.Straddle block. A Shot over both covered and uncovered Lines can't be queued: "split the shot or extend the performance". The Shot row offers a split where coverage changes. A length override doesn't lift the block.
Uncovered Shots. A Shot entirely over uncovered Lines renders as if there were no Performance.
Per-Scene switch. "Drives Takes" in the Animatic's Performance bar is an undoable edit. When off, the Scene's Takes generate their own dialogue again. Versions and marks are untouched.
Staleness. A new Performance reason group:
The input table shows the slot, the version and the slice span.
Schema V36 adds
scene.performance_off, rebuildstake_inputwithperformance_id/slice_from_ms/slice_to_ms, and addstake_performance_mark.Decisions worth a look
LTXVSeparateAVLatent→LoadAudio→VAEEncodeAudio→SolidMask/SetLatentNoiseMask→LTXVConcatAVLatent. This is the same masking patternh3.promotionuses. Not yet run against a real ComfyUI/H3; please confirm H3 accepts the joined latent at13.latent_image.versionwas not bumped.Tests
crates/studio-core/tests/performance_takes.rs(new) covers:performance_slice.rshas unit tests for drive, slice and padding.cargo test --workspace --features studio-core/test-support,bun test srcandbun run checkpass.Screenshots
A driven Shot: "Performance v1" badge, and the audio list holds only the forced slice.
A Shot over covered and uncovered Lines is blocked, with a split offer.
The Animatic's Performance bar with the new "Drives Takes" switch, on and off.