工作流 /
音频 /
Mirelo SFX 2.0:视频生成音效

Mirelo SFX 2.0:视频生成音效
Mirelo SFX 2.0: Video to SFX
用 Mirelo sfx-2.0 给片段配上与画面锁定的音效:模型会看画面,把拟音对准屏幕上的动作,默认保留人声,输出音效轨、人声轨和带新混音的视频。
音频
8 个节点 1 个输入 159 次使用 ComfyUI ≥ 0.43.0 ComfyUI 33 KB
节点构成
SaveAudioAdvanced
× 2
MarkdownNote
× 2
MireloVideoToSFX
× 1
LoadVideo
× 1
86f62f26-705f-4a1b-8e9f-294dbc780b31
× 1
SaveVideo
× 1
官方标注的模型
Mirelo
工作流 JSON
和上面「下载工作流 JSON」是同一份文件。
1{
2 "id": "f6b36930-3cd6-4f7e-a7a4-c50e198bbe08",
3 "revision": 0,
4 "last_node_id": 733,
5 "last_link_id": 1827,
6 "nodes": [
7 {
8 "id": 2,
9 "type": "SaveAudioAdvanced",
10 "pos": [
11 2880,
12 790
13 ],
14 "size": [
15 700,
16 150
17 ],
18 "flags": [],
19 "order": 4,
20 "mode": 0,
21 "inputs": [
22 {
23 "name": "audio",
24 "type": "AUDIO",
25 "link": 2
26 }
27 ],
28 "outputs": [
29 {
30 "name": "audio",
31 "type": "AUDIO",
32 "links": [
33 1820
34 ]
35 }
36 ],
37 "properties": [],
38 "widgets_values": [
39 "audio/Mirelo_SFX_2.0",
40 "mp3",
41 "V0"
42 ],
43 "widgets_values_named": {
44 "filename_prefix": "audio/Mirelo_SFX_2.0",
45 "format": "mp3",
46 "quality": "V0"
47 },
48 "title": "Save SFX Track"
49 },
50 {
51 "id": 3,
52 "type": "MarkdownNote",
53 "pos": [
54 1120,
55 770
56 ],
57 "size": [
58 740,
59 2032.2133355287683
60 ],
61 "flags": [],
62 "order": 0,
63 "mode": 0,
64 "inputs": [],
65 "outputs": [],
66 "properties": [],
67 "widgets_values": [
68 "## Mirelo Video → Synced SFX — Guide (sfx-2.0)\n\nPicture-locked Foley: the model watches the **video** and generates sound timed to on-screen action. Optional text only steers; it does not replace the picture.\n\n## Input Asset\n\n- [mage_crash_discovery_video.mp4](https://raw.githubusercontent.com/Comfy-Org/workflow_templates/refs/heads/main/input/mage_crash_discovery_video.mp4)\n\n---\n\n## Node parameters (what each control does)\n\n| Parameter | What it is | How to use it |\n| --- | --- | --- |\n| **video** (input) | Main input. The clip the model “hears” with its eyes. | Required. Prefer the locked cut. Silent or with audio both OK. |\n| **audio** (input) | Optional separate soundtrack to preserve / align with the clip. | Wire when speech/SFX to keep is not already on the video’s own track. Leave unconnected if the video file already carries the audio you care about. |\n| **model** | Engine release. | Use **`sfx-2.0`** (48 kHz). sfx-1.6 is older / different stem behavior. |\n| **prompt** | Short text hint (optional). Experimental on video→SFX. | Empty first. Add **one line** only for off-screen sound or to push one layer (material, rain, forge, etc.). Soft guidance — always audition. |\n| **negative_prompt** | Sounds to leave out (optional). Experimental. | Short list: `music, wind, crowd`. Good for stripping AI-video score. |\n| **preserve_speech** | Keep dialogue from the source and build SFX around it. | **On (default):** keep lines, duck SFX under speech. **Off:** SFX/ambience only (VO later, or mute source intent). |\n| **seed** | Reproducibility. | Same seed + same inputs ≈ similar take. Change / randomize to explore variants. |\n| **audio** (output) | Generated mix (SFX ± preserved speech depending on settings). | Save / preview this as the main result. |\n| **speech** (output) | Isolated speech stem when separation is available. | Use if you want dialogue on its own track; may be empty if no speech was found. |\n\nAlso typical (may be on the node or defaults): **duration** follows the clip window; **num_variants** 1–4 if exposed — generate a few and pick the best sync.\n\n---\n\n## Recommended workflow\n\n1. Connect **video** (and **audio** only if needed).\n2. Model = **sfx-2.0**.\n3. Leave **prompt** / **negative_prompt** empty → run once.\n4. Listen against picture.\n5. If needed: one-line **prompt**, and/or **negative** `music, wind, crowd`.\n6. Toggle **preserve_speech** for dialogue vs SFX-only.\n7. Tweak **seed** or variants; save **audio** (and **speech** if useful).\n\n---\n\n## Prompt tips (video)\n\nDescribe **sounds**, not the plot. Keep it to one short line.\n\n| Goal | Example prompt |\n| --- | --- |\n| Follow picture only | *(leave empty)* |\n| Off-screen | `distant church bells, a dog barking two streets away` |\n| Push one layer | `heavy rain on a tin roof, footsteps quiet underneath` |\n| Material | `boots on gravel, metal settling, soft cavern wind` |\n| Energy / sci-fi | `pulsing energy hum, soft electrical crackle, quiet rocky wind` |\n\n**Negative (common):** `music, wind, crowd` \n(Drop `speech` from negative if you want dialogue kept.)\n\n---\n\n## With sound vs silent source\n\n| Source | Suggestion |\n| --- | --- |\n| Has dialogue you want | Keep audio on the clip (or wire **audio**), **preserve_speech on** |\n| Music-heavy AI clip, keep lines | preserve on + negative `music` |\n| Silent / SFX-only / VO later | Silent clip OK, or **preserve_speech off** |\n\n---\n\n## Example (mage crash discovery ~5 s)\n\n**First try:** empty prompt, preserve_speech as needed.\n\n**If you want to steer the energy bed:**\n```\nPulsing magenta energy hum from the crashed ship cockpit, soft electrical crackle, quiet rocky cavern wind, distant metal settling\n```\n\n**Negative:** `music, crowd, birds`\n\n---\n\n## Paste-ready template note\n\n> Video drives timing. Start with an empty prompt; add one short line only for off-screen detail or to push one layer. Use negative to drop unwanted layers (`music, wind, crowd`). Keep Preserve speech on for dialogue; off for SFX-only. Prompt is soft guidance — audition variants."
69 ],
70 "widgets_values_named": {
71 "text": "## Mirelo Video → Synced SFX — Guide (sfx-2.0)\n\nPicture-locked Foley: the model watches the **video** and generates sound timed to on-screen action. Optional text only steers; it does not replace the picture.\n\n## Input Asset\n\n- [mage_crash_discovery_video.mp4](https://raw.githubusercontent.com/Comfy-Org/workflow_templates/refs/heads/main/input/mage_crash_discovery_video.mp4)\n\n---\n\n## Node parameters (what each control does)\n\n| Parameter | What it is | How to use it |\n| --- | --- | --- |\n| **video** (input) | Main input. The clip the model “hears” with its eyes. | Required. Prefer the locked cut. Silent or with audio both OK. |\n| **audio** (input) | Optional separate soundtrack to preserve / align with the clip. | Wire when speech/SFX to keep is not already on the video’s own track. Leave unconnected if the video file already carries the audio you care about. |\n| **model** | Engine release. | Use **`sfx-2.0`** (48 kHz). sfx-1.6 is older / different stem behavior. |\n| **prompt** | Short text hint (optional). Experimental on video→SFX. | Empty first. Add **one line** only for off-screen sound or to push one layer (material, rain, forge, etc.). Soft guidance — always audition. |\n| **negative_prompt** | Sounds to leave out (optional). Experimental. | Short list: `music, wind, crowd`. Good for stripping AI-video score. |\n| **preserve_speech** | Keep dialogue from the source and build SFX around it. | **On (default):** keep lines, duck SFX under speech. **Off:** SFX/ambience only (VO later, or mute source intent). |\n| **seed** | Reproducibility. | Same seed + same inputs ≈ similar take. Change / randomize to explore variants. |\n| **audio** (output) | Generated mix (SFX ± preserved speech depending on settings). | Save / preview this as the main result. |\n| **speech** (output) | Isolated speech stem when separation is available. | Use if you want dialogue on its own track; may be empty if no speech was found. |\n\nAlso typical (may be on the node or defaults): **duration** follows the clip window; **num_variants** 1–4 if exposed — generate a few and pick the best sync.\n\n---\n\n## Recommended workflow\n\n1. Connect **video** (and **audio** only if needed).\n2. Model = **sfx-2.0**.\n3. Leave **prompt** / **negative_prompt** empty → run once.\n4. Listen against picture.\n5. If needed: one-line **prompt**, and/or **negative** `music, wind, crowd`.\n6. Toggle **preserve_speech** for dialogue vs SFX-only.\n7. Tweak **seed** or variants; save **audio** (and **speech** if useful).\n\n---\n\n## Prompt tips (video)\n\nDescribe **sounds**, not the plot. Keep it to one short line.\n\n| Goal | Example prompt |\n| --- | --- |\n| Follow picture only | *(leave empty)* |\n| Off-screen | `distant church bells, a dog barking two streets away` |\n| Push one layer | `heavy rain on a tin roof, footsteps quiet underneath` |\n| Material | `boots on gravel, metal settling, soft cavern wind` |\n| Energy / sci-fi | `pulsing energy hum, soft electrical crackle, quiet rocky wind` |\n\n**Negative (common):** `music, wind, crowd` \n(Drop `speech` from negative if you want dialogue kept.)\n\n---\n\n## With sound vs silent source\n\n| Source | Suggestion |\n| --- | --- |\n| Has dialogue you want | Keep audio on the clip (or wire **audio**), **preserve_speech on** |\n| Music-heavy AI clip, keep lines | preserve on + negative `music` |\n| Silent / SFX-only / VO later | Silent clip OK, or **preserve_speech off** |\n\n---\n\n## Example (mage crash discovery ~5 s)\n\n**First try:** empty prompt, preserve_speech as needed.\n\n**If you want to steer the energy bed:**\n```\nPulsing magenta energy hum from the crashed ship cockpit, soft electrical crackle, quiet rocky cavern wind, distant metal settling\n```\n\n**Negative:** `music, crowd, birds`\n\n---\n\n## Paste-ready template note\n\n> Video drives timing. Start with an empty prompt; add one short line only for off-screen detail or to push one layer. Use negative to drop unwanted layers (`music, wind, crowd`). Keep Preserve speech on for dialogue; off for SFX-only. Prompt is soft guidance — audition variants."
72 },
73 "color": "#222",
74 "bgcolor": "#000",
75 "title": "Note: Video to SFX Guide"
76 },
77 {
78 "id": 4,
79 "type": "MireloVideoToSFX",
80 "pos": [
81 2440,
82 790
83 ],
84 "size": [
85 400,
86 290
87 ],
88 "flags": [],
89 "order": 3,
90 "mode": 0,
91 "inputs": [
92 {
93 "name": "model.video",
94 "type": "VIDEO",
95 "link": 4
96 },
97 {
98 "name": "model.audio",
99 "shape": 7,
100 "type": "AUDIO",
101 "link": null
102 }
103 ],
104 "outputs": [
105 {
106 "name": "audio",
107 "type": "AUDIO",
108 "links": [
109 2
110 ]
111 },
112 {
113 "name": "speech",
114 "type": "AUDIO",
115 "links": [
116 3
117 ]
118 }
119 ],
120 "properties": {
121 "Node name for S&R": "MireloVideoToSFX"
122 },
123 "widgets_values": [
124 "sfx-2.0",
125 "Pulsing magenta energy hum from the crashed ship cockpit, soft electrical crackle, quiet rocky cavern wind, distant metal settling",
126 "",
127 true,
128 441944540,
129 "fixed",
130 "randomize"
131 ],
132 "widgets_values_named": {
133 "model": "sfx-2.0",
134 "model.prompt": "Pulsing magenta energy hum from the crashed ship cockpit, soft electrical crackle, quiet rocky cavern wind, distant metal settling",
135 "model.negative_prompt": "",
136 "model.preserve_speech": true,
137 "model.seed": 441944540,
138 "control_after_generate#1": "fixed",
139 "control_after_generate": "randomize"
140 },
141 "color": "#432",
142 "bgcolor": "#653"
143 },
144 {
145 "id": 5,
146 "type": "SaveAudioAdvanced",
147 "pos": [
148 2880,
149 1050
150 ],
151 "size": [
152 700,
153 150
154 ],
155 "flags": [],
156 "order": 5,
157 "mode": 0,
158 "inputs": [
159 {
160 "name": "audio",
161 "type": "AUDIO",
162 "link": 3
163 }
164 ],
165 "outputs": [
166 {
167 "name": "audio",
168 "type": "AUDIO",
169 "links": []
170 }
171 ],
172 "properties": [],
173 "widgets_values": [
174 "audio/Mirelo_SFX_2.0_speech",
175 "mp3",
176 "V0"
177 ],
178 "widgets_values_named": {
179 "filename_prefix": "audio/Mirelo_SFX_2.0_speech",
180 "format": "mp3",
181 "quality": "V0"
182 },
183 "title": "Save Speech Track"
184 },
185 {
186 "id": 7,
187 "type": "LoadVideo",
188 "pos": [
189 1920,
190 790
191 ],
192 "size": [
193 450,
194 580
195 ],
196 "flags": [],
197 "order": 1,
198 "mode": 0,
199 "inputs": [],
200 "outputs": [
201 {
202 "name": "VIDEO",
203 "type": "VIDEO",
204 "links": [
205 4,
206 1821
207 ]
208 }
209 ],
210 "properties": {
211 "Node name for S&R": "LoadVideo"
212 },
213 "widgets_values": [
214 "mage_crash_discovery_video.mp4",
215 "image"
216 ],
217 "widgets_values_named": {
218 "file": "mage_crash_discovery_video.mp4",
219 "upload": "image"
220 }
221 },
222 {
223 "id": 729,
224 "type": "86f62f26-705f-4a1b-8e9f-294dbc780b31",
225 "pos": [
226 3660,
227 790
228 ],
229 "size": [
230 290,
231 170
232 ],
233 "flags": [],
234 "order": 6,
235 "mode": 0,
236 "inputs": [
237 {
238 "name": "video",
239 "type": "VIDEO",
240 "link": 1821
241 },
242 {
243 "label": "extra_audio",
244 "name": "audio",
245 "type": "AUDIO",
246 "link": 1820
247 },
248 {
249 "label": "original_audio_volume",
250 "name": "volume",
251 "type": "INT",
252 "widget": {
253 "name": "volume"
254 },
255 "link": null
256 },
257 {
258 "label": "extra_audio_volume",
259 "name": "volume_1",
260 "type": "INT",
261 "widget": {
262 "name": "volume_1"
263 },
264 "link": null
265 },
266 {
267 "label": "drop_video_audio",
268 "name": "switch",
269 "type": "BOOLEAN",
270 "widget": {
271 "name": "switch"
272 },
273 "link": null
274 }
275 ],
276 "outputs": [
277 {
278 "name": "VIDEO",
279 "type": "VIDEO",
280 "links": [
281 1819
282 ]
283 }
284 ],
285 "properties": {
286 "cnr_id": "comfy-core",
287 "ver": "0.21.1",
288 "enableTabs": false,
289 "tabWidth": 65,
290 "tabXOffset": 10,
291 "hasSecondTab": false,
292 "secondTabText": "Send Back",
293 "secondTabOffset": 80,
294 "secondTabWidth": 65,
295 "previewExposures": []
296 },
297 "widgets_values": [
298 1,
299 1,
300 true
301 ],
302 "widgets_values_named": {
303 "volume": 1,
304 "volume_1": 1,
305 "switch": true
306 },
307 "title": "Merge SFX into Video"
308 },
309 {
310 "id": 730,
311 "type": "SaveVideo",
312 "pos": [
313 3980,
314 790
315 ],
316 "size": [
317 500,
318 510
319 ],
320 "flags": [],
321 "order": 7,
322 "mode": 0,
323 "inputs": [
324 {
325 "name": "video",
326 "type": "VIDEO",
327 "link": 1819
328 }
329 ],
330 "outputs": [
331 {
332 "name": "video",
333 "type": "VIDEO",
334 "links": []
335 }
336 ],
337 "properties": {
338 "Node name for S&R": "SaveVideo",
339 "cnr_id": "comfy-core",
340 "ver": "0.21.1",
341 "enableTabs": false,
342 "tabWidth": 65,
343 "tabXOffset": 10,
344 "hasSecondTab": false,
345 "secondTabText": "Send Back",
346 "secondTabOffset": 80,
347 "secondTabWidth": 65
348 },
349 "widgets_values": [
350 "video/Mirelo_SFX_2.0",
351 "auto",
352 "auto",
353 "auto"
354 ],
355 "widgets_values_named": {
356 "filename_prefix": "video/Mirelo_SFX_2.0",
357 "format": "auto",
358 "format.codec": "auto",
359 "codec": "auto"
360 },
361 "title": "Save Video with SFX"
362 },
363 {
364 "id": 733,
365 "type": "MarkdownNote",
366 "pos": [
367 2460,
368 1150
369 ],
370 "size": [
371 350,
372 120
373 ],
374 "flags": [],
375 "order": 2,
376 "mode": 0,
377 "inputs": [],
378 "outputs": [],
379 "properties": [],
380 "widgets_values": [
381 "The `seed` is fixed by default. Change it if you want different output with the same prompt."
382 ],
383 "widgets_values_named": {
384 "text": "The `seed` is fixed by default. Change it if you want different output with the same prompt."
385 },
386 "color": "#222",
387 "bgcolor": "#000",
388 "title": "Note: Seed"
389 }
390 ],
391 "links": [
392 [
393 1820,
394 2,
395 0,
396 729,
397 1,
398 "AUDIO"
399 ],
400 [
401 1821,
402 7,
403 0,
404 729,
405 0,
406 "VIDEO"
407 ],
408 [
409 2,
410 4,
411 0,
412 2,
413 0,
414 "AUDIO"
415 ],
416 [
417 4,
418 7,
419 0,
420 4,
421 0,
422 "VIDEO"
423 ],
424 [
425 3,
426 4,
427 1,
428 5,
429 0,
430 "AUDIO"
431 ],
432 [
433 1819,
434 729,
435 0,
436 730,
437 0,
438 "VIDEO"
439 ]
440 ],
441 "groups": [
442 {
443 "id": 17,
444 "title": "Merge Audio to Video",
445 "bounding": [
446 3650,
447 710,
448 839.9999892857909,
449 613.6000000000005
450 ],
451 "color": "#3f789e",
452 "flags": []
453 }
454 ],
455 "definitions": {
456 "subgraphs": [
457 {
458 "id": "86f62f26-705f-4a1b-8e9f-294dbc780b31",
459 "version": 1,
460 "state": {
461 "lastGroupId": 17,
462 "lastNodeId": 733,
463 "lastLinkId": 1827,
464 "lastRerouteId": 0
465 },
466 "revision": 0,
467 "config": [],
468 "name": "Video Audio Merger",
469 "inputNode": {
470 "id": -10,
471 "bounding": [
472 -710,
473 4190,
474 172.23046875,
475 148
476 ]
477 },
478 "outputNode": {
479 "id": -20,
480 "bounding": [
481 930,
482 4150,
483 128,
484 68
485 ]
486 },
487 "inputs": [
488 {
489 "id": "645a091a-8435-47b1-b2a9-67c06d67ec99",
490 "name": "video",
491 "type": "VIDEO",
492 "linkIds": [
493 1804
494 ],
495 "localized_name": "video",
496 "pos": [
497 -561.76953125,
498 4214
499 ]
500 },
501 {
502 "id": "45f8492d-0b87-4797-b25c-6245643250e3",
503 "name": "audio",
504 "type": "AUDIO",
505 "linkIds": [
506 1811
507 ],
508 "localized_name": "audio",
509 "label": "extra_audio",
510 "pos": [
511 -561.76953125,
512 4234
513 ]
514 },
515 {
516 "id": "e46461b3-9f5c-4c2c-a111-eafef15c9ec4",
517 "name": "volume",
518 "type": "INT",
519 "linkIds": [
520 1815
521 ],
522 "label": "original_audio_volume",
523 "pos": [
524 -561.76953125,
525 4254
526 ]
527 },
528 {
529 "id": "9afc3134-0316-4cbf-8c20-e0edbfe8fcda",
530 "name": "volume_1",
531 "type": "INT",
532 "linkIds": [
533 1816
534 ],
535 "label": "extra_audio_volume",
536 "pos": [
537 -561.76953125,
538 4274
539 ]
540 },
541 {
542 "id": "0e8b4e48-782a-4cd1-a755-803c16e26f76",
543 "name": "switch",
544 "type": "BOOLEAN",
545 "linkIds": [
546 1827
547 ],
548 "label": "drop_video_audio",
549 "pos": [
550 -561.76953125,
551 4294
552 ]
553 }
554 ],
555 "outputs": [
556 {
557 "id": "8e570612-ad18-44cb-90e1-12584d6c13fb",
558 "name": "VIDEO",
559 "type": "VIDEO",
560 "linkIds": [
561 1806
562 ],
563 "localized_name": "VIDEO",
564 "pos": [
565 954,
566 4174
567 ]
568 }
569 ],
570 "widgets": [],
571 "nodes": [
572 {
573 "id": 717,
574 "type": "GetVideoComponents",
575 "pos": [
576 -450,
577 3970
578 ],
579 "size": [
580 230,
581 120
582 ],
583 "flags": [],
584 "order": 0,
585 "mode": 0,
586 "inputs": [
587 {
588 "localized_name": "video",
589 "name": "video",
590 "type": "VIDEO",
591 "link": 1804
592 }
593 ],
594 "outputs": [
595 {
596 "localized_name": "images",
597 "name": "images",
598 "type": "IMAGE",
599 "links": [
600 1798
601 ]
602 },
603 {
604 "localized_name": "audio",
605 "name": "audio",
606 "type": "AUDIO",
607 "links": [
608 1808
609 ]
610 },
611 {
612 "localized_name": "fps",
613 "name": "fps",
614 "type": "FLOAT",
615 "links": [
616 1800
617 ]
618 },
619 {
620 "localized_name": "bit_depth",
621 "name": "bit_depth",
622 "type": "COMBO",
623 "links": [
624 1825
625 ]
626 },
627 {
628 "localized_name": "color_space",
629 "name": "color_space",
630 "type": "COMBO",
631 "links": [
632 1826
633 ]
634 }
635 ],
636 "properties": {
637 "Node name for S&R": "GetVideoComponents",
638 "cnr_id": "comfy-core",
639 "ver": "0.21.1",
640 "enableTabs": false,
641 "tabWidth": 65,
642 "tabXOffset": 10,
643 "hasSecondTab": false,
644 "secondTabText": "Send Back",
645 "secondTabOffset": 80,
646 "secondTabWidth": 65
647 }
648 },
649 {
650 "id": 718,
651 "type": "CreateVideo",
652 "pos": [
653 520,
654 3960
655 ],
656 "size": [
657 270,
658 150
659 ],
660 "flags": [],
661 "order": 1,
662 "mode": 0,
663 "inputs": [
664 {
665 "localized_name": "images",
666 "name": "images",
667 "type": "IMAGE",
668 "link": 1798
669 },
670 {
671 "localized_name": "audio",
672 "name": "audio",
673 "shape": 7,
674 "type": "AUDIO",
675 "link": 1824
676 },
677 {
678 "localized_name": "fps",
679 "name": "fps",
680 "type": "FLOAT",
681 "widget": {
682 "name": "fps"
683 },
684 "link": 1800
685 },
686 {
687 "localized_name": "bit_depth",
688 "name": "bit_depth",
689 "shape": 7,
690 "type": "COMBO",
691 "widget": {
692 "name": "bit_depth"
693 },
694 "link": 1825
695 },
696 {
697 "localized_name": "color_space",
698 "name": "color_space",
699 "shape": 7,
700 "type": "COMBO",
701 "widget": {
702 "name": "color_space"
703 },
704 "link": 1826
705 }
706 ],
707 "outputs": [
708 {
709 "localized_name": "VIDEO",
710 "name": "VIDEO",
711 "type": "VIDEO",
712 "links": [
713 1806
714 ]
715 }
716 ],
717 "properties": {
718 "Node name for S&R": "CreateVideo",
719 "cnr_id": "comfy-core",
720 "ver": "0.21.1",
721 "enableTabs": false,
722 "tabWidth": 65,
723 "tabXOffset": 10,
724 "hasSecondTab": false,
725 "secondTabText": "Send Back",
726 "secondTabOffset": 80,
727 "secondTabWidth": 65
728 },
729 "widgets_values": [
730 30,
731 8,
732 "sRGB",
733 "none"
734 ],
735 "widgets_values_named": {
736 "fps": 30,
737 "bit_depth": 8,
738 "color_space": "sRGB",
739 "codec": "none"
740 }
741 },
742 {
743 "id": 719,
744 "type": "AudioAdjustVolume",
745 "pos": [
746 -450,
747 4420
748 ],
749 "size": [
750 270,
751 110
752 ],
753 "flags": [],
754 "order": 2,
755 "mode": 0,
756 "inputs": [
757 {
758 "localized_name": "audio",
759 "name": "audio",
760 "type": "AUDIO",
761 "link": 1811
762 },
763 {
764 "localized_name": "volume",
765 "name": "volume",
766 "type": "INT",
767 "widget": {
768 "name": "volume"
769 },
770 "link": 1816
771 }
772 ],
773 "outputs": [
774 {
775 "localized_name": "AUDIO",
776 "name": "AUDIO",
777 "type": "AUDIO",
778 "links": [
779 1803,
780 1822
781 ]
782 }
783 ],
784 "properties": {
785 "Node name for S&R": "AudioAdjustVolume",
786 "cnr_id": "comfy-core",
787 "ver": "0.21.1",
788 "enableTabs": false,
789 "tabWidth": 65,
790 "tabXOffset": 10,
791 "hasSecondTab": false,
792 "secondTabText": "Send Back",
793 "secondTabOffset": 80,
794 "secondTabWidth": 65
795 },
796 "widgets_values": [
797 1
798 ],
799 "widgets_values_named": {
800 "volume": 1
801 }
802 },
803 {
804 "id": 721,
805 "type": "AudioMerge",
806 "pos": [
807 -130,
808 4220
809 ],
810 "size": [
811 270,
812 140
813 ],
814 "flags": [],
815 "order": 3,
816 "mode": 0,
817 "inputs": [
818 {
819 "localized_name": "audio1",
820 "name": "audio1",
821 "type": "AUDIO",
822 "link": 1809
823 },
824 {
825 "localized_name": "audio2",
826 "name": "audio2",
827 "type": "AUDIO",
828 "link": 1803
829 }
830 ],
831 "outputs": [
832 {
833 "localized_name": "AUDIO",
834 "name": "AUDIO",
835 "type": "AUDIO",
836 "links": [
837 1823
838 ]
839 }
840 ],
841 "properties": {
842 "Node name for S&R": "AudioMerge",
843 "cnr_id": "comfy-core",
844 "ver": "0.21.1",
845 "enableTabs": false,
846 "tabWidth": 65,
847 "tabXOffset": 10,
848 "hasSecondTab": false,
849 "secondTabText": "Send Back",
850 "secondTabOffset": 80,
851 "secondTabWidth": 65
852 },
853 "widgets_values": [
854 "add"
855 ],
856 "widgets_values_named": {
857 "merge_method": "add"
858 }
859 },
860 {
861 "id": 722,
862 "type": "AudioAdjustVolume",
863 "pos": [
864 -450,
865 4210
866 ],
867 "size": [
868 270,
869 110
870 ],
871 "flags": [],
872 "order": 4,
873 "mode": 0,
874 "inputs": [
875 {
876 "localized_name": "audio",
877 "name": "audio",
878 "type": "AUDIO",
879 "link": 1808
880 },
881 {
882 "localized_name": "volume",
883 "name": "volume",
884 "type": "INT",
885 "widget": {
886 "name": "volume"
887 },
888 "link": 1815
889 }
890 ],
891 "outputs": [
892 {
893 "localized_name": "AUDIO",
894 "name": "AUDIO",
895 "type": "AUDIO",
896 "links": [
897 1809
898 ]
899 }
900 ],
901 "properties": {
902 "Node name for S&R": "AudioAdjustVolume",
903 "cnr_id": "comfy-core",
904 "ver": "0.21.1",
905 "enableTabs": false,
906 "tabWidth": 65,
907 "tabXOffset": 10,
908 "hasSecondTab": false,
909 "secondTabText": "Send Back",
910 "secondTabOffset": 80,
911 "secondTabWidth": 65
912 },
913 "widgets_values": [
914 1
915 ],
916 "widgets_values_named": {
917 "volume": 1
918 }
919 },
920 {
921 "id": 732,
922 "type": "ComfySwitchNode",
923 "pos": [
924 170,
925 4400
926 ],
927 "size": [
928 270,
929 80
930 ],
931 "flags": [],
932 "order": 5,
933 "mode": 0,
934 "inputs": [
935 {
936 "localized_name": "on_false",
937 "name": "on_false",
938 "shape": 7,
939 "type": "AUDIO",
940 "link": 1823
941 },
942 {
943 "localized_name": "on_true",
944 "name": "on_true",
945 "shape": 7,
946 "type": "AUDIO",
947 "link": 1822
948 },
949 {
950 "localized_name": "switch",
951 "name": "switch",
952 "type": "BOOLEAN",
953 "widget": {
954 "name": "switch"
955 },
956 "link": 1827
957 }
958 ],
959 "outputs": [
960 {
961 "localized_name": "output",
962 "name": "output",
963 "type": "AUDIO",
964 "links": [
965 1824
966 ]
967 }
968 ],
969 "properties": {
970 "Node name for S&R": "ComfySwitchNode"
971 },
972 "widgets_values": [
973 false
974 ],
975 "widgets_values_named": {
976 "switch": false
977 }
978 }
979 ],
980 "groups": [
981 {
982 "id": 15,
983 "title": "Video Audio Merger",
984 "bounding": [
985 -480,
986 3890,
987 1310,
988 670
989 ],
990 "color": "#3f789e",
991 "flags": []
992 }
993 ],
994 "links": [
995 {
996 "id": 1798,
997 "origin_id": 717,
998 "origin_slot": 0,
999 "target_id": 718,
1000 "target_slot": 0,
1001 "type": "IMAGE"
1002 },
1003 {
1004 "id": 1800,
1005 "origin_id": 717,
1006 "origin_slot": 2,
1007 "target_id": 718,
1008 "target_slot": 2,
1009 "type": "FLOAT"
1010 },
1011 {
1012 "id": 1809,
1013 "origin_id": 722,
1014 "origin_slot": 0,
1015 "target_id": 721,
1016 "target_slot": 0,
1017 "type": "AUDIO"
1018 },
1019 {
1020 "id": 1803,
1021 "origin_id": 719,
1022 "origin_slot": 0,
1023 "target_id": 721,
1024 "target_slot": 1,
1025 "type": "AUDIO"
1026 },
1027 {
1028 "id": 1808,
1029 "origin_id": 717,
1030 "origin_slot": 1,
1031 "target_id": 722,
1032 "target_slot": 0,
1033 "type": "AUDIO"
1034 },
1035 {
1036 "id": 1804,
1037 "origin_id": -10,
1038 "origin_slot": 0,
1039 "target_id": 717,
1040 "target_slot": 0,
1041 "type": "VIDEO"
1042 },
1043 {
1044 "id": 1811,
1045 "origin_id": -10,
1046 "origin_slot": 1,
1047 "target_id": 719,
1048 "target_slot": 0,
1049 "type": "AUDIO"
1050 },
1051 {
1052 "id": 1806,
1053 "origin_id": 718,
1054 "origin_slot": 0,
1055 "target_id": -20,
1056 "target_slot": 0,
1057 "type": "VIDEO"
1058 },
1059 {
1060 "id": 1815,
1061 "origin_id": -10,
1062 "origin_slot": 2,
1063 "target_id": 722,
1064 "target_slot": 1,
1065 "type": "INT"
1066 },
1067 {
1068 "id": 1816,
1069 "origin_id": -10,
1070 "origin_slot": 3,
1071 "target_id": 719,
1072 "target_slot": 1,
1073 "type": "INT"
1074 },
1075 {
1076 "id": 1822,
1077 "origin_id": 719,
1078 "origin_slot": 0,
1079 "target_id": 732,
1080 "target_slot": 1,
1081 "type": "AUDIO"
1082 },
1083 {
1084 "id": 1823,
1085 "origin_id": 721,
1086 "origin_slot": 0,
1087 "target_id": 732,
1088 "target_slot": 0,
1089 "type": "AUDIO"
1090 },
1091 {
1092 "id": 1824,
1093 "origin_id": 732,
1094 "origin_slot": 0,
1095 "target_id": 718,
1096 "target_slot": 1,
1097 "type": "AUDIO"
1098 },
1099 {
1100 "id": 1825,
1101 "origin_id": 717,
1102 "origin_slot": 3,
1103 "target_id": 718,
1104 "target_slot": 3,
1105 "type": "COMBO"
1106 },
1107 {
1108 "id": 1826,
1109 "origin_id": 717,
1110 "origin_slot": 4,
1111 "target_id": 718,
1112 "target_slot": 4,
1113 "type": "COMBO"
1114 },
1115 {
1116 "id": 1827,
1117 "origin_id": -10,
1118 "origin_slot": 4,
1119 "target_id": 732,
1120 "target_slot": 2,
1121 "type": "BOOLEAN"
1122 }
1123 ],
1124 "extra": []
1125 }
1126 ]
1127 },
1128 "config": [],
1129 "extra": {
1130 "ds": {
1131 "scale": 0.42,
1132 "offset": [
1133 -1180,
1134 -390
1135 ]
1136 },
1137 "frontendVersion": "1.58.0"
1138 },
1139 "version": 0.4
1140}