ComfyUI Node
Orpheus (Audio β Shots) πΆ
Read a track and decide where the cuts fall, so a music video is edited to its own music. Outputs the 'durations' string Phantas and Morpheus already take, plus the per-shot trim that puts each cut back exactly on the beat.
Orpheus (Audio β Shots) πΆ
- audio
- durations
- trims
- cues
- shot_count
- seconds
- report
- scope
- gen_extra_info
βcut_on2 barsβΊ
βpace7.00βΊ
βsensitivity0.50βΊ
βbpm0.00βΊ
βbeats_per_bar4βΊ
βplanββΊ
βstart_sec0.0βΊ
βend_sec0.0βΊ
βcue_pull2.0βΊ
βscopetrueβΊ
βscope_width1280βΊ
βverbosetrueβΊ
CategoryKinburg-Nodes/Bestiary/Orpheus
Inputs (13)
| Name | Type | Default | Description |
|---|---|---|---|
| audio | AUDIO | The finished track β straight out of Siren, or a LoadAudio for something off disk. It is analysed whole even when 'start_sec'/'end_sec' narrow the part you are cutting, because tempo and downbeat are measured far more reliably over the whole song than over a 20-second window. | |
| cut_on | COMBO | 2 bars | The musical unit a cut may land on. Same vocabulary as Siren Section's 'snap'. This is not only taste β it decides how much video gets generated and thrown away, and by how much depends on the tempo. A shot is 3-7 bars at a normal tempo, so 'bar' gives the planner more lines than it can use while 'phrase (4 bars)' may give it only two possible shot lengths. The report prints the full cost table for YOUR tempo; read it once per song. |
| pace | FLOAT | 7.005.166666666666667β15.08333333333333 | The shot length to aim for, in seconds β a BIAS, not a length. It decides how many shots the rest of the track should become; the cut itself then goes to the best cue available, which is never exactly this number. So on a 7.5 s phrase grid, 7 and 9 give the SAME plan β there is nothing between the candidates to choose. Move it in whole seconds and watch the shot count, not the decimals. |
| sensitivity | FLOAT | 0.500β1 | How far above its own neighbourhood a moment must stand to become a candidate cut. Low = every drum hit is a candidate (the planner has plenty of choice and cuts nearer 'pace'); high = only the big moments, so shots stretch to reach one. Ignored for section boundaries when a 'plan' is wired β those are read, not detected. |
| bpm | FLOAT | 0.000β300 | 0 = measure it from the audio. Anything else is used verbatim. Type it for a song you generated: you know the tempo exactly, and a measured one carries a confidence that can be low on a ballad or anything without drums. The downbeat is measured either way β knowing the tempo does not tell you where bar 1 starts. |
| beats_per_bar | INT | 41β16 | The time signature's top number. Only used to turn beats into bars, which is what 'cut_on' measures in. |
| planopt | STRING | Siren Cast's or Siren Score's plan β 'label | voice | length' rows. Wired, the section boundaries come from the TABLE rather than from the signal: exact, named, and impossible to miss. Detection then only adds the accents inside each section. This is the right way round for a song you wrote, and no detector can beat it. | |
| start_secopt | FLOAT | 0.00β3600 | Begin the video here instead of at the top of the track β to skip a long intro, or to cut a teaser out of the middle. The whole track is still analysed. |
| end_secopt | FLOAT | 0.00β3600 | Stop here. 0 = run to the end of the track. |
| cue_pullopt | FLOAT | 2.00β10 | How many seconds of deviation from the ideal length a cue's importance is worth. Between two candidates it is their strength DIFFERENCE that pays, so at the default 2.0 a section boundary outranks a weak onset up to ~1.8 s further away and loses beyond that. Raise it to follow the music harder at the cost of uneven shots; drop it to 0 to ignore importance entirely and simply cut on the nearest line. |
| scopeopt | BOOLEAN | true | Render the spectrogram with the cuts drawn on it. Amber = the cut landed on a cue, dim red = the planner had nothing to cut on there. This is how you check a plan in half a second instead of a render. |
| scope_widthopt | INT | 1280256β4096 | Width of that picture in pixels. The whole track always spans it, so a longer song simply gets less detail per second. |
| verboseopt | BOOLEAN | true | Print the report to the console. The same text is always on the 'report' output. |
Outputs (8)
| Name | Type | Description |
|---|---|---|
| durations | STRING | β |
| trims | STRING | β |
| cues | STRING | β |
| shot_count | INT | β |
| seconds | FLOAT | β |
| report | STRING | β |
| scope | IMAGE | β |
| gen_extra_info | GEN_INFO | β |