rzgar commited on
Commit
9398abd
·
verified ·
1 Parent(s): ba29e56

Upload 13 files

Browse files
.gitattributes CHANGED
@@ -33,3 +33,8 @@ saved_model/**/* filter=lfs diff=lfs merge=lfs -text
33
  *.zip filter=lfs diff=lfs merge=lfs -text
34
  *.zst filter=lfs diff=lfs merge=lfs -text
35
  *tfevents* filter=lfs diff=lfs merge=lfs -text
 
 
 
 
 
 
33
  *.zip filter=lfs diff=lfs merge=lfs -text
34
  *.zst filter=lfs diff=lfs merge=lfs -text
35
  *tfevents* filter=lfs diff=lfs merge=lfs -text
36
+ video/anthony.wav filter=lfs diff=lfs merge=lfs -text
37
+ video/ComfyUI__00002-audio.mp4 filter=lfs diff=lfs merge=lfs -text
38
+ video/not_today.wav filter=lfs diff=lfs merge=lfs -text
39
+ video/scream_mono.wav filter=lfs diff=lfs merge=lfs -text
40
+ video/Triumph_of_the_Iron.mp3 filter=lfs diff=lfs merge=lfs -text
Bernini-R-S2V-int8-convrot/wan2.2_bernini_r_high_noise_int8_convrot_s2v.safetensors ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:1a71c3cb2a3ded330086c2211f0525b93e9436fd0114096e662e8f43f28dd7a9
3
+ size 19025569194
Bernini-R-S2V-int8-convrot/wan2.2_bernini_r_low_noise_int8_convrot_s2v.safetensors ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:2c3dd9f648df805ec1dd7ad7ae1866864ed2574f72ab4817d7fc21c135f58e84
3
+ size 19025569194
ComfyUI-WanBerniniS2V/__init__.py ADDED
@@ -0,0 +1,7 @@
 
 
 
 
 
 
 
 
1
+ from .model_patch import apply_wan_s2v_bernini_model_patch
2
+
3
+ apply_wan_s2v_bernini_model_patch()
4
+
5
+ from .nodes import comfy_entrypoint
6
+
7
+ __all__ = ["comfy_entrypoint"]
ComfyUI-WanBerniniS2V/model_patch.py ADDED
@@ -0,0 +1,122 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import inspect
2
+ import logging
3
+
4
+ import torch
5
+
6
+ import comfy.model_management
7
+
8
+
9
+ def _append_context_latents(self, x, kwargs):
10
+ context_latents = kwargs.get("context_latents", None)
11
+ if context_latents is None:
12
+ return x
13
+ for lat in context_latents:
14
+ cl = self.patch_embedding(lat.float().to(x.device)).to(x.dtype).flatten(2).transpose(1, 2)
15
+ x = torch.cat([x, cl], dim=1)
16
+ return x
17
+
18
+
19
+ def apply_wan_s2v_bernini_model_patch():
20
+ from comfy.ldm.wan.model import WanModel_S2V
21
+
22
+ try:
23
+ source = inspect.getsource(WanModel_S2V.forward_orig)
24
+ except (OSError, TypeError):
25
+ source = ""
26
+ if "context_latents" in source:
27
+ return False
28
+
29
+ if getattr(WanModel_S2V.forward_orig, "__wan_bernini_s2v_patch__", False):
30
+ return True
31
+
32
+ original = WanModel_S2V.forward_orig
33
+
34
+ def forward_orig(
35
+ self,
36
+ x,
37
+ t,
38
+ context,
39
+ audio_embed=None,
40
+ reference_latent=None,
41
+ control_video=None,
42
+ reference_motion=None,
43
+ clip_fea=None,
44
+ freqs=None,
45
+ transformer_options={},
46
+ **kwargs,
47
+ ):
48
+ if audio_embed is not None:
49
+ num_embeds = x.shape[-3] * 4
50
+ audio_emb_global, audio_emb = self.casual_audio_encoder(audio_embed[:, :, :, :num_embeds])
51
+ else:
52
+ audio_emb = None
53
+ audio_emb_global = None
54
+
55
+ bs, _, time, height, width = x.shape
56
+ x = self.patch_embedding(x.float()).to(x.dtype)
57
+ if control_video is not None:
58
+ x = x + self.cond_encoder(control_video)
59
+
60
+ if t.ndim == 1:
61
+ t = t.unsqueeze(1).repeat(1, x.shape[2])
62
+
63
+ grid_sizes = x.shape[2:]
64
+ x = x.flatten(2).transpose(1, 2)
65
+ seq_len = x.size(1)
66
+
67
+ cond_mask_weight = comfy.model_management.cast_to(self.trainable_cond_mask.weight, dtype=x.dtype, device=x.device).unsqueeze(1).unsqueeze(1)
68
+ x = x + cond_mask_weight[0]
69
+ x = _append_context_latents(self, x, kwargs)
70
+
71
+ if reference_latent is not None:
72
+ ref = self.patch_embedding(reference_latent.float()).to(x.dtype)
73
+ ref = ref.flatten(2).transpose(1, 2)
74
+ freqs_ref = self.rope_encode(reference_latent.shape[-3], reference_latent.shape[-2], reference_latent.shape[-1], t_start=max(30, time + 9), device=x.device, dtype=x.dtype)
75
+ ref = ref + cond_mask_weight[1]
76
+ x = torch.cat([x, ref], dim=1)
77
+ freqs = torch.cat([freqs, freqs_ref], dim=1)
78
+ t = torch.cat([t, torch.zeros((t.shape[0], reference_latent.shape[-3]), device=t.device, dtype=t.dtype)], dim=1)
79
+
80
+ if reference_motion is not None:
81
+ motion_encoded, freqs_motion = self.frame_packer(reference_motion, self)
82
+ motion_encoded = motion_encoded + cond_mask_weight[2]
83
+ x = torch.cat([x, motion_encoded], dim=1)
84
+ freqs = torch.cat([freqs, freqs_motion], dim=1)
85
+ t = torch.repeat_interleave(t, 2, dim=1)
86
+ t = torch.cat([t, torch.zeros((t.shape[0], 3), device=t.device, dtype=t.dtype)], dim=1)
87
+
88
+ from comfy.ldm.wan.model import sinusoidal_embedding_1d
89
+
90
+ e = self.time_embedding(
91
+ sinusoidal_embedding_1d(self.freq_dim, t.flatten()).to(dtype=x[0].dtype))
92
+ e = e.reshape(t.shape[0], -1, e.shape[-1])
93
+ e0 = self.time_projection(e).unflatten(2, (6, self.dim))
94
+
95
+ context = self.text_embedding(context)
96
+
97
+ patches_replace = transformer_options.get("patches_replace", {})
98
+ blocks_replace = patches_replace.get("dit", {})
99
+ transformer_options["total_blocks"] = len(self.blocks)
100
+ transformer_options["block_type"] = "double"
101
+ for i, block in enumerate(self.blocks):
102
+ transformer_options["block_index"] = i
103
+ if ("double_block", i) in blocks_replace:
104
+ def block_wrap(args):
105
+ out = {}
106
+ out["img"] = block(args["img"], context=args["txt"], e=args["vec"], freqs=args["pe"], transformer_options=args["transformer_options"])
107
+ return out
108
+ out = blocks_replace[("double_block", i)]({"img": x, "txt": context, "vec": e0, "pe": freqs, "transformer_options": transformer_options}, {"original_block": block_wrap})
109
+ x = out["img"]
110
+ else:
111
+ x = block(x, e=e0, freqs=freqs, context=context, transformer_options=transformer_options)
112
+ if audio_emb is not None:
113
+ x = self.audio_injector(x, i, audio_emb, audio_emb_global, seq_len)
114
+ x = self.head(x, e)
115
+ x = self.unpatchify(x, grid_sizes)
116
+ return x
117
+
118
+ forward_orig.__wan_bernini_s2v_patch__ = True
119
+ forward_orig.__wan_bernini_s2v_original__ = original
120
+ WanModel_S2V.forward_orig = forward_orig
121
+ logging.info("ComfyUI-WanBerniniS2V: patched WanModel_S2V.forward_orig for Bernini context_latents")
122
+ return True
ComfyUI-WanBerniniS2V/nodes.py ADDED
@@ -0,0 +1,92 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import torch
2
+ from typing_extensions import override
3
+
4
+ import comfy.model_management
5
+ import comfy.utils
6
+ import node_helpers
7
+ from comfy_api.latest import ComfyExtension, io
8
+
9
+ from .wan_audio import apply_wan_s2v_audio_conditioning
10
+
11
+
12
+ def _resize_long_edge(image, max_size, stride=16):
13
+ h, w = image.shape[1], image.shape[2]
14
+ scale = min(max_size / max(h, w), 1.0)
15
+ nh = max(stride, round(h * scale / stride) * stride)
16
+ nw = max(stride, round(w * scale / stride) * stride)
17
+ return comfy.utils.common_upscale(image[:, :, :, :3].movedim(-1, 1), nw, nh, "area", "disabled").movedim(1, -1)
18
+
19
+
20
+ class BerniniS2VConditioning(io.ComfyNode):
21
+ """Bernini in-context conditioning plus Wan 2.2 S2V audio."""
22
+
23
+ @classmethod
24
+ def define_schema(cls):
25
+ return io.Schema(
26
+ node_id="BerniniS2VConditioning",
27
+ display_name="Bernini S2V Conditioning",
28
+ category="model/conditioning/bernini",
29
+ description="Bernini in-context video/image conditioning with optional S2V audio. Requires a Wan2.2 S2V grafted diffusion model.",
30
+ inputs=[
31
+ io.Conditioning.Input("positive"),
32
+ io.Conditioning.Input("negative"),
33
+ io.Vae.Input("vae"),
34
+ io.Int.Input("width", default=832, min=16, max=8192, step=16),
35
+ io.Int.Input("height", default=480, min=16, max=8192, step=16),
36
+ io.Int.Input("length", default=81, min=1, max=8192, step=4),
37
+ io.Int.Input("batch_size", default=1, min=1, max=4096),
38
+ io.AudioEncoderOutput.Input("audio_encoder_output", optional=True),
39
+ io.Image.Input("source_video", optional=True),
40
+ io.Image.Input("reference_video", optional=True),
41
+ io.Autogrow.Input("reference_images", optional=True,
42
+ template=io.Autogrow.TemplatePrefix(
43
+ input=io.Image.Input("reference_image"),
44
+ prefix="reference_image_", min=0, max=8)),
45
+ io.Int.Input("ref_max_size", default=848, min=16, max=8192, step=16, optional=True),
46
+ ],
47
+ outputs=[
48
+ io.Conditioning.Output(display_name="positive"),
49
+ io.Conditioning.Output(display_name="negative"),
50
+ io.Latent.Output(display_name="latent"),
51
+ ],
52
+ )
53
+
54
+ @classmethod
55
+ def execute(cls, positive, negative, vae, width, height, length, batch_size, audio_encoder_output=None, source_video=None, reference_video=None, reference_images=None, ref_max_size=848) -> io.NodeOutput:
56
+ positive, negative, _ = apply_wan_s2v_audio_conditioning(positive, negative, length, audio_encoder_output=audio_encoder_output)
57
+
58
+ latent = torch.zeros([batch_size, 16, ((length - 1) // 4) + 1, height // 8, width // 8], device=comfy.model_management.intermediate_device())
59
+
60
+ context = []
61
+ if source_video is not None:
62
+ vid = comfy.utils.common_upscale(source_video[:length, :, :, :3].movedim(-1, 1), width, height, "area", "center").movedim(1, -1)
63
+ context.append(vae.encode(vid[:, :, :, :3]))
64
+
65
+ if reference_video is not None:
66
+ ref_vid = _resize_long_edge(reference_video[:length], ref_max_size)
67
+ context.append(vae.encode(ref_vid[:, :, :, :3]))
68
+
69
+ if reference_images:
70
+ for name in sorted(reference_images):
71
+ imgs = reference_images[name]
72
+ if imgs is None:
73
+ continue
74
+ for i in range(imgs.shape[0]):
75
+ img = _resize_long_edge(imgs[i:i + 1], ref_max_size)
76
+ context.append(vae.encode(img[:, :, :, :3]))
77
+
78
+ if context:
79
+ positive = node_helpers.conditioning_set_values(positive, {"context_latents": context})
80
+ negative = node_helpers.conditioning_set_values(negative, {"context_latents": context})
81
+
82
+ return io.NodeOutput(positive, negative, {"samples": latent})
83
+
84
+
85
+ class WanBerniniS2VExtension(ComfyExtension):
86
+ @override
87
+ async def get_node_list(self) -> list[type[io.ComfyNode]]:
88
+ return [BerniniS2VConditioning]
89
+
90
+
91
+ async def comfy_entrypoint() -> WanBerniniS2VExtension:
92
+ return WanBerniniS2VExtension()
ComfyUI-WanBerniniS2V/wan_audio.py ADDED
@@ -0,0 +1,29 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import torch
2
+
3
+ import node_helpers
4
+ from comfy_extras.nodes_wan import get_audio_embed_bucket_fps, linear_interpolation
5
+
6
+
7
+ def apply_wan_s2v_audio_conditioning(positive, negative, length, audio_encoder_output=None, frame_offset=0):
8
+ if audio_encoder_output is None:
9
+ return positive, negative, frame_offset
10
+
11
+ latent_t = ((length - 1) // 4) + 1
12
+ feat = torch.cat(audio_encoder_output["encoded_audio_all_layers"])
13
+ video_rate = 30
14
+ fps = 16
15
+ feat = linear_interpolation(feat, input_fps=50, output_fps=video_rate)
16
+ batch_frames = latent_t * 4
17
+ audio_embed_bucket, _ = get_audio_embed_bucket_fps(feat, fps=fps, batch_frames=batch_frames, m=0, video_rate=video_rate)
18
+ audio_embed_bucket = audio_embed_bucket.unsqueeze(0)
19
+ if len(audio_embed_bucket.shape) == 3:
20
+ audio_embed_bucket = audio_embed_bucket.permute(0, 2, 1)
21
+ elif len(audio_embed_bucket.shape) == 4:
22
+ audio_embed_bucket = audio_embed_bucket.permute(0, 2, 3, 1)
23
+
24
+ audio_embed_bucket = audio_embed_bucket[:, :, :, frame_offset:frame_offset + batch_frames]
25
+ if audio_embed_bucket.shape[3] > 0:
26
+ positive = node_helpers.conditioning_set_values(positive, {"audio_embed": audio_embed_bucket})
27
+ negative = node_helpers.conditioning_set_values(negative, {"audio_embed": audio_embed_bucket * 0.0})
28
+ frame_offset += batch_frames
29
+ return positive, negative, frame_offset
Workflow/Bernini-R-S2V_Workflow.json ADDED
@@ -0,0 +1,2174 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "id": "ea7ba43e-ab56-40d4-a298-423f5bfe4462",
3
+ "revision": 0,
4
+ "last_node_id": 252,
5
+ "last_link_id": 664,
6
+ "nodes": [
7
+ {
8
+ "id": 80,
9
+ "type": "VAEDecode",
10
+ "pos": [
11
+ 1210,
12
+ 170
13
+ ],
14
+ "size": [
15
+ 210,
16
+ 50
17
+ ],
18
+ "flags": {},
19
+ "order": 28,
20
+ "mode": 0,
21
+ "inputs": [
22
+ {
23
+ "name": "samples",
24
+ "type": "LATENT",
25
+ "link": 533
26
+ },
27
+ {
28
+ "name": "vae",
29
+ "type": "VAE",
30
+ "link": 285
31
+ }
32
+ ],
33
+ "outputs": [
34
+ {
35
+ "name": "IMAGE",
36
+ "type": "IMAGE",
37
+ "links": [
38
+ 580
39
+ ]
40
+ }
41
+ ],
42
+ "properties": {
43
+ "cnr_id": "comfy-core",
44
+ "ver": "0.3.54",
45
+ "Node name for S&R": "VAEDecode"
46
+ },
47
+ "widgets_values": []
48
+ },
49
+ {
50
+ "id": 57,
51
+ "type": "AudioEncoderLoader",
52
+ "pos": [
53
+ -80,
54
+ 850
55
+ ],
56
+ "size": [
57
+ 390,
58
+ 70
59
+ ],
60
+ "flags": {},
61
+ "order": 0,
62
+ "mode": 0,
63
+ "inputs": [],
64
+ "outputs": [
65
+ {
66
+ "name": "AUDIO_ENCODER",
67
+ "type": "AUDIO_ENCODER",
68
+ "links": [
69
+ 120
70
+ ]
71
+ }
72
+ ],
73
+ "properties": {
74
+ "cnr_id": "comfy-core",
75
+ "ver": "0.3.54",
76
+ "Node name for S&R": "AudioEncoderLoader",
77
+ "models": [
78
+ {
79
+ "name": "wav2vec2_large_english_fp16.safetensors",
80
+ "url": "https://huggingface.co/Comfy-Org/Wan_2.2_ComfyUI_Repackaged/resolve/main/split_files/audio_encoders/wav2vec2_large_english_fp16.safetensors",
81
+ "directory": "audio_encoders"
82
+ }
83
+ ]
84
+ },
85
+ "widgets_values": [
86
+ "wav2vec2_large_english_fp16.safetensors"
87
+ ]
88
+ },
89
+ {
90
+ "id": 235,
91
+ "type": "Reroute",
92
+ "pos": [
93
+ 360,
94
+ 760
95
+ ],
96
+ "size": [
97
+ 75,
98
+ 26
99
+ ],
100
+ "flags": {},
101
+ "order": 23,
102
+ "mode": 0,
103
+ "inputs": [
104
+ {
105
+ "name": "",
106
+ "type": "*",
107
+ "link": 656
108
+ }
109
+ ],
110
+ "outputs": [
111
+ {
112
+ "name": "",
113
+ "type": "AUDIO",
114
+ "links": [
115
+ 622,
116
+ 630
117
+ ]
118
+ }
119
+ ],
120
+ "properties": {
121
+ "showOutputText": false,
122
+ "horizontal": false
123
+ },
124
+ "color": "#323",
125
+ "bgcolor": "#535"
126
+ },
127
+ {
128
+ "id": 238,
129
+ "type": "ComfyMathExpression",
130
+ "pos": [
131
+ 1150,
132
+ 1120
133
+ ],
134
+ "size": [
135
+ 400,
136
+ 200
137
+ ],
138
+ "flags": {
139
+ "collapsed": true
140
+ },
141
+ "order": 14,
142
+ "mode": 0,
143
+ "inputs": [
144
+ {
145
+ "label": "a",
146
+ "name": "values.a",
147
+ "type": "FLOAT,INT,BOOLEAN",
148
+ "link": 627
149
+ },
150
+ {
151
+ "label": "b",
152
+ "name": "values.b",
153
+ "shape": 7,
154
+ "type": "FLOAT,INT,BOOLEAN",
155
+ "link": null
156
+ }
157
+ ],
158
+ "outputs": [
159
+ {
160
+ "name": "FLOAT",
161
+ "type": "FLOAT",
162
+ "links": null
163
+ },
164
+ {
165
+ "name": "INT",
166
+ "type": "INT",
167
+ "links": [
168
+ 641,
169
+ 653
170
+ ]
171
+ },
172
+ {
173
+ "name": "BOOL",
174
+ "type": "BOOLEAN",
175
+ "links": null
176
+ }
177
+ ],
178
+ "title": "16 F/S",
179
+ "properties": {
180
+ "cnr_id": "comfy-core",
181
+ "ver": "0.27.0",
182
+ "Node name for S&R": "ComfyMathExpression"
183
+ },
184
+ "widgets_values": [
185
+ "a * 16"
186
+ ]
187
+ },
188
+ {
189
+ "id": 38,
190
+ "type": "CLIPLoader",
191
+ "pos": [
192
+ -530,
193
+ 470
194
+ ],
195
+ "size": [
196
+ 390,
197
+ 110
198
+ ],
199
+ "flags": {},
200
+ "order": 1,
201
+ "mode": 0,
202
+ "inputs": [],
203
+ "outputs": [
204
+ {
205
+ "name": "CLIP",
206
+ "type": "CLIP",
207
+ "slot_index": 0,
208
+ "links": [
209
+ 74,
210
+ 75
211
+ ]
212
+ }
213
+ ],
214
+ "properties": {
215
+ "cnr_id": "comfy-core",
216
+ "ver": "0.3.54",
217
+ "Node name for S&R": "CLIPLoader",
218
+ "models": [
219
+ {
220
+ "name": "umt5_xxl_fp8_e4m3fn_scaled.safetensors",
221
+ "url": "https://huggingface.co/Comfy-Org/Wan_2.1_ComfyUI_repackaged/resolve/main/split_files/text_encoders/umt5_xxl_fp8_e4m3fn_scaled.safetensors",
222
+ "directory": "text_encoders"
223
+ }
224
+ ]
225
+ },
226
+ "widgets_values": [
227
+ "umt5_xxl_fp8_e4m3fn_scaled.safetensors",
228
+ "wan",
229
+ "default"
230
+ ]
231
+ },
232
+ {
233
+ "id": 201,
234
+ "type": "RIFEInterpolation",
235
+ "pos": [
236
+ 1480,
237
+ 170
238
+ ],
239
+ "size": [
240
+ 270,
241
+ 180
242
+ ],
243
+ "flags": {},
244
+ "order": 29,
245
+ "mode": 0,
246
+ "inputs": [
247
+ {
248
+ "name": "images",
249
+ "type": "IMAGE",
250
+ "link": 580
251
+ }
252
+ ],
253
+ "outputs": [
254
+ {
255
+ "name": "images",
256
+ "type": "IMAGE",
257
+ "links": [
258
+ 629
259
+ ]
260
+ }
261
+ ],
262
+ "properties": {
263
+ "aux_id": "GACLove/ComfyUI-VFI",
264
+ "ver": "6176a430f12cd16003f4664c1e3c6af8e96cc3c6",
265
+ "Node name for S&R": "RIFEInterpolation"
266
+ },
267
+ "widgets_values": [
268
+ 16,
269
+ 24,
270
+ 2,
271
+ "flownet.pkl",
272
+ 4,
273
+ true
274
+ ]
275
+ },
276
+ {
277
+ "id": 107,
278
+ "type": "LoraLoaderModelOnly",
279
+ "pos": [
280
+ 1140,
281
+ 450
282
+ ],
283
+ "size": [
284
+ 380,
285
+ 90
286
+ ],
287
+ "flags": {},
288
+ "order": 15,
289
+ "mode": 0,
290
+ "inputs": [
291
+ {
292
+ "name": "model",
293
+ "type": "MODEL",
294
+ "link": 585
295
+ }
296
+ ],
297
+ "outputs": [
298
+ {
299
+ "name": "MODEL",
300
+ "type": "MODEL",
301
+ "links": [
302
+ 363
303
+ ]
304
+ }
305
+ ],
306
+ "properties": {
307
+ "cnr_id": "comfy-core",
308
+ "ver": "0.3.54",
309
+ "Node name for S&R": "LoraLoaderModelOnly",
310
+ "models": [
311
+ {
312
+ "name": "wan2.2_t2v_lightx2v_4steps_lora_v1.1_high_noise.safetensors",
313
+ "url": "https://huggingface.co/Comfy-Org/Wan_2.2_ComfyUI_Repackaged/resolve/main/split_files/loras/wan2.2_t2v_lightx2v_4steps_lora_v1.1_high_noise.safetensors",
314
+ "directory": "loras"
315
+ }
316
+ ]
317
+ },
318
+ "widgets_values": [
319
+ "Wan-Speed/Bernini-R/Bernini-R_LightX2V_high_noise.safetensors",
320
+ 1
321
+ ]
322
+ },
323
+ {
324
+ "id": 210,
325
+ "type": "LoraLoaderModelOnly",
326
+ "pos": [
327
+ 1560,
328
+ 450
329
+ ],
330
+ "size": [
331
+ 360,
332
+ 90
333
+ ],
334
+ "flags": {},
335
+ "order": 16,
336
+ "mode": 0,
337
+ "inputs": [
338
+ {
339
+ "name": "model",
340
+ "type": "MODEL",
341
+ "link": 586
342
+ }
343
+ ],
344
+ "outputs": [
345
+ {
346
+ "name": "MODEL",
347
+ "type": "MODEL",
348
+ "links": [
349
+ 581
350
+ ]
351
+ }
352
+ ],
353
+ "properties": {
354
+ "cnr_id": "comfy-core",
355
+ "ver": "0.3.54",
356
+ "Node name for S&R": "LoraLoaderModelOnly",
357
+ "models": [
358
+ {
359
+ "name": "wan2.2_t2v_lightx2v_4steps_lora_v1.1_high_noise.safetensors",
360
+ "url": "https://huggingface.co/Comfy-Org/Wan_2.2_ComfyUI_Repackaged/resolve/main/split_files/loras/wan2.2_t2v_lightx2v_4steps_lora_v1.1_high_noise.safetensors",
361
+ "directory": "loras"
362
+ }
363
+ ]
364
+ },
365
+ "widgets_values": [
366
+ "Wan-Speed/Bernini-R/Bernini-R_LightX2V_low_noise.safetensors",
367
+ 1
368
+ ]
369
+ },
370
+ {
371
+ "id": 56,
372
+ "type": "AudioEncoderEncode",
373
+ "pos": [
374
+ 390,
375
+ 850
376
+ ],
377
+ "size": [
378
+ 290,
379
+ 50
380
+ ],
381
+ "flags": {},
382
+ "order": 24,
383
+ "mode": 0,
384
+ "inputs": [
385
+ {
386
+ "name": "audio_encoder",
387
+ "type": "AUDIO_ENCODER",
388
+ "link": 120
389
+ },
390
+ {
391
+ "name": "audio",
392
+ "type": "AUDIO",
393
+ "link": 622
394
+ }
395
+ ],
396
+ "outputs": [
397
+ {
398
+ "name": "AUDIO_ENCODER_OUTPUT",
399
+ "type": "AUDIO_ENCODER_OUTPUT",
400
+ "links": [
401
+ 646
402
+ ]
403
+ }
404
+ ],
405
+ "properties": {
406
+ "cnr_id": "comfy-core",
407
+ "ver": "0.3.54",
408
+ "Node name for S&R": "AudioEncoderEncode"
409
+ },
410
+ "widgets_values": []
411
+ },
412
+ {
413
+ "id": 54,
414
+ "type": "ModelSamplingSD3",
415
+ "pos": [
416
+ 1140,
417
+ 590
418
+ ],
419
+ "size": [
420
+ 370,
421
+ 60
422
+ ],
423
+ "flags": {},
424
+ "order": 20,
425
+ "mode": 4,
426
+ "inputs": [
427
+ {
428
+ "name": "model",
429
+ "type": "MODEL",
430
+ "link": 363
431
+ }
432
+ ],
433
+ "outputs": [
434
+ {
435
+ "name": "MODEL",
436
+ "type": "MODEL",
437
+ "slot_index": 0,
438
+ "links": [
439
+ 522
440
+ ]
441
+ }
442
+ ],
443
+ "properties": {
444
+ "cnr_id": "comfy-core",
445
+ "ver": "0.3.54",
446
+ "Node name for S&R": "ModelSamplingSD3"
447
+ },
448
+ "widgets_values": [
449
+ 8
450
+ ]
451
+ },
452
+ {
453
+ "id": 214,
454
+ "type": "ModelSamplingSD3",
455
+ "pos": [
456
+ 1560,
457
+ 590
458
+ ],
459
+ "size": [
460
+ 360,
461
+ 60
462
+ ],
463
+ "flags": {},
464
+ "order": 21,
465
+ "mode": 4,
466
+ "inputs": [
467
+ {
468
+ "name": "model",
469
+ "type": "MODEL",
470
+ "link": 581
471
+ }
472
+ ],
473
+ "outputs": [
474
+ {
475
+ "name": "MODEL",
476
+ "type": "MODEL",
477
+ "slot_index": 0,
478
+ "links": [
479
+ 582
480
+ ]
481
+ }
482
+ ],
483
+ "properties": {
484
+ "cnr_id": "comfy-core",
485
+ "ver": "0.3.54",
486
+ "Node name for S&R": "ModelSamplingSD3"
487
+ },
488
+ "widgets_values": [
489
+ 8
490
+ ]
491
+ },
492
+ {
493
+ "id": 39,
494
+ "type": "VAELoader",
495
+ "pos": [
496
+ 550,
497
+ 990
498
+ ],
499
+ "size": [
500
+ 210,
501
+ 60
502
+ ],
503
+ "flags": {
504
+ "collapsed": true
505
+ },
506
+ "order": 2,
507
+ "mode": 0,
508
+ "inputs": [],
509
+ "outputs": [
510
+ {
511
+ "name": "VAE",
512
+ "type": "VAE",
513
+ "slot_index": 0,
514
+ "links": [
515
+ 285,
516
+ 645
517
+ ]
518
+ }
519
+ ],
520
+ "properties": {
521
+ "cnr_id": "comfy-core",
522
+ "ver": "0.3.54",
523
+ "Node name for S&R": "VAELoader",
524
+ "models": [
525
+ {
526
+ "name": "wan_2.1_vae.safetensors",
527
+ "url": "https://huggingface.co/Comfy-Org/Wan_2.2_ComfyUI_Repackaged/resolve/main/split_files/vae/wan_2.1_vae.safetensors",
528
+ "directory": "vae"
529
+ }
530
+ ]
531
+ },
532
+ "widgets_values": [
533
+ "Wan/Wan2_1_VAE_fp32.safetensors"
534
+ ]
535
+ },
536
+ {
537
+ "id": 245,
538
+ "type": "BerniniS2VConditioning",
539
+ "pos": [
540
+ 780,
541
+ 730
542
+ ],
543
+ "size": [
544
+ 310,
545
+ 320
546
+ ],
547
+ "flags": {},
548
+ "order": 25,
549
+ "mode": 0,
550
+ "inputs": [
551
+ {
552
+ "name": "positive",
553
+ "type": "CONDITIONING",
554
+ "link": 643
555
+ },
556
+ {
557
+ "name": "negative",
558
+ "type": "CONDITIONING",
559
+ "link": 644
560
+ },
561
+ {
562
+ "name": "vae",
563
+ "type": "VAE",
564
+ "link": 645
565
+ },
566
+ {
567
+ "name": "audio_encoder_output",
568
+ "shape": 7,
569
+ "type": "AUDIO_ENCODER_OUTPUT",
570
+ "link": 646
571
+ },
572
+ {
573
+ "name": "source_video",
574
+ "shape": 7,
575
+ "type": "IMAGE",
576
+ "link": null
577
+ },
578
+ {
579
+ "name": "reference_video",
580
+ "shape": 7,
581
+ "type": "IMAGE",
582
+ "link": null
583
+ },
584
+ {
585
+ "label": "reference_image_0",
586
+ "name": "reference_images.reference_image_0",
587
+ "shape": 7,
588
+ "type": "IMAGE",
589
+ "link": 647
590
+ },
591
+ {
592
+ "label": "reference_image_1",
593
+ "name": "reference_images.reference_image_1",
594
+ "shape": 7,
595
+ "type": "IMAGE",
596
+ "link": null
597
+ },
598
+ {
599
+ "name": "length",
600
+ "type": "INT",
601
+ "widget": {
602
+ "name": "length"
603
+ },
604
+ "link": 653
605
+ }
606
+ ],
607
+ "outputs": [
608
+ {
609
+ "name": "positive",
610
+ "type": "CONDITIONING",
611
+ "links": [
612
+ 648,
613
+ 651
614
+ ]
615
+ },
616
+ {
617
+ "name": "negative",
618
+ "type": "CONDITIONING",
619
+ "links": [
620
+ 649,
621
+ 652
622
+ ]
623
+ },
624
+ {
625
+ "name": "latent",
626
+ "type": "LATENT",
627
+ "links": [
628
+ 650
629
+ ]
630
+ }
631
+ ],
632
+ "properties": {
633
+ "Node name for S&R": "BerniniS2VConditioning"
634
+ },
635
+ "widgets_values": [
636
+ 720,
637
+ 480,
638
+ 81,
639
+ 1,
640
+ 848
641
+ ]
642
+ },
643
+ {
644
+ "id": 205,
645
+ "type": "KSamplerAdvanced",
646
+ "pos": [
647
+ 1130,
648
+ 690
649
+ ],
650
+ "size": [
651
+ 370,
652
+ 340
653
+ ],
654
+ "flags": {},
655
+ "order": 26,
656
+ "mode": 0,
657
+ "inputs": [
658
+ {
659
+ "name": "model",
660
+ "type": "MODEL",
661
+ "link": 522
662
+ },
663
+ {
664
+ "name": "positive",
665
+ "type": "CONDITIONING",
666
+ "link": 648
667
+ },
668
+ {
669
+ "name": "negative",
670
+ "type": "CONDITIONING",
671
+ "link": 649
672
+ },
673
+ {
674
+ "name": "latent_image",
675
+ "type": "LATENT",
676
+ "link": 650
677
+ }
678
+ ],
679
+ "outputs": [
680
+ {
681
+ "name": "LATENT",
682
+ "type": "LATENT",
683
+ "links": [
684
+ 526
685
+ ]
686
+ }
687
+ ],
688
+ "properties": {
689
+ "cnr_id": "comfy-core",
690
+ "ver": "0.27.0",
691
+ "Node name for S&R": "KSamplerAdvanced"
692
+ },
693
+ "widgets_values": [
694
+ "enable",
695
+ 786173997924816,
696
+ "randomize",
697
+ 4,
698
+ 1,
699
+ "dpmpp_2m_sde",
700
+ "sgm_uniform",
701
+ 0,
702
+ 2,
703
+ "enable"
704
+ ]
705
+ },
706
+ {
707
+ "id": 207,
708
+ "type": "KSamplerAdvanced",
709
+ "pos": [
710
+ 1560,
711
+ 690
712
+ ],
713
+ "size": [
714
+ 360,
715
+ 340
716
+ ],
717
+ "flags": {},
718
+ "order": 27,
719
+ "mode": 0,
720
+ "inputs": [
721
+ {
722
+ "name": "model",
723
+ "type": "MODEL",
724
+ "link": 582
725
+ },
726
+ {
727
+ "name": "positive",
728
+ "type": "CONDITIONING",
729
+ "link": 651
730
+ },
731
+ {
732
+ "name": "negative",
733
+ "type": "CONDITIONING",
734
+ "link": 652
735
+ },
736
+ {
737
+ "name": "latent_image",
738
+ "type": "LATENT",
739
+ "link": 526
740
+ }
741
+ ],
742
+ "outputs": [
743
+ {
744
+ "name": "LATENT",
745
+ "type": "LATENT",
746
+ "links": [
747
+ 533
748
+ ]
749
+ }
750
+ ],
751
+ "properties": {
752
+ "cnr_id": "comfy-core",
753
+ "ver": "0.27.0",
754
+ "Node name for S&R": "KSamplerAdvanced"
755
+ },
756
+ "widgets_values": [
757
+ "disable",
758
+ 0,
759
+ "fixed",
760
+ 4,
761
+ 1,
762
+ "dpmpp_2m_sde",
763
+ "sgm_uniform",
764
+ 2,
765
+ 4,
766
+ "disable"
767
+ ]
768
+ },
769
+ {
770
+ "id": 237,
771
+ "type": "Reroute",
772
+ "pos": [
773
+ 530,
774
+ 1040
775
+ ],
776
+ "size": [
777
+ 75,
778
+ 26
779
+ ],
780
+ "flags": {},
781
+ "order": 19,
782
+ "mode": 0,
783
+ "inputs": [
784
+ {
785
+ "name": "",
786
+ "type": "*",
787
+ "link": 626
788
+ }
789
+ ],
790
+ "outputs": [
791
+ {
792
+ "name": "",
793
+ "type": "AUDIO",
794
+ "links": [
795
+ 656
796
+ ]
797
+ }
798
+ ],
799
+ "properties": {
800
+ "showOutputText": false,
801
+ "horizontal": false
802
+ },
803
+ "color": "#323",
804
+ "bgcolor": "#535"
805
+ },
806
+ {
807
+ "id": 246,
808
+ "type": "AudioConcat",
809
+ "pos": [
810
+ 180,
811
+ 1250
812
+ ],
813
+ "size": [
814
+ 270,
815
+ 80
816
+ ],
817
+ "flags": {},
818
+ "order": 17,
819
+ "mode": 0,
820
+ "inputs": [
821
+ {
822
+ "name": "audio1",
823
+ "type": "AUDIO",
824
+ "link": 660
825
+ },
826
+ {
827
+ "name": "audio2",
828
+ "type": "AUDIO",
829
+ "link": null
830
+ }
831
+ ],
832
+ "outputs": [
833
+ {
834
+ "name": "AUDIO",
835
+ "type": "AUDIO",
836
+ "links": null
837
+ }
838
+ ],
839
+ "properties": {
840
+ "cnr_id": "comfy-core",
841
+ "ver": "0.27.0",
842
+ "Node name for S&R": "AudioConcat"
843
+ },
844
+ "widgets_values": [
845
+ "after"
846
+ ]
847
+ },
848
+ {
849
+ "id": 250,
850
+ "type": "StringConcatenate",
851
+ "pos": [
852
+ -520,
853
+ 930
854
+ ],
855
+ "size": [
856
+ 400,
857
+ 250
858
+ ],
859
+ "flags": {},
860
+ "order": 18,
861
+ "mode": 0,
862
+ "inputs": [
863
+ {
864
+ "name": "string_a",
865
+ "type": "STRING",
866
+ "widget": {
867
+ "name": "string_a"
868
+ },
869
+ "link": 662
870
+ },
871
+ {
872
+ "name": "string_b",
873
+ "type": "STRING",
874
+ "widget": {
875
+ "name": "string_b"
876
+ },
877
+ "link": 664
878
+ }
879
+ ],
880
+ "outputs": [
881
+ {
882
+ "name": "STRING",
883
+ "type": "STRING",
884
+ "links": [
885
+ 663
886
+ ]
887
+ }
888
+ ],
889
+ "properties": {
890
+ "cnr_id": "comfy-core",
891
+ "ver": "0.24.0",
892
+ "Node name for S&R": "StringConcatenate"
893
+ },
894
+ "widgets_values": [
895
+ "",
896
+ "",
897
+ "."
898
+ ]
899
+ },
900
+ {
901
+ "id": 6,
902
+ "type": "CLIPTextEncode",
903
+ "pos": [
904
+ -50,
905
+ 750
906
+ ],
907
+ "size": [
908
+ 670,
909
+ 280
910
+ ],
911
+ "flags": {
912
+ "collapsed": true
913
+ },
914
+ "order": 22,
915
+ "mode": 0,
916
+ "inputs": [
917
+ {
918
+ "name": "clip",
919
+ "type": "CLIP",
920
+ "link": 74
921
+ },
922
+ {
923
+ "name": "text",
924
+ "type": "STRING",
925
+ "widget": {
926
+ "name": "text"
927
+ },
928
+ "link": 663
929
+ }
930
+ ],
931
+ "outputs": [
932
+ {
933
+ "name": "CONDITIONING",
934
+ "type": "CONDITIONING",
935
+ "slot_index": 0,
936
+ "links": [
937
+ 643
938
+ ]
939
+ }
940
+ ],
941
+ "title": "CLIP Text Encode (Positive Prompt)",
942
+ "properties": {
943
+ "cnr_id": "comfy-core",
944
+ "ver": "0.3.54",
945
+ "Node name for S&R": "CLIPTextEncode"
946
+ },
947
+ "widgets_values": [
948
+ ""
949
+ ],
950
+ "color": "#232",
951
+ "bgcolor": "#353"
952
+ },
953
+ {
954
+ "id": 7,
955
+ "type": "CLIPTextEncode",
956
+ "pos": [
957
+ 10,
958
+ 500
959
+ ],
960
+ "size": [
961
+ 650,
962
+ 180
963
+ ],
964
+ "flags": {},
965
+ "order": 11,
966
+ "mode": 0,
967
+ "inputs": [
968
+ {
969
+ "name": "clip",
970
+ "type": "CLIP",
971
+ "link": 75
972
+ }
973
+ ],
974
+ "outputs": [
975
+ {
976
+ "name": "CONDITIONING",
977
+ "type": "CONDITIONING",
978
+ "slot_index": 0,
979
+ "links": [
980
+ 644
981
+ ]
982
+ }
983
+ ],
984
+ "title": "CLIP Text Encode (Negative Prompt)",
985
+ "properties": {
986
+ "cnr_id": "comfy-core",
987
+ "ver": "0.3.54",
988
+ "Node name for S&R": "CLIPTextEncode"
989
+ },
990
+ "widgets_values": [
991
+ "Vivid color tone, overexposed, static, unclear details, subtitles, style, artwork, painting, image, still, overall grayish, worst quality, low quality, leftover JPEG compression artifacts, ugly, incomplete, missing parts, extra fingers, poorly drawn hands, poorly drawn face, disfigured, malformed body parts, fused fingers, a completely motionless image, messy background, three legs, many people in the background, walking backward."
992
+ ],
993
+ "color": "#223",
994
+ "bgcolor": "#335"
995
+ },
996
+ {
997
+ "id": 251,
998
+ "type": "CustomCombo",
999
+ "pos": [
1000
+ -1020,
1001
+ 760
1002
+ ],
1003
+ "size": [
1004
+ 460,
1005
+ 390
1006
+ ],
1007
+ "flags": {},
1008
+ "order": 3,
1009
+ "mode": 0,
1010
+ "inputs": [],
1011
+ "outputs": [
1012
+ {
1013
+ "name": "STRING",
1014
+ "type": "STRING",
1015
+ "links": []
1016
+ },
1017
+ {
1018
+ "name": "INDEX",
1019
+ "type": "INT",
1020
+ "links": [
1021
+ 661
1022
+ ]
1023
+ }
1024
+ ],
1025
+ "properties": {
1026
+ "cnr_id": "comfy-core",
1027
+ "ver": "0.24.0",
1028
+ "Node name for S&R": "CustomCombo"
1029
+ },
1030
+ "widgets_values": [
1031
+ "Image to Video",
1032
+ 5,
1033
+ "Default",
1034
+ "Text to Image",
1035
+ "Text to Video",
1036
+ "Image Editing",
1037
+ "Subject to Image",
1038
+ "Image to Video",
1039
+ "Video Editing",
1040
+ "Video Editing (Content Propagation)",
1041
+ "Video Editing with Reference",
1042
+ "Ads / Content Insertion",
1043
+ "Video Editing (Action / Position)",
1044
+ "Video Editing (Style / Motion)",
1045
+ ""
1046
+ ]
1047
+ },
1048
+ {
1049
+ "id": 249,
1050
+ "type": "6da2792c-a953-4960-a53a-ff1b5df6fe09",
1051
+ "pos": [
1052
+ -530,
1053
+ 750
1054
+ ],
1055
+ "size": [
1056
+ 410,
1057
+ 150
1058
+ ],
1059
+ "flags": {},
1060
+ "order": 12,
1061
+ "mode": 0,
1062
+ "inputs": [
1063
+ {
1064
+ "name": "index",
1065
+ "type": "INT",
1066
+ "widget": {
1067
+ "name": "index"
1068
+ },
1069
+ "link": 661
1070
+ }
1071
+ ],
1072
+ "outputs": [
1073
+ {
1074
+ "name": "selected_line",
1075
+ "type": "STRING",
1076
+ "links": [
1077
+ 662
1078
+ ]
1079
+ }
1080
+ ],
1081
+ "properties": {
1082
+ "proxyWidgets": [
1083
+ [
1084
+ "2",
1085
+ "string"
1086
+ ],
1087
+ [
1088
+ "248",
1089
+ "value"
1090
+ ]
1091
+ ],
1092
+ "cnr_id": "comfy-core",
1093
+ "ver": "0.19.0",
1094
+ "ue_properties": {
1095
+ "widget_ue_connectable": {},
1096
+ "input_ue_unconnectable": {}
1097
+ }
1098
+ },
1099
+ "widgets_values": []
1100
+ },
1101
+ {
1102
+ "id": 240,
1103
+ "type": "VHS_VideoCombine",
1104
+ "pos": [
1105
+ 2040,
1106
+ 230
1107
+ ],
1108
+ "size": [
1109
+ 470,
1110
+ 648
1111
+ ],
1112
+ "flags": {},
1113
+ "order": 30,
1114
+ "mode": 0,
1115
+ "inputs": [
1116
+ {
1117
+ "name": "images",
1118
+ "type": "IMAGE",
1119
+ "link": 629
1120
+ },
1121
+ {
1122
+ "name": "audio",
1123
+ "shape": 7,
1124
+ "type": "AUDIO",
1125
+ "link": 630
1126
+ },
1127
+ {
1128
+ "name": "meta_batch",
1129
+ "shape": 7,
1130
+ "type": "VHS_BatchManager",
1131
+ "link": null
1132
+ },
1133
+ {
1134
+ "name": "vae",
1135
+ "shape": 7,
1136
+ "type": "VAE",
1137
+ "link": null
1138
+ }
1139
+ ],
1140
+ "outputs": [
1141
+ {
1142
+ "name": "Filenames",
1143
+ "type": "VHS_FILENAMES",
1144
+ "links": null
1145
+ }
1146
+ ],
1147
+ "properties": {
1148
+ "cnr_id": "comfyui-videohelpersuite",
1149
+ "ver": "1.7.9",
1150
+ "Node name for S&R": "VHS_VideoCombine"
1151
+ },
1152
+ "widgets_values": {
1153
+ "frame_rate": 24,
1154
+ "loop_count": 0,
1155
+ "filename_prefix": "video/ComfyUI",
1156
+ "format": "video/h264-mp4",
1157
+ "pix_fmt": "yuv420p",
1158
+ "crf": 19,
1159
+ "save_metadata": true,
1160
+ "trim_to_audio": false,
1161
+ "pingpong": false,
1162
+ "save_output": true,
1163
+ "videopreview": {
1164
+ "hidden": false,
1165
+ "paused": false,
1166
+ "params": {
1167
+ "filename": "ComfyUI_00162-audio.mp4",
1168
+ "subfolder": "video",
1169
+ "type": "output",
1170
+ "format": "video/h264-mp4",
1171
+ "frame_rate": 24,
1172
+ "workflow": "ComfyUI_00162.png",
1173
+ "fullpath": "/media/dgt/N33B/AI/ComfyUI/output/video/ComfyUI_00162-audio.mp4"
1174
+ }
1175
+ }
1176
+ }
1177
+ },
1178
+ {
1179
+ "id": 58,
1180
+ "type": "LoadAudio",
1181
+ "pos": [
1182
+ -90,
1183
+ 1040
1184
+ ],
1185
+ "size": [
1186
+ 280,
1187
+ 140
1188
+ ],
1189
+ "flags": {},
1190
+ "order": 4,
1191
+ "mode": 0,
1192
+ "inputs": [],
1193
+ "outputs": [
1194
+ {
1195
+ "name": "AUDIO",
1196
+ "type": "AUDIO",
1197
+ "links": [
1198
+ 618
1199
+ ]
1200
+ }
1201
+ ],
1202
+ "properties": {
1203
+ "cnr_id": "comfy-core",
1204
+ "ver": "0.3.54",
1205
+ "Node name for S&R": "LoadAudio"
1206
+ },
1207
+ "widgets_values": [
1208
+ "scream_mono.wav",
1209
+ null,
1210
+ null
1211
+ ]
1212
+ },
1213
+ {
1214
+ "id": 223,
1215
+ "type": "TrimAudioDuration",
1216
+ "pos": [
1217
+ 220,
1218
+ 1040
1219
+ ],
1220
+ "size": [
1221
+ 270,
1222
+ 90
1223
+ ],
1224
+ "flags": {},
1225
+ "order": 13,
1226
+ "mode": 0,
1227
+ "inputs": [
1228
+ {
1229
+ "name": "audio",
1230
+ "type": "AUDIO",
1231
+ "link": 618
1232
+ }
1233
+ ],
1234
+ "outputs": [
1235
+ {
1236
+ "name": "AUDIO",
1237
+ "type": "AUDIO",
1238
+ "links": [
1239
+ 626
1240
+ ]
1241
+ }
1242
+ ],
1243
+ "properties": {
1244
+ "cnr_id": "comfy-core",
1245
+ "ver": "0.27.0",
1246
+ "Node name for S&R": "TrimAudioDuration"
1247
+ },
1248
+ "widgets_values": [
1249
+ 0,
1250
+ 7
1251
+ ]
1252
+ },
1253
+ {
1254
+ "id": 252,
1255
+ "type": "PrimitiveStringMultiline",
1256
+ "pos": [
1257
+ -10,
1258
+ 170
1259
+ ],
1260
+ "size": [
1261
+ 710,
1262
+ 290
1263
+ ],
1264
+ "flags": {},
1265
+ "order": 5,
1266
+ "mode": 0,
1267
+ "inputs": [],
1268
+ "outputs": [
1269
+ {
1270
+ "name": "STRING",
1271
+ "type": "STRING",
1272
+ "links": [
1273
+ 664
1274
+ ]
1275
+ }
1276
+ ],
1277
+ "properties": {
1278
+ "cnr_id": "comfy-core",
1279
+ "ver": "0.27.0",
1280
+ "Node name for S&R": "PrimitiveStringMultiline"
1281
+ },
1282
+ "widgets_values": [
1283
+ "the sad young woman in image0 screams out of extreme emotional pain and suffering"
1284
+ ],
1285
+ "color": "#232",
1286
+ "bgcolor": "#353"
1287
+ },
1288
+ {
1289
+ "id": 239,
1290
+ "type": "PrimitiveInt",
1291
+ "pos": [
1292
+ 780,
1293
+ 1090
1294
+ ],
1295
+ "size": [
1296
+ 320,
1297
+ 90
1298
+ ],
1299
+ "flags": {},
1300
+ "order": 6,
1301
+ "mode": 0,
1302
+ "inputs": [],
1303
+ "outputs": [
1304
+ {
1305
+ "name": "INT",
1306
+ "type": "INT",
1307
+ "links": [
1308
+ 627
1309
+ ]
1310
+ }
1311
+ ],
1312
+ "title": "Video Length in Seconds",
1313
+ "properties": {
1314
+ "cnr_id": "comfy-core",
1315
+ "ver": "0.27.0",
1316
+ "Node name for S&R": "PrimitiveInt"
1317
+ },
1318
+ "widgets_values": [
1319
+ 7,
1320
+ "fixed"
1321
+ ]
1322
+ },
1323
+ {
1324
+ "id": 37,
1325
+ "type": "UNETLoader",
1326
+ "pos": [
1327
+ -530,
1328
+ 180
1329
+ ],
1330
+ "size": [
1331
+ 390,
1332
+ 90
1333
+ ],
1334
+ "flags": {},
1335
+ "order": 7,
1336
+ "mode": 0,
1337
+ "inputs": [],
1338
+ "outputs": [
1339
+ {
1340
+ "name": "MODEL",
1341
+ "type": "MODEL",
1342
+ "slot_index": 0,
1343
+ "links": [
1344
+ 585
1345
+ ]
1346
+ }
1347
+ ],
1348
+ "properties": {
1349
+ "cnr_id": "comfy-core",
1350
+ "ver": "0.3.54",
1351
+ "Node name for S&R": "UNETLoader",
1352
+ "models": [
1353
+ {
1354
+ "name": "wan2.2_s2v_14B_fp8_scaled.safetensors",
1355
+ "url": "https://huggingface.co/Comfy-Org/Wan_2.2_ComfyUI_Repackaged/resolve/main/split_files/diffusion_models/wan2.2_s2v_14B_fp8_scaled.safetensors",
1356
+ "directory": "diffusion_models"
1357
+ }
1358
+ ]
1359
+ },
1360
+ "widgets_values": [
1361
+ "Bernini-R-ComfyUI-int8-convrot-n4w/Bernini-R-S2V-int8-convrot/wan2.2_bernini_r_high_noise_int8_convrot_s2v.safetensors",
1362
+ "default"
1363
+ ]
1364
+ },
1365
+ {
1366
+ "id": 204,
1367
+ "type": "UNETLoader",
1368
+ "pos": [
1369
+ -530,
1370
+ 320
1371
+ ],
1372
+ "size": [
1373
+ 390,
1374
+ 90
1375
+ ],
1376
+ "flags": {},
1377
+ "order": 8,
1378
+ "mode": 0,
1379
+ "inputs": [],
1380
+ "outputs": [
1381
+ {
1382
+ "name": "MODEL",
1383
+ "type": "MODEL",
1384
+ "slot_index": 0,
1385
+ "links": [
1386
+ 586
1387
+ ]
1388
+ }
1389
+ ],
1390
+ "properties": {
1391
+ "cnr_id": "comfy-core",
1392
+ "ver": "0.3.54",
1393
+ "Node name for S&R": "UNETLoader",
1394
+ "models": [
1395
+ {
1396
+ "name": "wan2.2_s2v_14B_fp8_scaled.safetensors",
1397
+ "url": "https://huggingface.co/Comfy-Org/Wan_2.2_ComfyUI_Repackaged/resolve/main/split_files/diffusion_models/wan2.2_s2v_14B_fp8_scaled.safetensors",
1398
+ "directory": "diffusion_models"
1399
+ }
1400
+ ]
1401
+ },
1402
+ "widgets_values": [
1403
+ "Bernini-R-ComfyUI-int8-convrot-n4w/Bernini-R-S2V-int8-convrot/wan2.2_bernini_r_low_noise_int8_convrot_s2v.safetensors",
1404
+ "default"
1405
+ ]
1406
+ },
1407
+ {
1408
+ "id": 247,
1409
+ "type": "LoadAudio",
1410
+ "pos": [
1411
+ -150,
1412
+ 1250
1413
+ ],
1414
+ "size": [
1415
+ 290,
1416
+ 140
1417
+ ],
1418
+ "flags": {},
1419
+ "order": 9,
1420
+ "mode": 0,
1421
+ "inputs": [],
1422
+ "outputs": [
1423
+ {
1424
+ "name": "AUDIO",
1425
+ "type": "AUDIO",
1426
+ "links": [
1427
+ 660
1428
+ ]
1429
+ }
1430
+ ],
1431
+ "properties": {
1432
+ "cnr_id": "comfy-core",
1433
+ "ver": "0.27.0",
1434
+ "Node name for S&R": "LoadAudio"
1435
+ },
1436
+ "widgets_values": [
1437
+ "silent_2sec.wav",
1438
+ null,
1439
+ null
1440
+ ]
1441
+ },
1442
+ {
1443
+ "id": 241,
1444
+ "type": "LoadImage",
1445
+ "pos": [
1446
+ 500,
1447
+ 1160
1448
+ ],
1449
+ "size": [
1450
+ 290,
1451
+ 320
1452
+ ],
1453
+ "flags": {},
1454
+ "order": 10,
1455
+ "mode": 0,
1456
+ "inputs": [],
1457
+ "outputs": [
1458
+ {
1459
+ "name": "IMAGE",
1460
+ "type": "IMAGE",
1461
+ "links": [
1462
+ 647
1463
+ ]
1464
+ },
1465
+ {
1466
+ "name": "MASK",
1467
+ "type": "MASK",
1468
+ "links": null
1469
+ }
1470
+ ],
1471
+ "properties": {
1472
+ "cnr_id": "comfy-core",
1473
+ "ver": "0.27.0",
1474
+ "Node name for S&R": "LoadImage"
1475
+ },
1476
+ "widgets_values": [
1477
+ "demo_1.jpg",
1478
+ "image"
1479
+ ]
1480
+ }
1481
+ ],
1482
+ "links": [
1483
+ [
1484
+ 74,
1485
+ 38,
1486
+ 0,
1487
+ 6,
1488
+ 0,
1489
+ "CLIP"
1490
+ ],
1491
+ [
1492
+ 75,
1493
+ 38,
1494
+ 0,
1495
+ 7,
1496
+ 0,
1497
+ "CLIP"
1498
+ ],
1499
+ [
1500
+ 120,
1501
+ 57,
1502
+ 0,
1503
+ 56,
1504
+ 0,
1505
+ "AUDIO_ENCODER"
1506
+ ],
1507
+ [
1508
+ 285,
1509
+ 39,
1510
+ 0,
1511
+ 80,
1512
+ 1,
1513
+ "VAE"
1514
+ ],
1515
+ [
1516
+ 363,
1517
+ 107,
1518
+ 0,
1519
+ 54,
1520
+ 0,
1521
+ "MODEL"
1522
+ ],
1523
+ [
1524
+ 522,
1525
+ 54,
1526
+ 0,
1527
+ 205,
1528
+ 0,
1529
+ "MODEL"
1530
+ ],
1531
+ [
1532
+ 526,
1533
+ 205,
1534
+ 0,
1535
+ 207,
1536
+ 3,
1537
+ "LATENT"
1538
+ ],
1539
+ [
1540
+ 533,
1541
+ 207,
1542
+ 0,
1543
+ 80,
1544
+ 0,
1545
+ "LATENT"
1546
+ ],
1547
+ [
1548
+ 580,
1549
+ 80,
1550
+ 0,
1551
+ 201,
1552
+ 0,
1553
+ "IMAGE"
1554
+ ],
1555
+ [
1556
+ 581,
1557
+ 210,
1558
+ 0,
1559
+ 214,
1560
+ 0,
1561
+ "MODEL"
1562
+ ],
1563
+ [
1564
+ 582,
1565
+ 214,
1566
+ 0,
1567
+ 207,
1568
+ 0,
1569
+ "MODEL"
1570
+ ],
1571
+ [
1572
+ 585,
1573
+ 37,
1574
+ 0,
1575
+ 107,
1576
+ 0,
1577
+ "MODEL"
1578
+ ],
1579
+ [
1580
+ 586,
1581
+ 204,
1582
+ 0,
1583
+ 210,
1584
+ 0,
1585
+ "MODEL"
1586
+ ],
1587
+ [
1588
+ 618,
1589
+ 58,
1590
+ 0,
1591
+ 223,
1592
+ 0,
1593
+ "AUDIO"
1594
+ ],
1595
+ [
1596
+ 622,
1597
+ 235,
1598
+ 0,
1599
+ 56,
1600
+ 1,
1601
+ "AUDIO"
1602
+ ],
1603
+ [
1604
+ 626,
1605
+ 223,
1606
+ 0,
1607
+ 237,
1608
+ 0,
1609
+ "AUDIO"
1610
+ ],
1611
+ [
1612
+ 627,
1613
+ 239,
1614
+ 0,
1615
+ 238,
1616
+ 0,
1617
+ "INT"
1618
+ ],
1619
+ [
1620
+ 629,
1621
+ 201,
1622
+ 0,
1623
+ 240,
1624
+ 0,
1625
+ "IMAGE"
1626
+ ],
1627
+ [
1628
+ 630,
1629
+ 235,
1630
+ 0,
1631
+ 240,
1632
+ 1,
1633
+ "AUDIO"
1634
+ ],
1635
+ [
1636
+ 643,
1637
+ 6,
1638
+ 0,
1639
+ 245,
1640
+ 0,
1641
+ "CONDITIONING"
1642
+ ],
1643
+ [
1644
+ 644,
1645
+ 7,
1646
+ 0,
1647
+ 245,
1648
+ 1,
1649
+ "CONDITIONING"
1650
+ ],
1651
+ [
1652
+ 645,
1653
+ 39,
1654
+ 0,
1655
+ 245,
1656
+ 2,
1657
+ "VAE"
1658
+ ],
1659
+ [
1660
+ 646,
1661
+ 56,
1662
+ 0,
1663
+ 245,
1664
+ 3,
1665
+ "AUDIO_ENCODER_OUTPUT"
1666
+ ],
1667
+ [
1668
+ 647,
1669
+ 241,
1670
+ 0,
1671
+ 245,
1672
+ 6,
1673
+ "IMAGE"
1674
+ ],
1675
+ [
1676
+ 648,
1677
+ 245,
1678
+ 0,
1679
+ 205,
1680
+ 1,
1681
+ "CONDITIONING"
1682
+ ],
1683
+ [
1684
+ 649,
1685
+ 245,
1686
+ 1,
1687
+ 205,
1688
+ 2,
1689
+ "CONDITIONING"
1690
+ ],
1691
+ [
1692
+ 650,
1693
+ 245,
1694
+ 2,
1695
+ 205,
1696
+ 3,
1697
+ "LATENT"
1698
+ ],
1699
+ [
1700
+ 651,
1701
+ 245,
1702
+ 0,
1703
+ 207,
1704
+ 1,
1705
+ "CONDITIONING"
1706
+ ],
1707
+ [
1708
+ 652,
1709
+ 245,
1710
+ 1,
1711
+ 207,
1712
+ 2,
1713
+ "CONDITIONING"
1714
+ ],
1715
+ [
1716
+ 653,
1717
+ 238,
1718
+ 1,
1719
+ 245,
1720
+ 8,
1721
+ "INT"
1722
+ ],
1723
+ [
1724
+ 656,
1725
+ 237,
1726
+ 0,
1727
+ 235,
1728
+ 0,
1729
+ "AUDIO"
1730
+ ],
1731
+ [
1732
+ 660,
1733
+ 247,
1734
+ 0,
1735
+ 246,
1736
+ 0,
1737
+ "AUDIO"
1738
+ ],
1739
+ [
1740
+ 661,
1741
+ 251,
1742
+ 1,
1743
+ 249,
1744
+ 0,
1745
+ "INT"
1746
+ ],
1747
+ [
1748
+ 662,
1749
+ 249,
1750
+ 0,
1751
+ 250,
1752
+ 0,
1753
+ "STRING"
1754
+ ],
1755
+ [
1756
+ 663,
1757
+ 250,
1758
+ 0,
1759
+ 6,
1760
+ 1,
1761
+ "STRING"
1762
+ ],
1763
+ [
1764
+ 664,
1765
+ 252,
1766
+ 0,
1767
+ 250,
1768
+ 1,
1769
+ "STRING"
1770
+ ]
1771
+ ],
1772
+ "groups": [
1773
+ {
1774
+ "id": 2,
1775
+ "title": "-",
1776
+ "bounding": [
1777
+ -110,
1778
+ 100,
1779
+ 2650,
1780
+ 1090
1781
+ ],
1782
+ "color": "#3f789e",
1783
+ "flags": {}
1784
+ },
1785
+ {
1786
+ "id": 3,
1787
+ "title": "-",
1788
+ "bounding": [
1789
+ -540,
1790
+ 100,
1791
+ 430,
1792
+ 490
1793
+ ],
1794
+ "color": "#3f789e",
1795
+ "flags": {}
1796
+ },
1797
+ {
1798
+ "id": 10,
1799
+ "title": "Tasks",
1800
+ "bounding": [
1801
+ -1030,
1802
+ 680,
1803
+ 920,
1804
+ 510
1805
+ ],
1806
+ "color": "#3f789e",
1807
+ "flags": {}
1808
+ }
1809
+ ],
1810
+ "definitions": {
1811
+ "subgraphs": [
1812
+ {
1813
+ "id": "6da2792c-a953-4960-a53a-ff1b5df6fe09",
1814
+ "version": 1,
1815
+ "state": {
1816
+ "lastGroupId": 10,
1817
+ "lastNodeId": 252,
1818
+ "lastLinkId": 664,
1819
+ "lastRerouteId": 0
1820
+ },
1821
+ "revision": 0,
1822
+ "config": {},
1823
+ "name": "Select Per-Line Text by Index",
1824
+ "description": "Selects one line from multiline text by zero-based index for batch or list-driven prompt workflows.",
1825
+ "inputNode": {
1826
+ "id": -10,
1827
+ "bounding": [
1828
+ -990,
1829
+ 8595,
1830
+ 128,
1831
+ 88
1832
+ ]
1833
+ },
1834
+ "outputNode": {
1835
+ "id": -20,
1836
+ "bounding": [
1837
+ 710,
1838
+ 8585,
1839
+ 128,
1840
+ 68
1841
+ ]
1842
+ },
1843
+ "inputs": [
1844
+ {
1845
+ "id": "75417d82-a934-4ac9-b667-d8dcd5a3bfb3",
1846
+ "name": "text_per_line",
1847
+ "type": "STRING",
1848
+ "linkIds": [
1849
+ 13
1850
+ ],
1851
+ "localized_name": "text_per_line",
1852
+ "pos": [
1853
+ -886,
1854
+ 8619
1855
+ ]
1856
+ },
1857
+ {
1858
+ "id": "46e69a73-1804-4ca6-9175-31445bf0be96",
1859
+ "name": "index",
1860
+ "type": "INT",
1861
+ "linkIds": [
1862
+ 14
1863
+ ],
1864
+ "localized_name": "index",
1865
+ "pos": [
1866
+ -886,
1867
+ 8639
1868
+ ]
1869
+ }
1870
+ ],
1871
+ "outputs": [
1872
+ {
1873
+ "id": "e34e8ad1-84d2-4bd2-a460-eb7de6067c10",
1874
+ "name": "selected_line",
1875
+ "type": "STRING",
1876
+ "linkIds": [
1877
+ 10
1878
+ ],
1879
+ "localized_name": "selected_line",
1880
+ "pos": [
1881
+ 734,
1882
+ 8609
1883
+ ]
1884
+ }
1885
+ ],
1886
+ "widgets": [],
1887
+ "nodes": [
1888
+ {
1889
+ "id": 1,
1890
+ "type": "PreviewAny",
1891
+ "pos": [
1892
+ -500,
1893
+ 8400
1894
+ ],
1895
+ "size": [
1896
+ 230,
1897
+ 180
1898
+ ],
1899
+ "flags": {},
1900
+ "order": 0,
1901
+ "mode": 0,
1902
+ "inputs": [
1903
+ {
1904
+ "localized_name": "source",
1905
+ "name": "source",
1906
+ "type": "*",
1907
+ "link": 1
1908
+ }
1909
+ ],
1910
+ "outputs": [
1911
+ {
1912
+ "localized_name": "STRING",
1913
+ "name": "STRING",
1914
+ "type": "STRING",
1915
+ "links": [
1916
+ 6
1917
+ ]
1918
+ }
1919
+ ],
1920
+ "properties": {
1921
+ "cnr_id": "comfy-core",
1922
+ "ver": "0.19.0",
1923
+ "Node name for S&R": "PreviewAny",
1924
+ "ue_properties": {
1925
+ "widget_ue_connectable": {},
1926
+ "input_ue_unconnectable": {}
1927
+ }
1928
+ },
1929
+ "widgets_values": [
1930
+ null,
1931
+ null,
1932
+ null
1933
+ ]
1934
+ },
1935
+ {
1936
+ "id": 2,
1937
+ "type": "RegexExtract",
1938
+ "pos": [
1939
+ -240,
1940
+ 8740
1941
+ ],
1942
+ "size": [
1943
+ 470,
1944
+ 460
1945
+ ],
1946
+ "flags": {},
1947
+ "order": 1,
1948
+ "mode": 0,
1949
+ "showAdvanced": false,
1950
+ "inputs": [
1951
+ {
1952
+ "localized_name": "string",
1953
+ "name": "string",
1954
+ "type": "STRING",
1955
+ "widget": {
1956
+ "name": "string"
1957
+ },
1958
+ "link": 13
1959
+ },
1960
+ {
1961
+ "localized_name": "regex_pattern",
1962
+ "name": "regex_pattern",
1963
+ "type": "STRING",
1964
+ "widget": {
1965
+ "name": "regex_pattern"
1966
+ },
1967
+ "link": 9
1968
+ }
1969
+ ],
1970
+ "outputs": [
1971
+ {
1972
+ "localized_name": "STRING",
1973
+ "name": "STRING",
1974
+ "type": "STRING",
1975
+ "links": [
1976
+ 10
1977
+ ]
1978
+ }
1979
+ ],
1980
+ "properties": {
1981
+ "cnr_id": "comfy-core",
1982
+ "ver": "0.19.0",
1983
+ "Node name for S&R": "RegexExtract",
1984
+ "ue_properties": {
1985
+ "widget_ue_connectable": {},
1986
+ "input_ue_unconnectable": {}
1987
+ }
1988
+ },
1989
+ "widgets_values": [
1990
+ "You are a helpful assistant.\nYou are a helpful assistant specialized in text-to-image generation.\nYou are a helpful assistant specialized in text-to-video generation.\nYou are a helpful assistant specialized in image editing.\nYou are a helpful assistant specialized in subject-to-image generation.\nYou are a helpful assistant specialized in image-to-video generation.\nYou are a helpful assistant specialized in video editing.\nYou are a helpful assistant specialized in video editing on content propagation.\nYou are a helpful assistant specialized in video editing with reference.\nYou are a helpful assistant specialized in ads insertion.\nYou are a helpful assistant for editing. You may need to adjust the subject's action or position.\nYou are a helpful assistant for editing. You might need to adjust the video's style, lighting, colors, textures, and the subject's pose or action.",
1991
+ "",
1992
+ "First Group",
1993
+ false,
1994
+ false,
1995
+ false,
1996
+ 1
1997
+ ]
1998
+ },
1999
+ {
2000
+ "id": 248,
2001
+ "type": "PrimitiveInt",
2002
+ "pos": [
2003
+ -810,
2004
+ 8400
2005
+ ],
2006
+ "size": [
2007
+ 270,
2008
+ 110
2009
+ ],
2010
+ "flags": {},
2011
+ "order": 3,
2012
+ "mode": 0,
2013
+ "inputs": [
2014
+ {
2015
+ "localized_name": "value",
2016
+ "name": "value",
2017
+ "type": "INT",
2018
+ "widget": {
2019
+ "name": "value"
2020
+ },
2021
+ "link": 14
2022
+ }
2023
+ ],
2024
+ "outputs": [
2025
+ {
2026
+ "localized_name": "INT",
2027
+ "name": "INT",
2028
+ "type": "INT",
2029
+ "links": [
2030
+ 1
2031
+ ]
2032
+ }
2033
+ ],
2034
+ "title": "Int (line index)",
2035
+ "properties": {
2036
+ "cnr_id": "comfy-core",
2037
+ "ver": "0.19.0",
2038
+ "Node name for S&R": "Int (line index)",
2039
+ "ue_properties": {
2040
+ "widget_ue_connectable": {},
2041
+ "input_ue_unconnectable": {}
2042
+ }
2043
+ },
2044
+ "widgets_values": [
2045
+ 0,
2046
+ "fixed"
2047
+ ]
2048
+ },
2049
+ {
2050
+ "id": 8,
2051
+ "type": "StringReplace",
2052
+ "pos": [
2053
+ -240,
2054
+ 8400
2055
+ ],
2056
+ "size": [
2057
+ 400,
2058
+ 280
2059
+ ],
2060
+ "flags": {},
2061
+ "order": 2,
2062
+ "mode": 0,
2063
+ "inputs": [
2064
+ {
2065
+ "localized_name": "replace",
2066
+ "name": "replace",
2067
+ "type": "STRING",
2068
+ "widget": {
2069
+ "name": "replace"
2070
+ },
2071
+ "link": 6
2072
+ }
2073
+ ],
2074
+ "outputs": [
2075
+ {
2076
+ "localized_name": "STRING",
2077
+ "name": "STRING",
2078
+ "type": "STRING",
2079
+ "links": [
2080
+ 9
2081
+ ]
2082
+ }
2083
+ ],
2084
+ "properties": {
2085
+ "cnr_id": "comfy-core",
2086
+ "ver": "0.19.0",
2087
+ "Node name for S&R": "StringReplace",
2088
+ "ue_properties": {
2089
+ "widget_ue_connectable": {},
2090
+ "input_ue_unconnectable": {}
2091
+ }
2092
+ },
2093
+ "widgets_values": [
2094
+ "^(?:[^\\n]*\\n){index}([^\\n]*)(?:\\n|$)",
2095
+ "index",
2096
+ ""
2097
+ ]
2098
+ }
2099
+ ],
2100
+ "groups": [],
2101
+ "links": [
2102
+ {
2103
+ "id": 1,
2104
+ "origin_id": 248,
2105
+ "origin_slot": 0,
2106
+ "target_id": 1,
2107
+ "target_slot": 0,
2108
+ "type": "INT"
2109
+ },
2110
+ {
2111
+ "id": 9,
2112
+ "origin_id": 8,
2113
+ "origin_slot": 0,
2114
+ "target_id": 2,
2115
+ "target_slot": 1,
2116
+ "type": "STRING"
2117
+ },
2118
+ {
2119
+ "id": 6,
2120
+ "origin_id": 1,
2121
+ "origin_slot": 0,
2122
+ "target_id": 8,
2123
+ "target_slot": 0,
2124
+ "type": "STRING"
2125
+ },
2126
+ {
2127
+ "id": 10,
2128
+ "origin_id": 2,
2129
+ "origin_slot": 0,
2130
+ "target_id": -20,
2131
+ "target_slot": 0,
2132
+ "type": "STRING"
2133
+ },
2134
+ {
2135
+ "id": 13,
2136
+ "origin_id": -10,
2137
+ "origin_slot": 0,
2138
+ "target_id": 2,
2139
+ "target_slot": 0,
2140
+ "type": "STRING"
2141
+ },
2142
+ {
2143
+ "id": 14,
2144
+ "origin_id": -10,
2145
+ "origin_slot": 1,
2146
+ "target_id": 248,
2147
+ "target_slot": 0,
2148
+ "type": "INT"
2149
+ }
2150
+ ],
2151
+ "extra": {
2152
+ "ue_links": [],
2153
+ "links_added_by_ue": []
2154
+ }
2155
+ }
2156
+ ]
2157
+ },
2158
+ "config": {},
2159
+ "extra": {
2160
+ "ds": {
2161
+ "scale": 0.6016514604754695,
2162
+ "offset": [
2163
+ 1137.0355488088276,
2164
+ 268.4959689575599
2165
+ ]
2166
+ },
2167
+ "frontendVersion": "1.45.20",
2168
+ "VHS_latentpreview": false,
2169
+ "VHS_latentpreviewrate": 0,
2170
+ "VHS_MetadataImage": true,
2171
+ "VHS_KeepIntermediate": true
2172
+ },
2173
+ "version": 0.4
2174
+ }
audio_encoders/wav2vec2_large_english_fp16.safetensors ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:5cb1d07df3781a98b68a1719e5c808cd6f80a60e8241dfef8616c4ef7e0e0340
3
+ size 630925720
video/ComfyUI__00002-audio.mp4 ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:a6f129b6d619ba8ad647d389bf79261dcb8a930b12604bfc791d53e934c15c58
3
+ size 3691532
video/Triumph_of_the_Iron.mp3 ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:f112e39d2e697273a31967b57c31c5c41c67200ba3a7575006497f109b0fa1e0
3
+ size 744929
video/anthony.wav ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:5ba8d022a19343d0c970422abb3b196a28cc3a7c5b3f1aec145e84cf55f9092b
3
+ size 433362
video/not_today.wav ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:6659d24ff35077c85bb26a68c446454b9798642daecbec1ea86c1ec02b94e0a6
3
+ size 203370
video/scream_mono.wav ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:0b510f333c625acdc69539d4f46634d829eb6573e4b43df3ac44fd208c07f9a0
3
+ size 1073230