Audio Wave: fixed 721-frame subsegment grid + per-segment select/crop + notes box auto-fill

Pivot to the user's model: segments are a fixed grid of subsegment_frames frames
(default 721 @ 24fps = one LTX clip), not arbitrary clicks. New inputs:
subsegment_frames (grid size) and segment_select (0=all, N=output ONLY chunk N —
crops waveform_image, AUDIO, and summary so you can generate/skip one beat at a time).
_render gains window-crop + frame markers + per-segment time/frame labels. JS rewritten:
draws the fixed grid, auto-fills the notes box with one segN: line per chunk (type or
dblclick to note), click-to-seek, playhead + time readout. Workflows updated for the
new widgets.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
2026-07-04 23:12:44 +02:00
co-authored by Claude Opus 4.8
parent e63f6e6058
commit 75b20f9656
6 changed files with 198 additions and 107 deletions
+13 -6
View File
@@ -112,12 +112,19 @@ adds to feed the judge's `system_prompt`/`user_prompt`/`axes` sockets.)
### Interactive: `Audio Wave + Segments`
Same outputs, but with an in-node waveform widget: **upload** an audio clip, **play** it,
and **click the waveform** to place segment boundaries — click to add a split, drag to
move, double-click a segment for its note, shift/right-click to delete. The boundaries +
notes are saved to a hidden `segments_json` and drive the segmentation (falls back to
auto-split / the `notes` syntax if none placed). Outputs `waveform_image`, `audio_summary`,
and `audio`. Needs `torchaudio`/`soundfile`/`librosa` to load the file (torchaudio usually
ships with torch).
click to **seek**. The audio is split into a **fixed grid of `subsegment_frames` frames**
(default **721 @ 24fps ≈ 30.04s** — the LTX clip length), drawn as the green grid; each chunk
is one beat. The `notes` box **auto-fills with one `segN:` line per chunk** — type your motion
note after each (or double-click a chunk on the waveform to set its note). The `waveform_image`
carries per-chunk labels (energy, start time, frame count).
- **`subsegment_frames`** — the fixed chunk size (0 = fall back to manual boundaries in `segments_json`).
- **`segment_select`** — `0` = whole clip; `N` = output **only subsegment N**: the `waveform_image`
is cropped to that chunk, the `audio` output is cropped to it, and the summary is just that beat —
so you can generate/skip **one beat at a time**.
Outputs `waveform_image`, `audio_summary`, `audio`. Needs `torchaudio`/`soundfile`/`librosa`
to load the file (torchaudio usually ships with torch).
## Performance / speed