Audio Wave: correct model — 721 groups are hard splits, segments inside; range select; mirrored render; fix reload explosion
Rebuilt around the real model: group_frames (721) are HARD splits; segments = user
splits UNION the group lines, so a segment never crosses a group boundary (last segment
in a group ends exactly on frame 721). segment_select is now a RANGE string ('A-B' /
'N' / '' = all) that crops waveform_image + audio + summary to segments A..B. Render
rewritten: mirrored waveform (uses top+bottom), bold group grid, thin segment lines,
labels along the top and notes along the bottom, selected range shaded. JS: guards
frame values (0 -> default, fixing the 400+-segments-on-reload explosion), writes only
USER splits to segments_json, dblclick=add split / shift-click=remove / click=seek.
group number fixed (boundary rounding). Workflows + README updated.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -111,17 +111,18 @@ 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,
|
||||
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).
|
||||
An in-node **mirrored waveform** widget: **upload** an audio clip, **play** it, **click to seek**.
|
||||
|
||||
- **`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**.
|
||||
- **`group_frames`** (default **721 @ 24fps ≈ 30.04s** = one LTX clip) is the **hard split** —
|
||||
bold grid lines every `group_frames`. Segments never cross a group line, so the last segment
|
||||
in a group ends exactly on the boundary (e.g. frame 721).
|
||||
- **Segments live inside groups.** By default each group is one segment; **double-click the
|
||||
waveform to add a finer split** inside a group (shift-click a split to remove it). The `notes`
|
||||
box **auto-fills with one `segN:` line per segment** — type your motion note after each.
|
||||
- **`segment_select`** — `""`/`0` = whole clip; `"N"` = only segment N; **`"A-B"` = segments A..B**.
|
||||
The `waveform_image`, the `audio` output, and the summary are all **cropped to that range**, so
|
||||
you can generate/skip beats a range at a time (e.g. `6-12`). Labels sit along the top, per-segment
|
||||
notes along the bottom; the selected range is shaded.
|
||||
|
||||
Outputs `waveform_image`, `audio_summary`, `audio`. Needs `torchaudio`/`soundfile`/`librosa`
|
||||
to load the file (torchaudio usually ships with torch).
|
||||
|
||||
Reference in New Issue
Block a user