ComfyUI Node
Siren Section (Audio Window) π§
Mark a stretch of an AceStep audio latent as the part to regenerate β a section retake β or grow the latent to extend the track. Edges can snap to the bar/beat grid and are crossfaded so the join doesn't click. The mask is written to the latent's standard 'noise_mask', so the output works with the stock samplers too; Siren (Music Sampler) just also reports what it found.
Siren Section (Audio Window) π§
- latent
- section
- vae
- latent
- section
- report
βmoderetakeβΊ
βstart_sec0.00βΊ
βend_sec0.00βΊ
βextend_sec15.00βΊ
βextend_atendβΊ
βfade_sec0.35βΊ
βsnapbarβΊ
βbpm120βΊ
βbeats_per_bar4βΊ
βgrid_origin_sec0.00βΊ
βlatent_fps25.00βΊ
CategoryKinburg-Nodes/Bestiary/Siren
Inputs (14)
| Name | Type | Default | Description |
|---|---|---|---|
| latent | LATENT | The audio latent to mark up. For a RETAKE this is the latent of a take you already have (decode it once to hear where the section you want to replace actually sits); for EXTEND it is the take to grow. | |
| mode | COMBO | retake | β’ retake β mark the stretch between 'start_sec' and 'end_sec' as free to regenerate; everything else is frozen. The latent's length does not change. β’ extend β GROW the latent by 'extend_sec' seconds and mark only the new part as free. The existing take is frozen but still visible to the model (attention runs over the whole strip), so the new part is written to follow on from it. |
| start_sec | FLOAT | 0.000β2000 | 'retake' only: where the section starts, in seconds from the top of the track. |
| end_sec | FLOAT | 0.000β2000 | 'retake' only: where the section ends, in seconds. 0 = run to the end of the track (handy for 'redo everything from the last chorus on'). |
| extend_sec | FLOAT | 15.000β2000 | 'extend' only: how many seconds to add. IMPORTANT: the 'duration' you gave TextEncodeAceStepAudio1.5 describes the WHOLE track and is baked into the tokens, so after extending you should raise it to the new total and re-encode β otherwise the model is being told the song is shorter than the strip it is writing on. The sampler prints the new length so you have the number to enter. |
| extend_at | COMBO | end | 'extend' only: which end to grow. 'start' prepends (an intro) and shifts every section marked earlier in the chain later by the same amount, so their timings stay on the music. |
| fade_sec | FLOAT | 0.350β10 | Crossfade at each edge of the section, in seconds. The ramp lies OUTSIDE the window, so the range you named is rewritten in full and the join is spread into the neighbouring audio. This is the difference between a seamless replacement and an audible CLICK: in an image a hard mask edge is just a visible line, in audio it is a transient. 0.2-0.5 s is a good range; 0 for a hard cut. |
| snap | COMBO | bar | Quantize the section's edges to the musical grid built from 'bpm' / 'beats_per_bar'. β’ bar (recommended) β cut on the bar line. Replacing a section that starts mid-bar is the usual reason a retake refuses to sit in the groove. β’ beat β finer, for fills and pickups. β’ off β exactly the seconds you typed. |
| bpm | INT | 1200β300 | Tempo for the snap grid β use the same value you gave TextEncodeAceStepAudio1.5. 0 disables snapping regardless of the 'snap' setting. |
| beats_per_bar | INT | 41β16 | Beats per bar for the snap grid (the 'timesignature' on TextEncodeAceStepAudio1.5). One bar at 120 bpm in 4/4 is 2 s = exactly 50 latent frames. |
| grid_origin_sec | FLOAT | 0.000β2000 | Where bar 1 begins, in seconds. Leave at 0 unless the track opens with a pickup or a bit of silence β then the grid is offset from the file start and snapping to 0 would land between bars. |
| latent_fps | FLOAT | 25.001β1000 | Latent frames per second, used to turn seconds into frame indices. 25 is correct for AceStep 1.5 (the VAE maps one frame to 1920 samples at 48 kHz = 40 ms). Wire the 'vae' input instead of touching this β it reads the true rate from the model and covers AceStep 1.0, which is different. |
| sectionopt | KINBURG_SIREN_SECTION | Wire a PREVIOUS Siren Section here to chain them β several sections marked at once (two retakes, or an extend plus a retake of the tail). Each node adds its own window and rebuilds the mask over all of them, so overlapping windows merge cleanly. | |
| vaeopt | VAE | The audio VAE, used ONLY to read the true latent frame rate (sample rate Γ· samples per frame) instead of trusting 'latent_fps'. Nothing is encoded or decoded here. Recommended: it makes the seconds exact on any audio model. |
Outputs (3)
| Name | Type | Description |
|---|---|---|
| latent | LATENT | β |
| section | KINBURG_SIREN_SECTION | β |
| report | STRING | β |