diff --git a/.gitignore b/.gitignore index 424b033..88900ae 100644 --- a/.gitignore +++ b/.gitignore @@ -85,6 +85,8 @@ ENV/ ehthumbs.db Thumbs.db +*.log + # ComfyUI specific (adjust as needed) # output/ # input/ diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..cdf9136 --- /dev/null +++ b/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2024 RyanOnTheInside + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. \ No newline at end of file diff --git a/__init__.py b/__init__.py index 5740b88..04bee39 100644 --- a/__init__.py +++ b/__init__.py @@ -1,46 +1,56 @@ +from .tooltips import TooltipManager, apply_tooltips +from .tooltips.categories import register_all_tooltips + +# Register tooltips immediately after import +from comfy.utils import ProgressBar +from tqdm import tqdm from .node_configs.node_configs import CombinedMeta from collections import OrderedDict import os import folder_paths +import shutil +#NOTE: THIS IS LEGACY FOR BACKWARD COMPATIBILITY. FUNCTIONALLY REPLACED BY TOOLTIPS. #NOTE: allows for central management and inheritance of class variables for help documentation +#TODO: move all progress hooks here? class RyanOnTheInside(metaclass=CombinedMeta): @classmethod def get_description(cls): - - display_name = NODE_DISPLAY_NAME_MAPPINGS.get(cls.__name__, cls.__name__) - footer = "For more information, visit [RyanOnTheInside GitHub](https://github.com/ryanontheinside).\n\n" - footer += "For tutorials and example workflows visit [RyanOnTheInside Civitai](https://civitai.com/user/ryanontheinside).\n\n" - footer += "For video tutorials and more visit [RyanOnTheInside YouTube](https://www.youtube.com/@ryanontheinside).\n\n" - display_name = display_name.replace(" | RyanOnTheInside", "") - - desc = f"# {display_name}\n\n" - - if hasattr(cls, 'DESCRIPTION'): - desc += f"{cls.DESCRIPTION}\n\n{footer}" - return desc - - if hasattr(cls, 'TOP_DESCRIPTION'): - desc += f"### {cls.TOP_DESCRIPTION}\n\n" - - if hasattr(cls, "BASE_DESCRIPTION"): - desc += cls.BASE_DESCRIPTION + "\n\n" - - additional_info = OrderedDict() - for c in cls.mro()[::-1]: - if hasattr(c, 'ADDITIONAL_INFO'): - info = c.ADDITIONAL_INFO.strip() - - additional_info[c.__name__] = info - - if additional_info: - desc += "\n\n".join(additional_info.values()) + "\n\n" - - if hasattr(cls, 'BOTTOM_DESCRIPTION'): - desc += f"{cls.BOTTOM_DESCRIPTION}\n\n" - - desc += footer - return desc + return "" + +class ProgressMixin: + def start_progress(self, total_steps, desc="Processing"): + self.progress_bar = ProgressBar(total_steps) + self.tqdm_bar = tqdm(total=total_steps, desc=desc, leave=False) + self.current_progress = 0 + self.total_steps = total_steps + + def update_progress(self, step=1): + self.current_progress += step + if self.progress_bar: + self.progress_bar.update(step) + if self.tqdm_bar: + self.tqdm_bar.update(step) + + def end_progress(self): + if self.tqdm_bar: + self.tqdm_bar.close() + self.progress_bar = None + self.tqdm_bar = None + self.current_progress = 0 + self.total_steps = 0 + +print(""" +[RyanOnTheInside] Loading... +██████╗ ██╗ ██╗ █████╗ ███╗ ██╗ ██████╗ ███╗ ██╗████████╗██╗ ██╗███████╗██╗███╗ ██╗███████╗██╗██████╗ ███████╗ +██╔══██╗ ╚██╗ ██╔╝██╔══██╗████╗ ██║██╔═══██╗████╗ ██║╚══██╔══╝██║ ██║██╔════╝██║████╗ ██║██╔════╝██║██╔══██╗██╔════╝ +██████╔╝ ╚████╔╝ ███████║██╔██╗ ██║██║ ██║██╔██╗ ██║ ██║ ███████║█████╗ ██║██╔██╗ ██║███████╗██║██║ ██║█████╗ +██╔══██╗ ╚██╔╝ ██╔══██║██║╚██╗██║██║ ██║██║╚██╗██║ ██║ ██╔══██║██╔══╝ ██║██║╚██╗██║╚════██║██║██║ ██║██╔══╝ +██║ ██║ ██║ ██║ ██║██║ ╚████║╚██████╔╝██║ ╚████║ ██║ ██║ ██║███████╗██║██║ ╚████║███████║██║██████╔╝███████╗ +╚═╝ ╚═╝ ╚═╝ ╚═╝ ╚═╝╚═╝ ╚═══╝ ╚═════╝ ╚═╝ ╚═══╝ ╚═╝ ╚═╝ ╚═╝╚══════╝╚═╝╚═╝ ╚═══╝╚══════╝╚═╝╚═════╝ ╚══════╝ + """) + + from .nodes.masks.temporal_masks import ( MaskMorph, @@ -51,7 +61,6 @@ def get_description(cls): ) from .nodes.audio.audio_nodes import ( - AudioSeparator, AudioSeparatorSimple, DownloadOpenUnmixModel, # DownloadCREPEModel, @@ -69,6 +78,7 @@ def get_description(cls): from .nodes.audio.flex_audio_visualizer import ( FlexAudioVisualizerCircular, FlexAudioVisualizerLine, + FlexAudioVisualizerContour, ) from .nodes.audio.audio_nodes_effects import ( @@ -101,16 +111,30 @@ def get_description(cls): AreaFeatureNode, ManualFeatureNode, ManualFeatureFromPipe, + DrawableFeatureNode, + FeatureInfoNode, + FloatFeatureNode +) + +from .nodes.flex.feature_extractors_whisper import( + WhisperFeatureNode, + TriggerBuilder, + ContextModifier, + WhisperToPromptTravel, + WhisperTextRenderer, + ManualWhisperAlignmentData, + WhisperAutoAdjust, + WhisperTimeAdjuster ) from .nodes.flex.feature_extractors_audio import( AudioFeatureExtractor, - AudioFeatureExtractorFirst, PitchRangeNode, PitchRangePresetNode, PitchRangeByNoteNode, PitchFeatureExtractor, RhythmFeatureExtractor, + ) from .nodes.flex.feature_extractors_midi import( @@ -128,6 +152,7 @@ def get_description(cls): ProximityVisualizer, EffectVisualizer, PitchVisualizer, + PreviewFeature, ) @@ -157,6 +182,8 @@ def get_description(cls): TextMaskNode, MovingShape, MaskCompositePlus, + AdvancedLuminanceMask, + TranslucentComposite, ) from .nodes.utility_nodes import ( @@ -173,8 +200,10 @@ def get_description(cls): from .nodes.images.image_utility_nodes import ( DyeImage, + ColorPicker, ImageCASBatch, ImageScaleToTarget + ) from .nodes.masks.flex_masks import ( @@ -232,7 +261,7 @@ def get_description(cls): DepthRippleEffect, ) -from .nodes.flex.feature_externals import ( +from .nodes.flex.flex_externals import ( FeatureToWeightsStrategy, FeatureToSplineData, SplineFeatureModulator, @@ -240,8 +269,10 @@ def get_description(cls): DepthShapeModifier, DepthShapeModifierPrecise, FeatureToFloat, + FeatureToMask, ) + from .nodes.flex.feature_modulation import ( FeatureMixer, FeatureCombine, @@ -249,13 +280,15 @@ def get_description(cls): FeatureScaler, FeatureSmoothing, FeatureFade, - PreviewFeature, + FeatureMath, FeatureRebase, FeatureTruncateOrExtend, FeatureAccumulate, FeatureContiguousInterpolate, FeatureRenormalize, + FeatureInterpolator, + FeaturePeakDetector, ) from .nodes.audio.flex_audio import ( @@ -263,12 +296,16 @@ def get_description(cls): FlexAudioTimeStretch, ) -from .nodes.latents.latent_base import ( +from .nodes.latents.flex_latents import ( FlexLatentInterpolate, EmbeddingGuidedLatentInterpolate, FlexLatentBlend, FlexLatentNoise, ) +from .nodes.flex.parameter_scheduling import ( + FeatureToFlexIntParam, + FeatureToFlexFloatParam, +) from .nodes.latents.latent_frequency_blender import LatentFrequencyBlender @@ -278,17 +315,16 @@ def get_description(cls): from .nodes.doom.doom import Doom -from .nodes.misc.misc_nodes import WhisperToPromptTravel - -HAS_ADVANCED_LIVE_PORTRAIT = os.path.exists(os.path.join(os.path.dirname(os.path.dirname(__file__)), "ComfyUI-AdvancedLivePortrait")) - -if HAS_ADVANCED_LIVE_PORTRAIT: - from .nodes.flex.flex_advanced_live_portrait import FlexExpressionEditor -else: - print("ComfyUI-AdvancedLivePortrait not found. FlexExpressionEditor will not be available. Install ComfyUI-AdvancedLivePortrait and restart ComfyUI.") - +# from .nodes.models.flex_model_base import FlexFeatureAttentionControl +# Import external integrations +from .external_integration import ( + HAS_ADVANCED_LIVE_PORTRAIT, + HAS_ADVANCED_CONTROLNET, + HAS_ANIMATEDIFF, + EXTERNAL_NODE_CLASS_MAPPINGS, +) # Get the directory of the current file current_dir = os.path.dirname(os.path.realpath(__file__)) @@ -300,26 +336,49 @@ def get_description(cls): # Ensure the MIDI files directory exists os.makedirs(midi_path, exist_ok=True) +# Get the path to ComfyUI's web/extensions directory +extension_path = os.path.join(os.path.dirname(folder_paths.__file__), "web", "extensions") +my_extension_path = os.path.join(os.path.dirname(os.path.realpath(__file__)), "web", "extensions") + +# Create RyanOnTheInside subfolder in ComfyUI extensions +roti_extension_path = os.path.join(extension_path, "RyanOnTheInside") +os.makedirs(roti_extension_path, exist_ok=True) + +# Clean up existing files in the RyanOnTheInside folder +for file in os.listdir(roti_extension_path): + os.remove(os.path.join(roti_extension_path, file)) + +# Copy our extension files to ComfyUI's extensions/RyanOnTheInside directory +if os.path.exists(my_extension_path): + for file in os.listdir(my_extension_path): + if file.endswith('.js'): + src = os.path.join(my_extension_path, file) + dst = os.path.join(roti_extension_path, file) + print(f"[RyanOnTheInside] Copying extension file: {file}") + shutil.copy2(src, dst) NODE_CLASS_MAPPINGS = { #NOTE: PoseInterpolator is not working yet #"PoseInterpolator": PoseInterpolator, - + # "FlexFeatureAttentionControl": FlexFeatureAttentionControl, + + "FeatureInterpolator": FeatureInterpolator, + "FeaturePeakDetector": FeaturePeakDetector, + "Doom": Doom, - "WhisperToPromptTravel": WhisperToPromptTravel, - - "ManualFeaturePipe": ManualFeaturePipe, - "ManualFeatureFromPipe": ManualFeatureFromPipe, + "WhisperToPromptTravel": WhisperToPromptTravel, + "ManualFeaturePipe": ManualFeaturePipe, + "ManualFeatureFromPipe": ManualFeatureFromPipe, #latents - "FlexLatentInterpolate": FlexLatentInterpolate, + "FlexLatentInterpolate": FlexLatentInterpolate, "EmbeddingGuidedLatentInterpolate": EmbeddingGuidedLatentInterpolate, - "FlexLatentBlend": FlexLatentBlend, - "FlexLatentNoise": FlexLatentNoise, + "FlexLatentBlend": FlexLatentBlend, + "FlexLatentNoise": FlexLatentNoise, "LatentFrequencyBlender": LatentFrequencyBlender, #video - "FlexVideoSpeed": FlexVideoSpeed, - "FlexVideoDirection": FlexVideoDirection, - "FlexVideoFrameBlend": FlexVideoFrameBlend, - "FlexVideoSeek": FlexVideoSeek, + "FlexVideoSpeed": FlexVideoSpeed, + "FlexVideoDirection": FlexVideoDirection, + "FlexVideoFrameBlend": FlexVideoFrameBlend, + "FlexVideoSeek": FlexVideoSeek, ###temporal "MaskMorph": MaskMorph, "MaskTransform": MaskTransform, @@ -327,8 +386,6 @@ def get_description(cls): "MaskRings": MaskRings, "MaskWarp": MaskWarp, - - #optical flow "OpticalFlowMaskModulation": OpticalFlowMaskModulation, "OpticalFlowParticleSystem": OpticalFlowParticleSystem, @@ -367,10 +424,11 @@ def get_description(cls): #flex audio visualizers "FlexAudioVisualizerCircular": FlexAudioVisualizerCircular, - "FlexAudioVisualizerLine": FlexAudioVisualizerLine, + "FlexAudioVisualizerLine": FlexAudioVisualizerLine, + "FlexAudioVisualizerContour": FlexAudioVisualizerContour, #audio - "AudioSeparator": AudioSeparator, - "AudioSeparatorSimple": AudioSeparatorSimple, + + "AudioSeparatorSimple": AudioSeparatorSimple, "DownloadOpenUnmixModel": DownloadOpenUnmixModel, # "DownloadCREPEModel": DownloadCREPEModel, "AudioFeatureVisualizer": AudioFeatureVisualizer, @@ -389,27 +447,35 @@ def get_description(cls): "AudioDither": AudioDither, "AudioInfo": AudioInfo, "AudioGain": AudioGain, - "AudioFade": AudioFade, + "AudioFade": AudioFade, "AudioPad": AudioPad, - "AudioChannelMerge": AudioChannelMerge, - "AudioChannelSplit": AudioChannelSplit, - "AudioResample": AudioResample, - "AudioVolumeNormalization": AudioVolumeNormalization, + "AudioChannelMerge": AudioChannelMerge, + "AudioChannelSplit": AudioChannelSplit, + "AudioResample": AudioResample, + "AudioVolumeNormalization": AudioVolumeNormalization, #features "AudioFeatureExtractor": AudioFeatureExtractor, - "AudioFeatureExtractorFirst": AudioFeatureExtractorFirst, + +#TODO make feature info JS display info +#TODO: support negative feature values for opposit direction...... + + "PitchFeatureExtractor": PitchFeatureExtractor, "RhythmFeatureExtractor": RhythmFeatureExtractor, + "PitchRange": PitchRangeNode, "PitchRangePreset": PitchRangePresetNode, "PitchRangeByNoteNode": PitchRangeByNoteNode, "MIDILoadAndExtract": MIDILoadAndExtract, "TimeFeatureNode": TimeFeatureNode, + "FloatFeatureNode": FloatFeatureNode, "ManualFeatureNode": ManualFeatureNode, "ManualFeatureFromPipe": ManualFeatureFromPipe, + "DrawableFeatureNode": DrawableFeatureNode, "DepthFeatureNode": DepthFeatureNode, "ColorFeatureNode": ColorFeatureNode, + "BrightnessFeatureNode": BrightnessFeatureNode, "MotionFeatureNode": MotionFeatureNode, "LocationFromMask": LocationFromMask, @@ -417,17 +483,27 @@ def get_description(cls): "LocationFromPoint": LocationFromPoint, "LocationTransform": LocationTransform, "AreaFeatureNode": AreaFeatureNode, + "FeatureInfoNode": FeatureInfoNode, + "WhisperFeature": WhisperFeatureNode, + "TriggerBuilder": TriggerBuilder, + "ContextModifier": ContextModifier, + "WhisperTextRenderer": WhisperTextRenderer, + "WhisperAutoAdjust": WhisperAutoAdjust, + "WhisperTimeAdjuster": WhisperTimeAdjuster, + "ManualWhisperAlignmentData": ManualWhisperAlignmentData, "FeatureToWeightsStrategy": FeatureToWeightsStrategy, - "FeatureToSplineData": FeatureToSplineData, - "SplineFeatureModulator": SplineFeatureModulator, - "FeatureToFloat": FeatureToFloat, - "SplineRhythmModulator": SplineRhythmModulator, + "FeatureToSplineData": FeatureToSplineData, + "SplineFeatureModulator": SplineFeatureModulator, + "FeatureToFloat": FeatureToFloat, + "FeatureToMask": FeatureToMask, + "SplineRhythmModulator": SplineRhythmModulator, "DepthInjection": DepthInjection, "DepthRippleEffect": DepthRippleEffect, "DepthBlender": DepthBlender, "DepthShapeModifier": DepthShapeModifier, - "DepthShapeModifierPrecise": DepthShapeModifierPrecise, + + "DepthShapeModifierPrecise": DepthShapeModifierPrecise, # "DepthMapProtrusion": DepthMapProtrusion, #feature modulation "FeatureMixer": FeatureMixer, @@ -440,9 +516,11 @@ def get_description(cls): "PreviewFeature": PreviewFeature, "FeatureRebase": FeatureRebase, "FeatureTruncateOrExtend": FeatureTruncateOrExtend, - "FeatureAccumulate": FeatureAccumulate, - "FeatureContiguousInterpolate": FeatureContiguousInterpolate, + "FeatureAccumulate": FeatureAccumulate, + "FeatureContiguousInterpolate": FeatureContiguousInterpolate, "FeatureRenormalize": FeatureRenormalize, + "FeatureToFlexIntParam": FeatureToFlexIntParam, + "FeatureToFlexFloatParam": FeatureToFlexFloatParam, #images 'FlexImageEdgeDetect': FlexImageEdgeDetect, @@ -464,6 +542,7 @@ def get_description(cls): "FlexImageHorizontalToVertical":FlexImageHorizontalToVertical, + #visulizers "ProximityVisualizer": ProximityVisualizer, "EffectVisualizer": EffectVisualizer, @@ -471,12 +550,19 @@ def get_description(cls): #garb "DyeImage": DyeImage, + "ColorPicker": ColorPicker, "ImageCASBatch": ImageCASBatch, "ImageScaleToTarget": ImageScaleToTarget, "MovingShape": MovingShape, "_mfc": _mfc, "TextMaskNode": TextMaskNode, - "MaskCompositePlus": MaskCompositePlus, + + + #TODO: make useful + # "MaskCompositePlus": MaskCompositePlus, + + "AdvancedLuminanceMask": AdvancedLuminanceMask, + "TranslucentComposite": TranslucentComposite, #utility nodes "ImageChunk": ImageChunks, @@ -489,87 +575,47 @@ def get_description(cls): } + WEB_DIRECTORY = "./web/js" +EXTENSION_WEB_DIRS = ["./web/extensions"] NODE_DISPLAY_NAME_MAPPINGS = { - - "FlexAudioVisualizerCircular": "**BETA** Flex Audio Visualizer Circular", - "FlexAudioVisualizerLine": "**BETA** Flex Audio Visualizer Line", - - "FlexVideoSpeed": "**BETA** Flex Video Speed", - "FlexVideoDirection": "Flex Video Direction", - "FlexVideoFrameBlend": "**BETA**Flex Video Frame Blend", - "FlexVideoSeek": "Flex Video Seek", - - - "MaskMorph": "Temporal Mask Morph", - "MaskTransform":"Temporal Mask Transform", - "MaskMath":"Temporal Mask Math", - "MaskRings":"Temporal Mask Rings", - "MaskWarp":"Temporal Mask Warp", - - - "OpticalFlowMaskModulation": "Optical Flow Mask Modulation", - "OpticalFlowParticleSystem":"Optical Flow Particle System", - #"OpticalFlowDirectionMask":"Optical Flow Direction Mask", - - "ParticleEmissionMask":"Particle Emission Mask", - "Vortex": "Vortex", - "GravityWell":"Gravity Well", - "ParticleEmitter": "Particle Emitter", - "EmitterMovement":"Emitter Movement", - "SpringJointSetting":"Spring Joint Setting", - "StaticBody":"Static Body", - "ParticleColorModulation":"Particle Color Modulation", - "ParticleSizeModulation": "Particle Size Modulation", - "ParticleSpeedModulation":"Particle Speed Modulation", - - - "AudioSeparator": "Audio Separator", - - "AudioFeatureVisualizer": "Audio Feature Visualizer ***BETA***" , - "Frequency Filter Custom": "Frequency Filter Custom", - "Frequency Filter Preset": "Frequency Filter Preset", - "AudioFilter": "Audio Filter", - - - "MIDILoadAndExtract": "MIDI Load & Feature Extract", - "PitchRangeByNoteNode": "Pitch Range By Note", - "AudioFeatureExtractor": "Audio Feature & Extractor", - "TimeFeatureNode": "Time Feature", - "DepthFeatureNode":"Depth Feature", - "BrightnessFeatureNode":"Brightness Feature", - "MotionFeatureNode":"Motion Feature", - - "FeatureMixer": "FeatureMod Mixer", - "FeatureAccumulate": "FeatureMod Accumulate", - "FeatureCombine": "FeatureMod Combine", - "FeatureOscillator": "FeatureMod Oscillator", - "FeatureScaler": "FeatureMod Scaler", - "FeatureSmoothing": "FeatureMod Smoothing", - "FeatureMath": "FeatureMod Math", - "MovingShape": "Moving Shape", - "TextMaskNode":"Text Mask Node", - - - "DyeImage" : "Dye Image", - "ImageCASBatch": "Image Contrast Adaptive Sharpen Batch", - "ImageIntervalSelectPercentage": "Image Interval Select %", - "ImageScaleToTarget": "Upscale To Target", - - "FeatureToSplineData": "***BETA*** Feature To Spline Data", - "SplineFeatureModulator": "***BETA*** Spline Feature Modulator", - "SplineRhythmModulator": "***BETA*** Spline Rhythm Modulator", + "AudioSeparatorSimple": "Audio Separator", + "ProximityVisualizer": "Preview Proximity", + "EffectVisualizer": "Preview Effect", + "PitchVisualizer": "Preview Pitch", + "FlexVideoSpeed": "**BETA** Flex Video Speed", + "FlexVideoFrameBlend": "**BETA**Flex Video Frame Blend", + "AudioFeatureVisualizer": "Audio Feature Visualizer ***BETA***" , + + "MIDILoadAndExtract": "MIDI Load & Feature Extract", + "PitchRangeByNoteNode": "Pitch Range By Note", + "AudioFeatureExtractor": "Audio Feature Extractor", + "TimeFeatureNode": "Time Feature", + "DepthFeatureNode": "Depth Feature", + "BrightnessFeatureNode": "Brightness Feature", + "MotionFeatureNode": "Motion Feature", + "ImageCASBatch": "Image Contrast Adaptive Sharpen Batch", + "ImageIntervalSelectPercentage":"Image Interval Select %", + "ImageScaleToTarget": "Upscale Image To Target", + "FeatureToSplineData": "***BETA*** Feature To Spline Data", + "SplineFeatureModulator": "***BETA*** Spline Feature Modulator", + "SplineRhythmModulator": "***BETA*** Spline Rhythm Modulator", + "MaskMorph": "Mask Morph [DEPRECATED]", + "MaskTransform": "Mask Transform [DEPRECATED]", + "MaskMath": "Mask Math [DEPRECATED]", + "MaskRings": "Mask Rings [DEPRECATED]", + "MaskWarp": "Mask Warp [DEPRECATED]", } -if HAS_ADVANCED_LIVE_PORTRAIT: - NODE_CLASS_MAPPINGS["FlexExpressionEditor"] = FlexExpressionEditor +# Update NODE_CLASS_MAPPINGS with external nodes +NODE_CLASS_MAPPINGS.update(EXTERNAL_NODE_CLASS_MAPPINGS) import re -suffix = " | RyanOnTheInside" +suffix = " ⚡🅡🅞🅣🅘" for node_name in NODE_CLASS_MAPPINGS.keys(): if node_name not in NODE_DISPLAY_NAME_MAPPINGS: @@ -590,19 +636,12 @@ def get_description(cls): from pathlib import Path if hasattr(PromptServer, "instance"): - # NOTE: we add an extra static path to avoid comfy mechanism # that loads every script in web. # # Again credit to KJNodes and MTB nodes - PromptServer.instance.app.add_routes( [web.static("/ryanontheinside_web_async", (Path(__file__).parent.absolute() / "ryanontheinside_web_async").as_posix())] ) - - - -for node_name, node_class in NODE_CLASS_MAPPINGS.items(): - if hasattr(node_class, 'get_description'): - desc = node_class.get_description() - node_class.DESCRIPTION = desc +#register tooltips after all classes are initialized +register_all_tooltips() diff --git a/examples/FLEX_Advanced_Audio_Reactive_expression.json b/examples/FLEX_Advanced_Audio_Reactive_expressionVERSION2.json similarity index 68% rename from examples/FLEX_Advanced_Audio_Reactive_expression.json rename to examples/FLEX_Advanced_Audio_Reactive_expressionVERSION2.json index 861cabb..d7f8aad 100644 --- a/examples/FLEX_Advanced_Audio_Reactive_expression.json +++ b/examples/FLEX_Advanced_Audio_Reactive_expressionVERSION2.json @@ -1,582 +1,732 @@ { - "last_node_id": 88, - "last_link_id": 76, + "last_node_id": 118, + "last_link_id": 97, "nodes": [ { - "id": 42, - "type": "BrightnessFeatureNode", + "id": 24, + "type": "AdvancedLivePortrait", "pos": [ - -1937.0077758142834, - 948.0409576835841 + 2680, + 360 + ], + "size": [ + 235.1999969482422, + 474.2106018066406 ], - "size": { - "0": 317.4000244140625, - "1": 102 - }, "flags": {}, - "order": 0, - "mode": 4, + "order": 41, + "mode": 0, "inputs": [ { - "name": "video_frames", + "name": "src_images", "type": "IMAGE", - "link": null - } - ], - "outputs": [ - { - "name": "FEATURE", - "type": "FEATURE", - "links": null, - "shape": 3 + "link": null, + "shape": 7 }, { - "name": "FEATURE_PIPE", - "type": "FEATURE_PIPE", - "links": null, - "shape": 3 - } - ], - "properties": { - "Node name for S&R": "BrightnessFeatureNode" - }, - "widgets_values": [ - "mean_brightness", - 30 - ] - }, - { - "id": 43, - "type": "ColorFeatureNode", - "pos": [ - -1607.0077758142834, - 948.0409576835841 - ], - "size": { - "0": 317.4000244140625, - "1": 102 - }, - "flags": {}, - "order": 1, - "mode": 4, - "inputs": [ + "name": "motion_link", + "type": "EDITOR_LINK", + "link": 71, + "shape": 7 + }, { - "name": "video_frames", + "name": "driving_images", "type": "IMAGE", - "link": null - } - ], - "outputs": [ - { - "name": "FEATURE", - "type": "FEATURE", - "links": null, - "shape": 3 + "link": null, + "shape": 7 }, { - "name": "FEATURE_PIPE", - "type": "FEATURE_PIPE", - "links": null, - "shape": 3 - } - ], - "properties": { - "Node name for S&R": "ColorFeatureNode" - }, - "widgets_values": [ - "dominant_color", - 30 - ] - }, - { - "id": 47, - "type": "ManualFeatureFromPipe", - "pos": [ - -1237.0077758142834, - 538.0409576835838 - ], - "size": { - "0": 352.79998779296875, - "1": 150 - }, - "flags": {}, - "order": 2, - "mode": 4, - "inputs": [ - { - "name": "feature_pipe", - "type": "FEATURE_PIPE", - "link": null + "name": "command", + "type": "STRING", + "link": 70, + "widget": { + "name": "command" + } } ], "outputs": [ { - "name": "FEATURE", - "type": "FEATURE", - "links": null, - "shape": 3 - }, - { - "name": "FEATURE_PIPE", - "type": "FEATURE_PIPE", - "links": null, + "name": "images", + "type": "IMAGE", + "links": [ + 16 + ], + "slot_index": 0, "shape": 3 } ], "properties": { - "Node name for S&R": "ManualFeatureFromPipe" + "Node name for S&R": "AdvancedLivePortrait" }, "widgets_values": [ - "0,10,20", - "0.0,0.5,1.0", - 1, - "none" + 0, + 0, + 1.7000000000000002, + "1 = 1:10\n2 = 5:10\n0 = 2:50\n1 = 2:0", + false, + true, + "1 = 1:10\n2 = 5:10\n0 = 2:50\n1 = 2:0" ] }, { - "id": 59, - "type": "PreviewFeature", + "id": 31, + "type": "DownloadOpenUnmixModel", "pos": [ - 227, - 750 + -164, + 619 ], - "size": { - "0": 315, - "1": 58 - }, - "flags": { - "collapsed": true - }, - "order": 40, - "mode": 0, - "inputs": [ - { - "name": "feature", - "type": "FEATURE", - "link": 47 - } + "size": [ + 361.20001220703125, + 58 ], + "flags": {}, + "order": 0, + "mode": 0, + "inputs": [], "outputs": [ { - "name": "FEATURE_PREVIEW", - "type": "IMAGE", + "name": "OPEN_UNMIX_MODEL", + "type": "OPEN_UNMIX_MODEL", "links": [ - 46 + 23 ], - "shape": 3, - "slot_index": 0 + "shape": 3 } ], "properties": { - "Node name for S&R": "PreviewFeature" + "Node name for S&R": "DownloadOpenUnmixModel" }, "widgets_values": [ - false + "umxl" ] }, { - "id": 40, - "type": "TimeFeatureNode", + "id": 64, + "type": "PreviewAudio", "pos": [ - -1597.0077758142834, - 538.0409576835838 + -164, + 1088 + ], + "size": [ + 315, + 76 ], - "size": { - "0": 262.2439880371094, - "1": 150 - }, "flags": {}, - "order": 3, - "mode": 4, + "order": 32, + "mode": 0, "inputs": [ { - "name": "video_frames", - "type": "IMAGE", - "link": null - } - ], - "outputs": [ - { - "name": "FEATURE", - "type": "FEATURE", - "links": null, - "shape": 3 - }, - { - "name": "FEATURE_PIPE", - "type": "FEATURE_PIPE", - "links": null, - "shape": 3 + "name": "audio", + "type": "AUDIO", + "link": 51 } ], + "outputs": [], "properties": { - "Node name for S&R": "TimeFeatureNode" + "Node name for S&R": "PreviewAudio" }, "widgets_values": [ - "smooth", - 30, - 1, - 0 + null ] }, { - "id": 48, - "type": "AreaFeatureNode", + "id": 27, + "type": "VHS_VideoCombine", "pos": [ - -1207.0077758142834, - 738.0409576835838 + 2945, + 280 + ], + "size": [ + 253.4889678955078, + 334 ], - "size": { - "0": 317.4000244140625, - "1": 126 - }, "flags": {}, - "order": 4, + "order": 42, "mode": 4, "inputs": [ { - "name": "video_frames", + "name": "images", "type": "IMAGE", - "link": null + "link": 16 }, { - "name": "masks", - "type": "MASK", - "link": null + "name": "audio", + "type": "AUDIO", + "link": 30, + "shape": 7 + }, + { + "name": "meta_batch", + "type": "VHS_BatchManager", + "link": null, + "shape": 7 + }, + { + "name": "vae", + "type": "VAE", + "link": null, + "shape": 7 } ], "outputs": [ { - "name": "FEATURE", - "type": "FEATURE", - "links": null, - "shape": 3 - }, - { - "name": "FEATURE_PIPE", - "type": "FEATURE_PIPE", + "name": "Filenames", + "type": "VHS_FILENAMES", "links": null, "shape": 3 } ], "properties": { - "Node name for S&R": "AreaFeatureNode" + "Node name for S&R": "VHS_VideoCombine" }, - "widgets_values": [ - "total_area", - 30, - 0.5 - ] + "widgets_values": { + "frame_rate": 15, + "loop_count": 0, + "filename_prefix": "AdvancedLivePortrait", + "format": "video/h264-mp4", + "pix_fmt": "yuv420p", + "crf": 19, + "save_metadata": true, + "trim_to_audio": false, + "pingpong": false, + "save_output": true, + "videopreview": { + "hidden": false, + "paused": false, + "params": { + "filename": "AdvancedLivePortrait_00306-audio.mp4", + "subfolder": "", + "type": "output", + "format": "video/h264-mp4", + "frame_rate": 15 + } + } + } }, { - "id": 46, - "type": "DepthFeatureNode", + "id": 88, + "type": "Note", "pos": [ - -1267.0077758142834, - 938.0409576835841 + -675, + 1660 + ], + "size": [ + 343.6423645019531, + 137.95391845703125 ], - "size": { - "0": 317.4000244140625, - "1": 102 - }, "flags": {}, - "order": 5, - "mode": 4, - "inputs": [ - { - "name": "video_frames", - "type": "IMAGE", - "link": null - }, - { - "name": "depth_maps", - "type": "IMAGE", - "link": null - } + "order": 1, + "mode": 0, + "inputs": [], + "outputs": [], + "properties": { + "text": "" + }, + "widgets_values": [ + "\n<--------here's some ways to manipulate features" ], - "outputs": [ - { - "name": "FEATURE", - "type": "FEATURE", - "links": null, - "shape": 3 - }, + "color": "#432", + "bgcolor": "#653" + }, + { + "id": 56, + "type": "PreviewAudio", + "pos": [ + -152, + 897 + ], + "size": [ + 315, + 76 + ], + "flags": {}, + "order": 30, + "mode": 0, + "inputs": [ { - "name": "FEATURE_PIPE", - "type": "FEATURE_PIPE", - "links": null, - "shape": 3 + "name": "audio", + "type": "AUDIO", + "link": 76 } ], + "outputs": [], "properties": { - "Node name for S&R": "DepthFeatureNode" + "Node name for S&R": "PreviewAudio" }, "widgets_values": [ - "mean_depth", - 30 + null ] }, { - "id": 67, - "type": "PreviewFeature", + "id": 35, + "type": "Note", "pos": [ - 227, - 420 + 1500, + 1290 + ], + "size": [ + 210, + 58 ], - "size": { - "0": 315, - "1": 58 + "flags": {}, + "order": 2, + "mode": 4, + "inputs": [], + "outputs": [], + "properties": { + "text": "" }, + "widgets_values": [ + "modulate pupils with synth" + ], + "color": "#432", + "bgcolor": "#653" + }, + { + "id": 36, + "type": "Note", + "pos": [ + 1870, + 1290 + ], + "size": [ + 210, + 58 + ], "flags": { - "collapsed": true + "collapsed": false }, - "order": 34, + "order": 3, + "mode": 4, + "inputs": [], + "outputs": [], + "properties": { + "text": "" + }, + "widgets_values": [ + "modulate roll with manual feature" + ], + "color": "#432", + "bgcolor": "#653" + }, + { + "id": 65, + "type": "Note", + "pos": [ + 2250, + 1290 + ], + "size": [ + 210, + 58 + ], + "flags": { + "collapsed": false + }, + "order": 4, + "mode": 4, + "inputs": [], + "outputs": [], + "properties": { + "text": "" + }, + "widgets_values": [ + "modulate pitch with drums" + ], + "color": "#432", + "bgcolor": "#653" + }, + { + "id": 61, + "type": "PreviewAudio", + "pos": [ + -163, + 285 + ], + "size": [ + 315, + 76 + ], + "flags": {}, + "order": 29, "mode": 0, "inputs": [ { - "name": "feature", - "type": "FEATURE", - "link": 59 - } - ], - "outputs": [ - { - "name": "FEATURE_PREVIEW", - "type": "IMAGE", - "links": [ - 60 - ], - "shape": 3, - "slot_index": 0 + "name": "audio", + "type": "AUDIO", + "link": 48 } ], + "outputs": [], "properties": { - "Node name for S&R": "PreviewFeature" + "Node name for S&R": "PreviewAudio" }, "widgets_values": [ - false + null ] }, { - "id": 24, - "type": "AdvancedLivePortrait", + "id": 15, + "type": "FlexExpressionEditor", "pos": [ - 2680, - 360 + 1430, + 420 + ], + "size": [ + 338.77764892578125, + 830 ], - "size": { - "0": 235.1999969482422, - "1": 474.2106018066406 - }, "flags": {}, - "order": 44, + "order": 35, "mode": 0, "inputs": [ { - "name": "src_images", + "name": "src_image", "type": "IMAGE", - "link": null + "link": 17, + "shape": 7 }, { - "name": "motion_link", - "type": "EDITOR_LINK", - "link": 71 + "name": "sample_image", + "type": "IMAGE", + "link": null, + "shape": 7 }, { - "name": "driving_images", - "type": "IMAGE", - "link": null + "name": "add_exp", + "type": "EXP_DATA", + "link": null, + "shape": 7 }, { - "name": "command", - "type": "STRING", - "link": 70, - "widget": { - "name": "command" - } + "name": "flex_motion_link", + "type": "EDITOR_LINK", + "link": null, + "shape": 7 + }, + { + "name": "feature", + "type": "FEATURE", + "link": 95, + "shape": 7 } ], "outputs": [ { - "name": "images", + "name": "image", "type": "IMAGE", + "links": null, + "shape": 3 + }, + { + "name": "flex_motion_link", + "type": "EDITOR_LINK", "links": [ - 16 + 18 ], - "slot_index": 0, + "slot_index": 1, + "shape": 3 + }, + { + "name": "save_exp", + "type": "EXP_DATA", + "links": null, + "slot_index": 2, + "shape": 3 + }, + { + "name": "command", + "type": "STRING", + "links": null, "shape": 3 } ], "properties": { - "Node name for S&R": "AdvancedLivePortrait" + "Node name for S&R": "FlexExpressionEditor" }, "widgets_values": [ 0, 0, - 1.7000000000000002, - "1 = 1:10\n2 = 5:10\n0 = 2:50\n1 = 2:0", - false, - true, - "1 = 1:10\n2 = 5:10\n0 = 2:50\n1 = 2:0" + 0, + 0, + 0, + 0, + -14.5, + 0, + 0, + 0, + 0, + 0, + 1, + 1, + "OnlyExpression", + 1.7, + 1, + 1, + 0, + "pupil_x", + "absolute" ] }, { - "id": 44, - "type": "RhythmFeatureExtractor", + "id": 28, + "type": "FlexExpressionEditor", "pos": [ - -1610.415877376783, - 744.9609491386618 + 1830, + 420 + ], + "size": [ + 336, + 830 ], - "size": { - "0": 352.79998779296875, - "1": 126 - }, "flags": {}, - "order": 6, - "mode": 4, + "order": 39, + "mode": 0, "inputs": [ { - "name": "video_frames", + "name": "src_image", "type": "IMAGE", - "link": null + "link": null, + "shape": 7 }, { - "name": "audio", - "type": "AUDIO", - "link": null + "name": "sample_image", + "type": "IMAGE", + "link": null, + "shape": 7 + }, + { + "name": "add_exp", + "type": "EXP_DATA", + "link": null, + "shape": 7 + }, + { + "name": "flex_motion_link", + "type": "EDITOR_LINK", + "link": 18, + "shape": 7 + }, + { + "name": "feature", + "type": "FEATURE", + "link": 96, + "shape": 7 } ], "outputs": [ { - "name": "FEATURE", - "type": "FEATURE", - "links": null, + "name": "image", + "type": "IMAGE", + "links": [], + "slot_index": 0, "shape": 3 }, { - "name": "FEATURE_PIPE", - "type": "FEATURE_PIPE", + "name": "flex_motion_link", + "type": "EDITOR_LINK", + "links": [ + 49 + ], + "slot_index": 1, + "shape": 3 + }, + { + "name": "save_exp", + "type": "EXP_DATA", "links": null, "shape": 3 + }, + { + "name": "command", + "type": "STRING", + "links": [ + 70 + ], + "slot_index": 3, + "shape": 3 } ], "properties": { - "Node name for S&R": "RhythmFeatureExtractor" + "Node name for S&R": "FlexExpressionEditor" }, "widgets_values": [ - "beat_locations", - 30, - 4 + 0, + 0, + 15, + 0, + 15, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 1, + 1, + "OnlyExpression", + 1.7, + 1, + 1, + 0, + "rotate_roll", + "absolute" ] }, { - "id": 45, - "type": "PitchFeatureExtractor", + "id": 62, + "type": "FlexExpressionEditor", "pos": [ - -1917.415877376783, - 1112.9609491386618 + 2210, + 420 + ], + "size": [ + 336, + 830 ], - "size": { - "0": 344.3999938964844, - "1": 122 - }, "flags": {}, - "order": 7, - "mode": 4, + "order": 36, + "mode": 0, "inputs": [ { - "name": "audio", - "type": "AUDIO", - "link": null + "name": "src_image", + "type": "IMAGE", + "link": null, + "shape": 7 }, { - "name": "feature_pipe", - "type": "FEATURE_PIPE", - "link": null + "name": "sample_image", + "type": "IMAGE", + "link": null, + "shape": 7 }, { - "name": "opt_pitch_range_collections", - "type": "PITCH_RANGE_COLLECTION", - "link": null + "name": "add_exp", + "type": "EXP_DATA", + "link": null, + "shape": 7 + }, + { + "name": "flex_motion_link", + "type": "EDITOR_LINK", + "link": 49, + "shape": 7 + }, + { + "name": "feature", + "type": "FEATURE", + "link": 97, + "shape": 7 } ], "outputs": [ { - "name": "FEATURE", - "type": "FEATURE", - "links": null, + "name": "image", + "type": "IMAGE", + "links": [], + "slot_index": 0, "shape": 3 }, { - "name": "FEATURE_PIPE", - "type": "FEATURE_PIPE", + "name": "flex_motion_link", + "type": "EDITOR_LINK", + "links": [ + 71 + ], + "slot_index": 1, + "shape": 3 + }, + { + "name": "save_exp", + "type": "EXP_DATA", "links": null, "shape": 3 + }, + { + "name": "command", + "type": "STRING", + "links": [], + "slot_index": 3, + "shape": 3 } ], "properties": { - "Node name for S&R": "PitchFeatureExtractor" + "Node name for S&R": "FlexExpressionEditor" }, "widgets_values": [ - "frequency", - "medium" + 9, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 1, + 1, + "OnlyExpression", + 1.7, + 1, + 1, + 0, + "rotate_pitch", + "absolute" ] }, { - "id": 68, - "type": "PreviewImage", + "id": 79, + "type": "Note", "pos": [ - 746, - 420 + 2688, + 885 ], - "size": { - "0": 198.45782470703125, - "1": 246 - }, - "flags": {}, - "order": 37, - "mode": 0, - "inputs": [ - { - "name": "images", - "type": "IMAGE", - "link": 60 - } + "size": [ + 486.4787902832031, + 230.9814453125 ], + "flags": {}, + "order": 5, + "mode": 4, + "inputs": [], + "outputs": [], "properties": { - "Node name for S&R": "PreviewImage" - } + "text": "" + }, + "widgets_values": [ + "Flex Parameters: \n constrain_min_max: ensures modulated value is kept within bounds of the \n min and max of the parameter\n strength: a strength multiplier\n feature_threshold: minimum feature value to consider\n feature_param: the expression parameter to modulate\n feature_mode:\n -relative: modulation occurs relative to the parameter value\n -absolute: modulation occurs relative to 0\n\nNotes:\n The value for a parameter in a previous editor changes the starting position of \n that \n parameter in the next editor.\n\n" + ], + "color": "#432", + "bgcolor": "#653" }, { - "id": 31, - "type": "DownloadOpenUnmixModel", + "id": 60, + "type": "Note", "pos": [ - -164, - 619 + -630, + 616 + ], + "size": [ + 343.6423645019531, + 137.95391845703125 ], - "size": { - "0": 361.20001220703125, - "1": 58 - }, "flags": {}, - "order": 8, + "order": 6, "mode": 0, - "outputs": [ - { - "name": "OPEN_UNMIX_MODEL", - "type": "OPEN_UNMIX_MODEL", - "links": [ - 23 - ], - "shape": 3 - } - ], + "inputs": [], + "outputs": [], "properties": { - "Node name for S&R": "DownloadOpenUnmixModel" + "text": "" }, "widgets_values": [ - "umxl" - ] + "Audio is one of many feature sources, and they are interchangeable.\n\n<--------here's some other feature sources. \ntutorial: https://youtu.be/QmWk2xse7pI" + ], + "color": "#432", + "bgcolor": "#653" }, { "id": 32, @@ -585,10 +735,10 @@ -164, 729 ], - "size": { - "0": 336, - "1": 106 - }, + "size": [ + 336, + 106 + ], "flags": {}, "order": 28, "mode": 0, @@ -615,221 +765,178 @@ "name": "drums_audio", "type": "AUDIO", "links": [ - 54, - 76 + 76, + 77 ], - "shape": 3, - "slot_index": 1 + "slot_index": 1, + "shape": 3 }, { "name": "vocals_audio", "type": "AUDIO", "links": [], - "shape": 3, - "slot_index": 2 + "slot_index": 2, + "shape": 3 }, { "name": "bass_audio", "type": "AUDIO", "links": [], - "shape": 3, - "slot_index": 3 + "slot_index": 3, + "shape": 3 }, { "name": "other_audio", "type": "AUDIO", "links": [ 51, - 52 + 82 ], - "shape": 3, - "slot_index": 4 + "slot_index": 4, + "shape": 3 } ], "properties": { "Node name for S&R": "AudioSeparatorSimple" - } + }, + "widgets_values": [] }, { - "id": 64, - "type": "PreviewAudio", + "id": 53, + "type": "Note", "pos": [ - -164, - 1088 + -152.11404418945312, + 1344.482421875 + ], + "size": [ + 234.10646057128906, + 70.32601165771484 ], - "size": { - "0": 315, - "1": 76 - }, "flags": {}, - "order": 32, + "order": 7, "mode": 0, - "inputs": [ - { - "name": "audio", - "type": "AUDIO", - "link": 51 - } - ], + "inputs": [], + "outputs": [], "properties": { - "Node name for S&R": "PreviewAudio" + "text": "" }, "widgets_values": [ - null - ] + "audio feature from drums\nmanual feature for fun\nanother audio feature for the synth" + ], + "color": "#432", + "bgcolor": "#653" }, { - "id": 51, - "type": "PreviewImage", + "id": 91, + "type": "PreviewFeature", "pos": [ - 738.1399993896484, - 729 + 763.4324340820312, + 253.09954833984375 + ], + "size": [ + 315, + 246 ], - "size": { - "0": 206.3178253173828, - "1": 246 - }, "flags": {}, - "order": 42, + "order": 34, "mode": 0, "inputs": [ { - "name": "images", - "type": "IMAGE", - "link": 46 + "name": "feature", + "type": "FEATURE", + "link": 81 } ], + "outputs": [], "properties": { - "Node name for S&R": "PreviewImage" - } + "Node name for S&R": "PreviewFeature" + }, + "widgets_values": [] }, { - "id": 41, - "type": "ProximityFeatureNode", + "id": 16, + "type": "VHS_LoadAudioUpload", "pos": [ - -1973.415877376783, - 781.9609491386618 + -164, + 420 ], - "size": { - "0": 336, - "1": 122 - }, - "flags": {}, - "order": 9, - "mode": 4, - "inputs": [ - { - "name": "video_frames", - "type": "IMAGE", - "link": null - }, - { - "name": "anchor_locations", - "type": "LOCATION", - "link": null - }, - { - "name": "query_locations", - "type": "LOCATION", - "link": null - } + "size": [ + 243.818359375, + 130 ], + "flags": {}, + "order": 8, + "mode": 0, + "inputs": [], "outputs": [ { - "name": "proximity_feature", - "type": "FEATURE", - "links": null, - "shape": 3 - }, - { - "name": "feature_pipe", - "type": "FEATURE_PIPE", - "links": null, + "name": "audio", + "type": "AUDIO", + "links": [ + 24, + 30, + 48 + ], + "slot_index": 0, "shape": 3 } ], "properties": { - "Node name for S&R": "ProximityFeatureNode" + "Node name for S&R": "VHS_LoadAudioUpload" }, - "widgets_values": [ - 30, - "frame" - ] + "widgets_values": { + "audio": "royalty_free.mp3", + "start_time": 16.01, + "duration": 7, + "choose audio to upload": "image" + } }, { - "id": 38, - "type": "MIDILoadAndExtract", + "id": 99, + "type": "PreviewFeature", "pos": [ - -1928.415877376783, - 144.96094913866202 + 736.76318359375, + 652.2568969726562 + ], + "size": [ + 315, + 26 ], - "size": { - "0": 1020, - "1": 346 - }, "flags": {}, - "order": 10, - "mode": 4, + "order": 40, + "mode": 0, "inputs": [ { - "name": "video_frames", - "type": "IMAGE", - "link": null - } - ], - "outputs": [ - { - "name": "MIDI", - "type": "MIDI", - "links": null, - "shape": 3 - }, - { - "name": "FEATURE", + "name": "feature", "type": "FEATURE", - "links": null, - "shape": 3 - }, - { - "name": "FEATURE_PIPE", - "type": "FEATURE_PIPE", - "links": null, - "shape": 3 + "link": 89 } ], + "outputs": [], "properties": { - "selectedNotes": [] + "Node name for S&R": "PreviewFeature" }, - "widgets_values": [ - "Velocity", - "prom_single_track.mid", - "all", - 30, - false, - "", - "upload", - "refresh" - ] + "widgets_values": [] }, { - "id": 58, - "type": "ManualFeatureFromPipe", + "id": 98, + "type": "FeatureRenormalize", "pos": [ - 227, - 729 + 279.18060302734375, + 745.884765625 + ], + "size": [ + 365.4000244140625, + 106 ], - "size": { - "0": 352.79998779296875, - "1": 150 - }, "flags": {}, - "order": 36, + "order": 37, "mode": 0, "inputs": [ { - "name": "feature_pipe", - "type": "FEATURE_PIPE", - "link": 44 + "name": "feature", + "type": "FEATURE", + "link": 87 } ], "outputs": [ @@ -837,249 +944,170 @@ "name": "FEATURE", "type": "FEATURE", "links": [ - 45, - 47 + 88, + 89, + 93 ], - "shape": 3, "slot_index": 0 - }, - { - "name": "FEATURE_PIPE", - "type": "FEATURE_PIPE", - "links": null, - "shape": 3, - "slot_index": 1 } ], "properties": { - "Node name for S&R": "ManualFeatureFromPipe" + "Node name for S&R": "FeatureRenormalize" }, "widgets_values": [ - "0", - "-1", + -1, 1, - "ease_out" + false ] }, { - "id": 21, - "type": "AudioFeatureExtractorFirst", + "id": 101, + "type": "MIDILoadAndExtract", "pos": [ - 227, - 980 + -1928.4158935546875, + 144.96095275878906 ], - "size": { - "0": 394.79998779296875, - "1": 170 - }, - "flags": {}, - "order": 33, - "mode": 0, - "inputs": [ - { - "name": "audio", - "type": "AUDIO", - "link": 52 - } + "size": [ + 1020, + 398 ], + "flags": {}, + "order": 9, + "mode": 4, + "inputs": [], "outputs": [ { - "name": "feature", - "type": "FEATURE", - "links": [ - 73 - ], - "shape": 3, - "slot_index": 0 - }, - { - "name": "feature_pipe", - "type": "FEATURE_PIPE", - "links": [ - 44 - ], - "shape": 3, - "slot_index": 1 + "name": "MIDI", + "type": "MIDI", + "links": null }, { - "name": "frame_count", - "type": "INT", - "links": null, - "shape": 3, - "slot_index": 2 + "name": "FEATURE", + "type": "FEATURE", + "links": null } ], "properties": { - "Node name for S&R": "AudioFeatureExtractorFirst" + "selectedNotes": [] }, "widgets_values": [ - "amplitude_envelope", + "Velocity", + 30, + 30, 512, 512, - 15 + "prom_single_track.mid", + "all", + false, + "", + "upload", + "refresh" ] }, { - "id": 73, - "type": "FeatureRenormalize", + "id": 102, + "type": "MotionFeatureNode", "pos": [ - 227, - 1211 + -1915, + 542 + ], + "size": [ + 315, + 202 ], - "size": { - "0": 310.79998779296875, - "1": 126 - }, "flags": {}, - "order": 35, - "mode": 0, + "order": 10, + "mode": 4, "inputs": [ { - "name": "feature", - "type": "FEATURE", - "link": 73 + "name": "images", + "type": "IMAGE", + "link": null } ], "outputs": [ { "name": "FEATURE", "type": "FEATURE", - "links": [ - 74 - ], - "shape": 3, - "slot_index": 0 - }, - { - "name": "FEATURE_VISUALIZATION", - "type": "IMAGE", - "links": [ - 72 - ], - "shape": 3, - "slot_index": 1 + "links": null } ], "properties": { - "Node name for S&R": "FeatureRenormalize" + "Node name for S&R": "MotionFeatureNode" }, "widgets_values": [ - -1, - 1, - false + "mean_motion", + 30, + 512, + 512, + "Farneback", + 0, + 0 ] }, { - "id": 27, - "type": "VHS_VideoCombine", + "id": 103, + "type": "ProximityFeatureNode", "pos": [ - 2945, - 280 + -1973.4158935546875, + 781.9609375 ], "size": [ - 253.4889678955078, - 557.4889678955078 + 430.8000183105469, + 198 ], "flags": {}, - "order": 45, - "mode": 0, + "order": 11, + "mode": 4, "inputs": [ { - "name": "images", - "type": "IMAGE", - "link": 16 - }, - { - "name": "audio", - "type": "AUDIO", - "link": 30 - }, - { - "name": "meta_batch", - "type": "VHS_BatchManager", + "name": "anchor_locations", + "type": "LOCATION", "link": null }, { - "name": "vae", - "type": "VAE", + "name": "query_locations", + "type": "LOCATION", "link": null } ], "outputs": [ { - "name": "Filenames", - "type": "VHS_FILENAMES", - "links": null, - "shape": 3 - } - ], - "properties": { - "Node name for S&R": "VHS_VideoCombine" - }, - "widgets_values": { - "frame_rate": 15, - "loop_count": 0, - "filename_prefix": "AdvancedLivePortrait", - "format": "video/h264-mp4", - "pix_fmt": "yuv420p", - "crf": 19, - "save_metadata": true, - "pingpong": false, - "save_output": true, - "videopreview": { - "hidden": false, - "paused": false, - "params": { - "filename": "AdvancedLivePortrait_00306-audio.mp4", - "subfolder": "", - "type": "output", - "format": "video/h264-mp4", - "frame_rate": 15 - } + "name": "proximity_feature", + "type": "FEATURE", + "links": null } - } - }, - { - "id": 53, - "type": "Note", - "pos": [ - 227, - 1387 ], - "size": { - "0": 234.10646057128906, - "1": 70.32601165771484 - }, - "flags": {}, - "order": 11, - "mode": 0, "properties": { - "text": "" + "Node name for S&R": "ProximityFeatureNode" }, "widgets_values": [ - "audio feature from drums\nmanual feature for fun\nanother audio feature for the synth" - ], - "color": "#432", - "bgcolor": "#653" + "normalization_method", + 30, + 30, + 512, + 512, + "frame" + ] }, { - "id": 39, - "type": "MotionFeatureNode", + "id": 104, + "type": "RhythmFeatureExtractor", "pos": [ - -1915, - 542 + -1610.4158935546875, + 744.9609375 + ], + "size": [ + 428.4000244140625, + 178 ], - "size": { - "0": 268.79998779296875, - "1": 174 - }, "flags": {}, "order": 12, "mode": 4, "inputs": [ { - "name": "video_frames", - "type": "IMAGE", + "name": "audio", + "type": "AUDIO", "link": null } ], @@ -1087,103 +1115,74 @@ { "name": "FEATURE", "type": "FEATURE", - "links": null, - "shape": 3 - }, - { - "name": "FEATURE_PIPE", - "type": "FEATURE_PIPE", - "links": null, - "shape": 3 + "links": null } ], "properties": { - "Node name for S&R": "MotionFeatureNode" + "Node name for S&R": "RhythmFeatureExtractor" }, "widgets_values": [ - "mean_motion", + "beat_locations", 30, - "Farneback", 0, - 0 + 512, + 512, + 4 ] }, { - "id": 81, - "type": "FeatureMixer", + "id": 105, + "type": "TimeFeatureNode", "pos": [ - -2048.801412019285, - 1448.3726434811094 + -1597.0078125, + 538.0409545898438 + ], + "size": [ + 315, + 202 ], - "size": { - "0": 367.79998779296875, - "1": 342 - }, "flags": {}, "order": 13, "mode": 4, - "inputs": [ - { - "name": "feature", - "type": "FEATURE", - "link": null - } - ], + "inputs": [], "outputs": [ { "name": "FEATURE", "type": "FEATURE", - "links": null, - "shape": 3 - }, - { - "name": "FEATURE_VISUALIZATION", - "type": "IMAGE", - "links": null, - "shape": 3 + "links": null } ], "properties": { - "Node name for S&R": "FeatureMixer" + "Node name for S&R": "TimeFeatureNode" }, "widgets_values": [ - 1, - 0, - 1, - 1, - 1, - 1, - 1, - 0, - 0, - 1, - 0.5, - false + "smooth", + 30, + 30, + 512, + 512, + 30, + 0 ] }, { - "id": 82, - "type": "FeatureCombine", + "id": 106, + "type": "ManualFeatureFromPipe", "pos": [ - -1645.801412019285, - 1451.3726434811094 + -1237.0078125, + 538.0409545898438 + ], + "size": [ + 428.4000244140625, + 130 ], - "size": { - "0": 380.4000244140625, - "1": 150 - }, "flags": {}, "order": 14, "mode": 4, "inputs": [ { - "name": "feature1", - "type": "FEATURE", - "link": null - }, - { - "name": "feature2", - "type": "FEATURE", + "name": "feature_pipe", + "type": "FEATURE_PIPE", "link": null } ], @@ -1191,44 +1190,37 @@ { "name": "FEATURE", "type": "FEATURE", - "links": null, - "shape": 3 - }, - { - "name": "FEATURE_VISUALIZATION", - "type": "IMAGE", - "links": null, - "shape": 3 + "links": null } ], "properties": { - "Node name for S&R": "FeatureCombine" + "Node name for S&R": "ManualFeatureFromPipe" }, "widgets_values": [ - "add", - 1, + "0,10,20", + "0.0,0.5,1.0", 1, - false + "none" ] }, { - "id": 83, - "type": "FeatureOscillator", + "id": 107, + "type": "AreaFeatureNode", "pos": [ - -1232.801412019285, - 1461.3726434811094 + -1207.0078125, + 738.0409545898438 + ], + "size": [ + 340.20001220703125, + 154 ], - "size": { - "0": 367.79998779296875, - "1": 198 - }, "flags": {}, "order": 15, "mode": 4, "inputs": [ { - "name": "feature", - "type": "FEATURE", + "name": "masks", + "type": "MASK", "link": null } ], @@ -1236,46 +1228,38 @@ { "name": "FEATURE", "type": "FEATURE", - "links": null, - "shape": 3 - }, - { - "name": "FEATURE_VISUALIZATION", - "type": "IMAGE", - "links": null, - "shape": 3 + "links": null } ], "properties": { - "Node name for S&R": "FeatureOscillator" + "Node name for S&R": "AreaFeatureNode" }, "widgets_values": [ - "sine", - 1, - 0.5, - 0, - 0.5, - false + "total_area", + 30, + 512, + 512, + 0.5 ] }, { - "id": 86, - "type": "FeatureMath", + "id": 108, + "type": "DepthFeatureNode", "pos": [ - -1639.801412019285, - 1655.3726434811094 + -1267.0078125, + 938.0409545898438 + ], + "size": [ + 315, + 130 ], - "size": { - "0": 367.79998779296875, - "1": 126 - }, "flags": {}, "order": 16, "mode": 4, "inputs": [ { - "name": "feature", - "type": "FEATURE", + "name": "depth_maps", + "type": "IMAGE", "link": null } ], @@ -1283,43 +1267,37 @@ { "name": "FEATURE", "type": "FEATURE", - "links": null, - "shape": 3 - }, - { - "name": "FEATURE_VISUALIZATION", - "type": "IMAGE", - "links": null, - "shape": 3 + "links": null } ], "properties": { - "Node name for S&R": "FeatureMath" + "Node name for S&R": "DepthFeatureNode" }, "widgets_values": [ - 0, - "add", - false + "mean_depth", + 30, + 512, + 512 ] }, { - "id": 84, - "type": "FeatureScaler", + "id": 109, + "type": "ColorFeatureNode", "pos": [ - -2049.801412019285, - 1850.3726434811097 + -1607.0078125, + 948.0409545898438 + ], + "size": [ + 352.79998779296875, + 130 ], - "size": { - "0": 367.79998779296875, - "1": 174 - }, "flags": {}, "order": 17, "mode": 4, "inputs": [ { - "name": "feature", - "type": "FEATURE", + "name": "images", + "type": "IMAGE", "link": null } ], @@ -1327,45 +1305,37 @@ { "name": "FEATURE", "type": "FEATURE", - "links": null, - "shape": 3 - }, - { - "name": "FEATURE_VISUALIZATION", - "type": "IMAGE", - "links": null, - "shape": 3 + "links": null } ], "properties": { - "Node name for S&R": "FeatureScaler" + "Node name for S&R": "ColorFeatureNode" }, "widgets_values": [ - "linear", - 0, - 1, - 2, - false + "dominant_color", + 30, + 512, + 512 ] }, { - "id": 85, - "type": "FeatureSmoothing", + "id": 110, + "type": "BrightnessFeatureNode", "pos": [ - -1633.801412019285, - 1852.3726434811097 + -1937.0078125, + 948.0409545898438 + ], + "size": [ + 352.79998779296875, + 130 ], - "size": { - "0": 367.79998779296875, - "1": 174 - }, "flags": {}, "order": 18, "mode": 4, "inputs": [ { - "name": "feature", - "type": "FEATURE", + "name": "images", + "type": "IMAGE", "link": null } ], @@ -1373,38 +1343,30 @@ { "name": "FEATURE", "type": "FEATURE", - "links": null, - "shape": 3 - }, - { - "name": "FEATURE_VISUALIZATION", - "type": "IMAGE", - "links": null, - "shape": 3 + "links": null } ], "properties": { - "Node name for S&R": "FeatureSmoothing" + "Node name for S&R": "BrightnessFeatureNode" }, "widgets_values": [ - "moving_average", - 5, - 0.3, - 1, - false + "mean_brightness", + 30, + 512, + 512 ] }, { - "id": 87, - "type": "FeatureAccumulate", + "id": 111, + "type": "FeatureMixer", "pos": [ - -1229.801412019285, - 1731.3726434811094 + -2048.801513671875, + 1448.3726806640625 + ], + "size": [ + 315, + 322 ], - "size": { - "0": 367.79998779296875, - "1": 222 - }, "flags": {}, "order": 19, "mode": 4, @@ -1419,683 +1381,505 @@ { "name": "FEATURE", "type": "FEATURE", - "links": null, - "shape": 3 - }, - { - "name": "FEATURE_VISUALIZATION", - "type": "IMAGE", - "links": null, - "shape": 3 + "links": null } ], "properties": { - "Node name for S&R": "FeatureAccumulate" + "Node name for S&R": "FeatureMixer" }, "widgets_values": [ + 1, 0, 1, + 1, + 1, + 1, + 1, 0, - false, - false, 0, + 1, + 0.5, false ] }, { - "id": 88, - "type": "Note", + "id": 112, + "type": "PitchFeatureExtractor", "pos": [ - -675, - 1660 - ], - "size": { - "0": 343.6423645019531, - "1": 137.95391845703125 - }, - "flags": {}, - "order": 20, - "mode": 0, - "properties": { - "text": "" - }, - "widgets_values": [ - "\n<--------here's some ways to manipulate features" + -1917.4158935546875, + 1112.9609375 ], - "color": "#432", - "bgcolor": "#653" - }, - { - "id": 63, - "type": "AudioFeatureExtractorFirst", - "pos": [ - 227, - 420 + "size": [ + 443.4000244140625, + 198 ], - "size": { - "0": 394.79998779296875, - "1": 170 - }, "flags": {}, - "order": 30, - "mode": 0, + "order": 20, + "mode": 4, "inputs": [ { "name": "audio", "type": "AUDIO", - "link": 54 + "link": null + }, + { + "name": "opt_pitch_range_collections", + "type": "PITCH_RANGE_COLLECTION", + "link": null, + "shape": 7 } ], "outputs": [ { - "name": "feature", + "name": "FEATURE", "type": "FEATURE", - "links": [ - 55, - 59 - ], - "shape": 3, - "slot_index": 0 - }, - { - "name": "feature_pipe", - "type": "FEATURE_PIPE", - "links": [], - "shape": 3, - "slot_index": 1 - }, - { - "name": "frame_count", - "type": "INT", - "links": null, - "shape": 3, - "slot_index": 2 + "links": null } ], "properties": { - "Node name for S&R": "AudioFeatureExtractorFirst" + "Node name for S&R": "PitchFeatureExtractor" }, "widgets_values": [ - "amplitude_envelope", + "frequency", + 30, + 0, 512, 512, - 15 + "medium" ] }, { - "id": 56, - "type": "PreviewAudio", + "id": 113, + "type": "FeatureCombine", "pos": [ - -152, - 897 + -1645.8013916015625, + 1451.3726806640625 + ], + "size": [ + 315, + 150 ], - "size": { - "0": 315, - "1": 76 - }, "flags": {}, - "order": 31, - "mode": 0, + "order": 21, + "mode": 4, "inputs": [ { - "name": "audio", - "type": "AUDIO", - "link": 76 + "name": "feature1", + "type": "FEATURE", + "link": null + }, + { + "name": "feature2", + "type": "FEATURE", + "link": null + } + ], + "outputs": [ + { + "name": "FEATURE", + "type": "FEATURE", + "links": null } ], "properties": { - "Node name for S&R": "PreviewAudio" + "Node name for S&R": "FeatureCombine" }, "widgets_values": [ - null + "add", + 1, + 1, + false ] }, { - "id": 69, - "type": "PreviewImage", + "id": 114, + "type": "FeatureOscillator", "pos": [ - 746.2026214599609, - 1067 + -1232.8013916015625, + 1461.3726806640625 + ], + "size": [ + 352.79998779296875, + 178 ], - "size": { - "0": 198.2552032470703, - "1": 246 - }, "flags": {}, - "order": 39, - "mode": 0, + "order": 22, + "mode": 4, "inputs": [ { - "name": "images", - "type": "IMAGE", - "link": 72 + "name": "feature", + "type": "FEATURE", + "link": null } ], - "properties": { - "Node name for S&R": "PreviewImage" - } - }, - { - "id": 35, - "type": "Note", - "pos": [ - 1500, - 1290 - ], - "size": { - "0": 210, - "1": 58 - }, - "flags": {}, - "order": 21, - "mode": 0, - "properties": { - "text": "" - }, - "widgets_values": [ - "modulate pupils with synth" - ], - "color": "#432", - "bgcolor": "#653" - }, - { - "id": 36, - "type": "Note", - "pos": [ - 1870, - 1290 + "outputs": [ + { + "name": "FEATURE", + "type": "FEATURE", + "links": null + } ], - "size": { - "0": 210, - "1": 58 - }, - "flags": { - "collapsed": false - }, - "order": 22, - "mode": 0, "properties": { - "text": "" + "Node name for S&R": "FeatureOscillator" }, "widgets_values": [ - "modulate roll with manual feature" - ], - "color": "#432", - "bgcolor": "#653" + "sine", + 1, + 0.5, + 0, + 0.5, + false + ] }, { - "id": 65, - "type": "Note", + "id": 115, + "type": "FeatureAccumulate", "pos": [ - 2250, - 1290 - ], - "size": { - "0": 210, - "1": 58 - }, - "flags": { - "collapsed": false - }, - "order": 23, - "mode": 0, - "properties": { - "text": "" - }, - "widgets_values": [ - "modulate pitch with drums" + -1229.8013916015625, + 1731.3726806640625 ], - "color": "#432", - "bgcolor": "#653" - }, - { - "id": 61, - "type": "PreviewAudio", - "pos": [ - -163, - 285 + "size": [ + 352.79998779296875, + 202 ], - "size": { - "0": 315, - "1": 76 - }, "flags": {}, - "order": 29, - "mode": 0, + "order": 23, + "mode": 4, "inputs": [ { - "name": "audio", - "type": "AUDIO", - "link": 48 + "name": "feature", + "type": "FEATURE", + "link": null + } + ], + "outputs": [ + { + "name": "FEATURE", + "type": "FEATURE", + "links": null } ], "properties": { - "Node name for S&R": "PreviewAudio" + "Node name for S&R": "FeatureAccumulate" }, "widgets_values": [ - null + 0, + 1, + 0, + false, + false, + 0, + false ] }, { - "id": 16, - "type": "VHS_LoadAudioUpload", + "id": 116, + "type": "FeatureMath", "pos": [ - -164, - 420 + -1639.8013916015625, + 1655.3726806640625 + ], + "size": [ + 315, + 106 ], - "size": { - "0": 243.818359375, - "1": 130 - }, "flags": {}, "order": 24, - "mode": 0, + "mode": 4, + "inputs": [ + { + "name": "feature", + "type": "FEATURE", + "link": null + } + ], "outputs": [ { - "name": "audio", - "type": "AUDIO", - "links": [ - 24, - 30, - 48 - ], - "shape": 3, - "slot_index": 0 + "name": "FEATURE", + "type": "FEATURE", + "links": null } ], "properties": { - "Node name for S&R": "VHS_LoadAudioUpload" + "Node name for S&R": "FeatureMath" }, - "widgets_values": { - "audio": "royalty_free.mp3", - "start_time": 16.01, - "duration": 7, - "choose audio to upload": "image" - } + "widgets_values": [ + 0, + "add", + false + ] }, { - "id": 22, - "type": "LoadImage", + "id": 117, + "type": "FeatureSmoothing", "pos": [ - 1079, - 420 + -1633.8013916015625, + 1852.3726806640625 + ], + "size": [ + 340.20001220703125, + 154 ], - "size": { - "0": 315, - "1": 314 - }, "flags": {}, "order": 25, - "mode": 0, - "outputs": [ + "mode": 4, + "inputs": [ { - "name": "IMAGE", - "type": "IMAGE", - "links": [ - 17 - ], - "slot_index": 0, - "shape": 3 - }, + "name": "feature", + "type": "FEATURE", + "link": null + } + ], + "outputs": [ { - "name": "MASK", - "type": "MASK", - "links": null, - "slot_index": 1, - "shape": 3 + "name": "FEATURE", + "type": "FEATURE", + "links": null } ], "properties": { - "Node name for S&R": "LoadImage" + "Node name for S&R": "FeatureSmoothing" }, "widgets_values": [ - "source_image.png", - "image" + "moving_average", + 5, + 0.3, + 1, + false ] }, { - "id": 15, - "type": "FlexExpressionEditor", + "id": 118, + "type": "FeatureScaler", "pos": [ - 1430, - 420 + -2049.801513671875, + 1850.3726806640625 + ], + "size": [ + 315, + 154 ], - "size": { - "0": 338.77764892578125, - "1": 830 - }, "flags": {}, - "order": 38, - "mode": 0, + "order": 26, + "mode": 4, "inputs": [ - { - "name": "src_image", - "type": "IMAGE", - "link": 17 - }, - { - "name": "sample_image", - "type": "IMAGE", - "link": null - }, - { - "name": "add_exp", - "type": "EXP_DATA", - "link": null - }, - { - "name": "flex_motion_link", - "type": "EDITOR_LINK", - "link": null - }, { "name": "feature", "type": "FEATURE", - "link": 74 + "link": null } ], "outputs": [ { - "name": "image", - "type": "IMAGE", - "links": null, - "shape": 3 - }, - { - "name": "flex_motion_link", - "type": "EDITOR_LINK", - "links": [ - 18 - ], - "shape": 3, - "slot_index": 1 - }, - { - "name": "save_exp", - "type": "EXP_DATA", - "links": null, - "shape": 3, - "slot_index": 2 - }, - { - "name": "command", - "type": "STRING", - "links": null, - "shape": 3 + "name": "FEATURE", + "type": "FEATURE", + "links": null } ], "properties": { - "Node name for S&R": "FlexExpressionEditor" + "Node name for S&R": "FeatureScaler" }, "widgets_values": [ + "linear", 0, - 0, - 0, - 0, - 0, - 0, - -14.5, - 0, - 0, - 0, - 0, - 0, - 1, - 1, - "OnlyExpression", - 1.7, - 1, 1, - 0, - "pupil_x", - "absolute" + 2, + false ] }, { - "id": 28, - "type": "FlexExpressionEditor", + "id": 89, + "type": "AudioFeatureExtractor", "pos": [ - 1830, - 420 + 271.2274169921875, + 268.01739501953125 + ], + "size": [ + 415.8000183105469, + 174 ], - "size": { - "0": 336, - "1": 830 - }, "flags": {}, - "order": 41, + "order": 31, "mode": 0, "inputs": [ { - "name": "src_image", - "type": "IMAGE", - "link": null - }, - { - "name": "sample_image", - "type": "IMAGE", - "link": null - }, - { - "name": "add_exp", - "type": "EXP_DATA", - "link": null - }, - { - "name": "flex_motion_link", - "type": "EDITOR_LINK", - "link": 18 - }, - { - "name": "feature", - "type": "FEATURE", - "link": 45 + "name": "audio", + "type": "AUDIO", + "link": 77 } ], "outputs": [ { - "name": "image", - "type": "IMAGE", - "links": [], - "shape": 3, - "slot_index": 0 - }, - { - "name": "flex_motion_link", - "type": "EDITOR_LINK", + "name": "feature", + "type": "FEATURE", "links": [ - 49 + 78, + 81, + 92, + 94, + 95 ], - "shape": 3, - "slot_index": 1 - }, - { - "name": "save_exp", - "type": "EXP_DATA", - "links": null, - "shape": 3 + "slot_index": 0 }, { - "name": "command", - "type": "STRING", - "links": [ - 70 - ], - "shape": 3, - "slot_index": 3 + "name": "frame_count", + "type": "INT", + "links": [], + "slot_index": 1 } ], "properties": { - "Node name for S&R": "FlexExpressionEditor" + "Node name for S&R": "AudioFeatureExtractor" }, "widgets_values": [ + "amplitude_envelope", + 30, 0, - 0, - 15, - 0, - 15, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 1, - 1, - "OnlyExpression", - 1.7, - 1, - 1, - 0, - "rotate_roll", - "absolute" + 512, + 512 ] }, { - "id": 62, - "type": "FlexExpressionEditor", + "id": 93, + "type": "AudioFeatureExtractor", "pos": [ - 2210, - 420 + 283.9638366699219, + 512.5435180664062 + ], + "size": [ + 415.8000183105469, + 174 ], - "size": { - "0": 336, - "1": 830 - }, "flags": {}, - "order": 43, + "order": 33, "mode": 0, "inputs": [ { - "name": "src_image", - "type": "IMAGE", - "link": null - }, - { - "name": "sample_image", - "type": "IMAGE", - "link": null - }, - { - "name": "add_exp", - "type": "EXP_DATA", - "link": null - }, - { - "name": "flex_motion_link", - "type": "EDITOR_LINK", - "link": 49 - }, - { - "name": "feature", - "type": "FEATURE", - "link": 55 + "name": "audio", + "type": "AUDIO", + "link": 82 } ], "outputs": [ { - "name": "image", - "type": "IMAGE", - "links": [], - "shape": 3, + "name": "feature", + "type": "FEATURE", + "links": [ + 87, + 96 + ], "slot_index": 0 }, { - "name": "flex_motion_link", - "type": "EDITOR_LINK", + "name": "frame_count", + "type": "INT", "links": [ - 71 + 90 ], - "shape": 3, "slot_index": 1 - }, - { - "name": "save_exp", - "type": "EXP_DATA", - "links": null, - "shape": 3 - }, - { - "name": "command", - "type": "STRING", - "links": [], - "shape": 3, - "slot_index": 3 } ], "properties": { - "Node name for S&R": "FlexExpressionEditor" + "Node name for S&R": "AudioFeatureExtractor" }, "widgets_values": [ - 9, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 1, - 1, - "OnlyExpression", - 1.7, - 1, - 1, + "amplitude_envelope", + 30, 0, - "rotate_pitch", - "absolute" + 512, + 512 ] }, { - "id": 79, - "type": "Note", + "id": 100, + "type": "ManualFeatureNode", "pos": [ - 2688, - 885 + 287.90325927734375, + 915.4197387695312 + ], + "size": [ + 365.4000244140625, + 250 ], - "size": { - "0": 486.4787902832031, - "1": 230.9814453125 - }, "flags": {}, - "order": 26, + "order": 38, "mode": 0, + "inputs": [ + { + "name": "frame_count", + "type": "INT", + "link": 90, + "widget": { + "name": "frame_count" + } + } + ], + "outputs": [ + { + "name": "FEATURE", + "type": "FEATURE", + "links": [ + 91, + 97 + ], + "slot_index": 0 + } + ], "properties": { - "text": "" + "Node name for S&R": "ManualFeatureNode" }, "widgets_values": [ - "Flex Parameters: \n constrain_min_max: ensures modulated value is kept within bounds of the \n min and max of the parameter\n strength: a strength multiplier\n feature_threshold: minimum feature value to consider\n feature_param: the expression parameter to modulate\n feature_mode:\n -relative: modulation occurs relative to the parameter value\n -absolute: modulation occurs relative to 0\n\nNotes:\n The value for a parameter in a previous editor changes the starting position of \n that \n parameter in the next editor.\n\n" - ], - "color": "#432", - "bgcolor": "#653" + "manual", + 30, + 30, + 512, + 512, + "0", + "-1", + 1, + "none" + ] }, { - "id": 60, - "type": "Note", + "id": 22, + "type": "LoadImage", "pos": [ - -630, - 616 + 1079, + 420 + ], + "size": [ + 315, + 314 ], - "size": { - "0": 343.6423645019531, - "1": 137.95391845703125 - }, "flags": {}, "order": 27, "mode": 0, + "inputs": [], + "outputs": [ + { + "name": "IMAGE", + "type": "IMAGE", + "links": [ + 17 + ], + "slot_index": 0, + "shape": 3 + }, + { + "name": "MASK", + "type": "MASK", + "links": null, + "slot_index": 1, + "shape": 3 + } + ], "properties": { - "text": "" + "Node name for S&R": "LoadImage" }, "widgets_values": [ - "Audio is one of many feature sources, and they are interchangeable.\n\n<--------here's some other feature sources. \ntutorial: https://youtu.be/QmWk2xse7pI" - ], - "color": "#432", - "bgcolor": "#653" + "source_image.png", + "image" + ] } ], "links": [ @@ -2147,38 +1931,6 @@ 1, "AUDIO" ], - [ - 44, - 21, - 1, - 58, - 0, - "FEATURE_PIPE" - ], - [ - 45, - 58, - 0, - 28, - 4, - "FEATURE" - ], - [ - 46, - 59, - 0, - 51, - 0, - "IMAGE" - ], - [ - 47, - 58, - 0, - 59, - 0, - "FEATURE" - ], [ 48, 16, @@ -2204,96 +1956,153 @@ "AUDIO" ], [ - 52, + 70, + 28, + 3, + 24, + 3, + "STRING" + ], + [ + 71, + 62, + 1, + 24, + 1, + "EDITOR_LINK" + ], + [ + 76, 32, - 4, - 21, + 1, + 56, 0, "AUDIO" ], [ - 54, + 77, 32, 1, - 63, + 89, 0, "AUDIO" ], [ - 55, - 63, + 78, + 89, 0, 62, 4, "FEATURE" ], [ - 59, - 63, + 81, + 89, 0, - 67, + 91, 0, "FEATURE" ], [ - 60, - 67, + 82, + 32, + 4, + 93, + 0, + "AUDIO" + ], + [ + 87, + 93, 0, - 68, + 98, 0, - "IMAGE" + "FEATURE" ], [ - 70, - 28, - 3, - 24, - 3, - "STRING" + 88, + 98, + 0, + 15, + 4, + "FEATURE" ], [ - 71, - 62, - 1, - 24, - 1, - "EDITOR_LINK" + 89, + 98, + 0, + 99, + 0, + "FEATURE" ], [ - 72, - 73, + 90, + 93, 1, - 69, + 100, 0, - "IMAGE" + "INT" + ], + [ + 91, + 100, + 0, + 28, + 4, + "FEATURE" + ], + [ + 92, + 89, + 0, + 15, + 4, + "FEATURE" ], [ - 73, - 21, + 93, + 98, 0, - 73, + 15, + 4, + "FEATURE" + ], + [ + 94, + 89, 0, + 62, + 4, "FEATURE" ], [ - 74, - 73, + 95, + 89, 0, 15, 4, "FEATURE" ], [ - 76, - 32, - 1, - 56, + 96, + 93, 0, - "AUDIO" + 28, + 4, + "FEATURE" + ], + [ + 97, + 100, + 0, + 62, + 4, + "FEATURE" ] ], "groups": [ { + "id": 1, "title": ":)", "bounding": [ -2768, @@ -2302,9 +2111,11 @@ 1400 ], "color": "#3f789e", - "font_size": 1000 + "font_size": 1000, + "flags": {} }, { + "id": 2, "title": "Feature Manipulation", "bounding": [ -2092, @@ -2313,18 +2124,26 @@ 699 ], "color": "#3f789e", - "font_size": 24 + "font_size": 24, + "flags": {} } ], "config": {}, "extra": { "ds": { - "scale": 1.2100000000000002, + "scale": 0.31384283767210047, "offset": [ - 1166.858494860238, - -303.268542001848 + 1245.7201833518534, + 636.501480335283 ] - } + }, + "node_versions": { + "ComfyUI-AdvancedLivePortrait": "3bba732915e22f18af0d221b9c5c282990181f1b", + "ComfyUI_RyanOnTheInside": "0507092b2c3f5c51b45989c6c4fd51c1add26513", + "comfy-core": "0.3.12", + "ComfyUI-VideoHelperSuite": "6953fa21443cf55f7c3b61ed3f4c87c5d3677fe1" + }, + "ue_links": [] }, "version": 0.4 } \ No newline at end of file diff --git a/examples/FLEX_Advanced_Inserting_expressions_into_vidVERSION2.json b/examples/FLEX_Advanced_Inserting_expressions_into_vidVERSION2.json new file mode 100644 index 0000000..78e8bc8 --- /dev/null +++ b/examples/FLEX_Advanced_Inserting_expressions_into_vidVERSION2.json @@ -0,0 +1,1948 @@ +{ + "last_node_id": 69, + "last_link_id": 54, + "nodes": [ + { + "id": 24, + "type": "Note", + "pos": [ + -350, + 520 + ], + "size": [ + 210, + 58 + ], + "flags": {}, + "order": 0, + "mode": 0, + "inputs": [], + "outputs": [], + "properties": { + "text": "" + }, + "widgets_values": [ + "orginal src : motion0\n" + ], + "color": "#432", + "bgcolor": "#653" + }, + { + "id": 33, + "type": "VHS_VideoInfo", + "pos": [ + 30, + 60 + ], + "size": [ + 262, + 206 + ], + "flags": { + "collapsed": true + }, + "order": 26, + "mode": 0, + "inputs": [ + { + "name": "video_info", + "type": "VHS_VIDEOINFO", + "link": 26 + } + ], + "outputs": [ + { + "name": "source_fps🟨", + "type": "FLOAT", + "links": null, + "shape": 3 + }, + { + "name": "source_frame_count🟨", + "type": "INT", + "links": null, + "shape": 3 + }, + { + "name": "source_duration🟨", + "type": "FLOAT", + "links": null, + "shape": 3 + }, + { + "name": "source_width🟨", + "type": "INT", + "links": null, + "shape": 3 + }, + { + "name": "source_height🟨", + "type": "INT", + "links": null, + "shape": 3 + }, + { + "name": "loaded_fps🟦", + "type": "FLOAT", + "links": [ + 40, + 44 + ], + "slot_index": 5, + "shape": 3 + }, + { + "name": "loaded_frame_count🟦", + "type": "INT", + "links": null, + "shape": 3 + }, + { + "name": "loaded_duration🟦", + "type": "FLOAT", + "links": null, + "shape": 3 + }, + { + "name": "loaded_width🟦", + "type": "INT", + "links": null, + "shape": 3 + }, + { + "name": "loaded_height🟦", + "type": "INT", + "links": null, + "shape": 3 + } + ], + "properties": { + "Node name for S&R": "VHS_VideoInfo" + }, + "widgets_values": {} + }, + { + "id": 22, + "type": "Note", + "pos": [ + 1120, + 887 + ], + "size": [ + 210, + 58 + ], + "flags": {}, + "order": 1, + "mode": 0, + "inputs": [], + "outputs": [], + "properties": { + "text": "" + }, + "widgets_values": [ + "use time feature to control aaa" + ], + "color": "#432", + "bgcolor": "#653" + }, + { + "id": 37, + "type": "MIDILoadAndExtract", + "pos": [ + -2344.29296875, + -243.81497192382812 + ], + "size": [ + 1020, + 346 + ], + "flags": {}, + "order": 2, + "mode": 4, + "inputs": [ + { + "name": "video_frames", + "type": "IMAGE", + "link": null + } + ], + "outputs": [ + { + "name": "MIDI", + "type": "MIDI", + "links": null, + "shape": 3 + }, + { + "name": "FEATURE", + "type": "FEATURE", + "links": null, + "shape": 3 + }, + { + "name": "FEATURE_PIPE", + "type": "FEATURE_PIPE", + "links": null, + "shape": 3 + } + ], + "properties": { + "selectedNotes": [] + }, + "widgets_values": [ + "Velocity", + "prom_single_track.mid", + "all", + 30, + false, + "", + "upload", + "refresh", + "", + "upload", + "refresh" + ] + }, + { + "id": 38, + "type": "MotionFeatureNode", + "pos": [ + -2330.876953125, + 153.2240753173828 + ], + "size": [ + 268.79998779296875, + 222 + ], + "flags": {}, + "order": 3, + "mode": 4, + "inputs": [ + { + "name": "images", + "type": "IMAGE", + "link": null + } + ], + "outputs": [ + { + "name": "FEATURE", + "type": "FEATURE", + "links": null, + "shape": 3 + }, + { + "name": "FEATURE_PIPE", + "type": "FEATURE_PIPE", + "links": null, + "shape": 3 + } + ], + "properties": { + "Node name for S&R": "MotionFeatureNode" + }, + "widgets_values": [ + "mean_motion", + 30, + "Farneback", + 0, + 0, + 0, + 0 + ] + }, + { + "id": 39, + "type": "TimeFeatureNode", + "pos": [ + -2012.8848876953125, + 149.26502990722656 + ], + "size": [ + 262.2439880371094, + 222 + ], + "flags": {}, + "order": 4, + "mode": 4, + "inputs": [ + { + "name": "video_frames", + "type": "IMAGE", + "link": null + } + ], + "outputs": [ + { + "name": "FEATURE", + "type": "FEATURE", + "links": null, + "shape": 3 + }, + { + "name": "FEATURE_PIPE", + "type": "FEATURE_PIPE", + "links": null, + "shape": 3 + } + ], + "properties": { + "Node name for S&R": "TimeFeatureNode" + }, + "widgets_values": [ + "smooth", + 30, + 1, + 0, + 512, + 30, + 0 + ] + }, + { + "id": 40, + "type": "ProximityFeatureNode", + "pos": [ + -2389.29296875, + 393.1850280761719 + ], + "size": [ + 336, + 218 + ], + "flags": {}, + "order": 5, + "mode": 4, + "inputs": [ + { + "name": "anchor_locations", + "type": "LOCATION", + "link": null + }, + { + "name": "query_locations", + "type": "LOCATION", + "link": null + }, + { + "name": "query_locations", + "type": "LOCATION", + "link": null + } + ], + "outputs": [ + { + "name": "proximity_feature", + "type": "FEATURE", + "links": null, + "shape": 3 + }, + { + "name": "feature_pipe", + "type": "FEATURE_PIPE", + "links": null, + "shape": 3 + } + ], + "properties": { + "Node name for S&R": "ProximityFeatureNode" + }, + "widgets_values": [ + 30, + "frame", + 30, + 512, + 512, + "frame" + ] + }, + { + "id": 41, + "type": "BrightnessFeatureNode", + "pos": [ + -2352.884765625, + 559.2650146484375 + ], + "size": [ + 317.4000244140625, + 150 + ], + "flags": {}, + "order": 6, + "mode": 4, + "inputs": [ + { + "name": "images", + "type": "IMAGE", + "link": null + } + ], + "outputs": [ + { + "name": "FEATURE", + "type": "FEATURE", + "links": null, + "shape": 3 + }, + { + "name": "FEATURE_PIPE", + "type": "FEATURE_PIPE", + "links": null, + "shape": 3 + } + ], + "properties": { + "Node name for S&R": "BrightnessFeatureNode" + }, + "widgets_values": [ + "mean_brightness", + 30, + 512, + 512 + ] + }, + { + "id": 42, + "type": "ColorFeatureNode", + "pos": [ + -2022.8848876953125, + 559.2650146484375 + ], + "size": [ + 317.4000244140625, + 150 + ], + "flags": {}, + "order": 7, + "mode": 4, + "inputs": [ + { + "name": "images", + "type": "IMAGE", + "link": null + } + ], + "outputs": [ + { + "name": "FEATURE", + "type": "FEATURE", + "links": null, + "shape": 3 + }, + { + "name": "FEATURE_PIPE", + "type": "FEATURE_PIPE", + "links": null, + "shape": 3 + } + ], + "properties": { + "Node name for S&R": "ColorFeatureNode" + }, + "widgets_values": [ + "dominant_color", + 30, + 512, + 512 + ] + }, + { + "id": 43, + "type": "RhythmFeatureExtractor", + "pos": [ + -2026.29296875, + 356.1850280761719 + ], + "size": [ + 352.79998779296875, + 198 + ], + "flags": {}, + "order": 8, + "mode": 4, + "inputs": [ + { + "name": "audio", + "type": "AUDIO", + "link": null + }, + { + "name": "audio", + "type": "AUDIO", + "link": null + } + ], + "outputs": [ + { + "name": "FEATURE", + "type": "FEATURE", + "links": null, + "shape": 3 + }, + { + "name": "FEATURE_PIPE", + "type": "FEATURE_PIPE", + "links": null, + "shape": 3 + } + ], + "properties": { + "Node name for S&R": "RhythmFeatureExtractor" + }, + "widgets_values": [ + "beat_locations", + 30, + 4, + 512, + 512, + 4 + ] + }, + { + "id": 44, + "type": "PitchFeatureExtractor", + "pos": [ + -2333.29296875, + 724.1849975585938 + ], + "size": [ + 344.3999938964844, + 218 + ], + "flags": {}, + "order": 9, + "mode": 4, + "inputs": [ + { + "name": "audio", + "type": "AUDIO", + "link": null + }, + { + "name": "opt_pitch_range_collections", + "type": "PITCH_RANGE_COLLECTION", + "link": null, + "shape": 7 + }, + { + "name": "opt_pitch_range_collections", + "type": "PITCH_RANGE_COLLECTION", + "link": null + } + ], + "outputs": [ + { + "name": "FEATURE", + "type": "FEATURE", + "links": null, + "shape": 3 + }, + { + "name": "FEATURE_PIPE", + "type": "FEATURE_PIPE", + "links": null, + "shape": 3 + } + ], + "properties": { + "Node name for S&R": "PitchFeatureExtractor" + }, + "widgets_values": [ + "frequency", + "medium", + 0, + 512, + 512, + "medium" + ] + }, + { + "id": 45, + "type": "DepthFeatureNode", + "pos": [ + -1682.8848876953125, + 549.2650146484375 + ], + "size": [ + 317.4000244140625, + 150 + ], + "flags": {}, + "order": 10, + "mode": 4, + "inputs": [ + { + "name": "depth_maps", + "type": "IMAGE", + "link": null + }, + { + "name": "depth_maps", + "type": "IMAGE", + "link": null + } + ], + "outputs": [ + { + "name": "FEATURE", + "type": "FEATURE", + "links": null, + "shape": 3 + }, + { + "name": "FEATURE_PIPE", + "type": "FEATURE_PIPE", + "links": null, + "shape": 3 + } + ], + "properties": { + "Node name for S&R": "DepthFeatureNode" + }, + "widgets_values": [ + "mean_depth", + 30, + 512, + 512 + ] + }, + { + "id": 46, + "type": "ManualFeatureFromPipe", + "pos": [ + -1652.8848876953125, + 149.26502990722656 + ], + "size": [ + 352.79998779296875, + 150 + ], + "flags": {}, + "order": 11, + "mode": 4, + "inputs": [ + { + "name": "feature_pipe", + "type": "FEATURE_PIPE", + "link": null + } + ], + "outputs": [ + { + "name": "FEATURE", + "type": "FEATURE", + "links": null, + "shape": 3 + }, + { + "name": "FEATURE_PIPE", + "type": "FEATURE_PIPE", + "links": null, + "shape": 3 + } + ], + "properties": { + "Node name for S&R": "ManualFeatureFromPipe" + }, + "widgets_values": [ + "0,10,20", + "0.0,0.5,1.0", + 1, + "none" + ] + }, + { + "id": 47, + "type": "AreaFeatureNode", + "pos": [ + -1622.8848876953125, + 349.2650451660156 + ], + "size": [ + 317.4000244140625, + 174 + ], + "flags": {}, + "order": 12, + "mode": 4, + "inputs": [ + { + "name": "masks", + "type": "MASK", + "link": null + }, + { + "name": "masks", + "type": "MASK", + "link": null + } + ], + "outputs": [ + { + "name": "FEATURE", + "type": "FEATURE", + "links": null, + "shape": 3 + }, + { + "name": "FEATURE_PIPE", + "type": "FEATURE_PIPE", + "links": null, + "shape": 3 + } + ], + "properties": { + "Node name for S&R": "AreaFeatureNode" + }, + "widgets_values": [ + "total_area", + 30, + 0.5, + 512, + 0.5 + ] + }, + { + "id": 50, + "type": "FeatureCombine", + "pos": [ + -1921.7711181640625, + 1180 + ], + "size": [ + 380.4000244140625, + 150 + ], + "flags": {}, + "order": 13, + "mode": 4, + "inputs": [ + { + "name": "feature1", + "type": "FEATURE", + "link": null + }, + { + "name": "feature2", + "type": "FEATURE", + "link": null + } + ], + "outputs": [ + { + "name": "FEATURE", + "type": "FEATURE", + "links": null, + "shape": 3 + }, + { + "name": "FEATURE_VISUALIZATION", + "type": "IMAGE", + "links": null, + "shape": 3 + } + ], + "properties": { + "Node name for S&R": "FeatureCombine" + }, + "widgets_values": [ + "add", + 1, + 1, + false + ] + }, + { + "id": 51, + "type": "FeatureOscillator", + "pos": [ + -1501.7711181640625, + 1190 + ], + "size": [ + 367.79998779296875, + 198 + ], + "flags": {}, + "order": 14, + "mode": 4, + "inputs": [ + { + "name": "feature", + "type": "FEATURE", + "link": null + } + ], + "outputs": [ + { + "name": "FEATURE", + "type": "FEATURE", + "links": null, + "shape": 3 + }, + { + "name": "FEATURE_VISUALIZATION", + "type": "IMAGE", + "links": null, + "shape": 3 + } + ], + "properties": { + "Node name for S&R": "FeatureOscillator" + }, + "widgets_values": [ + "sine", + 1, + 0.5, + 0, + 0.5, + false + ] + }, + { + "id": 52, + "type": "FeatureScaler", + "pos": [ + -2321.771240234375, + 1580 + ], + "size": [ + 367.79998779296875, + 174 + ], + "flags": {}, + "order": 15, + "mode": 4, + "inputs": [ + { + "name": "feature", + "type": "FEATURE", + "link": null + } + ], + "outputs": [ + { + "name": "FEATURE", + "type": "FEATURE", + "links": null, + "shape": 3 + }, + { + "name": "FEATURE_VISUALIZATION", + "type": "IMAGE", + "links": null, + "shape": 3 + } + ], + "properties": { + "Node name for S&R": "FeatureScaler" + }, + "widgets_values": [ + "linear", + 0, + 1, + 2, + false + ] + }, + { + "id": 53, + "type": "FeatureSmoothing", + "pos": [ + -1911.7711181640625, + 1580 + ], + "size": [ + 367.79998779296875, + 174 + ], + "flags": {}, + "order": 16, + "mode": 4, + "inputs": [ + { + "name": "feature", + "type": "FEATURE", + "link": null + } + ], + "outputs": [ + { + "name": "FEATURE", + "type": "FEATURE", + "links": null, + "shape": 3 + }, + { + "name": "FEATURE_VISUALIZATION", + "type": "IMAGE", + "links": null, + "shape": 3 + } + ], + "properties": { + "Node name for S&R": "FeatureSmoothing" + }, + "widgets_values": [ + "moving_average", + 5, + 0.3, + 1, + false + ] + }, + { + "id": 54, + "type": "FeatureMath", + "pos": [ + -1911.7711181640625, + 1390 + ], + "size": [ + 367.79998779296875, + 126 + ], + "flags": {}, + "order": 17, + "mode": 4, + "inputs": [ + { + "name": "feature", + "type": "FEATURE", + "link": null + } + ], + "outputs": [ + { + "name": "FEATURE", + "type": "FEATURE", + "links": null, + "shape": 3 + }, + { + "name": "FEATURE_VISUALIZATION", + "type": "IMAGE", + "links": null, + "shape": 3 + } + ], + "properties": { + "Node name for S&R": "FeatureMath" + }, + "widgets_values": [ + 0, + "add", + false + ] + }, + { + "id": 55, + "type": "FeatureAccumulate", + "pos": [ + -1501.7711181640625, + 1460 + ], + "size": [ + 367.79998779296875, + 222 + ], + "flags": {}, + "order": 18, + "mode": 4, + "inputs": [ + { + "name": "feature", + "type": "FEATURE", + "link": null + } + ], + "outputs": [ + { + "name": "FEATURE", + "type": "FEATURE", + "links": null, + "shape": 3 + }, + { + "name": "FEATURE_VISUALIZATION", + "type": "IMAGE", + "links": null, + "shape": 3 + } + ], + "properties": { + "Node name for S&R": "FeatureAccumulate" + }, + "widgets_values": [ + 0, + 1, + 0, + false, + false, + 0, + false + ] + }, + { + "id": 49, + "type": "FeatureMixer", + "pos": [ + -2309.771240234375, + 1186 + ], + "size": [ + 367.79998779296875, + 342 + ], + "flags": {}, + "order": 19, + "mode": 4, + "inputs": [ + { + "name": "feature", + "type": "FEATURE", + "link": null + } + ], + "outputs": [ + { + "name": "FEATURE", + "type": "FEATURE", + "links": null, + "shape": 3 + }, + { + "name": "FEATURE_VISUALIZATION", + "type": "IMAGE", + "links": null, + "shape": 3 + } + ], + "properties": { + "Node name for S&R": "FeatureMixer" + }, + "widgets_values": [ + 1, + 0, + 1, + 1, + 1, + 1, + 1, + 0, + 0, + 1, + 0.5, + false + ] + }, + { + "id": 56, + "type": "Note", + "pos": [ + -1027, + 1248 + ], + "size": [ + 343.6423645019531, + 137.95391845703125 + ], + "flags": {}, + "order": 20, + "mode": 0, + "inputs": [], + "outputs": [], + "properties": { + "text": "" + }, + "widgets_values": [ + "\n<--------here's some ways to manipulate features" + ], + "color": "#432", + "bgcolor": "#653" + }, + { + "id": 20, + "type": "VHS_VideoCombine", + "pos": [ + 2143, + -9 + ], + "size": [ + 260, + 334 + ], + "flags": {}, + "order": 33, + "mode": 0, + "inputs": [ + { + "name": "images", + "type": "IMAGE", + "link": 13 + }, + { + "name": "audio", + "type": "AUDIO", + "link": null, + "shape": 7 + }, + { + "name": "meta_batch", + "type": "VHS_BatchManager", + "link": null, + "shape": 7 + }, + { + "name": "vae", + "type": "VAE", + "link": null, + "shape": 7 + } + ], + "outputs": [ + { + "name": "Filenames", + "type": "VHS_FILENAMES", + "links": null, + "shape": 3 + } + ], + "properties": { + "Node name for S&R": "VHS_VideoCombine" + }, + "widgets_values": { + "frame_rate": 15, + "loop_count": 0, + "filename_prefix": "AdvancedLivePortrait", + "format": "video/h264-mp4", + "pix_fmt": "yuv420p", + "crf": 19, + "save_metadata": true, + "trim_to_audio": false, + "pingpong": false, + "save_output": true, + "videopreview": { + "hidden": false, + "paused": false, + "params": { + "filename": "AdvancedLivePortrait_00352.mp4", + "subfolder": "", + "type": "output", + "format": "video/h264-mp4", + "frame_rate": 15 + } + } + } + }, + { + "id": 17, + "type": "AdvancedLivePortrait", + "pos": [ + 1843, + 26 + ], + "size": [ + 235.1999969482422, + 523.0364379882812 + ], + "flags": {}, + "order": 32, + "mode": 0, + "inputs": [ + { + "name": "src_images", + "type": "IMAGE", + "link": null, + "shape": 7 + }, + { + "name": "motion_link", + "type": "EDITOR_LINK", + "link": 16, + "shape": 7 + }, + { + "name": "driving_images", + "type": "IMAGE", + "link": 11, + "shape": 7 + }, + { + "name": "command", + "type": "STRING", + "link": 25, + "widget": { + "name": "command" + } + } + ], + "outputs": [ + { + "name": "images", + "type": "IMAGE", + "links": [ + 13 + ], + "slot_index": 0, + "shape": 3 + } + ], + "properties": { + "Node name for S&R": "AdvancedLivePortrait" + }, + "widgets_values": [ + 0, + 0, + 1.7000000000000002, + "1 = 1:10\n2 = 5:10\n0 = 2:50\n1 = 2:0", + "1 = 1:10\n2 = 5:10\n0 = 2:50\n1 = 2:0", + false, + "1 = 1:10\n2 = 5:10\n0 = 2:50\n1 = 2:0" + ] + }, + { + "id": 21, + "type": "Note", + "pos": [ + 1809, + 612 + ], + "size": [ + 638.537841796875, + 195.73060607910156 + ], + "flags": {}, + "order": 21, + "mode": 0, + "inputs": [], + "outputs": [], + "properties": { + "text": "" + }, + "widgets_values": [ + "Flex Parameters: \n constrain_min_max: ensures modulated value is kept within bounds of the min and max of the parameter\n strength: a strength multiplier\n feature_threshold: minimum feature value to consider\n feature_param: the expression parameter to modulate\n feature_mode:\n -relative: modulation occurs relative to the parameter value\n -absolute: modulation occurs relative to 0\n\nNotes:\n-the value for a parameter in a previous editor changes the starting position of that parameter in the next editor. this means a parameter can be modulated multiple times for interesting effects\n\n" + ], + "color": "#432", + "bgcolor": "#653" + }, + { + "id": 48, + "type": "Note", + "pos": [ + -1045.8770751953125, + 227.2240753173828 + ], + "size": [ + 343.6423645019531, + 137.95391845703125 + ], + "flags": {}, + "order": 22, + "mode": 0, + "inputs": [], + "outputs": [], + "properties": { + "text": "" + }, + "widgets_values": [ + "Time and motion are two out of many feature sources, and they are interchangeable.\n\n<--------here's some other feature sources.\ntutorial https://youtu.be/QmWk2xse7pI" + ], + "color": "#432", + "bgcolor": "#653" + }, + { + "id": 26, + "type": "FlexExpressionEditor", + "pos": [ + 1426, + 7 + ], + "size": [ + 336, + 830 + ], + "flags": {}, + "order": 31, + "mode": 0, + "inputs": [ + { + "name": "src_image", + "type": "IMAGE", + "link": null, + "shape": 7 + }, + { + "name": "sample_image", + "type": "IMAGE", + "link": null, + "shape": 7 + }, + { + "name": "add_exp", + "type": "EXP_DATA", + "link": null, + "shape": 7 + }, + { + "name": "flex_motion_link", + "type": "EDITOR_LINK", + "link": 15, + "shape": 7 + }, + { + "name": "feature", + "type": "FEATURE", + "link": 54, + "shape": 7 + } + ], + "outputs": [ + { + "name": "image", + "type": "IMAGE", + "links": null, + "shape": 3 + }, + { + "name": "flex_motion_link", + "type": "EDITOR_LINK", + "links": [ + 16 + ], + "slot_index": 1, + "shape": 3 + }, + { + "name": "save_exp", + "type": "EXP_DATA", + "links": null, + "shape": 3 + }, + { + "name": "command", + "type": "STRING", + "links": [ + 25 + ], + "slot_index": 3, + "shape": 3 + } + ], + "properties": { + "Node name for S&R": "FlexExpressionEditor" + }, + "widgets_values": [ + 0, + 20, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 1, + 1, + "OnlyExpression", + 1.7, + 1, + 1, + 0, + "rotate_yaw", + "absolute" + ] + }, + { + "id": 23, + "type": "Note", + "pos": [ + 1490, + 889 + ], + "size": [ + 245.08152770996094, + 58 + ], + "flags": { + "collapsed": false + }, + "order": 23, + "mode": 0, + "inputs": [], + "outputs": [], + "properties": { + "text": "" + }, + "widgets_values": [ + "use motion of driving video to control yaw\n" + ], + "color": "#432", + "bgcolor": "#653" + }, + { + "id": 19, + "type": "VHS_LoadVideo", + "pos": [ + -92.59197998046875, + 164.5709991455078 + ], + "size": [ + 250, + 262 + ], + "flags": {}, + "order": 24, + "mode": 0, + "inputs": [ + { + "name": "meta_batch", + "type": "VHS_BatchManager", + "link": null, + "shape": 7 + }, + { + "name": "vae", + "type": "VAE", + "link": null, + "shape": 7 + } + ], + "outputs": [ + { + "name": "IMAGE", + "type": "IMAGE", + "links": [ + 11, + 43 + ], + "slot_index": 0, + "shape": 3 + }, + { + "name": "frame_count", + "type": "INT", + "links": null, + "shape": 3 + }, + { + "name": "audio", + "type": "AUDIO", + "links": null, + "shape": 3 + }, + { + "name": "video_info", + "type": "VHS_VIDEOINFO", + "links": [ + 26 + ], + "slot_index": 3, + "shape": 3 + } + ], + "properties": { + "Node name for S&R": "VHS_LoadVideo" + }, + "widgets_values": { + "video": "driving_video.mp4", + "force_rate": 0, + "force_size": "Disabled", + "custom_width": 512, + "custom_height": 512, + "frame_load_cap": 0, + "skip_first_frames": 0, + "select_every_nth": 2, + "choose video to upload": "image", + "videopreview": { + "hidden": false, + "paused": false, + "params": { + "frame_load_cap": 0, + "skip_first_frames": 0, + "force_rate": 0, + "filename": "driving_video.mp4", + "type": "input", + "format": "video/mp4", + "select_every_nth": 2 + } + } + } + }, + { + "id": 66, + "type": "MotionFeatureNode", + "pos": [ + 224.3660125732422, + 362.69696044921875 + ], + "size": [ + 315, + 202 + ], + "flags": {}, + "order": 28, + "mode": 0, + "inputs": [ + { + "name": "images", + "type": "IMAGE", + "link": 43 + }, + { + "name": "frame_rate", + "type": "FLOAT", + "link": 44, + "widget": { + "name": "frame_rate" + } + } + ], + "outputs": [ + { + "name": "FEATURE", + "type": "FEATURE", + "links": [ + 46 + ] + } + ], + "properties": { + "Node name for S&R": "MotionFeatureNode" + }, + "widgets_values": [ + "mean_motion", + 30, + 512, + 512, + "Farneback", + 0, + 0 + ] + }, + { + "id": 15, + "type": "LoadImage", + "pos": [ + -481.078369140625, + 110 + ], + "size": [ + 315, + 314 + ], + "flags": {}, + "order": 25, + "mode": 0, + "inputs": [], + "outputs": [ + { + "name": "IMAGE", + "type": "IMAGE", + "links": [ + 14 + ], + "slot_index": 0, + "shape": 3 + }, + { + "name": "MASK", + "type": "MASK", + "links": null, + "slot_index": 1, + "shape": 3 + } + ], + "properties": { + "Node name for S&R": "LoadImage" + }, + "widgets_values": [ + "source_image.png", + "image" + ] + }, + { + "id": 65, + "type": "TimeFeatureNode", + "pos": [ + 211.40101623535156, + 87.40798950195312 + ], + "size": [ + 315, + 202 + ], + "flags": {}, + "order": 27, + "mode": 0, + "inputs": [ + { + "name": "frame_rate", + "type": "FLOAT", + "link": 40, + "widget": { + "name": "frame_rate" + } + } + ], + "outputs": [ + { + "name": "FEATURE", + "type": "FEATURE", + "links": [ + 42, + 49, + 51 + ], + "slot_index": 0 + } + ], + "properties": { + "Node name for S&R": "TimeFeatureNode" + }, + "widgets_values": [ + "pulse", + 30, + 30, + 512, + 512, + 30, + 0 + ] + }, + { + "id": 67, + "type": "FeatureSmoothing", + "pos": [ + 174.69239807128906, + 657.08544921875 + ], + "size": [ + 340.20001220703125, + 154 + ], + "flags": {}, + "order": 30, + "mode": 0, + "inputs": [ + { + "name": "feature", + "type": "FEATURE", + "link": 46 + } + ], + "outputs": [ + { + "name": "FEATURE", + "type": "FEATURE", + "links": [ + 47, + 53, + 54 + ], + "slot_index": 0 + } + ], + "properties": { + "Node name for S&R": "FeatureSmoothing" + }, + "widgets_values": [ + "moving_average", + 5, + 0.3, + 1, + false + ] + }, + { + "id": 25, + "type": "FlexExpressionEditor", + "pos": [ + 1022.323486328125, + -39.37493896484375 + ], + "size": [ + 336, + 830 + ], + "flags": {}, + "order": 29, + "mode": 0, + "inputs": [ + { + "name": "src_image", + "type": "IMAGE", + "link": 14, + "shape": 7 + }, + { + "name": "sample_image", + "type": "IMAGE", + "link": null, + "shape": 7 + }, + { + "name": "add_exp", + "type": "EXP_DATA", + "link": null, + "shape": 7 + }, + { + "name": "flex_motion_link", + "type": "EDITOR_LINK", + "link": null, + "shape": 7 + }, + { + "name": "feature", + "type": "FEATURE", + "link": 51, + "shape": 7 + } + ], + "outputs": [ + { + "name": "image", + "type": "IMAGE", + "links": null, + "shape": 3 + }, + { + "name": "flex_motion_link", + "type": "EDITOR_LINK", + "links": [ + 15 + ], + "slot_index": 1, + "shape": 3 + }, + { + "name": "save_exp", + "type": "EXP_DATA", + "links": null, + "shape": 3 + }, + { + "name": "command", + "type": "STRING", + "links": null, + "shape": 3 + } + ], + "properties": { + "Node name for S&R": "FlexExpressionEditor" + }, + "widgets_values": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 120, + 0, + 0, + 0, + 1, + 1, + "OnlyExpression", + 1.7, + true, + 1, + 0, + "aaa", + "absolute" + ] + } + ], + "links": [ + [ + 11, + 19, + 0, + 17, + 2, + "IMAGE" + ], + [ + 13, + 17, + 0, + 20, + 0, + "IMAGE" + ], + [ + 14, + 15, + 0, + 25, + 0, + "IMAGE" + ], + [ + 15, + 25, + 1, + 26, + 3, + "EDITOR_LINK" + ], + [ + 16, + 26, + 1, + 17, + 1, + "EDITOR_LINK" + ], + [ + 25, + 26, + 3, + 17, + 3, + "STRING" + ], + [ + 26, + 19, + 3, + 33, + 0, + "VHS_VIDEOINFO" + ], + [ + 40, + 33, + 5, + 65, + 0, + "FLOAT" + ], + [ + 42, + 65, + 0, + 25, + 4, + "FEATURE" + ], + [ + 43, + 19, + 0, + 66, + 0, + "IMAGE" + ], + [ + 44, + 33, + 5, + 66, + 1, + "FLOAT" + ], + [ + 46, + 66, + 0, + 67, + 0, + "FEATURE" + ], + [ + 47, + 67, + 0, + 26, + 4, + "FEATURE" + ], + [ + 49, + 65, + 0, + 25, + 4, + "FEATURE" + ], + [ + 51, + 65, + 0, + 25, + 4, + "FEATURE" + ], + [ + 53, + 67, + 0, + 26, + 4, + "FEATURE" + ], + [ + 54, + 67, + 0, + 26, + 4, + "FEATURE" + ] + ], + "groups": [ + { + "id": 1, + "title": ":)", + "bounding": [ + -3194, + -326, + 2124, + 1397 + ], + "color": "#3f789e", + "font_size": 1000, + "flags": {} + }, + { + "id": 2, + "title": "Feature manipulation", + "bounding": [ + -2335, + 1095, + 1261, + 752 + ], + "color": "#3f789e", + "font_size": 24, + "flags": {} + } + ], + "config": {}, + "extra": { + "ds": { + "scale": 0.672749994932561, + "offset": [ + -46.36489175292053, + 294.6589054343911 + ] + }, + "node_versions": { + "ComfyUI-VideoHelperSuite": "6953fa21443cf55f7c3b61ed3f4c87c5d3677fe1", + "ComfyUI_RyanOnTheInside": "0507092b2c3f5c51b45989c6c4fd51c1add26513", + "ComfyUI-AdvancedLivePortrait": "3bba732915e22f18af0d221b9c5c282990181f1b", + "comfy-core": "0.3.12" + }, + "ue_links": [] + }, + "version": 0.4 +} \ No newline at end of file diff --git a/examples/audio_ipadapter_weights.json b/examples/audio_ipadapter_weights.json deleted file mode 100644 index b5c2d31..0000000 --- a/examples/audio_ipadapter_weights.json +++ /dev/null @@ -1,3776 +0,0 @@ -{ - "last_node_id": 345, - "last_link_id": 812, - "nodes": [ - { - "id": 280, - "type": "ControlNetApplyAdvanced", - "pos": [ - 2700.1005362372516, - 703.5287314851208 - ], - "size": { - "0": 315, - "1": 166 - }, - "flags": {}, - "order": 55, - "mode": 0, - "inputs": [ - { - "name": "positive", - "type": "CONDITIONING", - "link": 770 - }, - { - "name": "negative", - "type": "CONDITIONING", - "link": 771 - }, - { - "name": "control_net", - "type": "CONTROL_NET", - "link": 660, - "slot_index": 2 - }, - { - "name": "image", - "type": "IMAGE", - "link": 661, - "slot_index": 3 - } - ], - "outputs": [ - { - "name": "positive", - "type": "CONDITIONING", - "links": [ - 665, - 669 - ], - "shape": 3, - "slot_index": 0 - }, - { - "name": "negative", - "type": "CONDITIONING", - "links": [ - 666, - 670 - ], - "shape": 3, - "slot_index": 1 - } - ], - "properties": { - "Node name for S&R": "ControlNetApplyAdvanced" - }, - "widgets_values": [ - 0.47000000000000003, - 0, - 0.5740000000000001 - ] - }, - { - "id": 288, - "type": "DownloadOpenUnmixModel", - "pos": [ - -90.10184962710808, - -866.6539360454093 - ], - "size": { - "0": 361.20001220703125, - "1": 58 - }, - "flags": {}, - "order": 0, - "mode": 0, - "outputs": [ - { - "name": "OPEN_UNMIX_MODEL", - "type": "OPEN_UNMIX_MODEL", - "links": [ - 688 - ], - "shape": 3, - "slot_index": 0 - } - ], - "properties": { - "Node name for S&R": "DownloadOpenUnmixModel" - }, - "widgets_values": [ - "umxl" - ] - }, - { - "id": 31, - "type": "ADE_ApplyAnimateDiffModel", - "pos": [ - 1018.6153756226563, - 296.9229692988283 - ], - "size": { - "0": 319.20001220703125, - "1": 182 - }, - "flags": {}, - "order": 16, - "mode": 0, - "inputs": [ - { - "name": "motion_model", - "type": "MOTION_MODEL_ADE", - "link": 61 - }, - { - "name": "motion_lora", - "type": "MOTION_LORA", - "link": null - }, - { - "name": "scale_multival", - "type": "MULTIVAL", - "link": null - }, - { - "name": "effect_multival", - "type": "MULTIVAL", - "link": null - }, - { - "name": "ad_keyframes", - "type": "AD_KEYFRAMES", - "link": null - }, - { - "name": "prev_m_models", - "type": "M_MODELS", - "link": null - } - ], - "outputs": [ - { - "name": "M_MODELS", - "type": "M_MODELS", - "links": [ - 62 - ], - "shape": 3, - "slot_index": 0 - } - ], - "properties": { - "Node name for S&R": "ADE_ApplyAnimateDiffModel" - }, - "widgets_values": [ - 0, - 1, - "" - ] - }, - { - "id": 32, - "type": "ADE_UseEvolvedSampling", - "pos": [ - 1432.6153756226563, - -31.07703070117199 - ], - "size": { - "0": 241.0297088623047, - "1": 118 - }, - "flags": {}, - "order": 43, - "mode": 0, - "inputs": [ - { - "name": "model", - "type": "MODEL", - "link": 783 - }, - { - "name": "m_models", - "type": "M_MODELS", - "link": 62 - }, - { - "name": "context_options", - "type": "CONTEXT_OPTIONS", - "link": 64, - "slot_index": 2 - }, - { - "name": "sample_settings", - "type": "SAMPLE_SETTINGS", - "link": null - } - ], - "outputs": [ - { - "name": "MODEL", - "type": "MODEL", - "links": [ - 194 - ], - "shape": 3, - "slot_index": 0 - } - ], - "properties": { - "Node name for S&R": "ADE_UseEvolvedSampling" - }, - "widgets_values": [ - "lcm >> sqrt_linear" - ] - }, - { - "id": 88, - "type": "ModelSamplingDiscrete", - "pos": [ - 1461.6153756226563, - 182.9229692988281 - ], - "size": { - "0": 210, - "1": 82 - }, - "flags": {}, - "order": 49, - "mode": 0, - "inputs": [ - { - "name": "model", - "type": "MODEL", - "link": 194 - } - ], - "outputs": [ - { - "name": "MODEL", - "type": "MODEL", - "links": [ - 195 - ], - "shape": 3, - "slot_index": 0 - } - ], - "properties": { - "Node name for S&R": "ModelSamplingDiscrete" - }, - "widgets_values": [ - "lcm", - false - ] - }, - { - "id": 296, - "type": "MotionFeatureNode", - "pos": [ - 610, - -1480 - ], - "size": { - "0": 317.4000244140625, - "1": 174 - }, - "flags": {}, - "order": 1, - "mode": 4, - "inputs": [ - { - "name": "video_frames", - "type": "IMAGE", - "link": null - } - ], - "outputs": [ - { - "name": "FEATURE", - "type": "FEATURE", - "links": null, - "shape": 3 - }, - { - "name": "FEATURE_PIPE", - "type": "FEATURE_PIPE", - "links": null, - "shape": 3 - } - ], - "properties": { - "Node name for S&R": "MotionFeatureNode" - }, - "widgets_values": [ - 30, - "mean_motion", - "Farneback", - 0, - 0 - ] - }, - { - "id": 295, - "type": "DepthFeatureNode", - "pos": [ - 220, - -1390 - ], - "size": { - "0": 317.4000244140625, - "1": 102 - }, - "flags": {}, - "order": 2, - "mode": 4, - "inputs": [ - { - "name": "video_frames", - "type": "IMAGE", - "link": null - }, - { - "name": "depth_maps", - "type": "IMAGE", - "link": null - } - ], - "outputs": [ - { - "name": "FEATURE", - "type": "FEATURE", - "links": null, - "shape": 3 - }, - { - "name": "FEATURE_PIPE", - "type": "FEATURE_PIPE", - "links": null, - "shape": 3 - } - ], - "properties": { - "Node name for S&R": "DepthFeatureNode" - }, - "widgets_values": [ - 30, - "mean_depth" - ] - }, - { - "id": 287, - "type": "AudioSeparator", - "pos": [ - -90.10184962710808, - -756.6539360454093 - ], - "size": { - "0": 317.4000244140625, - "1": 158 - }, - "flags": {}, - "order": 35, - "mode": 0, - "inputs": [ - { - "name": "model", - "type": "OPEN_UNMIX_MODEL", - "link": 688, - "slot_index": 0 - }, - { - "name": "audio", - "type": "AUDIO", - "link": 789 - }, - { - "name": "video_frames", - "type": "IMAGE", - "link": 699 - } - ], - "outputs": [ - { - "name": "audio", - "type": "AUDIO", - "links": null, - "shape": 3 - }, - { - "name": "drums_audio", - "type": "AUDIO", - "links": [ - 685 - ], - "shape": 3 - }, - { - "name": "vocals_audio", - "type": "AUDIO", - "links": null, - "shape": 3 - }, - { - "name": "bass_audio", - "type": "AUDIO", - "links": null, - "shape": 3 - }, - { - "name": "other_audio", - "type": "AUDIO", - "links": null, - "shape": 3 - }, - { - "name": "feature_pipe", - "type": "FEATURE_PIPE", - "links": [ - 687 - ], - "shape": 3 - } - ], - "properties": { - "Node name for S&R": "AudioSeparator" - }, - "widgets_values": [ - 30 - ] - }, - { - "id": 277, - "type": "VAEDecode", - "pos": [ - 3109.7626474195895, - -144.28775915330124 - ], - "size": { - "0": 140, - "1": 46 - }, - "flags": {}, - "order": 59, - "mode": 0, - "inputs": [ - { - "name": "samples", - "type": "LATENT", - "link": 656 - }, - { - "name": "vae", - "type": "VAE", - "link": 746 - } - ], - "outputs": [ - { - "name": "IMAGE", - "type": "IMAGE", - "links": [ - 750, - 759 - ], - "slot_index": 0 - } - ], - "properties": { - "Node name for S&R": "VAEDecode" - } - }, - { - "id": 319, - "type": "LoraLoaderModelOnly", - "pos": [ - -2463.624330660592, - 163.30805644428764 - ], - "size": { - "0": 315, - "1": 82 - }, - "flags": {}, - "order": 25, - "mode": 0, - "inputs": [ - { - "name": "model", - "type": "MODEL", - "link": 757 - } - ], - "outputs": [ - { - "name": "MODEL", - "type": "MODEL", - "links": [ - 756 - ], - "shape": 3, - "slot_index": 0 - } - ], - "properties": { - "Node name for S&R": "LoraLoaderModelOnly" - }, - "widgets_values": [ - "add_detail.safetensors", - 1 - ] - }, - { - "id": 52, - "type": "LoraLoaderModelOnly", - "pos": [ - -2467.624330660592, - 28.308056444287608 - ], - "size": { - "0": 315, - "1": 82 - }, - "flags": {}, - "order": 17, - "mode": 0, - "inputs": [ - { - "name": "model", - "type": "MODEL", - "link": 102 - } - ], - "outputs": [ - { - "name": "MODEL", - "type": "MODEL", - "links": [ - 757 - ], - "shape": 3, - "slot_index": 0 - } - ], - "properties": { - "Node name for S&R": "LoraLoaderModelOnly" - }, - "widgets_values": [ - "AnimateLCM_sd15_t2v_lora.safetensors", - 1 - ] - }, - { - "id": 290, - "type": "FeatureMixer", - "pos": [ - 303.9791111590381, - -923.1734799453269 - ], - "size": { - "0": 367.79998779296875, - "1": 318 - }, - "flags": {}, - "order": 41, - "mode": 0, - "inputs": [ - { - "name": "feature", - "type": "FEATURE", - "link": 692 - } - ], - "outputs": [ - { - "name": "FEATURE", - "type": "FEATURE", - "links": [ - 693 - ], - "shape": 3, - "slot_index": 0 - }, - { - "name": "FEATURE_VISUALIZATION", - "type": "IMAGE", - "links": [ - 694 - ], - "shape": 3 - } - ], - "properties": { - "Node name for S&R": "FeatureMixer" - }, - "widgets_values": [ - 1.79, - 0, - 1.7, - 3.4000000000000004, - 1, - 1, - 1, - 0, - 0.3, - 0.6, - 0.5 - ] - }, - { - "id": 11, - "type": "IPAdapterUnifiedLoader", - "pos": [ - 1911, - 216 - ], - "size": { - "0": 210, - "1": 78 - }, - "flags": {}, - "order": 53, - "mode": 0, - "inputs": [ - { - "name": "model", - "type": "MODEL", - "link": 195 - }, - { - "name": "ipadapter", - "type": "IPADAPTER", - "link": null - } - ], - "outputs": [ - { - "name": "model", - "type": "MODEL", - "links": [ - 623 - ], - "shape": 3, - "slot_index": 0 - }, - { - "name": "ipadapter", - "type": "IPADAPTER", - "links": [ - 237 - ], - "shape": 3, - "slot_index": 1 - } - ], - "properties": { - "Node name for S&R": "IPAdapterUnifiedLoader" - }, - "widgets_values": [ - "PLUS (high strength)" - ] - }, - { - "id": 30, - "type": "ADE_LoadAnimateDiffModel", - "pos": [ - 1011.6153756226563, - 196.9229692988281 - ], - "size": { - "0": 315, - "1": 58 - }, - "flags": {}, - "order": 3, - "mode": 0, - "inputs": [ - { - "name": "ad_settings", - "type": "AD_SETTINGS", - "link": null - } - ], - "outputs": [ - { - "name": "MOTION_MODEL", - "type": "MOTION_MODEL_ADE", - "links": [ - 61 - ], - "shape": 3, - "slot_index": 0 - } - ], - "properties": { - "Node name for S&R": "ADE_LoadAnimateDiffModel" - }, - "widgets_values": [ - "ALCM_sd15_t2v_beta.ckpt" - ] - }, - { - "id": 271, - "type": "PreviewImage", - "pos": [ - 739.1979544549737, - -923.5329804209598 - ], - "size": { - "0": 799.0379638671875, - "1": 431.54742431640625 - }, - "flags": {}, - "order": 45, - "mode": 0, - "inputs": [ - { - "name": "images", - "type": "IMAGE", - "link": 694 - } - ], - "properties": { - "Node name for S&R": "PreviewImage" - } - }, - { - "id": 255, - "type": "CLIPTextEncode", - "pos": [ - -1845.306410106198, - 142.10544477703155 - ], - "size": { - "0": 425.27801513671875, - "1": 180.6060791015625 - }, - "flags": {}, - "order": 19, - "mode": 0, - "inputs": [ - { - "name": "clip", - "type": "CLIP", - "link": 610 - } - ], - "outputs": [ - { - "name": "CONDITIONING", - "type": "CONDITIONING", - "links": [ - 769 - ], - "slot_index": 0 - } - ], - "properties": { - "Node name for S&R": "CLIPTextEncode" - }, - "widgets_values": [ - "" - ] - }, - { - "id": 323, - "type": "Reroute", - "pos": [ - -1410, - 660 - ], - "size": [ - 75, - 26 - ], - "flags": {}, - "order": 26, - "mode": 0, - "inputs": [ - { - "name": "", - "type": "*", - "link": 768 - } - ], - "outputs": [ - { - "name": "", - "type": "CONDITIONING", - "links": [ - 770 - ], - "slot_index": 0 - } - ], - "properties": { - "showOutputText": false, - "horizontal": false - } - }, - { - "id": 324, - "type": "Reroute", - "pos": [ - -1409, - 695 - ], - "size": [ - 75, - 26 - ], - "flags": {}, - "order": 27, - "mode": 0, - "inputs": [ - { - "name": "", - "type": "*", - "link": 769 - } - ], - "outputs": [ - { - "name": "", - "type": "CONDITIONING", - "links": [ - 771 - ], - "slot_index": 0 - } - ], - "properties": { - "showOutputText": false, - "horizontal": false - } - }, - { - "id": 279, - "type": "InvertMask", - "pos": [ - -937, - 238 - ], - "size": { - "0": 210, - "1": 26 - }, - "flags": {}, - "order": 31, - "mode": 0, - "inputs": [ - { - "name": "mask", - "type": "MASK", - "link": 657 - } - ], - "outputs": [ - { - "name": "MASK", - "type": "MASK", - "links": [ - 774 - ], - "shape": 3, - "slot_index": 0 - } - ], - "properties": { - "Node name for S&R": "InvertMask" - } - }, - { - "id": 326, - "type": "Reroute", - "pos": [ - -717, - 621 - ], - "size": [ - 75, - 26 - ], - "flags": {}, - "order": 36, - "mode": 0, - "inputs": [ - { - "name": "", - "type": "*", - "link": 774 - } - ], - "outputs": [ - { - "name": "", - "type": "MASK", - "links": [ - 776 - ], - "slot_index": 0 - } - ], - "properties": { - "showOutputText": false, - "horizontal": false - } - }, - { - "id": 34, - "type": "ADE_StandardStaticContextOptions", - "pos": [ - 1040, - -45 - ], - "size": { - "0": 319.20001220703125, - "1": 198 - }, - "flags": {}, - "order": 4, - "mode": 0, - "inputs": [ - { - "name": "prev_context", - "type": "CONTEXT_OPTIONS", - "link": null - }, - { - "name": "view_opts", - "type": "VIEW_OPTS", - "link": null - } - ], - "outputs": [ - { - "name": "CONTEXT_OPTS", - "type": "CONTEXT_OPTIONS", - "links": [ - 64 - ], - "shape": 3 - } - ], - "properties": { - "Node name for S&R": "ADE_StandardStaticContextOptions" - }, - "widgets_values": [ - 16, - 6, - "pyramid", - false, - 0, - 1 - ] - }, - { - "id": 259, - "type": "IPAdapterWeightsFromStrategy", - "pos": [ - 1909, - 341 - ], - "size": { - "0": 278.79998779296875, - "1": 126 - }, - "flags": {}, - "order": 50, - "mode": 0, - "inputs": [ - { - "name": "weights_strategy", - "type": "WEIGHTS_STRATEGY", - "link": 678 - }, - { - "name": "image", - "type": "IMAGE", - "link": 676 - } - ], - "outputs": [ - { - "name": "weights", - "type": "FLOAT", - "links": [ - 617 - ], - "shape": 3, - "slot_index": 0 - }, - { - "name": "weights_invert", - "type": "FLOAT", - "links": null, - "shape": 3 - }, - { - "name": "total_frames", - "type": "INT", - "links": null, - "shape": 3 - }, - { - "name": "image_1", - "type": "IMAGE", - "links": [ - 618 - ], - "shape": 3, - "slot_index": 3 - }, - { - "name": "image_2", - "type": "IMAGE", - "links": null, - "shape": 3 - }, - { - "name": "weights_strategy", - "type": "WEIGHTS_STRATEGY", - "links": null, - "shape": 3 - } - ], - "properties": { - "Node name for S&R": "IPAdapterWeightsFromStrategy" - } - }, - { - "id": 291, - "type": "LoraLoaderModelOnly", - "pos": [ - -2460.939056887235, - 300.63488893012595 - ], - "size": { - "0": 315, - "1": 82 - }, - "flags": {}, - "order": 33, - "mode": 0, - "inputs": [ - { - "name": "model", - "type": "MODEL", - "link": 756 - } - ], - "outputs": [ - { - "name": "MODEL", - "type": "MODEL", - "links": [ - 781 - ], - "shape": 3, - "slot_index": 0 - } - ], - "properties": { - "Node name for S&R": "LoraLoaderModelOnly" - }, - "widgets_values": [ - "ral-dissolve-sd15.safetensors", - 0.6 - ] - }, - { - "id": 329, - "type": "Reroute", - "pos": [ - -2102.7424690643847, - 637.4964529127092 - ], - "size": [ - 75, - 26 - ], - "flags": {}, - "order": 37, - "mode": 0, - "inputs": [ - { - "name": "", - "type": "*", - "link": 781 - } - ], - "outputs": [ - { - "name": "", - "type": "MODEL", - "links": [ - 782 - ], - "slot_index": 0 - } - ], - "properties": { - "showOutputText": false, - "horizontal": false - } - }, - { - "id": 330, - "type": "Reroute", - "pos": [ - 1330, - 661 - ], - "size": [ - 75, - 26 - ], - "flags": {}, - "order": 40, - "mode": 0, - "inputs": [ - { - "name": "", - "type": "*", - "link": 782 - } - ], - "outputs": [ - { - "name": "", - "type": "MODEL", - "links": [ - 783 - ], - "slot_index": 0 - } - ], - "properties": { - "showOutputText": false, - "horizontal": false - } - }, - { - "id": 4, - "type": "CheckpointLoaderSimple", - "pos": [ - -2470.833727160648, - -116.24953047983493 - ], - "size": { - "0": 315, - "1": 98 - }, - "flags": {}, - "order": 5, - "mode": 0, - "outputs": [ - { - "name": "MODEL", - "type": "MODEL", - "links": [ - 102 - ], - "slot_index": 0 - }, - { - "name": "CLIP", - "type": "CLIP", - "links": [ - 81, - 610 - ], - "slot_index": 1 - }, - { - "name": "VAE", - "type": "VAE", - "links": [ - 785 - ], - "slot_index": 2 - } - ], - "properties": { - "Node name for S&R": "CheckpointLoaderSimple" - }, - "widgets_values": [ - "photon_v1.safetensors" - ] - }, - { - "id": 331, - "type": "Reroute", - "pos": [ - -2083, - -339 - ], - "size": [ - 75, - 26 - ], - "flags": {}, - "order": 20, - "mode": 0, - "inputs": [ - { - "name": "", - "type": "*", - "link": 785 - } - ], - "outputs": [ - { - "name": "", - "type": "VAE", - "links": [ - 786 - ], - "slot_index": 0 - } - ], - "properties": { - "showOutputText": false, - "horizontal": false - } - }, - { - "id": 328, - "type": "Reroute", - "pos": [ - 437, - -368.0390990317155 - ], - "size": [ - 75, - 26 - ], - "flags": {}, - "order": 28, - "mode": 0, - "inputs": [ - { - "name": "", - "type": "*", - "link": 786 - } - ], - "outputs": [ - { - "name": "", - "type": "VAE", - "links": [ - 779, - 780 - ], - "slot_index": 0 - } - ], - "properties": { - "showOutputText": false, - "horizontal": false - } - }, - { - "id": 87, - "type": "VAEDecode", - "pos": [ - 4136.42139592476, - -46.640902628124685 - ], - "size": { - "0": 140, - "1": 46 - }, - "flags": {}, - "order": 64, - "mode": 0, - "inputs": [ - { - "name": "samples", - "type": "LATENT", - "link": 651 - }, - { - "name": "vae", - "type": "VAE", - "link": 749 - } - ], - "outputs": [ - { - "name": "IMAGE", - "type": "IMAGE", - "links": [ - 790 - ], - "slot_index": 0 - } - ], - "properties": { - "Node name for S&R": "VAEDecode" - } - }, - { - "id": 333, - "type": "ImageCASharpening+", - "pos": [ - 4038, - 146 - ], - "size": { - "0": 315, - "1": 58 - }, - "flags": {}, - "order": 65, - "mode": 0, - "inputs": [ - { - "name": "image", - "type": "IMAGE", - "link": 790 - } - ], - "outputs": [ - { - "name": "IMAGE", - "type": "IMAGE", - "links": [ - 791 - ], - "shape": 3, - "slot_index": 0 - } - ], - "properties": { - "Node name for S&R": "ImageCASharpening+" - }, - "widgets_values": [ - 0.8 - ] - }, - { - "id": 320, - "type": "VHS_VideoCombine", - "pos": [ - 3325.7626474195895, - -139.28775915330124 - ], - "size": [ - 210, - 665 - ], - "flags": {}, - "order": 61, - "mode": 0, - "inputs": [ - { - "name": "images", - "type": "IMAGE", - "link": 759 - }, - { - "name": "audio", - "type": "*", - "link": null - }, - { - "name": "meta_batch", - "type": "VHS_BatchManager", - "link": null - }, - { - "name": "vae", - "type": "VAE", - "link": null - } - ], - "outputs": [ - { - "name": "Filenames", - "type": "VHS_FILENAMES", - "links": null, - "shape": 3 - } - ], - "properties": { - "Node name for S&R": "VHS_VideoCombine" - }, - "widgets_values": { - "frame_rate": 30, - "loop_count": 0, - "filename_prefix": "AnimateDiff", - "format": "video/h264-mp4", - "pix_fmt": "yuv420p", - "crf": 19, - "save_metadata": true, - "pingpong": false, - "save_output": true, - "videopreview": { - "hidden": false, - "paused": false, - "params": { - "filename": "AnimateDiff_02748-audio.mp4", - "subfolder": "", - "type": "output", - "format": "video/h264-mp4", - "frame_rate": 30 - } - } - } - }, - { - "id": 316, - "type": "VAEEncode", - "pos": [ - 3708, - -195 - ], - "size": { - "0": 210, - "1": 46 - }, - "flags": {}, - "order": 60, - "mode": 0, - "inputs": [ - { - "name": "pixels", - "type": "IMAGE", - "link": 750 - }, - { - "name": "vae", - "type": "VAE", - "link": 747 - } - ], - "outputs": [ - { - "name": "LATENT", - "type": "LATENT", - "links": [ - 748 - ], - "shape": 3, - "slot_index": 0 - } - ], - "properties": { - "Node name for S&R": "VAEEncode" - } - }, - { - "id": 276, - "type": "NNLatentUpscale", - "pos": [ - 3698, - -95 - ], - "size": { - "0": 315, - "1": 82 - }, - "flags": {}, - "order": 62, - "mode": 0, - "inputs": [ - { - "name": "latent", - "type": "LATENT", - "link": 748 - } - ], - "outputs": [ - { - "name": "LATENT", - "type": "LATENT", - "links": [ - 650 - ], - "shape": 3, - "slot_index": 0 - } - ], - "properties": { - "Node name for S&R": "NNLatentUpscale" - }, - "widgets_values": [ - "SD 1.x", - 1.5 - ] - }, - { - "id": 294, - "type": "MIDILoadAndExtract", - "pos": [ - 1016, - -1378 - ], - "size": { - "0": 1020, - "1": 346 - }, - "flags": {}, - "order": 6, - "mode": 4, - "inputs": [ - { - "name": "video_frames", - "type": "IMAGE", - "link": null - } - ], - "outputs": [ - { - "name": "MIDI", - "type": "MIDI", - "links": null, - "shape": 3 - }, - { - "name": "FEATURE", - "type": "FEATURE", - "links": null, - "shape": 3 - }, - { - "name": "FEATURE_PIPE", - "type": "FEATURE_PIPE", - "links": null, - "shape": 3 - } - ], - "properties": { - "selectedNotes": [], - "Node name for S&R": "MIDILoadAndExtract" - }, - "widgets_values": [ - "drummid.mid", - "all", - "Note On/Off", - 30, - false, - "", - "upload", - "refresh" - ] - }, - { - "id": 297, - "type": "ColorFeatureNode", - "pos": [ - 220, - -1570 - ], - "size": { - "0": 317.4000244140625, - "1": 102 - }, - "flags": {}, - "order": 7, - "mode": 4, - "inputs": [ - { - "name": "video_frames", - "type": "IMAGE", - "link": null - } - ], - "outputs": [ - { - "name": "FEATURE", - "type": "FEATURE", - "links": null, - "shape": 3 - }, - { - "name": "FEATURE_PIPE", - "type": "FEATURE_PIPE", - "links": null, - "shape": 3 - } - ], - "properties": { - "Node name for S&R": "ColorFeatureNode" - }, - "widgets_values": [ - 30, - "dominant_color" - ] - }, - { - "id": 273, - "type": "easy imageRemBg", - "pos": [ - -980, - -141 - ], - "size": { - "0": 315, - "1": 314 - }, - "flags": { - "collapsed": false - }, - "order": 23, - "mode": 0, - "inputs": [ - { - "name": "images", - "type": "IMAGE", - "link": 640 - } - ], - "outputs": [ - { - "name": "image", - "type": "IMAGE", - "links": null, - "shape": 3 - }, - { - "name": "mask", - "type": "MASK", - "links": [ - 657 - ], - "shape": 3, - "slot_index": 1 - } - ], - "properties": { - "Node name for S&R": "easy imageRemBg" - }, - "widgets_values": [ - "RMBG-1.4", - "Hide", - "ComfyUI", - false - ] - }, - { - "id": 261, - "type": "ImageScale", - "pos": [ - -937.0245821386411, - 369.85541007695775 - ], - "size": { - "0": 315, - "1": 130 - }, - "flags": {}, - "order": 22, - "mode": 0, - "inputs": [ - { - "name": "image", - "type": "IMAGE", - "link": 620 - } - ], - "outputs": [ - { - "name": "IMAGE", - "type": "IMAGE", - "links": [ - 704, - 765 - ], - "shape": 3, - "slot_index": 0 - } - ], - "properties": { - "Node name for S&R": "ImageScale" - }, - "widgets_values": [ - "nearest-exact", - 518, - 922, - "disabled" - ] - }, - { - "id": 307, - "type": "VHS_VideoCombine", - "pos": [ - 269, - -181 - ], - "size": [ - 210, - 663 - ], - "flags": {}, - "order": 46, - "mode": 4, - "inputs": [ - { - "name": "images", - "type": "IMAGE", - "link": 720 - }, - { - "name": "audio", - "type": "*", - "link": null - }, - { - "name": "meta_batch", - "type": "VHS_BatchManager", - "link": null - }, - { - "name": "vae", - "type": "VAE", - "link": null - } - ], - "outputs": [ - { - "name": "Filenames", - "type": "VHS_FILENAMES", - "links": null, - "shape": 3 - } - ], - "properties": { - "Node name for S&R": "VHS_VideoCombine" - }, - "widgets_values": { - "frame_rate": 30, - "loop_count": 0, - "filename_prefix": "AnimateDiff", - "format": "video/h264-mp4", - "pix_fmt": "yuv420p", - "crf": 19, - "save_metadata": true, - "pingpong": false, - "save_output": true, - "videopreview": { - "hidden": false, - "paused": false, - "params": { - "filename": "AnimateDiff_02724.mp4", - "subfolder": "", - "type": "output", - "format": "video/h264-mp4", - "frame_rate": 30 - } - } - } - }, - { - "id": 260, - "type": "VAEEncode", - "pos": [ - 692, - 82 - ], - "size": { - "0": 210, - "1": 46 - }, - "flags": {}, - "order": 47, - "mode": 0, - "inputs": [ - { - "name": "pixels", - "type": "IMAGE", - "link": 766 - }, - { - "name": "vae", - "type": "VAE", - "link": 779 - } - ], - "outputs": [ - { - "name": "LATENT", - "type": "LATENT", - "links": [ - 793 - ], - "shape": 3, - "slot_index": 0 - } - ], - "properties": { - "Node name for S&R": "VAEEncode" - } - }, - { - "id": 317, - "type": "Reroute", - "pos": [ - 2590, - -380 - ], - "size": [ - 75, - 26 - ], - "flags": {}, - "order": 34, - "mode": 0, - "inputs": [ - { - "name": "", - "type": "*", - "link": 780 - } - ], - "outputs": [ - { - "name": "", - "type": "VAE", - "links": [ - 746, - 747, - 749 - ], - "slot_index": 0 - } - ], - "properties": { - "showOutputText": false, - "horizontal": false - } - }, - { - "id": 311, - "type": "Reroute", - "pos": [ - 2590, - -350 - ], - "size": [ - 75, - 26 - ], - "flags": {}, - "order": 32, - "mode": 0, - "inputs": [ - { - "name": "", - "type": "*", - "link": 788 - } - ], - "outputs": [ - { - "name": "", - "type": "AUDIO", - "links": [ - 762 - ], - "slot_index": 0 - } - ], - "properties": { - "showOutputText": false, - "horizontal": false - } - }, - { - "id": 332, - "type": "Reroute", - "pos": [ - -526, - -330 - ], - "size": [ - 75, - 26 - ], - "flags": {}, - "order": 24, - "mode": 0, - "inputs": [ - { - "name": "", - "type": "*", - "link": 811 - } - ], - "outputs": [ - { - "name": "", - "type": "AUDIO", - "links": [ - 788, - 789 - ], - "slot_index": 0 - } - ], - "properties": { - "showOutputText": false, - "horizontal": false - } - }, - { - "id": 301, - "type": "Reroute", - "pos": [ - -530, - -300 - ], - "size": [ - 75, - 26 - ], - "flags": {}, - "order": 30, - "mode": 0, - "inputs": [ - { - "name": "", - "type": "*", - "link": 704 - } - ], - "outputs": [ - { - "name": "", - "type": "IMAGE", - "links": [ - 699 - ], - "slot_index": 0 - } - ], - "properties": { - "showOutputText": false, - "horizontal": false - } - }, - { - "id": 335, - "type": "Reroute", - "pos": [ - 976, - -308 - ], - "size": [ - 75, - 26 - ], - "flags": {}, - "order": 51, - "mode": 0, - "inputs": [ - { - "name": "", - "type": "*", - "link": 793 - } - ], - "outputs": [ - { - "name": "", - "type": "LATENT", - "links": [ - 794 - ], - "slot_index": 0 - } - ], - "properties": { - "showOutputText": false, - "horizontal": false - } - }, - { - "id": 281, - "type": "ControlNetLoader", - "pos": [ - 2343, - 660 - ], - "size": { - "0": 315, - "1": 58 - }, - "flags": {}, - "order": 8, - "mode": 0, - "outputs": [ - { - "name": "CONTROL_NET", - "type": "CONTROL_NET", - "links": [ - 660 - ], - "shape": 3 - } - ], - "properties": { - "Node name for S&R": "ControlNetLoader" - }, - "widgets_values": [ - "control_v11p_sd15_lineart_fp16.safetensors" - ] - }, - { - "id": 282, - "type": "LineartStandardPreprocessor", - "pos": [ - 2346, - 752 - ], - "size": { - "0": 315, - "1": 106 - }, - "flags": {}, - "order": 52, - "mode": 0, - "inputs": [ - { - "name": "image", - "type": "IMAGE", - "link": 773 - } - ], - "outputs": [ - { - "name": "IMAGE", - "type": "IMAGE", - "links": [ - 661 - ], - "shape": 3, - "slot_index": 0 - } - ], - "properties": { - "Node name for S&R": "LineartStandardPreprocessor" - }, - "widgets_values": [ - 6, - 8, - 512 - ] - }, - { - "id": 325, - "type": "Reroute", - "pos": [ - 286, - 737 - ], - "size": [ - 75, - 26 - ], - "flags": {}, - "order": 48, - "mode": 0, - "inputs": [ - { - "name": "", - "type": "*", - "link": 772 - } - ], - "outputs": [ - { - "name": "", - "type": "IMAGE", - "links": [ - 773 - ], - "slot_index": 0 - } - ], - "properties": { - "showOutputText": false, - "horizontal": false - } - }, - { - "id": 321, - "type": "VHS_VideoCombine", - "pos": [ - 4351.05751488286, - -207.0379464384985 - ], - "size": [ - 210, - 664 - ], - "flags": {}, - "order": 66, - "mode": 0, - "inputs": [ - { - "name": "images", - "type": "IMAGE", - "link": 791 - }, - { - "name": "audio", - "type": "AUDIO", - "link": 762 - }, - { - "name": "meta_batch", - "type": "VHS_BatchManager", - "link": null - }, - { - "name": "vae", - "type": "VAE", - "link": null - } - ], - "outputs": [ - { - "name": "Filenames", - "type": "VHS_FILENAMES", - "links": null, - "shape": 3 - } - ], - "properties": { - "Node name for S&R": "VHS_VideoCombine" - }, - "widgets_values": { - "frame_rate": 30, - "loop_count": 0, - "filename_prefix": "AnimateDiff", - "format": "video/h264-mp4", - "pix_fmt": "yuv420p", - "crf": 19, - "save_metadata": false, - "pingpong": false, - "save_output": true, - "videopreview": { - "hidden": false, - "paused": false, - "params": { - "filename": "AnimateDiff_02749-audio.mp4", - "subfolder": "", - "type": "output", - "format": "video/h264-mp4", - "frame_rate": 30 - } - } - } - }, - { - "id": 310, - "type": "FlexImageKaleidoscope", - "pos": [ - -143, - 0 - ], - "size": { - "0": 344.3999938964844, - "1": 338 - }, - "flags": {}, - "order": 42, - "mode": 4, - "inputs": [ - { - "name": "images", - "type": "IMAGE", - "link": 765 - }, - { - "name": "feature", - "type": "FEATURE", - "link": 792 - }, - { - "name": "feature_pipe", - "type": "FEATURE_PIPE", - "link": 718 - } - ], - "outputs": [ - { - "name": "IMAGE", - "type": "IMAGE", - "links": [ - 720, - 766, - 772 - ], - "shape": 3, - "slot_index": 0 - } - ], - "properties": { - "Node name for S&R": "FlexImageKaleidoscope" - }, - "widgets_values": [ - 1, - 0, - "rotation", - "relative", - 8, - 0.5, - 0.5, - 1, - 0, - 0, - 1 - ] - }, - { - "id": 327, - "type": "Reroute", - "pos": [ - 2184, - 634 - ], - "size": [ - 75, - 26 - ], - "flags": {}, - "order": 39, - "mode": 0, - "inputs": [ - { - "name": "", - "type": "*", - "link": 776 - } - ], - "outputs": [ - { - "name": "", - "type": "MASK", - "links": [ - 777, - 797 - ], - "slot_index": 0 - } - ], - "properties": { - "showOutputText": false, - "horizontal": false - } - }, - { - "id": 337, - "type": "SetLatentNoiseMask", - "pos": [ - 2707, - 266 - ], - "size": { - "0": 210, - "1": 46 - }, - "flags": {}, - "order": 57, - "mode": 0, - "inputs": [ - { - "name": "samples", - "type": "LATENT", - "link": 796 - }, - { - "name": "mask", - "type": "MASK", - "link": 797 - } - ], - "outputs": [ - { - "name": "LATENT", - "type": "LATENT", - "links": [ - 798 - ], - "shape": 3, - "slot_index": 0 - } - ], - "properties": { - "Node name for S&R": "SetLatentNoiseMask" - } - }, - { - "id": 336, - "type": "Reroute", - "pos": [ - 2590, - -320 - ], - "size": [ - 75, - 26 - ], - "flags": {}, - "order": 54, - "mode": 0, - "inputs": [ - { - "name": "", - "type": "*", - "link": 794 - } - ], - "outputs": [ - { - "name": "", - "type": "LATENT", - "links": [ - 796 - ], - "slot_index": 0 - } - ], - "properties": { - "showOutputText": false, - "horizontal": false - } - }, - { - "id": 293, - "type": "Note", - "pos": [ - 97, - -1202 - ], - "size": { - "0": 838.786865234375, - "1": 179.91893005371094 - }, - "flags": {}, - "order": 9, - "mode": 0, - "properties": { - "text": "" - }, - "widgets_values": [ - "here, we set up the audio Feature by extracting the instruments from the audio and isolating the drums.\nThen, before we convert the Feature into IPAdapter weights, we shape\" the feature with the FeatureMixer to make it drive the weights in a suitable way.\n\nThis example uses an audio feature, but it could be swapped out for any of the features in the node pack, including MIDI, Depth, Color, Time, Brightness, and more\n\n Look there's even a keyboard! -------->" - ], - "color": "#432", - "bgcolor": "#653" - }, - { - "id": 299, - "type": "Note", - "pos": [ - 3184, - -387 - ], - "size": { - "0": 436.01641845703125, - "1": 119.03775787353516 - }, - "flags": {}, - "order": 10, - "mode": 0, - "properties": { - "text": "" - }, - "widgets_values": [ - "" - ], - "color": "#432", - "bgcolor": "#653" - }, - { - "id": 275, - "type": "KSampler", - "pos": [ - 3719.127367528601, - 154.68755277929998 - ], - "size": { - "0": 308.92816162109375, - "1": 263.701904296875 - }, - "flags": {}, - "order": 63, - "mode": 0, - "inputs": [ - { - "name": "model", - "type": "MODEL", - "link": 784 - }, - { - "name": "positive", - "type": "CONDITIONING", - "link": 669 - }, - { - "name": "negative", - "type": "CONDITIONING", - "link": 670 - }, - { - "name": "latent_image", - "type": "LATENT", - "link": 650 - } - ], - "outputs": [ - { - "name": "LATENT", - "type": "LATENT", - "links": [ - 651 - ], - "slot_index": 0 - } - ], - "properties": { - "Node name for S&R": "KSampler" - }, - "widgets_values": [ - 144, - "fixed", - 4, - 1.8, - "lcm", - "sgm_uniform", - 0.3 - ] - }, - { - "id": 298, - "type": "Note", - "pos": [ - 2044, - -364 - ], - "size": { - "0": 449.9469299316406, - "1": 171.0027618408203 - }, - "flags": {}, - "order": 11, - "mode": 0, - "properties": { - "text": "" - }, - "widgets_values": [ - "give a cool image to the IPAdapter - I tripled it here because of reasons.\n\nFeed it the weights that we created from the audio\n\nI started getting memory errors with big images so i just smashed them" - ], - "color": "#432", - "bgcolor": "#653" - }, - { - "id": 292, - "type": "Note", - "pos": [ - -1853, - -497 - ], - "size": { - "0": 695.8017578125, - "1": 261.10052490234375 - }, - "flags": {}, - "order": 12, - "mode": 0, - "properties": { - "text": "" - }, - "widgets_values": [ - "This example is meant to demonstrate modulating an IP adapter with the Feature system introduced by the ryanontheinside nodes.\n\nFor this example, we will simply apply an IPAdapter to the background of a video, controlled by the drums in a song.\n\n\n\nIf any issues or if you want to contribute:\nhttps://github.com/ryanontheinside/ComfyUI_RyanOnTheInside\n\nModels\nhttps://huggingface.co/wangfuyun/AnimateLCM" - ], - "color": "#432", - "bgcolor": "#653" - }, - { - "id": 285, - "type": "FeatureToWeightsStrategy", - "pos": [ - 310.1979544549727, - -534.5329804209596 - ], - "size": { - "0": 378, - "1": 46.42244338989258 - }, - "flags": {}, - "order": 44, - "mode": 0, - "inputs": [ - { - "name": "feature", - "type": "FEATURE", - "link": 693 - } - ], - "outputs": [ - { - "name": "WEIGHTS_STRATEGY", - "type": "WEIGHTS_STRATEGY", - "links": [ - 678 - ], - "shape": 3 - } - ], - "properties": { - "Node name for S&R": "FeatureToWeightsStrategy" - } - }, - { - "id": 263, - "type": "AudioFeatureExtractor", - "pos": [ - -114, - -531 - ], - "size": { - "0": 361.20001220703125, - "1": 78 - }, - "flags": {}, - "order": 38, - "mode": 0, - "inputs": [ - { - "name": "audio", - "type": "AUDIO", - "link": 685 - }, - { - "name": "feature_pipe", - "type": "FEATURE_PIPE", - "link": 687 - } - ], - "outputs": [ - { - "name": "FEATURE", - "type": "FEATURE", - "links": [ - 692, - 792 - ], - "shape": 3, - "slot_index": 0 - }, - { - "name": "FEATURE_PIPE", - "type": "FEATURE_PIPE", - "links": [ - 718 - ], - "shape": 3, - "slot_index": 1 - } - ], - "properties": { - "Node name for S&R": "AudioFeatureExtractor" - }, - "widgets_values": [ - "amplitude_envelope" - ] - }, - { - "id": 56, - "type": "LoadImage", - "pos": [ - 1837, - -162 - ], - "size": { - "0": 210, - "1": 314 - }, - "flags": {}, - "order": 13, - "mode": 0, - "outputs": [ - { - "name": "IMAGE", - "type": "IMAGE", - "links": [ - 807 - ], - "shape": 3, - "slot_index": 0 - }, - { - "name": "MASK", - "type": "MASK", - "links": null, - "shape": 3 - } - ], - "properties": { - "Node name for S&R": "LoadImage" - }, - "widgets_values": [ - "blue_eyes_painting.jpg", - "image" - ] - }, - { - "id": 102, - "type": "IPAdapterBatch", - "pos": [ - 2304, - 156 - ], - "size": { - "0": 303.8558349609375, - "1": 278 - }, - "flags": {}, - "order": 56, - "mode": 0, - "inputs": [ - { - "name": "model", - "type": "MODEL", - "link": 623 - }, - { - "name": "ipadapter", - "type": "IPADAPTER", - "link": 237 - }, - { - "name": "image", - "type": "IMAGE", - "link": 618, - "slot_index": 2 - }, - { - "name": "image_negative", - "type": "IMAGE", - "link": null - }, - { - "name": "attn_mask", - "type": "MASK", - "link": 777 - }, - { - "name": "clip_vision", - "type": "CLIP_VISION", - "link": null - }, - { - "name": "weight", - "type": "FLOAT", - "link": 617, - "widget": { - "name": "weight" - } - } - ], - "outputs": [ - { - "name": "MODEL", - "type": "MODEL", - "links": [ - 716, - 784 - ], - "shape": 3, - "slot_index": 0 - } - ], - "properties": { - "Node name for S&R": "IPAdapterBatch" - }, - "widgets_values": [ - 0.5, - "strong style transfer", - 0, - 1, - "K+V", - 0 - ] - }, - { - "id": 84, - "type": "KSampler", - "pos": [ - 2949.7626474195895, - 53.71224084669877 - ], - "size": { - "0": 308.92816162109375, - "1": 263.701904296875 - }, - "flags": {}, - "order": 58, - "mode": 0, - "inputs": [ - { - "name": "model", - "type": "MODEL", - "link": 716 - }, - { - "name": "positive", - "type": "CONDITIONING", - "link": 665 - }, - { - "name": "negative", - "type": "CONDITIONING", - "link": 666 - }, - { - "name": "latent_image", - "type": "LATENT", - "link": 798 - } - ], - "outputs": [ - { - "name": "LATENT", - "type": "LATENT", - "links": [ - 656 - ], - "slot_index": 0 - } - ], - "properties": { - "Node name for S&R": "KSampler" - }, - "widgets_values": [ - 144, - "fixed", - 4, - 1.8, - "lcm", - "sgm_uniform", - 1 - ] - }, - { - "id": 258, - "type": "VHS_LoadVideo", - "pos": [ - -1254, - -140 - ], - "size": [ - 235.1999969482422, - 658.3553434150164 - ], - "flags": {}, - "order": 14, - "mode": 0, - "inputs": [ - { - "name": "meta_batch", - "type": "VHS_BatchManager", - "link": null - }, - { - "name": "vae", - "type": "VAE", - "link": null - } - ], - "outputs": [ - { - "name": "IMAGE", - "type": "IMAGE", - "links": [ - 620, - 640 - ], - "shape": 3, - "slot_index": 0 - }, - { - "name": "frame_count", - "type": "INT", - "links": null, - "shape": 3 - }, - { - "name": "audio", - "type": "AUDIO", - "links": [ - 811 - ], - "shape": 3, - "slot_index": 2 - }, - { - "name": "video_info", - "type": "VHS_VIDEOINFO", - "links": [], - "shape": 3, - "slot_index": 3 - } - ], - "properties": { - "Node name for S&R": "VHS_LoadVideo" - }, - "widgets_values": { - "video": "pexels_womanSitting_with_audio.mp4", - "force_rate": 30, - "force_size": "Disabled", - "custom_width": 512, - "custom_height": 512, - "frame_load_cap": 100, - "skip_first_frames": 0, - "select_every_nth": 1, - "choose video to upload": "image", - "videopreview": { - "hidden": false, - "paused": false, - "params": { - "frame_load_cap": 100, - "skip_first_frames": 0, - "force_rate": 30, - "filename": "pexels_womanSitting_with_audio.mp4", - "type": "input", - "format": "video/mp4", - "select_every_nth": 1 - } - } - } - }, - { - "id": 7, - "type": "CLIPTextEncode", - "pos": [ - -1828.3064101061982, - -109.89455522296822 - ], - "size": { - "0": 425.27801513671875, - "1": 180.6060791015625 - }, - "flags": {}, - "order": 18, - "mode": 0, - "inputs": [ - { - "name": "clip", - "type": "CLIP", - "link": 81 - } - ], - "outputs": [ - { - "name": "CONDITIONING", - "type": "CONDITIONING", - "links": [ - 768 - ], - "slot_index": 0 - } - ], - "properties": { - "Node name for S&R": "CLIPTextEncode" - }, - "widgets_values": [ - "high quality, masterpiece, 4k, high resolution photograph of psychedelic fire pulsing, ral-dissolve fire swirling in the sky, made of ral-dissolve" - ] - }, - { - "id": 145, - "type": "ImageBatchMultiple+", - "pos": [ - 2338, - -84 - ], - "size": { - "0": 210, - "1": 138 - }, - "flags": {}, - "order": 29, - "mode": 0, - "inputs": [ - { - "name": "image_1", - "type": "IMAGE", - "link": 810 - }, - { - "name": "image_2", - "type": "IMAGE", - "link": 809 - }, - { - "name": "image_3", - "type": "IMAGE", - "link": 812 - }, - { - "name": "image_4", - "type": "IMAGE", - "link": null - }, - { - "name": "image_5", - "type": "IMAGE", - "link": null - } - ], - "outputs": [ - { - "name": "IMAGE", - "type": "IMAGE", - "links": [ - 676 - ], - "shape": 3, - "slot_index": 0 - } - ], - "properties": { - "Node name for S&R": "ImageBatchMultiple+" - }, - "widgets_values": [ - "lanczos" - ] - }, - { - "id": 343, - "type": "ImageScale", - "pos": [ - 2076, - -102 - ], - "size": { - "0": 210, - "1": 130 - }, - "flags": {}, - "order": 21, - "mode": 0, - "inputs": [ - { - "name": "image", - "type": "IMAGE", - "link": 807 - } - ], - "outputs": [ - { - "name": "IMAGE", - "type": "IMAGE", - "links": [ - 809, - 810, - 812 - ], - "shape": 3, - "slot_index": 0 - } - ], - "properties": { - "Node name for S&R": "ImageScale" - }, - "widgets_values": [ - "nearest-exact", - 1024, - 1024, - "disabled" - ] - }, - { - "id": 322, - "type": "Note", - "pos": [ - -163, - -184 - ], - "size": { - "0": 384.10394287109375, - "1": 138.25791931152344 - }, - "flags": {}, - "order": 15, - "mode": 0, - "properties": { - "text": "" - }, - "widgets_values": [ - "un-bypass this detour to further trip out\n\n\nfor the heck of it, ill add a Kaleidoscope Image Bloom to see what it does to the output\n\nThere are a ton of these in the node pack, masks too" - ], - "color": "#432", - "bgcolor": "#653" - } - ], - "links": [ - [ - 61, - 30, - 0, - 31, - 0, - "MOTION_MODEL_ADE" - ], - [ - 62, - 31, - 0, - 32, - 1, - "M_MODELS" - ], - [ - 64, - 34, - 0, - 32, - 2, - "CONTEXT_OPTIONS" - ], - [ - 81, - 4, - 1, - 7, - 0, - "CLIP" - ], - [ - 102, - 4, - 0, - 52, - 0, - "MODEL" - ], - [ - 194, - 32, - 0, - 88, - 0, - "MODEL" - ], - [ - 195, - 88, - 0, - 11, - 0, - "MODEL" - ], - [ - 237, - 11, - 1, - 102, - 1, - "IPADAPTER" - ], - [ - 610, - 4, - 1, - 255, - 0, - "CLIP" - ], - [ - 617, - 259, - 0, - 102, - 6, - "FLOAT" - ], - [ - 618, - 259, - 3, - 102, - 2, - "IMAGE" - ], - [ - 620, - 258, - 0, - 261, - 0, - "IMAGE" - ], - [ - 623, - 11, - 0, - 102, - 0, - "MODEL" - ], - [ - 640, - 258, - 0, - 273, - 0, - "IMAGE" - ], - [ - 650, - 276, - 0, - 275, - 3, - "LATENT" - ], - [ - 651, - 275, - 0, - 87, - 0, - "LATENT" - ], - [ - 656, - 84, - 0, - 277, - 0, - "LATENT" - ], - [ - 657, - 273, - 1, - 279, - 0, - "MASK" - ], - [ - 660, - 281, - 0, - 280, - 2, - "CONTROL_NET" - ], - [ - 661, - 282, - 0, - 280, - 3, - "IMAGE" - ], - [ - 665, - 280, - 0, - 84, - 1, - "CONDITIONING" - ], - [ - 666, - 280, - 1, - 84, - 2, - "CONDITIONING" - ], - [ - 669, - 280, - 0, - 275, - 1, - "CONDITIONING" - ], - [ - 670, - 280, - 1, - 275, - 2, - "CONDITIONING" - ], - [ - 676, - 145, - 0, - 259, - 1, - "IMAGE" - ], - [ - 678, - 285, - 0, - 259, - 0, - "WEIGHTS_STRATEGY" - ], - [ - 685, - 287, - 1, - 263, - 0, - "AUDIO" - ], - [ - 687, - 287, - 5, - 263, - 1, - "FEATURE_PIPE" - ], - [ - 688, - 288, - 0, - 287, - 0, - "OPEN_UNMIX_MODEL" - ], - [ - 692, - 263, - 0, - 290, - 0, - "FEATURE" - ], - [ - 693, - 290, - 0, - 285, - 0, - "FEATURE" - ], - [ - 694, - 290, - 1, - 271, - 0, - "IMAGE" - ], - [ - 699, - 301, - 0, - 287, - 2, - "IMAGE" - ], - [ - 704, - 261, - 0, - 301, - 0, - "*" - ], - [ - 716, - 102, - 0, - 84, - 0, - "MODEL" - ], - [ - 718, - 263, - 1, - 310, - 2, - "FEATURE_PIPE" - ], - [ - 720, - 310, - 0, - 307, - 0, - "IMAGE" - ], - [ - 746, - 317, - 0, - 277, - 1, - "VAE" - ], - [ - 747, - 317, - 0, - 316, - 1, - "VAE" - ], - [ - 748, - 316, - 0, - 276, - 0, - "LATENT" - ], - [ - 749, - 317, - 0, - 87, - 1, - "VAE" - ], - [ - 750, - 277, - 0, - 316, - 0, - "IMAGE" - ], - [ - 756, - 319, - 0, - 291, - 0, - "MODEL" - ], - [ - 757, - 52, - 0, - 319, - 0, - "MODEL" - ], - [ - 759, - 277, - 0, - 320, - 0, - "IMAGE" - ], - [ - 762, - 311, - 0, - 321, - 1, - "AUDIO" - ], - [ - 765, - 261, - 0, - 310, - 0, - "IMAGE" - ], - [ - 766, - 310, - 0, - 260, - 0, - "IMAGE" - ], - [ - 768, - 7, - 0, - 323, - 0, - "*" - ], - [ - 769, - 255, - 0, - 324, - 0, - "*" - ], - [ - 770, - 323, - 0, - 280, - 0, - "CONDITIONING" - ], - [ - 771, - 324, - 0, - 280, - 1, - "CONDITIONING" - ], - [ - 772, - 310, - 0, - 325, - 0, - "*" - ], - [ - 773, - 325, - 0, - 282, - 0, - "IMAGE" - ], - [ - 774, - 279, - 0, - 326, - 0, - "*" - ], - [ - 776, - 326, - 0, - 327, - 0, - "*" - ], - [ - 777, - 327, - 0, - 102, - 4, - "MASK" - ], - [ - 779, - 328, - 0, - 260, - 1, - "VAE" - ], - [ - 780, - 328, - 0, - 317, - 0, - "*" - ], - [ - 781, - 291, - 0, - 329, - 0, - "*" - ], - [ - 782, - 329, - 0, - 330, - 0, - "*" - ], - [ - 783, - 330, - 0, - 32, - 0, - "MODEL" - ], - [ - 784, - 102, - 0, - 275, - 0, - "MODEL" - ], - [ - 785, - 4, - 2, - 331, - 0, - "*" - ], - [ - 786, - 331, - 0, - 328, - 0, - "*" - ], - [ - 788, - 332, - 0, - 311, - 0, - "*" - ], - [ - 789, - 332, - 0, - 287, - 1, - "AUDIO" - ], - [ - 790, - 87, - 0, - 333, - 0, - "IMAGE" - ], - [ - 791, - 333, - 0, - 321, - 0, - "IMAGE" - ], - [ - 792, - 263, - 0, - 310, - 1, - "FEATURE" - ], - [ - 793, - 260, - 0, - 335, - 0, - "*" - ], - [ - 794, - 335, - 0, - 336, - 0, - "*" - ], - [ - 796, - 336, - 0, - 337, - 0, - "LATENT" - ], - [ - 797, - 327, - 0, - 337, - 1, - "MASK" - ], - [ - 798, - 337, - 0, - 84, - 3, - "LATENT" - ], - [ - 807, - 56, - 0, - 343, - 0, - "IMAGE" - ], - [ - 809, - 343, - 0, - 145, - 1, - "IMAGE" - ], - [ - 810, - 343, - 0, - 145, - 0, - "IMAGE" - ], - [ - 811, - 258, - 2, - 332, - 0, - "*" - ], - [ - 812, - 343, - 0, - 145, - 2, - "IMAGE" - ] - ], - "groups": [ - { - "title": "Control net", - "bounding": [ - 2319, - 587, - 773, - 341 - ], - "color": "#3f789e", - "font_size": 24, - "locked": false - }, - { - "title": "Animate diff", - "bounding": [ - 963, - -129, - 807, - 615 - ], - "color": "#3f789e", - "font_size": 24, - "locked": false - }, - { - "title": "Ipadapter", - "bounding": [ - 1824, - -220, - 825, - 749 - ], - "color": "#3f789e", - "font_size": 24, - "locked": false - }, - { - "title": "Audio Feature", - "bounding": [ - -125, - -1005, - 1708, - 619 - ], - "color": "#3f789e", - "font_size": 24, - "locked": false - }, - { - "title": "Setep", - "bounding": [ - -2533, - -223, - 1194, - 735 - ], - "color": "#3f789e", - "font_size": 24, - "locked": false - }, - { - "title": "Sample1", - "bounding": [ - 2672, - -247, - 956, - 807 - ], - "color": "#3f789e", - "font_size": 24, - "locked": false - }, - { - "title": "Sample2", - "bounding": [ - 3686, - -294, - 915, - 791 - ], - "color": "#3f789e", - "font_size": 24, - "locked": false - }, - { - "title": "Load image", - "bounding": [ - -1284, - -242, - 1053, - 783 - ], - "color": "#3f789e", - "font_size": 24, - "locked": false - }, - { - "title": "😂", - "bounding": [ - -202, - -261, - 838, - 779 - ], - "color": "#3f789e", - "font_size": 24, - "locked": false - } - ], - "config": {}, - "extra": { - "ds": { - "scale": 0.21762913579014861, - "offset": { - "0": 2823.299557647266, - "1": 1260.0798788145676 - } - } - }, - "version": 0.4 -} \ No newline at end of file diff --git a/examples/audio_ipadapter_weights_plusbass.json b/examples/audio_ipadapter_weights_plusbass.json deleted file mode 100644 index bb97c8c..0000000 --- a/examples/audio_ipadapter_weights_plusbass.json +++ /dev/null @@ -1,5111 +0,0 @@ -{ - "last_node_id": 384, - "last_link_id": 917, - "nodes": [ - { - "id": 31, - "type": "ADE_ApplyAnimateDiffModel", - "pos": [ - 1018.6153756226563, - 296.9229692988283 - ], - "size": { - "0": 319.20001220703125, - "1": 182 - }, - "flags": {}, - "order": 17, - "mode": 0, - "inputs": [ - { - "name": "motion_model", - "type": "MOTION_MODEL_ADE", - "link": 61 - }, - { - "name": "motion_lora", - "type": "MOTION_LORA", - "link": null - }, - { - "name": "scale_multival", - "type": "MULTIVAL", - "link": null - }, - { - "name": "effect_multival", - "type": "MULTIVAL", - "link": null - }, - { - "name": "ad_keyframes", - "type": "AD_KEYFRAMES", - "link": null - }, - { - "name": "prev_m_models", - "type": "M_MODELS", - "link": null - } - ], - "outputs": [ - { - "name": "M_MODELS", - "type": "M_MODELS", - "links": [ - 62 - ], - "shape": 3, - "slot_index": 0 - } - ], - "properties": { - "Node name for S&R": "ADE_ApplyAnimateDiffModel" - }, - "widgets_values": [ - 0, - 1, - "" - ] - }, - { - "id": 32, - "type": "ADE_UseEvolvedSampling", - "pos": [ - 1432.6153756226563, - -31.07703070117199 - ], - "size": { - "0": 241.0297088623047, - "1": 118 - }, - "flags": {}, - "order": 49, - "mode": 0, - "inputs": [ - { - "name": "model", - "type": "MODEL", - "link": 783 - }, - { - "name": "m_models", - "type": "M_MODELS", - "link": 62 - }, - { - "name": "context_options", - "type": "CONTEXT_OPTIONS", - "link": 64, - "slot_index": 2 - }, - { - "name": "sample_settings", - "type": "SAMPLE_SETTINGS", - "link": null - } - ], - "outputs": [ - { - "name": "MODEL", - "type": "MODEL", - "links": [ - 194 - ], - "shape": 3, - "slot_index": 0 - } - ], - "properties": { - "Node name for S&R": "ADE_UseEvolvedSampling" - }, - "widgets_values": [ - "lcm >> sqrt_linear" - ] - }, - { - "id": 88, - "type": "ModelSamplingDiscrete", - "pos": [ - 1461.6153756226563, - 182.9229692988281 - ], - "size": { - "0": 210, - "1": 82 - }, - "flags": {}, - "order": 53, - "mode": 0, - "inputs": [ - { - "name": "model", - "type": "MODEL", - "link": 194 - } - ], - "outputs": [ - { - "name": "MODEL", - "type": "MODEL", - "links": [ - 195 - ], - "shape": 3, - "slot_index": 0 - } - ], - "properties": { - "Node name for S&R": "ModelSamplingDiscrete" - }, - "widgets_values": [ - "lcm", - false - ] - }, - { - "id": 296, - "type": "MotionFeatureNode", - "pos": [ - 290, - -1860 - ], - "size": { - "0": 317.4000244140625, - "1": 174 - }, - "flags": {}, - "order": 0, - "mode": 4, - "inputs": [ - { - "name": "video_frames", - "type": "IMAGE", - "link": null - } - ], - "outputs": [ - { - "name": "FEATURE", - "type": "FEATURE", - "links": null, - "shape": 3 - }, - { - "name": "FEATURE_PIPE", - "type": "FEATURE_PIPE", - "links": null, - "shape": 3 - } - ], - "properties": { - "Node name for S&R": "MotionFeatureNode" - }, - "widgets_values": [ - 30, - "mean_motion", - "Farneback", - 0, - 0 - ] - }, - { - "id": 295, - "type": "DepthFeatureNode", - "pos": [ - -100, - -1770 - ], - "size": { - "0": 317.4000244140625, - "1": 102 - }, - "flags": {}, - "order": 1, - "mode": 4, - "inputs": [ - { - "name": "video_frames", - "type": "IMAGE", - "link": null - }, - { - "name": "depth_maps", - "type": "IMAGE", - "link": null - } - ], - "outputs": [ - { - "name": "FEATURE", - "type": "FEATURE", - "links": null, - "shape": 3 - }, - { - "name": "FEATURE_PIPE", - "type": "FEATURE_PIPE", - "links": null, - "shape": 3 - } - ], - "properties": { - "Node name for S&R": "DepthFeatureNode" - }, - "widgets_values": [ - 30, - "mean_depth" - ] - }, - { - "id": 319, - "type": "LoraLoaderModelOnly", - "pos": [ - -2463.624330660592, - 163.30805644428764 - ], - "size": { - "0": 315, - "1": 82 - }, - "flags": {}, - "order": 28, - "mode": 0, - "inputs": [ - { - "name": "model", - "type": "MODEL", - "link": 757 - } - ], - "outputs": [ - { - "name": "MODEL", - "type": "MODEL", - "links": [ - 756 - ], - "shape": 3, - "slot_index": 0 - } - ], - "properties": { - "Node name for S&R": "LoraLoaderModelOnly" - }, - "widgets_values": [ - "add_detail.safetensors", - 1 - ] - }, - { - "id": 52, - "type": "LoraLoaderModelOnly", - "pos": [ - -2467.624330660592, - 28.308056444287608 - ], - "size": { - "0": 315, - "1": 82 - }, - "flags": {}, - "order": 18, - "mode": 0, - "inputs": [ - { - "name": "model", - "type": "MODEL", - "link": 102 - } - ], - "outputs": [ - { - "name": "MODEL", - "type": "MODEL", - "links": [ - 757 - ], - "shape": 3, - "slot_index": 0 - } - ], - "properties": { - "Node name for S&R": "LoraLoaderModelOnly" - }, - "widgets_values": [ - "AnimateLCM_sd15_t2v_lora.safetensors", - 1 - ] - }, - { - "id": 290, - "type": "FeatureMixer", - "pos": [ - 71.49175893793421, - -936.5934981507727 - ], - "size": { - "0": 367.79998779296875, - "1": 318 - }, - "flags": {}, - "order": 50, - "mode": 0, - "inputs": [ - { - "name": "feature", - "type": "FEATURE", - "link": 692 - } - ], - "outputs": [ - { - "name": "FEATURE", - "type": "FEATURE", - "links": [ - 693 - ], - "shape": 3, - "slot_index": 0 - }, - { - "name": "FEATURE_VISUALIZATION", - "type": "IMAGE", - "links": [ - 694 - ], - "shape": 3 - } - ], - "properties": { - "Node name for S&R": "FeatureMixer" - }, - "widgets_values": [ - 1.79, - 0, - 1.7, - 3.4000000000000004, - 1, - 1, - 1, - 0, - 0.3, - 0.6, - 0.5 - ] - }, - { - "id": 30, - "type": "ADE_LoadAnimateDiffModel", - "pos": [ - 1011.6153756226563, - 196.9229692988281 - ], - "size": { - "0": 315, - "1": 58 - }, - "flags": {}, - "order": 2, - "mode": 0, - "inputs": [ - { - "name": "ad_settings", - "type": "AD_SETTINGS", - "link": null - } - ], - "outputs": [ - { - "name": "MOTION_MODEL", - "type": "MOTION_MODEL_ADE", - "links": [ - 61 - ], - "shape": 3, - "slot_index": 0 - } - ], - "properties": { - "Node name for S&R": "ADE_LoadAnimateDiffModel" - }, - "widgets_values": [ - "ALCM_sd15_t2v_beta.ckpt" - ] - }, - { - "id": 323, - "type": "Reroute", - "pos": [ - -1410, - 660 - ], - "size": [ - 75, - 26 - ], - "flags": {}, - "order": 29, - "mode": 0, - "inputs": [ - { - "name": "", - "type": "*", - "link": 768 - } - ], - "outputs": [ - { - "name": "", - "type": "CONDITIONING", - "links": [ - 770 - ], - "slot_index": 0 - } - ], - "properties": { - "showOutputText": false, - "horizontal": false - } - }, - { - "id": 324, - "type": "Reroute", - "pos": [ - -1409, - 695 - ], - "size": [ - 75, - 26 - ], - "flags": {}, - "order": 30, - "mode": 0, - "inputs": [ - { - "name": "", - "type": "*", - "link": 769 - } - ], - "outputs": [ - { - "name": "", - "type": "CONDITIONING", - "links": [ - 771 - ], - "slot_index": 0 - } - ], - "properties": { - "showOutputText": false, - "horizontal": false - } - }, - { - "id": 279, - "type": "InvertMask", - "pos": [ - -937, - 238 - ], - "size": { - "0": 210, - "1": 26 - }, - "flags": {}, - "order": 39, - "mode": 0, - "inputs": [ - { - "name": "mask", - "type": "MASK", - "link": 657 - } - ], - "outputs": [ - { - "name": "MASK", - "type": "MASK", - "links": [ - 774 - ], - "shape": 3, - "slot_index": 0 - } - ], - "properties": { - "Node name for S&R": "InvertMask" - } - }, - { - "id": 326, - "type": "Reroute", - "pos": [ - -717, - 621 - ], - "size": [ - 75, - 26 - ], - "flags": {}, - "order": 43, - "mode": 0, - "inputs": [ - { - "name": "", - "type": "*", - "link": 774 - } - ], - "outputs": [ - { - "name": "", - "type": "MASK", - "links": [ - 776 - ], - "slot_index": 0 - } - ], - "properties": { - "showOutputText": false, - "horizontal": false - } - }, - { - "id": 34, - "type": "ADE_StandardStaticContextOptions", - "pos": [ - 1040, - -45 - ], - "size": { - "0": 319.20001220703125, - "1": 198 - }, - "flags": {}, - "order": 3, - "mode": 0, - "inputs": [ - { - "name": "prev_context", - "type": "CONTEXT_OPTIONS", - "link": null - }, - { - "name": "view_opts", - "type": "VIEW_OPTS", - "link": null - } - ], - "outputs": [ - { - "name": "CONTEXT_OPTS", - "type": "CONTEXT_OPTIONS", - "links": [ - 64 - ], - "shape": 3 - } - ], - "properties": { - "Node name for S&R": "ADE_StandardStaticContextOptions" - }, - "widgets_values": [ - 16, - 6, - "pyramid", - false, - 0, - 1 - ] - }, - { - "id": 291, - "type": "LoraLoaderModelOnly", - "pos": [ - -2460.939056887235, - 300.63488893012595 - ], - "size": { - "0": 315, - "1": 82 - }, - "flags": {}, - "order": 36, - "mode": 0, - "inputs": [ - { - "name": "model", - "type": "MODEL", - "link": 756 - } - ], - "outputs": [ - { - "name": "MODEL", - "type": "MODEL", - "links": [ - 781 - ], - "shape": 3, - "slot_index": 0 - } - ], - "properties": { - "Node name for S&R": "LoraLoaderModelOnly" - }, - "widgets_values": [ - "ral-dissolve-sd15.safetensors", - 0.6 - ] - }, - { - "id": 329, - "type": "Reroute", - "pos": [ - -2102.7424690643847, - 637.4964529127092 - ], - "size": [ - 75, - 26 - ], - "flags": {}, - "order": 41, - "mode": 0, - "inputs": [ - { - "name": "", - "type": "*", - "link": 781 - } - ], - "outputs": [ - { - "name": "", - "type": "MODEL", - "links": [ - 782 - ], - "slot_index": 0 - } - ], - "properties": { - "showOutputText": false, - "horizontal": false - } - }, - { - "id": 330, - "type": "Reroute", - "pos": [ - 1330, - 661 - ], - "size": [ - 75, - 26 - ], - "flags": {}, - "order": 45, - "mode": 0, - "inputs": [ - { - "name": "", - "type": "*", - "link": 782 - } - ], - "outputs": [ - { - "name": "", - "type": "MODEL", - "links": [ - 783 - ], - "slot_index": 0 - } - ], - "properties": { - "showOutputText": false, - "horizontal": false - } - }, - { - "id": 4, - "type": "CheckpointLoaderSimple", - "pos": [ - -2470.833727160648, - -116.24953047983493 - ], - "size": { - "0": 315, - "1": 98 - }, - "flags": {}, - "order": 4, - "mode": 0, - "outputs": [ - { - "name": "MODEL", - "type": "MODEL", - "links": [ - 102 - ], - "slot_index": 0 - }, - { - "name": "CLIP", - "type": "CLIP", - "links": [ - 81, - 610 - ], - "slot_index": 1 - }, - { - "name": "VAE", - "type": "VAE", - "links": [ - 785 - ], - "slot_index": 2 - } - ], - "properties": { - "Node name for S&R": "CheckpointLoaderSimple" - }, - "widgets_values": [ - "photon_v1.safetensors" - ] - }, - { - "id": 87, - "type": "VAEDecode", - "pos": [ - 4136.42139592476, - -46.640902628124685 - ], - "size": { - "0": 140, - "1": 46 - }, - "flags": {}, - "order": 83, - "mode": 0, - "inputs": [ - { - "name": "samples", - "type": "LATENT", - "link": 651 - }, - { - "name": "vae", - "type": "VAE", - "link": 749 - } - ], - "outputs": [ - { - "name": "IMAGE", - "type": "IMAGE", - "links": [ - 790 - ], - "slot_index": 0 - } - ], - "properties": { - "Node name for S&R": "VAEDecode" - } - }, - { - "id": 316, - "type": "VAEEncode", - "pos": [ - 3708, - -195 - ], - "size": { - "0": 210, - "1": 46 - }, - "flags": {}, - "order": 79, - "mode": 0, - "inputs": [ - { - "name": "pixels", - "type": "IMAGE", - "link": 750 - }, - { - "name": "vae", - "type": "VAE", - "link": 747 - } - ], - "outputs": [ - { - "name": "LATENT", - "type": "LATENT", - "links": [ - 748 - ], - "shape": 3, - "slot_index": 0 - } - ], - "properties": { - "Node name for S&R": "VAEEncode" - } - }, - { - "id": 276, - "type": "NNLatentUpscale", - "pos": [ - 3698, - -95 - ], - "size": { - "0": 315, - "1": 82 - }, - "flags": {}, - "order": 81, - "mode": 0, - "inputs": [ - { - "name": "latent", - "type": "LATENT", - "link": 748 - } - ], - "outputs": [ - { - "name": "LATENT", - "type": "LATENT", - "links": [ - 650 - ], - "shape": 3, - "slot_index": 0 - } - ], - "properties": { - "Node name for S&R": "NNLatentUpscale" - }, - "widgets_values": [ - "SD 1.x", - 1.5 - ] - }, - { - "id": 294, - "type": "MIDILoadAndExtract", - "pos": [ - 690, - -1750 - ], - "size": { - "0": 1020, - "1": 346 - }, - "flags": {}, - "order": 5, - "mode": 4, - "inputs": [ - { - "name": "video_frames", - "type": "IMAGE", - "link": null - } - ], - "outputs": [ - { - "name": "MIDI", - "type": "MIDI", - "links": null, - "shape": 3 - }, - { - "name": "FEATURE", - "type": "FEATURE", - "links": null, - "shape": 3 - }, - { - "name": "FEATURE_PIPE", - "type": "FEATURE_PIPE", - "links": null, - "shape": 3 - } - ], - "properties": { - "selectedNotes": [], - "Node name for S&R": "MIDILoadAndExtract" - }, - "widgets_values": [ - "drummid.mid", - "all", - "Note On/Off", - 30, - false, - "", - "upload", - "refresh" - ] - }, - { - "id": 297, - "type": "ColorFeatureNode", - "pos": [ - -100, - -1950 - ], - "size": { - "0": 317.4000244140625, - "1": 102 - }, - "flags": {}, - "order": 6, - "mode": 4, - "inputs": [ - { - "name": "video_frames", - "type": "IMAGE", - "link": null - } - ], - "outputs": [ - { - "name": "FEATURE", - "type": "FEATURE", - "links": null, - "shape": 3 - }, - { - "name": "FEATURE_PIPE", - "type": "FEATURE_PIPE", - "links": null, - "shape": 3 - } - ], - "properties": { - "Node name for S&R": "ColorFeatureNode" - }, - "widgets_values": [ - 30, - "dominant_color" - ] - }, - { - "id": 307, - "type": "VHS_VideoCombine", - "pos": [ - 278.32611541992185, - -160.1266634570313 - ], - "size": [ - 210, - 663 - ], - "flags": {}, - "order": 56, - "mode": 4, - "inputs": [ - { - "name": "images", - "type": "IMAGE", - "link": 720 - }, - { - "name": "audio", - "type": "*", - "link": null - }, - { - "name": "meta_batch", - "type": "VHS_BatchManager", - "link": null - }, - { - "name": "vae", - "type": "VAE", - "link": null - } - ], - "outputs": [ - { - "name": "Filenames", - "type": "VHS_FILENAMES", - "links": null, - "shape": 3 - } - ], - "properties": { - "Node name for S&R": "VHS_VideoCombine" - }, - "widgets_values": { - "frame_rate": 30, - "loop_count": 0, - "filename_prefix": "AnimateDiff", - "format": "video/h264-mp4", - "pix_fmt": "yuv420p", - "crf": 19, - "save_metadata": true, - "pingpong": false, - "save_output": true, - "videopreview": { - "hidden": false, - "paused": false, - "params": { - "filename": "AnimateDiff_02724.mp4", - "subfolder": "", - "type": "output", - "format": "video/h264-mp4", - "frame_rate": 30 - } - } - } - }, - { - "id": 260, - "type": "VAEEncode", - "pos": [ - 692, - 82 - ], - "size": { - "0": 210, - "1": 46 - }, - "flags": {}, - "order": 57, - "mode": 0, - "inputs": [ - { - "name": "pixels", - "type": "IMAGE", - "link": 766 - }, - { - "name": "vae", - "type": "VAE", - "link": 779 - } - ], - "outputs": [ - { - "name": "LATENT", - "type": "LATENT", - "links": [ - 793 - ], - "shape": 3, - "slot_index": 0 - } - ], - "properties": { - "Node name for S&R": "VAEEncode" - } - }, - { - "id": 317, - "type": "Reroute", - "pos": [ - 2590, - -380 - ], - "size": [ - 75, - 26 - ], - "flags": {}, - "order": 37, - "mode": 0, - "inputs": [ - { - "name": "", - "type": "*", - "link": 780 - } - ], - "outputs": [ - { - "name": "", - "type": "VAE", - "links": [ - 746, - 747, - 749 - ], - "slot_index": 0 - } - ], - "properties": { - "showOutputText": false, - "horizontal": false - } - }, - { - "id": 335, - "type": "Reroute", - "pos": [ - 976, - -308 - ], - "size": [ - 75, - 26 - ], - "flags": {}, - "order": 63, - "mode": 0, - "inputs": [ - { - "name": "", - "type": "*", - "link": 793 - } - ], - "outputs": [ - { - "name": "", - "type": "LATENT", - "links": [ - 794 - ], - "slot_index": 0 - } - ], - "properties": { - "showOutputText": false, - "horizontal": false - } - }, - { - "id": 325, - "type": "Reroute", - "pos": [ - 286, - 737 - ], - "size": [ - 75, - 26 - ], - "flags": {}, - "order": 58, - "mode": 0, - "inputs": [ - { - "name": "", - "type": "*", - "link": 772 - } - ], - "outputs": [ - { - "name": "", - "type": "IMAGE", - "links": [ - 915 - ], - "slot_index": 0 - } - ], - "properties": { - "showOutputText": false, - "horizontal": false - } - }, - { - "id": 310, - "type": "FlexImageKaleidoscope", - "pos": [ - -133.67388458007815, - 20.873336542968733 - ], - "size": { - "0": 344.3999938964844, - "1": 338 - }, - "flags": {}, - "order": 51, - "mode": 4, - "inputs": [ - { - "name": "images", - "type": "IMAGE", - "link": 765 - }, - { - "name": "feature", - "type": "FEATURE", - "link": 792 - }, - { - "name": "feature_pipe", - "type": "FEATURE_PIPE", - "link": 718 - } - ], - "outputs": [ - { - "name": "IMAGE", - "type": "IMAGE", - "links": [ - 720, - 766, - 772 - ], - "shape": 3, - "slot_index": 0 - } - ], - "properties": { - "Node name for S&R": "FlexImageKaleidoscope" - }, - "widgets_values": [ - 1, - 0, - "rotation", - "relative", - 8, - 0.5, - 0.5, - 1, - 0, - 0, - 1 - ] - }, - { - "id": 336, - "type": "Reroute", - "pos": [ - 2590, - -320 - ], - "size": [ - 75, - 26 - ], - "flags": {}, - "order": 67, - "mode": 0, - "inputs": [ - { - "name": "", - "type": "*", - "link": 794 - } - ], - "outputs": [ - { - "name": "", - "type": "LATENT", - "links": [ - 827 - ], - "slot_index": 0 - } - ], - "properties": { - "showOutputText": false, - "horizontal": false - } - }, - { - "id": 299, - "type": "Note", - "pos": [ - 3184, - -387 - ], - "size": { - "0": 436.01641845703125, - "1": 119.03775787353516 - }, - "flags": {}, - "order": 7, - "mode": 0, - "properties": { - "text": "" - }, - "widgets_values": [ - "" - ], - "color": "#432", - "bgcolor": "#653" - }, - { - "id": 275, - "type": "KSampler", - "pos": [ - 3719.127367528601, - 154.68755277929998 - ], - "size": { - "0": 308.92816162109375, - "1": 263.701904296875 - }, - "flags": {}, - "order": 82, - "mode": 0, - "inputs": [ - { - "name": "model", - "type": "MODEL", - "link": 784 - }, - { - "name": "positive", - "type": "CONDITIONING", - "link": 669 - }, - { - "name": "negative", - "type": "CONDITIONING", - "link": 670 - }, - { - "name": "latent_image", - "type": "LATENT", - "link": 650 - } - ], - "outputs": [ - { - "name": "LATENT", - "type": "LATENT", - "links": [ - 651 - ], - "slot_index": 0 - } - ], - "properties": { - "Node name for S&R": "KSampler" - }, - "widgets_values": [ - 144, - "fixed", - 4, - 1.8, - "lcm", - "sgm_uniform", - 0.3 - ] - }, - { - "id": 322, - "type": "Note", - "pos": [ - -153.67388458007815, - -163.1266634570313 - ], - "size": { - "0": 384.10394287109375, - "1": 138.25791931152344 - }, - "flags": {}, - "order": 8, - "mode": 0, - "properties": { - "text": "" - }, - "widgets_values": [ - "un-bypass this detour to further trip out\n\n\nfor the heck of it, ill add a Kaleidoscope Image Bloom to see what it does to the output\n\nThere are a ton of these in the node pack, masks too" - ], - "color": "#432", - "bgcolor": "#653" - }, - { - "id": 271, - "type": "PreviewImage", - "pos": [ - 506.7106022338704, - -936.9529986264056 - ], - "size": [ - 316.95760687114927, - 277.0800855511293 - ], - "flags": {}, - "order": 55, - "mode": 0, - "inputs": [ - { - "name": "images", - "type": "IMAGE", - "link": 694 - } - ], - "properties": { - "Node name for S&R": "PreviewImage" - } - }, - { - "id": 328, - "type": "Reroute", - "pos": [ - 205, - -401.1885793164062 - ], - "size": [ - 75, - 26 - ], - "flags": {}, - "order": 31, - "mode": 0, - "inputs": [ - { - "name": "", - "type": "*", - "link": 786 - } - ], - "outputs": [ - { - "name": "", - "type": "VAE", - "links": [ - 779, - 780 - ], - "slot_index": 0 - } - ], - "properties": { - "showOutputText": false, - "horizontal": false - } - }, - { - "id": 332, - "type": "Reroute", - "pos": [ - -527, - -318 - ], - "size": [ - 75, - 26 - ], - "flags": {}, - "order": 25, - "mode": 0, - "inputs": [ - { - "name": "", - "type": "*", - "link": 811 - } - ], - "outputs": [ - { - "name": "", - "type": "AUDIO", - "links": [ - 788, - 789 - ], - "slot_index": 0 - } - ], - "properties": { - "showOutputText": false, - "horizontal": false - } - }, - { - "id": 346, - "type": "Reroute", - "pos": [ - -525, - -350 - ], - "size": [ - 75, - 26 - ], - "flags": {}, - "order": 40, - "mode": 0, - "inputs": [ - { - "name": "", - "type": "*", - "link": 813 - } - ], - "outputs": [ - { - "name": "", - "type": "MASK", - "links": [ - 815 - ], - "slot_index": 0 - } - ], - "properties": { - "showOutputText": false, - "horizontal": false - } - }, - { - "id": 292, - "type": "Note", - "pos": [ - -1881, - -823 - ], - "size": { - "0": 695.8017578125, - "1": 261.10052490234375 - }, - "flags": {}, - "order": 9, - "mode": 0, - "properties": { - "text": "" - }, - "widgets_values": [ - "This example is meant to demonstrate modulating an IP adapter with the Feature system introduced by the ryanontheinside nodes.\n\nFor this example, we will simply apply an IPAdapter to the background of a video, controlled by the drums in a song.\n\n\n\nIf any issues or if you want to contribute:\nhttps://github.com/ryanontheinside/ComfyUI_RyanOnTheInside\n\nModels\nhttps://huggingface.co/wangfuyun/AnimateLCM" - ], - "color": "#432", - "bgcolor": "#653" - }, - { - "id": 331, - "type": "Reroute", - "pos": [ - -2070, - -416 - ], - "size": [ - 75, - 26 - ], - "flags": {}, - "order": 21, - "mode": 0, - "inputs": [ - { - "name": "", - "type": "*", - "link": 785 - } - ], - "outputs": [ - { - "name": "", - "type": "VAE", - "links": [ - 786 - ], - "slot_index": 0 - } - ], - "properties": { - "showOutputText": false, - "horizontal": false - } - }, - { - "id": 298, - "type": "Note", - "pos": [ - 2001, - -407 - ], - "size": { - "0": 449.9469299316406, - "1": 171.0027618408203 - }, - "flags": {}, - "order": 10, - "mode": 0, - "properties": { - "text": "" - }, - "widgets_values": [ - "give a cool image to the IPAdapter - I tripled it here because of reasons.\n\nFeed it the weights that we created from the audio\n\nI started getting memory errors with big images so i just smashed them" - ], - "color": "#432", - "bgcolor": "#653" - }, - { - "id": 343, - "type": "ImageScale", - "pos": [ - 2070, - -170 - ], - "size": { - "0": 210, - "1": 130 - }, - "flags": {}, - "order": 27, - "mode": 0, - "inputs": [ - { - "name": "image", - "type": "IMAGE", - "link": 807 - } - ], - "outputs": [ - { - "name": "IMAGE", - "type": "IMAGE", - "links": [ - 822 - ], - "shape": 3, - "slot_index": 0 - } - ], - "properties": { - "Node name for S&R": "ImageScale" - }, - "widgets_values": [ - "nearest-exact", - 1024, - 1024, - "disabled" - ] - }, - { - "id": 351, - "type": "LoadImage", - "pos": [ - 1830, - 300 - ], - "size": [ - 210, - 310 - ], - "flags": {}, - "order": 11, - "mode": 0, - "outputs": [ - { - "name": "IMAGE", - "type": "IMAGE", - "links": [ - 823 - ], - "shape": 3, - "slot_index": 0 - }, - { - "name": "MASK", - "type": "MASK", - "links": null, - "shape": 3 - } - ], - "properties": { - "Node name for S&R": "LoadImage" - }, - "widgets_values": [ - "blue_eyes_painting.jpg", - "image" - ] - }, - { - "id": 11, - "type": "IPAdapterUnifiedLoader", - "pos": [ - 1830, - 170 - ], - "size": { - "0": 210, - "1": 78 - }, - "flags": {}, - "order": 61, - "mode": 0, - "inputs": [ - { - "name": "model", - "type": "MODEL", - "link": 195 - }, - { - "name": "ipadapter", - "type": "IPADAPTER", - "link": null - } - ], - "outputs": [ - { - "name": "model", - "type": "MODEL", - "links": [ - 820 - ], - "shape": 3, - "slot_index": 0 - }, - { - "name": "ipadapter", - "type": "IPADAPTER", - "links": [ - 237, - 825 - ], - "shape": 3, - "slot_index": 1 - } - ], - "properties": { - "Node name for S&R": "IPAdapterUnifiedLoader" - }, - "widgets_values": [ - "PLUS (high strength)" - ] - }, - { - "id": 350, - "type": "IPAdapterBatch", - "pos": [ - 2340, - 280 - ], - "size": { - "0": 303.8558349609375, - "1": 278 - }, - "flags": {}, - "order": 75, - "mode": 0, - "inputs": [ - { - "name": "model", - "type": "MODEL", - "link": 820 - }, - { - "name": "ipadapter", - "type": "IPADAPTER", - "link": 825 - }, - { - "name": "image", - "type": "IMAGE", - "link": 837, - "slot_index": 2 - }, - { - "name": "image_negative", - "type": "IMAGE", - "link": null - }, - { - "name": "attn_mask", - "type": "MASK", - "link": 914 - }, - { - "name": "clip_vision", - "type": "CLIP_VISION", - "link": null - }, - { - "name": "weight", - "type": "FLOAT", - "link": 849, - "widget": { - "name": "weight" - } - } - ], - "outputs": [ - { - "name": "MODEL", - "type": "MODEL", - "links": [ - 821 - ], - "shape": 3, - "slot_index": 0 - } - ], - "title": "IPAdapter Batch Background", - "properties": { - "Node name for S&R": "IPAdapterBatch" - }, - "widgets_values": [ - 0.5, - "strong style transfer", - 0, - 1, - "K+V", - 0 - ] - }, - { - "id": 353, - "type": "MaskToImage", - "pos": [ - 1550, - -860 - ], - "size": { - "0": 210, - "1": 26 - }, - "flags": {}, - "order": 70, - "mode": 0, - "inputs": [ - { - "name": "mask", - "type": "MASK", - "link": 913 - } - ], - "outputs": [ - { - "name": "IMAGE", - "type": "IMAGE", - "links": [ - 831 - ], - "shape": 3, - "slot_index": 0 - } - ], - "properties": { - "Node name for S&R": "MaskToImage" - } - }, - { - "id": 356, - "type": "VHS_VideoCombine", - "pos": [ - 3330, - -140 - ], - "size": [ - 210, - 667 - ], - "flags": {}, - "order": 80, - "mode": 0, - "inputs": [ - { - "name": "images", - "type": "IMAGE", - "link": 835 - }, - { - "name": "audio", - "type": "AUDIO", - "link": 847 - }, - { - "name": "meta_batch", - "type": "VHS_BatchManager", - "link": null - }, - { - "name": "vae", - "type": "VAE", - "link": null - } - ], - "outputs": [ - { - "name": "Filenames", - "type": "VHS_FILENAMES", - "links": null, - "shape": 3 - } - ], - "properties": { - "Node name for S&R": "VHS_VideoCombine" - }, - "widgets_values": { - "frame_rate": 30, - "loop_count": 0, - "filename_prefix": "AnimateDiff", - "format": "video/h264-mp4", - "pix_fmt": "yuv420p", - "crf": 19, - "save_metadata": true, - "pingpong": false, - "save_output": true, - "videopreview": { - "hidden": false, - "paused": false, - "params": { - "filename": "AnimateDiff_02827-audio.mp4", - "subfolder": "", - "type": "output", - "format": "video/h264-mp4", - "frame_rate": 30 - } - } - } - }, - { - "id": 285, - "type": "FeatureToWeightsStrategy", - "pos": [ - 413, - -513 - ], - "size": { - "0": 378, - "1": 46.42244338989258 - }, - "flags": {}, - "order": 54, - "mode": 0, - "inputs": [ - { - "name": "feature", - "type": "FEATURE", - "link": 693 - } - ], - "outputs": [ - { - "name": "WEIGHTS_STRATEGY", - "type": "WEIGHTS_STRATEGY", - "links": [ - 839 - ], - "shape": 3, - "slot_index": 0 - } - ], - "properties": { - "Node name for S&R": "FeatureToWeightsStrategy" - } - }, - { - "id": 358, - "type": "Reroute", - "pos": [ - 799.6265863899607, - 603.6971090798395 - ], - "size": [ - 75, - 26 - ], - "flags": {}, - "order": 62, - "mode": 0, - "inputs": [ - { - "name": "", - "type": "*", - "link": 839 - } - ], - "outputs": [ - { - "name": "", - "type": "WEIGHTS_STRATEGY", - "links": [ - 840 - ], - "slot_index": 0 - } - ], - "properties": { - "showOutputText": false, - "horizontal": false - } - }, - { - "id": 293, - "type": "Note", - "pos": [ - -230, - -1580 - ], - "size": { - "0": 838.786865234375, - "1": 179.91893005371094 - }, - "flags": {}, - "order": 12, - "mode": 0, - "properties": { - "text": "" - }, - "widgets_values": [ - "here, we set up the audio Feature by extracting the instruments from the audio and isolating the drums.\nThen, before we convert the Feature into IPAdapter weights, we shape\" the feature with the FeatureMixer to make it drive the weights in a suitable way.\n\nThis example uses an audio feature, but it could be swapped out for any of the features in the node pack, including MIDI, Depth, Color, Time, Brightness, and more\n\n Look there's even a keyboard! -------->" - ], - "color": "#432", - "bgcolor": "#653" - }, - { - "id": 301, - "type": "Reroute", - "pos": [ - -528, - -282 - ], - "size": [ - 75, - 26 - ], - "flags": {}, - "order": 32, - "mode": 0, - "inputs": [ - { - "name": "", - "type": "*", - "link": 704 - } - ], - "outputs": [ - { - "name": "", - "type": "IMAGE", - "links": [ - 842 - ], - "slot_index": 0 - } - ], - "properties": { - "showOutputText": false, - "horizontal": false - } - }, - { - "id": 288, - "type": "DownloadOpenUnmixModel", - "pos": [ - -334, - -933 - ], - "size": { - "0": 361.20001220703125, - "1": 58 - }, - "flags": {}, - "order": 13, - "mode": 0, - "outputs": [ - { - "name": "OPEN_UNMIX_MODEL", - "type": "OPEN_UNMIX_MODEL", - "links": [ - 688 - ], - "shape": 3, - "slot_index": 0 - } - ], - "properties": { - "Node name for S&R": "DownloadOpenUnmixModel" - }, - "widgets_values": [ - "umxl" - ] - }, - { - "id": 361, - "type": "Reroute", - "pos": [ - -471, - -726 - ], - "size": [ - 75, - 26 - ], - "flags": {}, - "order": 38, - "mode": 0, - "inputs": [ - { - "name": "", - "type": "*", - "link": 842 - } - ], - "outputs": [ - { - "name": "", - "type": "IMAGE", - "links": [ - 843 - ], - "slot_index": 0 - } - ], - "properties": { - "showOutputText": false, - "horizontal": false - } - }, - { - "id": 261, - "type": "ImageScale", - "pos": [ - -937.0245821386411, - 369.85541007695775 - ], - "size": { - "0": 315, - "1": 130 - }, - "flags": {}, - "order": 23, - "mode": 0, - "inputs": [ - { - "name": "image", - "type": "IMAGE", - "link": 620 - } - ], - "outputs": [ - { - "name": "IMAGE", - "type": "IMAGE", - "links": [ - 704, - 765, - 848 - ], - "shape": 3, - "slot_index": 0 - } - ], - "properties": { - "Node name for S&R": "ImageScale" - }, - "widgets_values": [ - "nearest-exact", - 414, - 738, - "disabled" - ] - }, - { - "id": 359, - "type": "Reroute", - "pos": [ - 2115, - 615 - ], - "size": [ - 75, - 26 - ], - "flags": {}, - "order": 66, - "mode": 0, - "inputs": [ - { - "name": "", - "type": "*", - "link": 840 - } - ], - "outputs": [ - { - "name": "", - "type": "WEIGHTS_STRATEGY", - "links": [ - 841 - ], - "slot_index": 0 - } - ], - "properties": { - "showOutputText": false, - "horizontal": false - } - }, - { - "id": 357, - "type": "IPAdapterWeightsFromStrategy", - "pos": [ - 2060, - 510 - ], - "size": [ - 278.79998779296875, - 126 - ], - "flags": { - "collapsed": true - }, - "order": 71, - "mode": 0, - "inputs": [ - { - "name": "weights_strategy", - "type": "WEIGHTS_STRATEGY", - "link": 841 - }, - { - "name": "image", - "type": "IMAGE", - "link": 836 - } - ], - "outputs": [ - { - "name": "weights", - "type": "FLOAT", - "links": [ - 849 - ], - "shape": 3, - "slot_index": 0 - }, - { - "name": "weights_invert", - "type": "FLOAT", - "links": null, - "shape": 3 - }, - { - "name": "total_frames", - "type": "INT", - "links": null, - "shape": 3 - }, - { - "name": "image_1", - "type": "IMAGE", - "links": [ - 837 - ], - "shape": 3, - "slot_index": 3 - }, - { - "name": "image_2", - "type": "IMAGE", - "links": null, - "shape": 3 - }, - { - "name": "weights_strategy", - "type": "WEIGHTS_STRATEGY", - "links": null, - "shape": 3 - } - ], - "properties": { - "Node name for S&R": "IPAdapterWeightsFromStrategy" - } - }, - { - "id": 348, - "type": "Reroute", - "pos": [ - 894, - -363 - ], - "size": [ - 75, - 26 - ], - "flags": {}, - "order": 44, - "mode": 0, - "inputs": [ - { - "name": "", - "type": "*", - "link": 815 - } - ], - "outputs": [ - { - "name": "", - "type": "MASK", - "links": [ - 868 - ], - "slot_index": 0 - } - ], - "properties": { - "showOutputText": false, - "horizontal": false - } - }, - { - "id": 263, - "type": "AudioFeatureExtractor", - "pos": [ - -348, - -626 - ], - "size": { - "0": 361.20001220703125, - "1": 78 - }, - "flags": {}, - "order": 46, - "mode": 0, - "inputs": [ - { - "name": "audio", - "type": "AUDIO", - "link": 685 - }, - { - "name": "feature_pipe", - "type": "FEATURE_PIPE", - "link": 687 - } - ], - "outputs": [ - { - "name": "FEATURE", - "type": "FEATURE", - "links": [ - 692, - 792 - ], - "shape": 3, - "slot_index": 0 - }, - { - "name": "FEATURE_PIPE", - "type": "FEATURE_PIPE", - "links": [ - 718 - ], - "shape": 3, - "slot_index": 1 - } - ], - "properties": { - "Node name for S&R": "AudioFeatureExtractor" - }, - "widgets_values": [ - "amplitude_envelope" - ] - }, - { - "id": 362, - "type": "FeatureMixer", - "pos": [ - 1070, - -780 - ], - "size": { - "0": 367.79998779296875, - "1": 318 - }, - "flags": {}, - "order": 52, - "mode": 0, - "inputs": [ - { - "name": "feature", - "type": "FEATURE", - "link": 871 - } - ], - "outputs": [ - { - "name": "FEATURE", - "type": "FEATURE", - "links": [ - 863 - ], - "shape": 3, - "slot_index": 0 - }, - { - "name": "FEATURE_VISUALIZATION", - "type": "IMAGE", - "links": [ - 867 - ], - "shape": 3, - "slot_index": 1 - } - ], - "properties": { - "Node name for S&R": "FeatureMixer" - }, - "widgets_values": [ - 1.46, - 0, - 1, - 1, - 1, - 1, - 1, - 0, - 0, - 0.3, - 0.5 - ] - }, - { - "id": 84, - "type": "KSampler", - "pos": [ - 2950, - 50 - ], - "size": { - "0": 308.92816162109375, - "1": 263.701904296875 - }, - "flags": {}, - "order": 77, - "mode": 0, - "inputs": [ - { - "name": "model", - "type": "MODEL", - "link": 716 - }, - { - "name": "positive", - "type": "CONDITIONING", - "link": 665 - }, - { - "name": "negative", - "type": "CONDITIONING", - "link": 666 - }, - { - "name": "latent_image", - "type": "LATENT", - "link": 827 - } - ], - "outputs": [ - { - "name": "LATENT", - "type": "LATENT", - "links": [ - 656 - ], - "slot_index": 0 - } - ], - "properties": { - "Node name for S&R": "KSampler" - }, - "widgets_values": [ - 144, - "fixed", - 4, - 1.8, - "lcm", - "sgm_uniform", - 1 - ] - }, - { - "id": 311, - "type": "Reroute", - "pos": [ - 2590, - -350 - ], - "size": [ - 75, - 26 - ], - "flags": {}, - "order": 34, - "mode": 0, - "inputs": [ - { - "name": "", - "type": "*", - "link": 788 - } - ], - "outputs": [ - { - "name": "", - "type": "AUDIO", - "links": [ - 762, - 847, - 874 - ], - "slot_index": 0 - } - ], - "properties": { - "showOutputText": false, - "horizontal": false - } - }, - { - "id": 273, - "type": "easy imageRemBg", - "pos": [ - -903, - -146 - ], - "size": { - "0": 315, - "1": 314 - }, - "flags": { - "collapsed": false - }, - "order": 33, - "mode": 0, - "inputs": [ - { - "name": "images", - "type": "IMAGE", - "link": 848 - } - ], - "outputs": [ - { - "name": "image", - "type": "IMAGE", - "links": [], - "shape": 3, - "slot_index": 0 - }, - { - "name": "mask", - "type": "MASK", - "links": [ - 657, - 813 - ], - "shape": 3, - "slot_index": 1 - } - ], - "properties": { - "Node name for S&R": "easy imageRemBg" - }, - "widgets_values": [ - "RMBG-1.4", - "Hide", - "ComfyUI", - false - ] - }, - { - "id": 277, - "type": "VAEDecode", - "pos": [ - 3110, - -140 - ], - "size": { - "0": 140, - "1": 46 - }, - "flags": {}, - "order": 78, - "mode": 0, - "inputs": [ - { - "name": "samples", - "type": "LATENT", - "link": 656 - }, - { - "name": "vae", - "type": "VAE", - "link": 746 - } - ], - "outputs": [ - { - "name": "IMAGE", - "type": "IMAGE", - "links": [ - 750, - 835 - ], - "slot_index": 0 - } - ], - "properties": { - "Node name for S&R": "VAEDecode" - } - }, - { - "id": 255, - "type": "CLIPTextEncode", - "pos": [ - -1845.306410106198, - 142.10544477703155 - ], - "size": { - "0": 425.27801513671875, - "1": 180.6060791015625 - }, - "flags": {}, - "order": 20, - "mode": 0, - "inputs": [ - { - "name": "clip", - "type": "CLIP", - "link": 610 - } - ], - "outputs": [ - { - "name": "CONDITIONING", - "type": "CONDITIONING", - "links": [ - 769 - ], - "slot_index": 0 - } - ], - "properties": { - "Node name for S&R": "CLIPTextEncode" - }, - "widgets_values": [ - "nude, nsfw" - ] - }, - { - "id": 287, - "type": "AudioSeparator", - "pos": [ - -326, - -832 - ], - "size": { - "0": 317.4000244140625, - "1": 158 - }, - "flags": {}, - "order": 42, - "mode": 0, - "inputs": [ - { - "name": "model", - "type": "OPEN_UNMIX_MODEL", - "link": 688, - "slot_index": 0 - }, - { - "name": "audio", - "type": "AUDIO", - "link": 789 - }, - { - "name": "video_frames", - "type": "IMAGE", - "link": 843 - } - ], - "outputs": [ - { - "name": "audio", - "type": "AUDIO", - "links": null, - "shape": 3 - }, - { - "name": "drums_audio", - "type": "AUDIO", - "links": [ - 685 - ], - "shape": 3 - }, - { - "name": "vocals_audio", - "type": "AUDIO", - "links": [], - "shape": 3, - "slot_index": 2 - }, - { - "name": "bass_audio", - "type": "AUDIO", - "links": [ - 881 - ], - "shape": 3, - "slot_index": 3 - }, - { - "name": "other_audio", - "type": "AUDIO", - "links": null, - "shape": 3 - }, - { - "name": "feature_pipe", - "type": "FEATURE_PIPE", - "links": [ - 687, - 870 - ], - "shape": 3, - "slot_index": 5 - } - ], - "properties": { - "Node name for S&R": "AudioSeparator" - }, - "widgets_values": [ - 30 - ] - }, - { - "id": 370, - "type": "FlexMaskMorph", - "pos": [ - 1490, - -770 - ], - "size": [ - 322.2349752286873, - 266 - ], - "flags": {}, - "order": 59, - "mode": 0, - "inputs": [ - { - "name": "masks", - "type": "MASK", - "link": 868 - }, - { - "name": "feature", - "type": "FEATURE", - "link": 863 - }, - { - "name": "feature_pipe", - "type": "FEATURE_PIPE", - "link": 872 - } - ], - "outputs": [ - { - "name": "MASK", - "type": "MASK", - "links": [ - 885 - ], - "shape": 3, - "slot_index": 0 - } - ], - "properties": { - "Node name for S&R": "FlexMaskMorph" - }, - "widgets_values": [ - 1, - false, - 1, - 0, - 0, - "dilate", - 9, - 10 - ] - }, - { - "id": 258, - "type": "VHS_LoadVideo", - "pos": [ - -1254, - -140 - ], - "size": [ - 235.1999969482422, - 658.3553434150164 - ], - "flags": {}, - "order": 14, - "mode": 0, - "inputs": [ - { - "name": "meta_batch", - "type": "VHS_BatchManager", - "link": null - }, - { - "name": "vae", - "type": "VAE", - "link": null - } - ], - "outputs": [ - { - "name": "IMAGE", - "type": "IMAGE", - "links": [ - 620, - 902 - ], - "shape": 3, - "slot_index": 0 - }, - { - "name": "frame_count", - "type": "INT", - "links": null, - "shape": 3 - }, - { - "name": "audio", - "type": "AUDIO", - "links": [ - 811 - ], - "shape": 3, - "slot_index": 2 - }, - { - "name": "video_info", - "type": "VHS_VIDEOINFO", - "links": [ - 888 - ], - "shape": 3, - "slot_index": 3 - } - ], - "properties": { - "Node name for S&R": "VHS_LoadVideo" - }, - "widgets_values": { - "video": "pexels_womanSitting_with_audio.mp4", - "force_rate": 30, - "force_size": "Disabled", - "custom_width": 512, - "custom_height": 512, - "frame_load_cap": 100, - "skip_first_frames": 0, - "select_every_nth": 1, - "choose video to upload": "image", - "videopreview": { - "hidden": false, - "paused": false, - "params": { - "frame_load_cap": 100, - "skip_first_frames": 0, - "force_rate": 30, - "filename": "pexels_womanSitting_with_audio.mp4", - "type": "input", - "format": "video/mp4", - "select_every_nth": 1 - } - } - } - }, - { - "id": 371, - "type": "PreviewImage", - "pos": [ - 2220, - -750 - ], - "size": [ - 210, - 246 - ], - "flags": {}, - "order": 60, - "mode": 0, - "inputs": [ - { - "name": "images", - "type": "IMAGE", - "link": 867 - } - ], - "properties": { - "Node name for S&R": "PreviewImage" - } - }, - { - "id": 372, - "type": "AudioFeatureExtractor", - "pos": [ - 1068, - -921 - ], - "size": { - "0": 361.20001220703125, - "1": 78 - }, - "flags": {}, - "order": 47, - "mode": 0, - "inputs": [ - { - "name": "audio", - "type": "AUDIO", - "link": 881 - }, - { - "name": "feature_pipe", - "type": "FEATURE_PIPE", - "link": 870 - } - ], - "outputs": [ - { - "name": "FEATURE", - "type": "FEATURE", - "links": [ - 871, - 882 - ], - "shape": 3, - "slot_index": 0 - }, - { - "name": "FEATURE_PIPE", - "type": "FEATURE_PIPE", - "links": [ - 872, - 883 - ], - "shape": 3, - "slot_index": 1 - } - ], - "properties": { - "Node name for S&R": "AudioFeatureExtractor" - }, - "widgets_values": [ - "amplitude_envelope" - ] - }, - { - "id": 354, - "type": "VHS_VideoCombine", - "pos": [ - 2534, - -1103 - ], - "size": [ - 210, - 664 - ], - "flags": {}, - "order": 73, - "mode": 0, - "inputs": [ - { - "name": "images", - "type": "IMAGE", - "link": 831 - }, - { - "name": "audio", - "type": "*", - "link": null - }, - { - "name": "meta_batch", - "type": "VHS_BatchManager", - "link": null - }, - { - "name": "vae", - "type": "VAE", - "link": null - } - ], - "outputs": [ - { - "name": "Filenames", - "type": "VHS_FILENAMES", - "links": null, - "shape": 3 - } - ], - "properties": { - "Node name for S&R": "VHS_VideoCombine" - }, - "widgets_values": { - "frame_rate": 30, - "loop_count": 0, - "filename_prefix": "AnimateDiff", - "format": "video/h264-mp4", - "pix_fmt": "yuv420p", - "crf": 19, - "save_metadata": true, - "pingpong": false, - "save_output": true, - "videopreview": { - "hidden": false, - "paused": false, - "params": { - "filename": "AnimateDiff_02830.mp4", - "subfolder": "", - "type": "output", - "format": "video/h264-mp4", - "frame_rate": 30 - } - } - } - }, - { - "id": 352, - "type": "ImageScale", - "pos": [ - 2084, - 466 - ], - "size": { - "0": 210, - "1": 130 - }, - "flags": { - "collapsed": true - }, - "order": 22, - "mode": 0, - "inputs": [ - { - "name": "image", - "type": "IMAGE", - "link": 823 - } - ], - "outputs": [ - { - "name": "IMAGE", - "type": "IMAGE", - "links": [ - 836 - ], - "shape": 3, - "slot_index": 0 - } - ], - "properties": { - "Node name for S&R": "ImageScale" - }, - "widgets_values": [ - "nearest-exact", - 1024, - 1024, - "disabled" - ] - }, - { - "id": 349, - "type": "Reroute", - "pos": [ - 1835, - -364 - ], - "size": [ - 75, - 26 - ], - "flags": {}, - "order": 69, - "mode": 0, - "inputs": [ - { - "name": "", - "type": "*", - "link": 886 - } - ], - "outputs": [ - { - "name": "", - "type": "MASK", - "links": [ - 907 - ], - "slot_index": 0 - } - ], - "properties": { - "showOutputText": false, - "horizontal": false - } - }, - { - "id": 383, - "type": "Reroute", - "pos": [ - 2103.521547700666, - 38.00157508970966 - ], - "size": [ - 75, - 26 - ], - "flags": {}, - "order": 72, - "mode": 0, - "inputs": [ - { - "name": "", - "type": "*", - "link": 907 - } - ], - "outputs": [ - { - "name": "", - "type": "MASK", - "links": [ - 908, - 911 - ], - "slot_index": 0 - } - ], - "properties": { - "showOutputText": false, - "horizontal": false - } - }, - { - "id": 327, - "type": "Reroute", - "pos": [ - 2117, - 646 - ], - "size": [ - 75, - 26 - ], - "flags": {}, - "order": 48, - "mode": 0, - "inputs": [ - { - "name": "", - "type": "*", - "link": 776 - } - ], - "outputs": [ - { - "name": "", - "type": "MASK", - "links": [ - 880, - 912 - ], - "slot_index": 0 - } - ], - "properties": { - "showOutputText": false, - "horizontal": false - } - }, - { - "id": 382, - "type": "MaskComposite", - "pos": [ - 2132, - 392 - ], - "size": [ - 210, - 126 - ], - "flags": { - "collapsed": true - }, - "order": 74, - "mode": 0, - "inputs": [ - { - "name": "destination", - "type": "MASK", - "link": 912 - }, - { - "name": "source", - "type": "MASK", - "link": 911 - } - ], - "outputs": [ - { - "name": "MASK", - "type": "MASK", - "links": [ - 914 - ], - "shape": 3, - "slot_index": 0 - } - ], - "properties": { - "Node name for S&R": "MaskComposite" - }, - "widgets_values": [ - 0, - 0, - "subtract" - ] - }, - { - "id": 281, - "type": "ControlNetLoader", - "pos": [ - 2681, - 663 - ], - "size": { - "0": 315, - "1": 58 - }, - "flags": {}, - "order": 15, - "mode": 0, - "outputs": [ - { - "name": "CONTROL_NET", - "type": "CONTROL_NET", - "links": [ - 660 - ], - "shape": 3 - } - ], - "properties": { - "Node name for S&R": "ControlNetLoader" - }, - "widgets_values": [ - "control_v11p_sd15_lineart_fp16.safetensors" - ] - }, - { - "id": 280, - "type": "ControlNetApplyAdvanced", - "pos": [ - 3064, - 706 - ], - "size": { - "0": 315, - "1": 166 - }, - "flags": {}, - "order": 68, - "mode": 0, - "inputs": [ - { - "name": "positive", - "type": "CONDITIONING", - "link": 770 - }, - { - "name": "negative", - "type": "CONDITIONING", - "link": 771 - }, - { - "name": "control_net", - "type": "CONTROL_NET", - "link": 660, - "slot_index": 2 - }, - { - "name": "image", - "type": "IMAGE", - "link": 916, - "slot_index": 3 - } - ], - "outputs": [ - { - "name": "positive", - "type": "CONDITIONING", - "links": [ - 665, - 669 - ], - "shape": 3, - "slot_index": 0 - }, - { - "name": "negative", - "type": "CONDITIONING", - "links": [ - 666, - 670 - ], - "shape": 3, - "slot_index": 1 - } - ], - "properties": { - "Node name for S&R": "ControlNetApplyAdvanced" - }, - "widgets_values": [ - 0.47000000000000003, - 0, - 0.5740000000000001 - ] - }, - { - "id": 375, - "type": "Reroute", - "pos": [ - -950, - 818 - ], - "size": [ - 75, - 26 - ], - "flags": {}, - "order": 24, - "mode": 0, - "inputs": [ - { - "name": "", - "type": "*", - "link": 902 - } - ], - "outputs": [ - { - "name": "", - "type": "IMAGE", - "links": [ - 904 - ], - "slot_index": 0 - } - ], - "properties": { - "showOutputText": false, - "horizontal": false - } - }, - { - "id": 379, - "type": "Reroute", - "pos": [ - -954, - 779 - ], - "size": [ - 75, - 26 - ], - "flags": {}, - "order": 26, - "mode": 0, - "inputs": [ - { - "name": "", - "type": "*", - "link": 888 - } - ], - "outputs": [ - { - "name": "", - "type": "VHS_VIDEOINFO", - "links": [ - 889 - ], - "slot_index": 0 - } - ], - "properties": { - "showOutputText": false, - "horizontal": false - } - }, - { - "id": 378, - "type": "VHS_VideoInfoSource", - "pos": [ - 3701, - 895 - ], - "size": { - "0": 304.79998779296875, - "1": 106 - }, - "flags": {}, - "order": 35, - "mode": 0, - "inputs": [ - { - "name": "video_info", - "type": "VHS_VIDEOINFO", - "link": 889 - } - ], - "outputs": [ - { - "name": "fps🟨", - "type": "FLOAT", - "links": null, - "shape": 3 - }, - { - "name": "frame_count🟨", - "type": "INT", - "links": null, - "shape": 3 - }, - { - "name": "duration🟨", - "type": "FLOAT", - "links": null, - "shape": 3 - }, - { - "name": "width🟨", - "type": "INT", - "links": [ - 894 - ], - "shape": 3, - "slot_index": 3 - }, - { - "name": "height🟨", - "type": "INT", - "links": [ - 895 - ], - "shape": 3, - "slot_index": 4 - } - ], - "properties": { - "Node name for S&R": "VHS_VideoInfoSource" - }, - "widgets_values": {} - }, - { - "id": 374, - "type": "VHS_VideoCombine", - "pos": [ - 4729, - 733 - ], - "size": [ - 210, - 662 - ], - "flags": {}, - "order": 88, - "mode": 0, - "inputs": [ - { - "name": "images", - "type": "IMAGE", - "link": 901 - }, - { - "name": "audio", - "type": "AUDIO", - "link": 874 - }, - { - "name": "meta_batch", - "type": "VHS_BatchManager", - "link": null - }, - { - "name": "vae", - "type": "VAE", - "link": null - } - ], - "outputs": [ - { - "name": "Filenames", - "type": "VHS_FILENAMES", - "links": null, - "shape": 3 - } - ], - "properties": { - "Node name for S&R": "VHS_VideoCombine" - }, - "widgets_values": { - "frame_rate": 30, - "loop_count": 0, - "filename_prefix": "AnimateDiff", - "format": "video/h264-mp4", - "pix_fmt": "yuv420p", - "crf": 19, - "save_metadata": true, - "pingpong": false, - "save_output": true, - "videopreview": { - "hidden": false, - "paused": false, - "params": { - "filename": "AnimateDiff_02828-audio.mp4", - "subfolder": "", - "type": "output", - "format": "video/h264-mp4", - "frame_rate": 30 - } - } - } - }, - { - "id": 373, - "type": "ImageCompositeMasked", - "pos": [ - 4373, - 734 - ], - "size": { - "0": 315, - "1": 146 - }, - "flags": {}, - "order": 87, - "mode": 0, - "inputs": [ - { - "name": "destination", - "type": "IMAGE", - "link": 904 - }, - { - "name": "source", - "type": "IMAGE", - "link": 905 - }, - { - "name": "mask", - "type": "MASK", - "link": 880 - } - ], - "outputs": [ - { - "name": "IMAGE", - "type": "IMAGE", - "links": [ - 901 - ], - "shape": 3, - "slot_index": 0 - } - ], - "properties": { - "Node name for S&R": "ImageCompositeMasked" - }, - "widgets_values": [ - 0, - 0, - true - ] - }, - { - "id": 333, - "type": "ImageCASharpening+", - "pos": [ - 4038, - 146 - ], - "size": { - "0": 315, - "1": 58 - }, - "flags": {}, - "order": 84, - "mode": 0, - "inputs": [ - { - "name": "image", - "type": "IMAGE", - "link": 790 - } - ], - "outputs": [ - { - "name": "IMAGE", - "type": "IMAGE", - "links": [ - 791, - 917 - ], - "shape": 3, - "slot_index": 0 - } - ], - "properties": { - "Node name for S&R": "ImageCASharpening+" - }, - "widgets_values": [ - 0.8 - ] - }, - { - "id": 381, - "type": "ImageScale", - "pos": [ - 4040, - 757 - ], - "size": { - "0": 315, - "1": 130 - }, - "flags": { - "collapsed": false - }, - "order": 86, - "mode": 0, - "inputs": [ - { - "name": "image", - "type": "IMAGE", - "link": 917 - }, - { - "name": "width", - "type": "INT", - "link": 894, - "widget": { - "name": "width" - } - }, - { - "name": "height", - "type": "INT", - "link": 895, - "widget": { - "name": "height" - } - } - ], - "outputs": [ - { - "name": "IMAGE", - "type": "IMAGE", - "links": [ - 905 - ], - "shape": 3, - "slot_index": 0 - } - ], - "properties": { - "Node name for S&R": "ImageScale" - }, - "widgets_values": [ - "nearest-exact", - 512, - 512, - "disabled" - ] - }, - { - "id": 321, - "type": "VHS_VideoCombine", - "pos": [ - 4721, - -218 - ], - "size": [ - 210, - 669 - ], - "flags": {}, - "order": 85, - "mode": 4, - "inputs": [ - { - "name": "images", - "type": "IMAGE", - "link": 791 - }, - { - "name": "audio", - "type": "AUDIO", - "link": 762 - }, - { - "name": "meta_batch", - "type": "VHS_BatchManager", - "link": null - }, - { - "name": "vae", - "type": "VAE", - "link": null - } - ], - "outputs": [ - { - "name": "Filenames", - "type": "VHS_FILENAMES", - "links": null, - "shape": 3 - } - ], - "properties": { - "Node name for S&R": "VHS_VideoCombine" - }, - "widgets_values": { - "frame_rate": 30, - "loop_count": 0, - "filename_prefix": "AnimateDiff", - "format": "video/h264-mp4", - "pix_fmt": "yuv420p", - "crf": 19, - "save_metadata": false, - "pingpong": false, - "save_output": true, - "videopreview": { - "hidden": false, - "paused": false, - "params": { - "filename": "AnimateDiff_02808-audio.mp4", - "subfolder": "", - "type": "output", - "format": "video/h264-mp4", - "frame_rate": 30 - } - } - } - }, - { - "id": 384, - "type": "LineartStandardPreprocessor", - "pos": [ - 2706, - 754 - ], - "size": [ - 251.30741905459854, - 106 - ], - "flags": {}, - "order": 64, - "mode": 0, - "inputs": [ - { - "name": "image", - "type": "IMAGE", - "link": 915 - } - ], - "outputs": [ - { - "name": "IMAGE", - "type": "IMAGE", - "links": [ - 916 - ], - "shape": 3, - "slot_index": 0 - } - ], - "properties": { - "Node name for S&R": "LineartStandardPreprocessor" - }, - "widgets_values": [ - 6, - 8, - 512 - ] - }, - { - "id": 7, - "type": "CLIPTextEncode", - "pos": [ - -1828.3064101061982, - -109.89455522296822 - ], - "size": { - "0": 425.27801513671875, - "1": 180.6060791015625 - }, - "flags": {}, - "order": 19, - "mode": 0, - "inputs": [ - { - "name": "clip", - "type": "CLIP", - "link": 81 - } - ], - "outputs": [ - { - "name": "CONDITIONING", - "type": "CONDITIONING", - "links": [ - 768 - ], - "slot_index": 0 - } - ], - "properties": { - "Node name for S&R": "CLIPTextEncode" - }, - "widgets_values": [ - "high quality, masterpiece, 4k, high resolution photograph of ral-dissolve" - ] - }, - { - "id": 102, - "type": "IPAdapterBatch", - "pos": [ - 2330, - -50 - ], - "size": [ - 303.8558349609375, - 278 - ], - "flags": {}, - "order": 76, - "mode": 0, - "inputs": [ - { - "name": "model", - "type": "MODEL", - "link": 821 - }, - { - "name": "ipadapter", - "type": "IPADAPTER", - "link": 237 - }, - { - "name": "image", - "type": "IMAGE", - "link": 822, - "slot_index": 2 - }, - { - "name": "image_negative", - "type": "IMAGE", - "link": null - }, - { - "name": "attn_mask", - "type": "MASK", - "link": 908 - }, - { - "name": "clip_vision", - "type": "CLIP_VISION", - "link": null - } - ], - "outputs": [ - { - "name": "MODEL", - "type": "MODEL", - "links": [ - 716, - 784 - ], - "shape": 3, - "slot_index": 0 - } - ], - "title": "IPAdapter Batch Foreground", - "properties": { - "Node name for S&R": "IPAdapterBatch" - }, - "widgets_values": [ - 0.9, - "linear", - 0, - 1, - "K+V", - 0 - ] - }, - { - "id": 376, - "type": "FlexMaskWarp", - "pos": [ - 1860, - -770 - ], - "size": { - "0": 315, - "1": 290 - }, - "flags": {}, - "order": 65, - "mode": 0, - "inputs": [ - { - "name": "masks", - "type": "MASK", - "link": 885 - }, - { - "name": "feature", - "type": "FEATURE", - "link": 882 - }, - { - "name": "feature_pipe", - "type": "FEATURE_PIPE", - "link": 883 - } - ], - "outputs": [ - { - "name": "MASK", - "type": "MASK", - "links": [ - 886, - 913 - ], - "shape": 3, - "slot_index": 0 - } - ], - "properties": { - "Node name for S&R": "FlexMaskWarp" - }, - "widgets_values": [ - 1, - false, - 0, - 0, - 0, - "perlin", - 0.6900000000000001, - 35.7, - 5 - ] - }, - { - "id": 56, - "type": "LoadImage", - "pos": [ - 1840, - -160 - ], - "size": [ - 210, - 314 - ], - "flags": {}, - "order": 16, - "mode": 0, - "outputs": [ - { - "name": "IMAGE", - "type": "IMAGE", - "links": [ - 807 - ], - "shape": 3, - "slot_index": 0 - }, - { - "name": "MASK", - "type": "MASK", - "links": null, - "shape": 3 - } - ], - "properties": { - "Node name for S&R": "LoadImage" - }, - "widgets_values": [ - "FREE_psychadelicFire.webp", - "image" - ] - } - ], - "links": [ - [ - 61, - 30, - 0, - 31, - 0, - "MOTION_MODEL_ADE" - ], - [ - 62, - 31, - 0, - 32, - 1, - "M_MODELS" - ], - [ - 64, - 34, - 0, - 32, - 2, - "CONTEXT_OPTIONS" - ], - [ - 81, - 4, - 1, - 7, - 0, - "CLIP" - ], - [ - 102, - 4, - 0, - 52, - 0, - "MODEL" - ], - [ - 194, - 32, - 0, - 88, - 0, - "MODEL" - ], - [ - 195, - 88, - 0, - 11, - 0, - "MODEL" - ], - [ - 237, - 11, - 1, - 102, - 1, - "IPADAPTER" - ], - [ - 610, - 4, - 1, - 255, - 0, - "CLIP" - ], - [ - 620, - 258, - 0, - 261, - 0, - "IMAGE" - ], - [ - 650, - 276, - 0, - 275, - 3, - "LATENT" - ], - [ - 651, - 275, - 0, - 87, - 0, - "LATENT" - ], - [ - 656, - 84, - 0, - 277, - 0, - "LATENT" - ], - [ - 657, - 273, - 1, - 279, - 0, - "MASK" - ], - [ - 660, - 281, - 0, - 280, - 2, - "CONTROL_NET" - ], - [ - 665, - 280, - 0, - 84, - 1, - "CONDITIONING" - ], - [ - 666, - 280, - 1, - 84, - 2, - "CONDITIONING" - ], - [ - 669, - 280, - 0, - 275, - 1, - "CONDITIONING" - ], - [ - 670, - 280, - 1, - 275, - 2, - "CONDITIONING" - ], - [ - 685, - 287, - 1, - 263, - 0, - "AUDIO" - ], - [ - 687, - 287, - 5, - 263, - 1, - "FEATURE_PIPE" - ], - [ - 688, - 288, - 0, - 287, - 0, - "OPEN_UNMIX_MODEL" - ], - [ - 692, - 263, - 0, - 290, - 0, - "FEATURE" - ], - [ - 693, - 290, - 0, - 285, - 0, - "FEATURE" - ], - [ - 694, - 290, - 1, - 271, - 0, - "IMAGE" - ], - [ - 704, - 261, - 0, - 301, - 0, - "*" - ], - [ - 716, - 102, - 0, - 84, - 0, - "MODEL" - ], - [ - 718, - 263, - 1, - 310, - 2, - "FEATURE_PIPE" - ], - [ - 720, - 310, - 0, - 307, - 0, - "IMAGE" - ], - [ - 746, - 317, - 0, - 277, - 1, - "VAE" - ], - [ - 747, - 317, - 0, - 316, - 1, - "VAE" - ], - [ - 748, - 316, - 0, - 276, - 0, - "LATENT" - ], - [ - 749, - 317, - 0, - 87, - 1, - "VAE" - ], - [ - 750, - 277, - 0, - 316, - 0, - "IMAGE" - ], - [ - 756, - 319, - 0, - 291, - 0, - "MODEL" - ], - [ - 757, - 52, - 0, - 319, - 0, - "MODEL" - ], - [ - 762, - 311, - 0, - 321, - 1, - "AUDIO" - ], - [ - 765, - 261, - 0, - 310, - 0, - "IMAGE" - ], - [ - 766, - 310, - 0, - 260, - 0, - "IMAGE" - ], - [ - 768, - 7, - 0, - 323, - 0, - "*" - ], - [ - 769, - 255, - 0, - 324, - 0, - "*" - ], - [ - 770, - 323, - 0, - 280, - 0, - "CONDITIONING" - ], - [ - 771, - 324, - 0, - 280, - 1, - "CONDITIONING" - ], - [ - 772, - 310, - 0, - 325, - 0, - "*" - ], - [ - 774, - 279, - 0, - 326, - 0, - "*" - ], - [ - 776, - 326, - 0, - 327, - 0, - "*" - ], - [ - 779, - 328, - 0, - 260, - 1, - "VAE" - ], - [ - 780, - 328, - 0, - 317, - 0, - "*" - ], - [ - 781, - 291, - 0, - 329, - 0, - "*" - ], - [ - 782, - 329, - 0, - 330, - 0, - "*" - ], - [ - 783, - 330, - 0, - 32, - 0, - "MODEL" - ], - [ - 784, - 102, - 0, - 275, - 0, - "MODEL" - ], - [ - 785, - 4, - 2, - 331, - 0, - "*" - ], - [ - 786, - 331, - 0, - 328, - 0, - "*" - ], - [ - 788, - 332, - 0, - 311, - 0, - "*" - ], - [ - 789, - 332, - 0, - 287, - 1, - "AUDIO" - ], - [ - 790, - 87, - 0, - 333, - 0, - "IMAGE" - ], - [ - 791, - 333, - 0, - 321, - 0, - "IMAGE" - ], - [ - 792, - 263, - 0, - 310, - 1, - "FEATURE" - ], - [ - 793, - 260, - 0, - 335, - 0, - "*" - ], - [ - 794, - 335, - 0, - 336, - 0, - "*" - ], - [ - 807, - 56, - 0, - 343, - 0, - "IMAGE" - ], - [ - 811, - 258, - 2, - 332, - 0, - "*" - ], - [ - 813, - 273, - 1, - 346, - 0, - "*" - ], - [ - 815, - 346, - 0, - 348, - 0, - "*" - ], - [ - 820, - 11, - 0, - 350, - 0, - "MODEL" - ], - [ - 821, - 350, - 0, - 102, - 0, - "MODEL" - ], - [ - 822, - 343, - 0, - 102, - 2, - "IMAGE" - ], - [ - 823, - 351, - 0, - 352, - 0, - "IMAGE" - ], - [ - 825, - 11, - 1, - 350, - 1, - "IPADAPTER" - ], - [ - 827, - 336, - 0, - 84, - 3, - "LATENT" - ], - [ - 831, - 353, - 0, - 354, - 0, - "IMAGE" - ], - [ - 835, - 277, - 0, - 356, - 0, - "IMAGE" - ], - [ - 836, - 352, - 0, - 357, - 1, - "IMAGE" - ], - [ - 837, - 357, - 3, - 350, - 2, - "IMAGE" - ], - [ - 839, - 285, - 0, - 358, - 0, - "*" - ], - [ - 840, - 358, - 0, - 359, - 0, - "*" - ], - [ - 841, - 359, - 0, - 357, - 0, - "WEIGHTS_STRATEGY" - ], - [ - 842, - 301, - 0, - 361, - 0, - "*" - ], - [ - 843, - 361, - 0, - 287, - 2, - "IMAGE" - ], - [ - 847, - 311, - 0, - 356, - 1, - "AUDIO" - ], - [ - 848, - 261, - 0, - 273, - 0, - "IMAGE" - ], - [ - 849, - 357, - 0, - 350, - 6, - "FLOAT" - ], - [ - 863, - 362, - 0, - 370, - 1, - "FEATURE" - ], - [ - 867, - 362, - 1, - 371, - 0, - "IMAGE" - ], - [ - 868, - 348, - 0, - 370, - 0, - "MASK" - ], - [ - 870, - 287, - 5, - 372, - 1, - "FEATURE_PIPE" - ], - [ - 871, - 372, - 0, - 362, - 0, - "FEATURE" - ], - [ - 872, - 372, - 1, - 370, - 2, - "FEATURE_PIPE" - ], - [ - 874, - 311, - 0, - 374, - 1, - "AUDIO" - ], - [ - 880, - 327, - 0, - 373, - 2, - "MASK" - ], - [ - 881, - 287, - 3, - 372, - 0, - "AUDIO" - ], - [ - 882, - 372, - 0, - 376, - 1, - "FEATURE" - ], - [ - 883, - 372, - 1, - 376, - 2, - "FEATURE_PIPE" - ], - [ - 885, - 370, - 0, - 376, - 0, - "MASK" - ], - [ - 886, - 376, - 0, - 349, - 0, - "*" - ], - [ - 888, - 258, - 3, - 379, - 0, - "*" - ], - [ - 889, - 379, - 0, - 378, - 0, - "VHS_VIDEOINFO" - ], - [ - 894, - 378, - 3, - 381, - 1, - "INT" - ], - [ - 895, - 378, - 4, - 381, - 2, - "INT" - ], - [ - 901, - 373, - 0, - 374, - 0, - "IMAGE" - ], - [ - 902, - 258, - 0, - 375, - 0, - "*" - ], - [ - 904, - 375, - 0, - 373, - 0, - "IMAGE" - ], - [ - 905, - 381, - 0, - 373, - 1, - "IMAGE" - ], - [ - 907, - 349, - 0, - 383, - 0, - "*" - ], - [ - 908, - 383, - 0, - 102, - 4, - "MASK" - ], - [ - 911, - 383, - 0, - 382, - 1, - "MASK" - ], - [ - 912, - 327, - 0, - 382, - 0, - "MASK" - ], - [ - 913, - 376, - 0, - 353, - 0, - "MASK" - ], - [ - 914, - 382, - 0, - 350, - 4, - "MASK" - ], - [ - 915, - 325, - 0, - 384, - 0, - "IMAGE" - ], - [ - 916, - 384, - 0, - 280, - 3, - "IMAGE" - ], - [ - 917, - 333, - 0, - 381, - 0, - "IMAGE" - ] - ], - "groups": [ - { - "title": "Control net", - "bounding": [ - 2668, - 590, - 733, - 439 - ], - "color": "#3f789e", - "font_size": 24, - "locked": false - }, - { - "title": "Animate diff", - "bounding": [ - 963, - -129, - 807, - 615 - ], - "color": "#3f789e", - "font_size": 24, - "locked": false - }, - { - "title": "Ipadapter", - "bounding": [ - 1820, - -220, - 834, - 803 - ], - "color": "#3f789e", - "font_size": 24, - "locked": false - }, - { - "title": "Audio Feature", - "bounding": [ - -357, - -1018, - 1220, - 613 - ], - "color": "#3f789e", - "font_size": 24, - "locked": false - }, - { - "title": "Setep", - "bounding": [ - -2533, - -223, - 1194, - 735 - ], - "color": "#3f789e", - "font_size": 24, - "locked": false - }, - { - "title": "Sample1", - "bounding": [ - 2670, - -250, - 956, - 807 - ], - "color": "#3f789e", - "font_size": 24, - "locked": false - }, - { - "title": "Sample2", - "bounding": [ - 3686, - -294, - 915, - 791 - ], - "color": "#3f789e", - "font_size": 24, - "locked": false - }, - { - "title": "Load image", - "bounding": [ - -1284, - -242, - 1053, - 783 - ], - "color": "#3f789e", - "font_size": 24, - "locked": false - }, - { - "title": "😂", - "bounding": [ - -193, - -240, - 838, - 779 - ], - "color": "#3f789e", - "font_size": 24, - "locked": false - }, - { - "title": "Bass Feature + Mask Mod", - "bounding": [ - 1009, - -1035, - 1489, - 609 - ], - "color": "#3f789e", - "font_size": 24, - "locked": false - }, - { - "title": "Paste Subject", - "bounding": [ - 3696, - 598, - 1344, - 752 - ], - "color": "#3f789e", - "font_size": 24, - "locked": false - } - ], - "config": {}, - "extra": { - "ds": { - "scale": 0.2896643797366883, - "offset": { - "0": 4.764620324066559, - "1": 466.41537683245787 - } - } - }, - "version": 0.4 -} \ No newline at end of file diff --git a/examples/audio_lora.json b/examples/audio_lora_version2.json similarity index 81% rename from examples/audio_lora.json rename to examples/audio_lora_version2.json index 7e5f425..cfdf04a 100644 --- a/examples/audio_lora.json +++ b/examples/audio_lora_version2.json @@ -1,572 +1,396 @@ { - "last_node_id": 320, - "last_link_id": 490, + "last_node_id": 364, + "last_link_id": 570, "nodes": [ { - "id": 118, - "type": "ADE_AnimateDiffSamplingSettings", + "id": 21, + "type": "SetClipHooks", "pos": [ - 3102.712646484375, - 211.1063995361328 + 1135.2972412109375, + -156.53550720214844 ], "size": [ - 273.3500061035156, - 274 + 217.4999542236328, + 102 ], "flags": {}, - "order": 36, + "order": 58, "mode": 0, "inputs": [ { - "name": "noise_layers", - "type": "NOISE_LAYERS", - "link": null, - "slot_index": 0, - "shape": 7 - }, - { - "name": "iteration_opts", - "type": "ITERATION_OPTS", - "link": null, - "shape": 7 - }, - { - "name": "custom_cfg", - "type": "CUSTOM_CFG", - "link": 178, - "slot_index": 2, - "shape": 7 - }, - { - "name": "sigma_schedule", - "type": "SIGMA_SCHEDULE", - "link": null, - "slot_index": 3, - "shape": 7 - }, - { - "name": "seed_override", - "type": "INT", - "link": null, - "widget": { - "name": "seed_override" - } - }, - { - "name": "seed_override", - "type": "INT", - "link": null, - "widget": { - "name": "seed_override" - }, - "shape": 7 + "name": "clip", + "type": "CLIP", + "link": 21 }, { - "name": "image_inject", - "type": "IMAGE_INJECT", - "link": null, + "name": "hooks", + "type": "HOOKS", + "link": 52, "shape": 7 } ], "outputs": [ { - "name": "settings", - "type": "SAMPLE_SETTINGS", + "name": "CLIP", + "type": "CLIP", "links": [ - 175 + 1, + 3 ], - "slot_index": 0, - "shape": 3 + "slot_index": 0 } ], "properties": { - "Node name for S&R": "ADE_AnimateDiffSamplingSettings", - "ttNbgOverride": { - "color": "#2a363b", - "bgcolor": "#3f5159", - "groupcolor": "#3f789e" - } + "Node name for S&R": "SetClipHooks" }, "widgets_values": [ - 0, - "FreeNoise", - "comfy", - 0, - 0, + true, false ] }, { - "id": 119, - "type": "ADE_MultivalDynamic", + "id": 11, + "type": "SetClipHooks", "pos": [ - 2752.712646484375, - 11.106085777282715 + 1075.2972412109375, + 143.46449279785156 ], "size": [ - 259.9388122558594, - 63.332008361816406 + 210, + 102 ], "flags": {}, - "order": 0, + "order": 57, "mode": 0, "inputs": [ { - "name": "mask_optional", - "type": "MASK", - "link": null, + "name": "clip", + "type": "CLIP", + "link": 9 + }, + { + "name": "hooks", + "type": "HOOKS", + "link": 48, "shape": 7 } ], "outputs": [ { - "name": "MULTIVAL", - "type": "MULTIVAL", + "name": "CLIP", + "type": "CLIP", "links": [ - 176 + 165, + 166 ], - "slot_index": 0, - "shape": 3 + "slot_index": 0 } ], - "title": "Scale 🎭🅐🅓", "properties": { - "Node name for S&R": "ADE_MultivalDynamic", - "ttNbgOverride": { - "color": "#2a363b", - "bgcolor": "#3f5159", - "groupcolor": "#3f789e" - } + "Node name for S&R": "SetClipHooks" }, "widgets_values": [ - 1.1400000000000001 + true, + false ] }, { - "id": 120, - "type": "ADE_AnimateDiffUniformContextOptions", + "id": 2, + "type": "CLIPTextEncode", "pos": [ - 3102.712646484375, - -98.89384460449219 + 1425.2979736328125, + -96.53550720214844 ], "size": [ - 273.269775390625, - 270 + 327, + 108 ], "flags": {}, - "order": 1, + "order": 72, "mode": 0, "inputs": [ { - "name": "prev_context", - "type": "CONTEXT_OPTIONS", - "link": null, - "shape": 7 - }, - { - "name": "view_opts", - "type": "VIEW_OPTS", - "link": null, - "shape": 7 + "name": "clip", + "type": "CLIP", + "link": 1 } ], "outputs": [ { - "name": "CONTEXT_OPTS", - "type": "CONTEXT_OPTIONS", + "name": "CONDITIONING", + "type": "CONDITIONING", "links": [ - 173 + 14 ], - "slot_index": 0, - "shape": 3 + "slot_index": 0 } ], - "title": "Context Options 🎭🅐🅓", "properties": { - "Node name for S&R": "ADE_AnimateDiffUniformContextOptions", - "ttNbgOverride": { - "color": "#2a363b", - "bgcolor": "#3f5159", - "groupcolor": "#3f789e" - } + "Node name for S&R": "CLIPTextEncode" }, "widgets_values": [ - 16, - 1, - 4, - "uniform", - false, - "pyramid", - false, - 0, - 1, - "" - ] + "worst quality, low quality" + ], + "color": "#322", + "bgcolor": "#533" }, { - "id": 121, - "type": "ADE_MultivalDynamic", + "id": 3, + "type": "CLIPTextEncode", "pos": [ - 2752.712646484375, - -98.89384460449219 + 1405.2979736328125, + 273.4644775390625 ], "size": [ - 265.1632385253906, - 58 + 327, + 108 ], "flags": {}, - "order": 2, + "order": 71, "mode": 0, "inputs": [ { - "name": "mask_optional", - "type": "MASK", - "link": null, - "shape": 7 + "name": "clip", + "type": "CLIP", + "link": 166 } ], "outputs": [ { - "name": "MULTIVAL", - "type": "MULTIVAL", + "name": "CONDITIONING", + "type": "CONDITIONING", "links": [ - 177 + 100 ], - "shape": 3 + "slot_index": 0 } ], - "title": "Effect 🎭🅐🅓", "properties": { - "Node name for S&R": "ADE_MultivalDynamic", - "ttNbgOverride": { - "color": "#2a363b", - "bgcolor": "#3f5159", - "groupcolor": "#3f789e" - } + "Node name for S&R": "CLIPTextEncode" }, "widgets_values": [ - 1.1 - ] + "worst quality, low quality" + ], + "color": "#322", + "bgcolor": "#533" }, { - "id": 122, - "type": "ADE_CustomCFGSimple", + "id": 10, + "type": "VAELoader", "pos": [ - 2752.712646484375, - 111.10614013671875 + 3599.3759765625, + -442.0704040527344 ], "size": [ - 257.2469787597656, - 60.893348693847656 + 315, + 58 ], "flags": {}, - "order": 3, + "order": 0, "mode": 0, - "inputs": [ - { - "name": "cfg_extras", - "type": "CFG_EXTRAS", - "link": null, - "shape": 7 - } - ], + "inputs": [], "outputs": [ { - "name": "CUSTOM_CFG", - "type": "CUSTOM_CFG", + "name": "VAE", + "type": "VAE", "links": [ - 178 + 8 ], - "shape": 3 + "slot_index": 0 } ], "properties": { - "Node name for S&R": "ADE_CustomCFGSimple", - "ttNbgOverride": { - "color": "#2a363b", - "bgcolor": "#3f5159", - "groupcolor": "#3f789e" - } + "Node name for S&R": "VAELoader" }, "widgets_values": [ - 2 + "vaeFtMse840000EmaPruned_vae.safetensors" ] }, { - "id": 124, - "type": "ADE_AdjustWeightAllMult", - "pos": [ - 2742.712646484375, - -258.89434814453125 - ], - "size": [ - 270.3999938964844, - 82 - ], - "flags": {}, - "order": 4, - "mode": 0, - "inputs": [ - { - "name": "prev_weight_adjust", - "type": "WEIGHT_ADJUST", - "link": null, - "shape": 7 - } - ], - "outputs": [ - { - "name": "WEIGHT_ADJUST", - "type": "WEIGHT_ADJUST", - "links": [], - "shape": 3 - } - ], - "properties": { - "Node name for S&R": "ADE_AdjustWeightAllMult", - "ttNbgOverride": { - "color": "#2a363b", - "bgcolor": "#3f5159", - "groupcolor": "#3f789e" - } - }, - "widgets_values": [ - 1.01, - false - ] - }, - { - "id": 125, - "type": "ADE_AnimateDiffLoRALoader", + "id": 136, + "type": "GetNode", "pos": [ - 2742.712646484375, - -398.8938903808594 + 3620.906494140625, + -290.0384521484375 ], "size": [ - 261.19134521484375, - 82 + 210, + 58 ], "flags": {}, - "order": 5, + "order": 1, "mode": 0, - "inputs": [ - { - "name": "prev_motion_lora", - "type": "MOTION_LORA", - "link": null, - "shape": 7 - } - ], + "inputs": [], "outputs": [ { - "name": "MOTION_LORA", - "type": "MOTION_LORA", + "name": "AUDIO", + "type": "AUDIO", "links": [ - 174 + 192 ], - "slot_index": 0, - "shape": 3 + "slot_index": 0 } ], - "title": "AnimateDiff LoRA", - "properties": { - "Node name for S&R": "ADE_AnimateDiffLoRALoader", - "ttNbgOverride": { - "color": "#2a363b", - "bgcolor": "#3f5159", - "groupcolor": "#3f789e" - } - }, + "title": "Get_audio", + "properties": {}, "widgets_values": [ - "LiquidAF-0-1.safetensors", - 0.8 + "audio" ] }, { - "id": 21, - "type": "SetClipHooks", + "id": 139, + "type": "SetNode", "pos": [ - 1135.2972412109375, - -156.53550720214844 + -3799.91796875, + -600.672119140625 ], "size": [ - 217.4999542236328, - 102 + 210, + 58 ], "flags": {}, - "order": 60, + "order": 85, "mode": 0, "inputs": [ { - "name": "clip", - "type": "CLIP", - "link": 21 - }, - { - "name": "hooks", - "type": "HOOKS", - "link": 52, - "shape": 7 + "name": "IMAGE", + "type": "IMAGE", + "link": 409 } ], "outputs": [ { - "name": "CLIP", - "type": "CLIP", - "links": [ - 1, - 3 - ], - "slot_index": 0 + "name": "*", + "type": "*", + "links": null } ], + "title": "Set_initimg_resize", "properties": { - "Node name for S&R": "SetClipHooks" + "previousName": "initimg_resize" }, "widgets_values": [ - true, - false - ] + "initimg_resize" + ], + "color": "#2a363b", + "bgcolor": "#3f5159" }, { - "id": 11, - "type": "SetClipHooks", + "id": 155, + "type": "VAEDecode", "pos": [ - 1075.2972412109375, - 143.46449279785156 + 5186.5576171875, + -378.83050537109375 ], "size": [ 210, - 102 + 46 ], "flags": {}, - "order": 59, + "order": 114, "mode": 0, "inputs": [ { - "name": "clip", - "type": "CLIP", - "link": 9 + "name": "samples", + "type": "LATENT", + "link": 235 }, { - "name": "hooks", - "type": "HOOKS", - "link": 48, - "shape": 7 + "name": "vae", + "type": "VAE", + "link": 236 } ], "outputs": [ { - "name": "CLIP", - "type": "CLIP", + "name": "IMAGE", + "type": "IMAGE", "links": [ - 165, - 166 + 237 ], "slot_index": 0 } ], "properties": { - "Node name for S&R": "SetClipHooks" + "Node name for S&R": "VAEDecode" }, - "widgets_values": [ - true, - false - ] + "widgets_values": [] }, { - "id": 2, - "type": "CLIPTextEncode", + "id": 158, + "type": "GetNode", "pos": [ - 1425.2979736328125, - -96.53550720214844 + 4756.5576171875, + -278.83050537109375 ], "size": [ - 327, - 108 + 210, + 58 ], "flags": {}, - "order": 68, + "order": 2, "mode": 0, - "inputs": [ - { - "name": "clip", - "type": "CLIP", - "link": 1 - } - ], + "inputs": [], "outputs": [ { - "name": "CONDITIONING", - "type": "CONDITIONING", + "name": "AUDIO", + "type": "AUDIO", "links": [ - 14 + 238 ], "slot_index": 0 } ], - "properties": { - "Node name for S&R": "CLIPTextEncode" - }, + "title": "Get_audio", + "properties": {}, "widgets_values": [ - "worst quality, low quality" - ], - "color": "#322", - "bgcolor": "#533" + "audio" + ] }, { - "id": 3, - "type": "CLIPTextEncode", + "id": 150, + "type": "GetNode", "pos": [ - 1405.2979736328125, - 273.4644775390625 + 2791.082763671875, + 1035.9306640625 ], "size": [ - 327, - 108 + 210, + 58 ], "flags": {}, - "order": 67, + "order": 3, "mode": 0, - "inputs": [ - { - "name": "clip", - "type": "CLIP", - "link": 166 - } - ], + "inputs": [], "outputs": [ { - "name": "CONDITIONING", - "type": "CONDITIONING", + "name": "IMAGE", + "type": "IMAGE", "links": [ - 100 + 246 ], "slot_index": 0 } ], - "properties": { - "Node name for S&R": "CLIPTextEncode" - }, + "title": "Get_initimg_resize", + "properties": {}, "widgets_values": [ - "worst quality, low quality" - ], - "color": "#322", - "bgcolor": "#533" + "initimg_resize" + ] }, { - "id": 10, + "id": 157, "type": "VAELoader", "pos": [ - 3599.3759765625, - -442.0704040527344 + 4679.18115234375, + -389.26165771484375 ], "size": [ 315, 58 ], "flags": {}, - "order": 6, + "order": 4, "mode": 0, "inputs": [], "outputs": [ @@ -574,7 +398,7 @@ "name": "VAE", "type": "VAE", "links": [ - 8 + 236 ], "slot_index": 0 } @@ -587,548 +411,476 @@ ] }, { - "id": 136, - "type": "GetNode", + "id": 151, + "type": "ACN_AdvancedControlNetApply_v2", "pos": [ - 3620.906494140625, - -290.0384521484375 + 3522.631591796875, + 857.6676635742188 ], "size": [ - 210, - 58 + 285.6000061035156, + 266 ], "flags": {}, - "order": 7, + "order": 103, "mode": 0, - "inputs": [], - "outputs": [ + "inputs": [ { - "name": "AUDIO", - "type": "AUDIO", + "name": "positive", + "type": "CONDITIONING", + "link": 442 + }, + { + "name": "negative", + "type": "CONDITIONING", + "link": 443 + }, + { + "name": "control_net", + "type": "CONTROL_NET", + "link": 218 + }, + { + "name": "image", + "type": "IMAGE", + "link": 247 + }, + { + "name": "mask_optional", + "type": "MASK", + "link": null, + "shape": 7 + }, + { + "name": "timestep_kf", + "type": "TIMESTEP_KEYFRAME", + "link": null, + "shape": 7 + }, + { + "name": "latent_kf_override", + "type": "LATENT_KEYFRAME", + "link": null, + "shape": 7 + }, + { + "name": "weights_override", + "type": "CONTROL_NET_WEIGHTS", + "link": null, + "shape": 7 + }, + { + "name": "vae_optional", + "type": "VAE", + "link": null, + "shape": 7 + } + ], + "outputs": [ + { + "name": "positive", + "type": "CONDITIONING", "links": [ - 192 + 221, + 240 ], "slot_index": 0 + }, + { + "name": "negative", + "type": "CONDITIONING", + "links": [ + 222, + 241 + ], + "slot_index": 1 } ], - "title": "Get_audio", - "properties": {}, + "properties": { + "Node name for S&R": "ACN_AdvancedControlNetApply_v2" + }, "widgets_values": [ - "audio" + 0.7000000000000001, + 0, + 0.5 ] }, { - "id": 137, - "type": "EmptyImageAndMaskFromAudio", + "id": 182, + "type": "GroundingDinoModelLoader (segment anything)", "pos": [ - -3149.243408203125, - -90.49396514892578 + -1420.2445068359375, + 218.81634521484375 ], "size": [ - 411.6000061035156, - 146 + 541.800048828125, + 58 ], "flags": {}, - "order": 42, + "order": 5, "mode": 0, - "inputs": [ - { - "name": "audio", - "type": "AUDIO", - "link": 195 - } - ], + "inputs": [], "outputs": [ { - "name": "empty_image", - "type": "IMAGE", - "links": [], - "slot_index": 0, - "shape": 3 - }, - { - "name": "empty_mask", - "type": "MASK", - "links": [], - "slot_index": 1, - "shape": 3 - }, - { - "name": "frame_count", - "type": "INT", + "name": "GROUNDING_DINO_MODEL", + "type": "GROUNDING_DINO_MODEL", "links": [ - 196 - ], - "slot_index": 2, - "shape": 3 + 273 + ] } ], "properties": { - "Node name for S&R": "EmptyImageAndMaskFromAudio" + "Node name for S&R": "GroundingDinoModelLoader (segment anything)" }, "widgets_values": [ - 30, - 768, - 464 + "GroundingDINO_SwinT_OGC (694MB)" ] }, { - "id": 102, - "type": "SetNode", + "id": 9, + "type": "VAEDecode", "pos": [ - -2713.39599609375, - -38.110877990722656 + 3986.451171875, + -427.84124755859375 ], "size": [ 210, - 58 + 46 ], "flags": {}, - "order": 51, + "order": 110, "mode": 0, "inputs": [ { - "name": "INT", - "type": "INT", - "link": 196 + "name": "samples", + "type": "LATENT", + "link": 7 + }, + { + "name": "vae", + "type": "VAE", + "link": 8 } ], "outputs": [ { - "name": "*", - "type": "*", - "links": null + "name": "IMAGE", + "type": "IMAGE", + "links": [ + 164 + ], + "slot_index": 0 } ], - "title": "Set_framecount", "properties": { - "previousName": "framecount" + "Node name for S&R": "VAEDecode" }, - "widgets_values": [ - "framecount" - ] + "widgets_values": [] }, { - "id": 139, - "type": "SetNode", + "id": 110, + "type": "VHS_VideoCombine", "pos": [ - -3799.91796875, - -600.672119140625 + 4033.662841796875, + -320.612548828125 ], "size": [ - 210, - 58 + 399.9459228515625, + 988.2792358398438 ], "flags": {}, - "order": 73, + "order": 112, "mode": 0, "inputs": [ { - "name": "IMAGE", + "name": "images", "type": "IMAGE", - "link": 409 + "link": 164 + }, + { + "name": "audio", + "type": "AUDIO", + "link": 192, + "shape": 7 + }, + { + "name": "meta_batch", + "type": "VHS_BatchManager", + "link": null, + "shape": 7 + }, + { + "name": "vae", + "type": "VAE", + "link": null, + "shape": 7 } ], "outputs": [ { - "name": "*", - "type": "*", + "name": "Filenames", + "type": "VHS_FILENAMES", "links": null } ], - "title": "Set_initimg_resize", "properties": { - "previousName": "initimg_resize" + "Node name for S&R": "VHS_VideoCombine" }, - "widgets_values": [ - "initimg_resize" - ] + "widgets_values": { + "frame_rate": 30, + "loop_count": 0, + "filename_prefix": "AnimateDiff", + "format": "video/h264-mp4", + "pix_fmt": "yuv420p", + "crf": 19, + "save_metadata": true, + "trim_to_audio": false, + "pingpong": false, + "save_output": true, + "videopreview": { + "hidden": false, + "paused": false, + "params": { + "filename": "AnimateDiff_02341-audio.mp4", + "subfolder": "", + "type": "output", + "format": "video/h264-mp4", + "frame_rate": 30, + "workflow": "AnimateDiff_02341.png", + "fullpath": "/runpod-volume/ComfyUI_rv/output/AnimateDiff_02341-audio.mp4" + }, + "muted": false + } + } }, { - "id": 117, - "type": "ADE_AnimateDiffLoaderGen1", + "id": 17, + "type": "PairConditioningSetPropertiesAndCombine", "pos": [ - 3102.712646484375, - -398.8938903808594 + 2256.716552734375, + -149.84344482421875 ], "size": [ - 271.7644958496094, - 242 + 340.20001220703125, + 202 ], "flags": {}, - "order": 75, + "order": 96, "mode": 0, "inputs": [ { - "name": "model", - "type": "MODEL", - "link": 283 - }, - { - "name": "context_options", - "type": "CONTEXT_OPTIONS", - "link": 173, - "slot_index": 1, - "shape": 7 - }, - { - "name": "motion_lora", - "type": "MOTION_LORA", - "link": 174, - "slot_index": 2, - "shape": 7 + "name": "positive", + "type": "CONDITIONING", + "link": 97 }, { - "name": "ad_settings", - "type": "AD_SETTINGS", - "link": null, - "slot_index": 3, - "shape": 7 + "name": "negative", + "type": "CONDITIONING", + "link": 98 }, { - "name": "ad_keyframes", - "type": "AD_KEYFRAMES", - "link": null, - "shape": 7 + "name": "positive_NEW", + "type": "CONDITIONING", + "link": 99 }, { - "name": "sample_settings", - "type": "SAMPLE_SETTINGS", - "link": 175, - "slot_index": 5, - "shape": 7 + "name": "negative_NEW", + "type": "CONDITIONING", + "link": 100 }, { - "name": "scale_multival", - "type": "MULTIVAL", - "link": 176, - "slot_index": 6, + "name": "mask", + "type": "MASK", + "link": 20, "shape": 7 }, { - "name": "effect_multival", - "type": "MULTIVAL", - "link": 177, - "slot_index": 7, + "name": "hooks", + "type": "HOOKS", + "link": null, "shape": 7 }, - { - "name": "per_block", - "type": "PER_BLOCK", + { + "name": "timesteps", + "type": "TIMESTEPS_RANGE", "link": null, "shape": 7 } ], "outputs": [ { - "name": "MODEL", - "type": "MODEL", + "name": "positive", + "type": "CONDITIONING", "links": [ - 180, - 239 + 442 ], - "slot_index": 0, - "shape": 3 + "slot_index": 0 + }, + { + "name": "negative", + "type": "CONDITIONING", + "links": [ + 443 + ], + "slot_index": 1 } ], "properties": { - "Node name for S&R": "ADE_AnimateDiffLoaderGen1", - "ttNbgOverride": { - "color": "#2a363b", - "bgcolor": "#3f5159", - "groupcolor": "#3f789e" - } + "Node name for S&R": "PairConditioningSetPropertiesAndCombine" }, "widgets_values": [ - "ALCM_sd15_t2v_beta.ckpt", - "lcm avg(sqrt_linear,linear)" + 1, + "default" ] }, { - "id": 155, - "type": "VAEDecode", + "id": 12, + "type": "CLIPSetLastLayer", "pos": [ - 5174.02587890625, - -370.47601318359375 + 775.2973022460938, + 13.464492797851562 ], "size": [ 210, - 46 + 58.683013916015625 ], "flags": {}, - "order": 112, + "order": 39, "mode": 0, "inputs": [ { - "name": "samples", - "type": "LATENT", - "link": 235 - }, - { - "name": "vae", - "type": "VAE", - "link": 236 + "name": "clip", + "type": "CLIP", + "link": 10 } ], "outputs": [ { - "name": "IMAGE", - "type": "IMAGE", + "name": "CLIP", + "type": "CLIP", "links": [ - 237 + 9, + 21 ], "slot_index": 0 } ], "properties": { - "Node name for S&R": "VAEDecode" + "Node name for S&R": "CLIPSetLastLayer" }, - "widgets_values": [] - }, - { - "id": 158, - "type": "GetNode", - "pos": [ - 4744.02587890625, - -270.47601318359375 - ], - "size": [ - 210, - 58 - ], - "flags": {}, - "order": 8, - "mode": 0, - "inputs": [], - "outputs": [ - { - "name": "AUDIO", - "type": "AUDIO", - "links": [ - 238 - ], - "slot_index": 0 - } - ], - "title": "Get_audio", - "properties": {}, "widgets_values": [ - "audio" + -2 ] }, { - "id": 150, - "type": "GetNode", + "id": 190, + "type": "DifferentialDiffusion", "pos": [ - 2791.082763671875, - 1035.9306640625 + 2217.86962890625, + 607.6415405273438 ], "size": [ - 210, - 58 + 277.20001220703125, + 26 ], "flags": {}, - "order": 9, + "order": 69, "mode": 0, - "inputs": [], - "outputs": [ + "inputs": [ { - "name": "IMAGE", - "type": "IMAGE", - "links": [ - 246 - ], - "slot_index": 0 + "name": "model", + "type": "MODEL", + "link": 449 } ], - "title": "Get_initimg_resize", - "properties": {}, - "widgets_values": [ - "initimg_resize" - ] - }, - { - "id": 157, - "type": "VAELoader", - "pos": [ - 4666.6494140625, - -380.90716552734375 - ], - "size": [ - 315, - 58 - ], - "flags": {}, - "order": 10, - "mode": 0, - "inputs": [], "outputs": [ { - "name": "VAE", - "type": "VAE", + "name": "MODEL", + "type": "MODEL", "links": [ - 236 + 544 ], "slot_index": 0 } ], "properties": { - "Node name for S&R": "VAELoader" + "Node name for S&R": "DifferentialDiffusion" }, - "widgets_values": [ - "vaeFtMse840000EmaPruned_vae.safetensors" - ] + "widgets_values": [] }, { - "id": 151, - "type": "ACN_AdvancedControlNetApply_v2", + "id": 144, + "type": "IPAdapterUnifiedLoader", "pos": [ - 3522.631591796875, - 857.6676635742188 + 1546.594482421875, + 573.0177612304688 ], "size": [ - 285.6000061035156, - 266 + 315, + 78 ], "flags": {}, - "order": 85, + "order": 38, "mode": 0, "inputs": [ { - "name": "positive", - "type": "CONDITIONING", - "link": 442 - }, - { - "name": "negative", - "type": "CONDITIONING", - "link": 443 - }, - { - "name": "control_net", - "type": "CONTROL_NET", - "link": 218 - }, - { - "name": "image", - "type": "IMAGE", - "link": 247 - }, - { - "name": "mask_optional", - "type": "MASK", - "link": null, - "shape": 7 - }, - { - "name": "timestep_kf", - "type": "TIMESTEP_KEYFRAME", - "link": null, - "shape": 7 - }, - { - "name": "latent_kf_override", - "type": "LATENT_KEYFRAME", - "link": null, - "shape": 7 - }, - { - "name": "weights_override", - "type": "CONTROL_NET_WEIGHTS", - "link": null, - "shape": 7 + "name": "model", + "type": "MODEL", + "link": 208 }, { - "name": "vae_optional", - "type": "VAE", + "name": "ipadapter", + "type": "IPADAPTER", "link": null, "shape": 7 } ], "outputs": [ { - "name": "positive", - "type": "CONDITIONING", + "name": "model", + "type": "MODEL", "links": [ - 221, - 240 + 445 ], - "slot_index": 0 + "slot_index": 0, + "shape": 3 }, { - "name": "negative", - "type": "CONDITIONING", + "name": "ipadapter", + "type": "IPADAPTER", "links": [ - 222, - 241 + 446 ], - "slot_index": 1 - } - ], - "properties": { - "Node name for S&R": "ACN_AdvancedControlNetApply_v2" - }, - "widgets_values": [ - 0.7000000000000001, - 0, - 0.5 - ] - }, - { - "id": 182, - "type": "GroundingDinoModelLoader (segment anything)", - "pos": [ - -1420.2445068359375, - 218.81634521484375 - ], - "size": [ - 541.800048828125, - 58 - ], - "flags": {}, - "order": 11, - "mode": 0, - "inputs": [], - "outputs": [ - { - "name": "GROUNDING_DINO_MODEL", - "type": "GROUNDING_DINO_MODEL", - "links": [ - 273 - ] + "slot_index": 1, + "shape": 3 } ], "properties": { - "Node name for S&R": "GroundingDinoModelLoader (segment anything)" + "Node name for S&R": "IPAdapterUnifiedLoader" }, "widgets_values": [ - "GroundingDINO_SwinT_OGC (694MB)" + "PLUS (high strength)" ] }, { - "id": 9, - "type": "VAEDecode", + "id": 277, + "type": "MaskToImage", "pos": [ - 3986.451171875, - -427.84124755859375 + -570.9765625, + 981.3114624023438 ], "size": [ - 210, - 46 + 264.5999755859375, + 26 ], "flags": {}, - "order": 98, + "order": 53, "mode": 0, "inputs": [ { - "name": "samples", - "type": "LATENT", - "link": 7 - }, - { - "name": "vae", - "type": "VAE", - "link": 8 + "name": "mask", + "type": "MASK", + "link": 533 } ], "outputs": [ @@ -1136,586 +888,565 @@ "name": "IMAGE", "type": "IMAGE", "links": [ - 164 + 422 ], "slot_index": 0 } ], "properties": { - "Node name for S&R": "VAEDecode" + "Node name for S&R": "MaskToImage" }, "widgets_values": [] }, { - "id": 110, - "type": "VHS_VideoCombine", + "id": 152, + "type": "ControlNetLoader", "pos": [ - 4033.662841796875, - -320.612548828125 + 2996.48681640625, + 833.2398681640625 ], "size": [ - 399.9459228515625, - 988.2792358398438 + 315, + 58 ], "flags": {}, - "order": 108, + "order": 6, + "mode": 0, + "inputs": [], + "outputs": [ + { + "name": "CONTROL_NET", + "type": "CONTROL_NET", + "links": [ + 218 + ] + } + ], + "properties": { + "Node name for S&R": "ControlNetLoader" + }, + "widgets_values": [ + "control_v11f1p_sd15_depth.pth" + ] + }, + { + "id": 163, + "type": "AIO_Preprocessor", + "pos": [ + 3008.70263671875, + 967.0679321289062 + ], + "size": [ + 315, + 82 + ], + "flags": {}, + "order": 33, "mode": 0, "inputs": [ { - "name": "images", + "name": "image", "type": "IMAGE", - "link": 164 - }, - { - "name": "audio", - "type": "AUDIO", - "link": 192, - "shape": 7 - }, - { - "name": "meta_batch", - "type": "VHS_BatchManager", - "link": null, - "shape": 7 - }, - { - "name": "vae", - "type": "VAE", - "link": null, - "shape": 7 + "link": 246 } ], "outputs": [ { - "name": "Filenames", - "type": "VHS_FILENAMES", - "links": null + "name": "IMAGE", + "type": "IMAGE", + "links": [ + 247 + ], + "slot_index": 0 } ], "properties": { - "Node name for S&R": "VHS_VideoCombine" + "Node name for S&R": "AIO_Preprocessor" }, - "widgets_values": { - "frame_rate": 30, - "loop_count": 0, - "filename_prefix": "AnimateDiff", - "format": "video/h264-mp4", - "pix_fmt": "yuv420p", - "crf": 19, - "save_metadata": true, - "trim_to_audio": false, - "pingpong": false, - "save_output": true, - "videopreview": { - "hidden": false, - "paused": false, - "params": { - "filename": "AnimateDiff_00490-audio.mp4", - "subfolder": "", - "type": "output", - "format": "video/h264-mp4", - "frame_rate": 30, - "workflow": "AnimateDiff_00490.png", - "fullpath": "/runpod-volume/ComfyUI_rv/output/AnimateDiff_00490-audio.mp4" - }, - "muted": false - } - } + "widgets_values": [ + "Zoe-DepthMapPreprocessor", + 64 + ] }, { - "id": 196, - "type": "GetNode", + "id": 293, + "type": "LoadImage", "pos": [ - -1200, - 2160 + 1548.28662109375, + 739.24267578125 ], "size": [ - 210, - 58 + 315, + 314 ], "flags": {}, - "order": 12, + "order": 7, "mode": 0, "inputs": [], "outputs": [ { - "name": "MASK", - "type": "MASK", + "name": "IMAGE", + "type": "IMAGE", "links": [ - 293 + 451 ], "slot_index": 0 + }, + { + "name": "MASK", + "type": "MASK", + "links": null } ], - "title": "Get_mask_bg", - "properties": {}, + "properties": { + "Node name for S&R": "LoadImage" + }, "widgets_values": [ - "mask_bg" + "FREE_psychadelicFire.webp", + "image" ] }, { - "id": 17, - "type": "PairConditioningSetPropertiesAndCombine", + "id": 6, + "type": "CLIPTextEncode", "pos": [ - 2256.716552734375, - -149.84344482421875 + 1425.2979736328125, + 103.46449279785156 ], "size": [ - 340.20001220703125, - 202 + 327, + 108 ], "flags": {}, - "order": 80, + "order": 70, "mode": 0, "inputs": [ { - "name": "positive", - "type": "CONDITIONING", - "link": 97 - }, - { - "name": "negative", - "type": "CONDITIONING", - "link": 98 - }, - { - "name": "positive_NEW", - "type": "CONDITIONING", - "link": 99 - }, - { - "name": "negative_NEW", - "type": "CONDITIONING", - "link": 100 - }, - { - "name": "mask", - "type": "MASK", - "link": 20, - "shape": 7 - }, - { - "name": "hooks", - "type": "HOOKS", - "link": null, - "shape": 7 - }, - { - "name": "timesteps", - "type": "TIMESTEPS_RANGE", - "link": null, - "shape": 7 + "name": "clip", + "type": "CLIP", + "link": 165 } ], "outputs": [ { - "name": "positive", + "name": "CONDITIONING", "type": "CONDITIONING", "links": [ - 442 + 99 ], "slot_index": 0 - }, - { - "name": "negative", - "type": "CONDITIONING", - "links": [ - 443 - ], - "slot_index": 1 } ], "properties": { - "Node name for S&R": "PairConditioningSetPropertiesAndCombine" + "Node name for S&R": "CLIPTextEncode" }, "widgets_values": [ - 1, - "default" - ] + "1man, a tough boxer shadow boxing in the gym" + ], + "color": "#232", + "bgcolor": "#353" }, { - "id": 12, - "type": "CLIPSetLastLayer", + "id": 156, + "type": "VHS_VideoCombine", "pos": [ - 775.2973022460938, - 13.464492797851562 + 5638.45556640625, + -389.223876953125 ], "size": [ - 210, - 58.683013916015625 + 399.9459228515625, + 985.9338989257812 ], "flags": {}, - "order": 48, + "order": 115, "mode": 0, "inputs": [ { - "name": "clip", - "type": "CLIP", - "link": 10 + "name": "images", + "type": "IMAGE", + "link": 237 + }, + { + "name": "audio", + "type": "AUDIO", + "link": 238, + "shape": 7 + }, + { + "name": "meta_batch", + "type": "VHS_BatchManager", + "link": null, + "shape": 7 + }, + { + "name": "vae", + "type": "VAE", + "link": null, + "shape": 7 } ], "outputs": [ { - "name": "CLIP", - "type": "CLIP", - "links": [ - 9, - 21 - ], - "slot_index": 0 + "name": "Filenames", + "type": "VHS_FILENAMES", + "links": null } ], "properties": { - "Node name for S&R": "CLIPSetLastLayer" + "Node name for S&R": "VHS_VideoCombine" }, - "widgets_values": [ - -2 - ] + "widgets_values": { + "frame_rate": 30, + "loop_count": 0, + "filename_prefix": "AnimateDiff", + "format": "video/h264-mp4", + "pix_fmt": "yuv420p", + "crf": 19, + "save_metadata": true, + "trim_to_audio": false, + "pingpong": false, + "save_output": true, + "videopreview": { + "hidden": false, + "paused": false, + "params": { + "filename": "AnimateDiff_02342-audio.mp4", + "subfolder": "", + "type": "output", + "format": "video/h264-mp4", + "frame_rate": 30, + "workflow": "AnimateDiff_02342.png", + "fullpath": "/runpod-volume/ComfyUI_rv/output/AnimateDiff_02342-audio.mp4" + }, + "muted": false + } + } }, { - "id": 123, - "type": "ADE_AdjustPESweetspotStretch", + "id": 14, + "type": "InvertMask", "pos": [ - 2748.25341796875, - 292.8603820800781 + 2088.144287109375, + -414.2312316894531 ], "size": [ - 253.07310485839844, - 106 + 210, + 26 ], "flags": {}, - "order": 13, + "order": 55, "mode": 0, "inputs": [ { - "name": "prev_pe_adjust", - "type": "PE_ADJUST", - "link": null, - "shape": 7 + "name": "mask", + "type": "MASK", + "link": 46 } ], "outputs": [ { - "name": "PE_ADJUST", - "type": "PE_ADJUST", - "links": [], - "shape": 3 + "name": "MASK", + "type": "MASK", + "links": [ + 20 + ], + "slot_index": 0 } ], "properties": { - "Node name for S&R": "ADE_AdjustPESweetspotStretch", - "ttNbgOverride": { - "color": "#2a363b", - "bgcolor": "#3f5159", - "groupcolor": "#3f789e" - } + "Node name for S&R": "InvertMask" }, - "widgets_values": [ - 16, - 18, - false - ] + "widgets_values": [] }, { - "id": 190, - "type": "DifferentialDiffusion", + "id": 128, + "type": "GetImageSizeAndCount", "pos": [ - 2217.86962890625, - 607.6415405273438 + -4208.6083984375, + -740.6171875 ], "size": [ 277.20001220703125, - 26 + 86 ], - "flags": {}, - "order": 65, + "flags": { + "collapsed": false + }, + "order": 74, "mode": 0, "inputs": [ { - "name": "model", - "type": "MODEL", - "link": 449 + "name": "image", + "type": "IMAGE", + "link": 286 } ], "outputs": [ { - "name": "MODEL", - "type": "MODEL", + "name": "image", + "type": "IMAGE", "links": [ - 283 + 289, + 409, + 410 ], "slot_index": 0 + }, + { + "name": "width", + "type": "INT", + "links": null + }, + { + "name": "height", + "type": "INT", + "links": null + }, + { + "name": "count", + "type": "INT", + "links": null } ], "properties": { - "Node name for S&R": "DifferentialDiffusion" + "Node name for S&R": "GetImageSizeAndCount" }, "widgets_values": [] }, { - "id": 144, - "type": "IPAdapterUnifiedLoader", + "id": 192, + "type": "ImageScaleBy", "pos": [ - 1546.594482421875, - 573.0177612304688 + -4586.4140625, + -753.6970825195312 ], "size": [ 315, - 78 + 82 ], "flags": {}, - "order": 47, + "order": 59, "mode": 0, "inputs": [ { - "name": "model", - "type": "MODEL", - "link": 208 - }, - { - "name": "ipadapter", - "type": "IPADAPTER", - "link": null, - "shape": 7 + "name": "image", + "type": "IMAGE", + "link": 285 } ], "outputs": [ { - "name": "model", - "type": "MODEL", - "links": [ - 445 - ], - "slot_index": 0, - "shape": 3 - }, - { - "name": "ipadapter", - "type": "IPADAPTER", + "name": "IMAGE", + "type": "IMAGE", "links": [ - 446 + 286 ], - "slot_index": 1, - "shape": 3 + "slot_index": 0 } ], "properties": { - "Node name for S&R": "IPAdapterUnifiedLoader" + "Node name for S&R": "ImageScaleBy" }, "widgets_values": [ - "PLUS (high strength)" + "lanczos", + 0.4 ] }, { - "id": 277, - "type": "MaskToImage", + "id": 140, + "type": "SetNode", "pos": [ - -570.9765625, - 981.3114624023438 + -3570.507080078125, + -429.794189453125 ], "size": [ - 264.5999755859375, - 26 + 210, + 58 ], "flags": {}, - "order": 55, + "order": 100, "mode": 0, "inputs": [ { - "name": "mask", - "type": "MASK", - "link": 421 + "name": "LATENT", + "type": "LATENT", + "link": 199 } ], "outputs": [ { - "name": "IMAGE", - "type": "IMAGE", - "links": [ - 422 - ], - "slot_index": 0 + "name": "*", + "type": "*", + "links": null } ], + "title": "Set_init_latent", "properties": { - "Node name for S&R": "MaskToImage" + "previousName": "init_latent" }, - "widgets_values": [] + "widgets_values": [ + "init_latent" + ], + "color": "#323", + "bgcolor": "#535" }, { - "id": 152, - "type": "ControlNetLoader", + "id": 114, + "type": "VAELoader", "pos": [ - 2996.48681640625, - 833.2398681640625 + -4571.64013671875, + -562.6693115234375 ], "size": [ 315, 58 ], "flags": {}, - "order": 14, + "order": 8, "mode": 0, "inputs": [], "outputs": [ { - "name": "CONTROL_NET", - "type": "CONTROL_NET", + "name": "VAE", + "type": "VAE", "links": [ - 218 - ] + 168 + ], + "slot_index": 0 } ], "properties": { - "Node name for S&R": "ControlNetLoader" + "Node name for S&R": "VAELoader" }, "widgets_values": [ - "control_v11f1p_sd15_depth.pth" + "vaeFtMse840000EmaPruned_vae.safetensors" ] }, { - "id": 163, - "type": "AIO_Preprocessor", + "id": 115, + "type": "VAEEncode", "pos": [ - 3008.70263671875, - 967.0679321289062 + -3820.88134765625, + -497.2352294921875 ], "size": [ - 315, - 82 + 210, + 46 ], "flags": {}, - "order": 37, + "order": 86, "mode": 0, "inputs": [ { - "name": "image", + "name": "pixels", "type": "IMAGE", - "link": 246 + "link": 410 + }, + { + "name": "vae", + "type": "VAE", + "link": 168 } ], "outputs": [ { - "name": "IMAGE", - "type": "IMAGE", + "name": "LATENT", + "type": "LATENT", "links": [ - 247 + 199 ], "slot_index": 0 } ], "properties": { - "Node name for S&R": "AIO_Preprocessor" + "Node name for S&R": "VAEEncode" }, - "widgets_values": [ - "Zoe-DepthMapPreprocessor", - 64 - ] + "widgets_values": [] }, { - "id": 293, - "type": "LoadImage", + "id": 311, + "type": "SetNode", "pos": [ - 1548.28662109375, - 739.24267578125 + -601.5011596679688, + 876.4684448242188 ], "size": [ - 315, - 314 + 210, + 58 ], "flags": {}, - "order": 15, + "order": 54, "mode": 0, - "inputs": [], - "outputs": [ - { - "name": "IMAGE", - "type": "IMAGE", - "links": [ - 451 - ], - "slot_index": 0 - }, + "inputs": [ { "name": "MASK", "type": "MASK", + "link": 534 + } + ], + "outputs": [ + { + "name": "*", + "type": "*", "links": null } ], + "title": "Set_maskdilate", "properties": { - "Node name for S&R": "LoadImage" + "previousName": "maskdilate" }, "widgets_values": [ - "FREE_psychadelicFire.webp", - "image" - ] + "maskdilate" + ], + "color": "#1c5715", + "bgcolor": "#1f401b" }, { - "id": 6, - "type": "CLIPTextEncode", + "id": 275, + "type": "GetNode", "pos": [ - 1425.2979736328125, - 103.46449279785156 + -575.3842163085938, + 1193.9365234375 ], "size": [ - 327, - 108 + 210, + 58 ], "flags": {}, - "order": 66, + "order": 9, "mode": 0, - "inputs": [ - { - "name": "clip", - "type": "CLIP", - "link": 165 - } - ], + "inputs": [], "outputs": [ { - "name": "CONDITIONING", - "type": "CONDITIONING", + "name": "AUDIO", + "type": "AUDIO", "links": [ - 99 + 420 ], "slot_index": 0 } ], - "properties": { - "Node name for S&R": "CLIPTextEncode" - }, + "title": "Get_audio", + "properties": {}, "widgets_values": [ - "1man, a tough boxer shadow boxing in the gym" - ], - "color": "#232", - "bgcolor": "#353" + "audio" + ] }, { - "id": 156, - "type": "VHS_VideoCombine", + "id": 143, + "type": "VHS_LoadVideo", "pos": [ - 5625.923828125, - -380.869384765625 + -4920.28369140625, + -744.6640014648438 ], "size": [ - 399.9459228515625, - 985.9338989257812 + 247.455078125, + 262 ], "flags": {}, - "order": 113, + "order": 40, "mode": 0, "inputs": [ - { - "name": "images", - "type": "IMAGE", - "link": 237 - }, - { - "name": "audio", - "type": "AUDIO", - "link": 238, - "shape": 7 - }, { "name": "meta_batch", "type": "VHS_BatchManager", @@ -1727,194 +1458,225 @@ "type": "VAE", "link": null, "shape": 7 + }, + { + "name": "frame_load_cap", + "type": "INT", + "link": 204, + "widget": { + "name": "frame_load_cap" + } } ], "outputs": [ { - "name": "Filenames", - "type": "VHS_FILENAMES", + "name": "IMAGE", + "type": "IMAGE", + "links": [ + 285 + ], + "slot_index": 0 + }, + { + "name": "frame_count", + "type": "INT", + "links": null + }, + { + "name": "audio", + "type": "AUDIO", + "links": null + }, + { + "name": "video_info", + "type": "VHS_VIDEOINFO", "links": null } ], "properties": { - "Node name for S&R": "VHS_VideoCombine" + "Node name for S&R": "VHS_LoadVideo" }, "widgets_values": { - "frame_rate": 30, - "loop_count": 0, - "filename_prefix": "AnimateDiff", - "format": "video/h264-mp4", - "pix_fmt": "yuv420p", - "crf": 19, - "save_metadata": true, - "trim_to_audio": false, - "pingpong": false, - "save_output": true, + "video": "pexels_boxer.mp4", + "force_rate": 30, + "force_size": "Disabled", + "custom_width": 512, + "custom_height": 512, + "frame_load_cap": 0, + "skip_first_frames": 0, + "select_every_nth": 1, + "choose video to upload": "image", "videopreview": { "hidden": false, "paused": false, "params": { - "filename": "AnimateDiff_00491-audio.mp4", - "subfolder": "", - "type": "output", - "format": "video/h264-mp4", - "frame_rate": 30, - "workflow": "AnimateDiff_00491.png", - "fullpath": "/runpod-volume/ComfyUI_rv/output/AnimateDiff_00491-audio.mp4" + "force_rate": 30, + "frame_load_cap": 0, + "skip_first_frames": 0, + "select_every_nth": 1, + "filename": "pexels_boxer.mp4", + "type": "input", + "format": "video/mp4" }, "muted": false } } }, { - "id": 14, - "type": "InvertMask", + "id": 75, + "type": "SetNode", "pos": [ - 2088.144287109375, - -414.2312316894531 + -631.8554077148438, + -1310.791748046875 ], "size": [ 210, - 26 + 58 ], "flags": {}, - "order": 57, + "order": 89, "mode": 0, "inputs": [ { - "name": "mask", - "type": "MASK", - "link": 46 + "name": "FEATURE", + "type": "FEATURE", + "link": 515 } ], "outputs": [ { - "name": "MASK", - "type": "MASK", - "links": [ - 20 - ], - "slot_index": 0 + "name": "*", + "type": "*", + "links": null } ], + "title": "Set_drum_featuire", "properties": { - "Node name for S&R": "InvertMask" + "previousName": "" }, - "widgets_values": [] + "widgets_values": [ + "drum_featuire" + ] }, { - "id": 128, - "type": "GetImageSizeAndCount", + "id": 181, + "type": "SAMModelLoader (segment anything)", "pos": [ - -4208.6083984375, - -740.6171875 + -1464.9158935546875, + 85.3639907836914 + ], + "size": [ + 415.8000183105469, + 58 + ], + "flags": {}, + "order": 10, + "mode": 0, + "inputs": [], + "outputs": [ + { + "name": "SAM_MODEL", + "type": "SAM_MODEL", + "links": [ + 272 + ] + } + ], + "properties": { + "Node name for S&R": "SAMModelLoader (segment anything)" + }, + "widgets_values": [ + "sam_vit_h (2.56GB)" + ] + }, + { + "id": 183, + "type": "GetNode", + "pos": [ + -1701.0050048828125, + 266.0216064453125 ], "size": [ - 277.20001220703125, - 86 + 210, + 58 ], - "flags": { - "collapsed": false - }, - "order": 62, + "flags": {}, + "order": 11, "mode": 0, - "inputs": [ - { - "name": "image", - "type": "IMAGE", - "link": 286 - } - ], + "inputs": [], "outputs": [ { - "name": "image", + "name": "IMAGE", "type": "IMAGE", "links": [ - 289, - 409, - 410 + 274 ], "slot_index": 0 - }, - { - "name": "width", - "type": "INT", - "links": null - }, - { - "name": "height", - "type": "INT", - "links": null - }, - { - "name": "count", - "type": "INT", - "links": null } ], - "properties": { - "Node name for S&R": "GetImageSizeAndCount" - }, - "widgets_values": [] + "title": "Get_initimg_resize", + "properties": {}, + "widgets_values": [ + "initimg_resize" + ] }, { - "id": 192, - "type": "ImageScaleBy", + "id": 195, + "type": "SetNode", "pos": [ - -4586.4140625, - -753.6970825195312 + -520.51513671875, + 536.3828125 ], "size": [ - 315, - 82 + 210, + 58 ], "flags": {}, - "order": 50, + "order": 67, "mode": 0, "inputs": [ { - "name": "image", - "type": "IMAGE", - "link": 285 + "name": "MASK", + "type": "MASK", + "link": 291 } ], "outputs": [ { - "name": "IMAGE", - "type": "IMAGE", - "links": [ - 286 - ], - "slot_index": 0 + "name": "*", + "type": "*", + "links": null } ], + "title": "Set_mask_bg", "properties": { - "Node name for S&R": "ImageScaleBy" + "previousName": "mask_bg" }, "widgets_values": [ - "lanczos", - 0.4 - ] + "mask_bg" + ], + "color": "#1c5715", + "bgcolor": "#1f401b" }, { - "id": 140, + "id": 185, "type": "SetNode", "pos": [ - -3570.507080078125, - -429.794189453125 + -501.874267578125, + 444.56414794921875 ], "size": [ 210, 58 ], "flags": {}, - "order": 79, + "order": 51, "mode": 0, "inputs": [ { - "name": "LATENT", - "type": "LATENT", - "link": 199 + "name": "MASK", + "type": "MASK", + "link": 479 } ], "outputs": [ @@ -1924,965 +1686,1094 @@ "links": null } ], - "title": "Set_init_latent", + "title": "Set_mask_fg", "properties": { - "previousName": "init_latent" + "previousName": "mask_fg" }, "widgets_values": [ - "init_latent" - ] + "mask_fg" + ], + "color": "#1c5715", + "bgcolor": "#1f401b" }, { - "id": 114, - "type": "VAELoader", + "id": 272, + "type": "GetNode", "pos": [ - -4571.64013671875, - -562.6693115234375 + -1576.5184326171875, + 874.3690795898438 ], "size": [ - 315, + 210, 58 ], "flags": {}, - "order": 16, + "order": 12, "mode": 0, "inputs": [], "outputs": [ { - "name": "VAE", - "type": "VAE", + "name": "MASK", + "type": "MASK", "links": [ - 168 + 531 ], "slot_index": 0 } ], - "properties": { - "Node name for S&R": "VAELoader" - }, + "title": "Get_mask_fg", + "properties": {}, "widgets_values": [ - "vaeFtMse840000EmaPruned_vae.safetensors" + "mask_fg" ] }, { - "id": 115, - "type": "VAEEncode", + "id": 274, + "type": "GetNode", "pos": [ - -3820.88134765625, - -497.2352294921875 + -1577.8724365234375, + 987.2863159179688 ], "size": [ 210, - 46 + 58 ], "flags": {}, - "order": 74, + "order": 13, "mode": 0, - "inputs": [ - { - "name": "pixels", - "type": "IMAGE", - "link": 410 - }, - { - "name": "vae", - "type": "VAE", - "link": 168 - } - ], + "inputs": [], "outputs": [ { - "name": "LATENT", - "type": "LATENT", + "name": "FEATURE", + "type": "FEATURE", "links": [ - 199 + 532 ], "slot_index": 0 } ], - "properties": { - "Node name for S&R": "VAEEncode" - }, - "widgets_values": [] + "title": "Get_kifck_feature", + "properties": {}, + "widgets_values": [ + "kifck_feature" + ] }, { - "id": 138, - "type": "Note", + "id": 273, + "type": "GetNode", "pos": [ - -2933.0673828125, - 100.34479522705078 + -1566.7303466796875, + 1106.2540283203125 ], "size": [ - 521.2003173828125, - 102.6712646484375 + 210, + 58 ], "flags": {}, - "order": 17, + "order": 14, "mode": 0, "inputs": [], - "outputs": [], + "outputs": [ + { + "name": "INT", + "type": "INT", + "links": [], + "slot_index": 0 + } + ], + "title": "Get_featrurepipe", "properties": {}, "widgets_values": [ - "I need to make a FrameCountFromAudio node!\n\nWe cant use frame count from the other 'empty image and mask...' node above this one, as it would make a feedback loop in the workflow. I can't remember why I set this workflow up this way, but I am sure I thought I had a good reason at the time." - ], - "color": "#432", - "bgcolor": "#653" + "featrurepipe" + ] }, { - "id": 311, - "type": "SetNode", + "id": 4, + "type": "CLIPTextEncode", "pos": [ - -601.5011596679688, - 876.4684448242188 + 1422.325927734375, + -268.9685363769531 ], "size": [ - 210, - 58 + 327, + 108 ], "flags": {}, - "order": 56, + "order": 73, "mode": 0, "inputs": [ { - "name": "MASK", - "type": "MASK", - "link": 475 + "name": "clip", + "type": "CLIP", + "link": 3 } ], "outputs": [ { - "name": "*", - "type": "*", - "links": null + "name": "CONDITIONING", + "type": "CONDITIONING", + "links": [ + 13 + ], + "slot_index": 0 } ], - "title": "Set_maskdilate", "properties": { - "previousName": "maskdilate" + "Node name for S&R": "CLIPTextEncode" }, "widgets_values": [ - "maskdilate" - ] + "1man, tough boxer made of gold shadow boxing in the gym (ral-chrome, dripping gold made of ral-acidzlime)" + ], + "color": "#232", + "bgcolor": "#353" }, { - "id": 100, - "type": "InvertMask", + "id": 315, + "type": "GetNode", "pos": [ - -1860, - 1670 + 1446.72998046875, + -405.689208984375 ], "size": [ 210, - 26 + 58 ], "flags": {}, - "order": 38, + "order": 15, "mode": 0, - "inputs": [ - { - "name": "mask", - "type": "MASK", - "link": 151 - } - ], + "inputs": [], "outputs": [ { "name": "MASK", "type": "MASK", "links": [ - 152 + 478 ], "slot_index": 0 } ], - "properties": { - "Node name for S&R": "InvertMask" - }, - "widgets_values": [] + "title": "Get_maskopacity", + "properties": {}, + "widgets_values": [ + "maskopacity" + ], + "color": "#1c5715", + "bgcolor": "#1f401b" }, { - "id": 95, - "type": "GetNode", + "id": 15, + "type": "Reroute", "pos": [ - -1900, - 1770 + 1770.136474609375, + -409.6941223144531 ], "size": [ - 282.97052001953125, - 74.21566772460938 + 75, + 26 ], "flags": {}, - "order": 18, + "order": 36, "mode": 0, - "inputs": [], + "inputs": [ + { + "name": "", + "type": "*", + "link": 478 + } + ], "outputs": [ { - "name": "FEATURE", - "type": "FEATURE", + "name": "", + "type": "MASK", "links": [ - 146 + 46, + 111 ], "slot_index": 0 } ], - "title": "Get_kifck_feature", - "properties": {}, - "widgets_values": [ - "kifck_feature" - ] + "properties": { + "showOutputText": false, + "horizontal": false + } }, { - "id": 96, - "type": "GetNode", + "id": 16, + "type": "PairConditioningSetProperties", "pos": [ - -1850, - 1900 + 1861.81298828125, + -297.5429992675781 ], "size": [ - 210, - 58 + 315, + 162 ], "flags": {}, - "order": 19, + "order": 83, "mode": 0, - "inputs": [], + "inputs": [ + { + "name": "positive_NEW", + "type": "CONDITIONING", + "link": 13 + }, + { + "name": "negative_NEW", + "type": "CONDITIONING", + "link": 14 + }, + { + "name": "mask", + "type": "MASK", + "link": 111, + "shape": 7 + }, + { + "name": "hooks", + "type": "HOOKS", + "link": null, + "shape": 7 + }, + { + "name": "timesteps", + "type": "TIMESTEPS_RANGE", + "link": null, + "shape": 7 + } + ], "outputs": [ { - "name": "FEATURE_PIPE", - "type": "FEATURE_PIPE", + "name": "positive", + "type": "CONDITIONING", "links": [ - 148 + 97 ], "slot_index": 0 + }, + { + "name": "negative", + "type": "CONDITIONING", + "links": [ + 98 + ], + "slot_index": 1 } ], - "title": "Get_featrurepipe", - "properties": {}, + "properties": { + "Node name for S&R": "PairConditioningSetProperties" + }, "widgets_values": [ - "featrurepipe" + 1, + "default" ] }, { - "id": 97, - "type": "GetNode", + "id": 20, + "type": "CreateHookLora", "pos": [ - -1830, - 1570 + 785.2972412109375, + -302.7511901855469 ], "size": [ - 210, - 58 + 291.2920837402344, + 106 ], "flags": {}, - "order": 20, + "order": 37, "mode": 0, - "inputs": [], + "inputs": [ + { + "name": "prev_hooks", + "type": "HOOKS", + "link": 121, + "shape": 7 + } + ], "outputs": [ { - "name": "MASK", - "type": "MASK", + "name": "HOOKS", + "type": "HOOKS", "links": [ - 151 + 52 ], "slot_index": 0 } ], - "title": "Get_emptymask", - "properties": {}, + "properties": { + "Node name for S&R": "CreateHookLora" + }, "widgets_values": [ - "emptymask" + "ral-chrome-sd15.safetensors", + 1.1, + 1 ] }, { - "id": 197, - "type": "MaskCompositePlus", + "id": 71, + "type": "CreateHookLora", "pos": [ - -930, - 1790 + 399.3513488769531, + -311.66949462890625 ], "size": [ - 310.79998779296875, - 78 + 315, + 106 ], "flags": {}, - "order": 61, + "order": 16, "mode": 0, "inputs": [ { - "name": "mask1", - "type": "MASK", - "link": 294 - }, - { - "name": "mask2", - "type": "MASK", - "link": 293 + "name": "prev_hooks", + "type": "HOOKS", + "link": null, + "shape": 7 } ], "outputs": [ { - "name": "MASK", - "type": "MASK", + "name": "HOOKS", + "type": "HOOKS", "links": [ - 295, - 477 - ], - "slot_index": 0 + 121 + ] } ], "properties": { - "Node name for S&R": "MaskCompositePlus" + "Node name for S&R": "CreateHookLora" }, "widgets_values": [ - "subtract" + "ral-acidzlime-sd15.safetensors", + 1, + 1 ] }, { - "id": 98, - "type": "MaskToImage", + "id": 13, + "type": "CheckpointLoaderSimple", "pos": [ - -890, - 1900 + 416.5162658691406, + -32.22148513793945 ], "size": [ - 264.5999755859375, - 26 + 315, + 98 ], "flags": {}, - "order": 70, + "order": 17, "mode": 0, - "inputs": [ - { - "name": "mask", - "type": "MASK", - "link": 295 - } - ], + "inputs": [], "outputs": [ { - "name": "IMAGE", - "type": "IMAGE", + "name": "MODEL", + "type": "MODEL", "links": [ - 150 + 208 ], "slot_index": 0 + }, + { + "name": "CLIP", + "type": "CLIP", + "links": [ + 10 + ], + "slot_index": 1 + }, + { + "name": "VAE", + "type": "VAE", + "links": [], + "slot_index": 2 } ], "properties": { - "Node name for S&R": "MaskToImage" + "Node name for S&R": "CheckpointLoaderSimple" }, - "widgets_values": [] + "widgets_values": [ + "photonLCM_v10.safetensors" + ] }, { - "id": 101, - "type": "GetNode", + "id": 18, + "type": "CreateHookModelAsLora", "pos": [ - -490, - 1970 + 615.29736328125, + 203.46449279785156 ], "size": [ - 210, - 58 + 315, + 106 ], "flags": {}, - "order": 21, + "order": 18, "mode": 0, - "inputs": [], + "inputs": [ + { + "name": "prev_hooks", + "type": "HOOKS", + "link": null, + "shape": 7 + } + ], "outputs": [ { - "name": "AUDIO", - "type": "AUDIO", + "name": "HOOKS", + "type": "HOOKS", "links": [ - 153 + 48 ], "slot_index": 0 } ], - "title": "Get_audio", - "properties": {}, + "properties": { + "Node name for S&R": "CreateHookModelAsLora" + }, "widgets_values": [ - "audio" + "photonLCM_v10.safetensors", + 1, + 1 ] }, { - "id": 313, - "type": "SetNode", + "id": 292, + "type": "IPAdapterAdvanced", "pos": [ - -570, - 1630 + 1969.8837890625, + 713.6547241210938 ], "size": [ - 210, - 58 + 315, + 278 ], "flags": {}, - "order": 71, + "order": 56, "mode": 0, "inputs": [ { - "name": "MASK", + "name": "model", + "type": "MODEL", + "link": 445 + }, + { + "name": "ipadapter", + "type": "IPADAPTER", + "link": 446 + }, + { + "name": "image", + "type": "IMAGE", + "link": 451 + }, + { + "name": "image_negative", + "type": "IMAGE", + "link": null, + "shape": 7 + }, + { + "name": "attn_mask", "type": "MASK", - "link": 477 + "link": 476, + "shape": 7 + }, + { + "name": "clip_vision", + "type": "CLIP_VISION", + "link": null, + "shape": 7 } ], "outputs": [ { - "name": "*", - "type": "*", - "links": null + "name": "MODEL", + "type": "MODEL", + "links": [ + 449 + ] } ], - "title": "Set_maskopacity", "properties": { - "previousName": "maskopacity" + "Node name for S&R": "IPAdapterAdvanced" }, "widgets_values": [ - "maskopacity" + 1, + "linear", + "concat", + 0, + 1, + "V only" ] }, { - "id": 275, + "id": 312, "type": "GetNode", "pos": [ - -575.3842163085938, - 1193.9365234375 + 1597.7138671875, + 1129.4970703125 ], "size": [ 210, 58 ], "flags": {}, - "order": 22, + "order": 19, "mode": 0, "inputs": [], "outputs": [ { - "name": "AUDIO", - "type": "AUDIO", + "name": "MASK", + "type": "MASK", "links": [ - 420 + 476 ], "slot_index": 0 } ], - "title": "Get_audio", + "title": "Get_maskdilate", "properties": {}, "widgets_values": [ - "audio" - ] + "maskdilate" + ], + "color": "#1c5715", + "bgcolor": "#1f401b" }, { - "id": 129, + "id": 141, "type": "GetNode", "pos": [ - -4892.66259765625, - -855.3516235351562 + 3537.82568359375, + 255.87149047851562 ], "size": [ 210, 58 ], "flags": {}, - "order": 23, + "order": 20, "mode": 0, "inputs": [], "outputs": [ { - "name": "INT", - "type": "INT", + "name": "LATENT", + "type": "LATENT", "links": [ - 204 + 292 ], "slot_index": 0 } ], - "title": "Get_framecount", + "title": "Get_init_latent", "properties": {}, "widgets_values": [ - "framecount" + "init_latent" ] }, { - "id": 143, - "type": "VHS_LoadVideo", + "id": 23, + "type": "KSampler", "pos": [ - -4920.28369140625, - -744.6640014648438 + 3616.170166015625, + -127.18345642089844 ], "size": [ - 247.455078125, + 315, 262 ], "flags": {}, - "order": 39, + "order": 107, "mode": 0, "inputs": [ { - "name": "meta_batch", - "type": "VHS_BatchManager", - "link": null, - "shape": 7 + "name": "model", + "type": "MODEL", + "link": 545 }, { - "name": "vae", - "type": "VAE", - "link": null, - "shape": 7 + "name": "positive", + "type": "CONDITIONING", + "link": 221 }, { - "name": "frame_load_cap", - "type": "INT", - "link": 204, - "widget": { - "name": "frame_load_cap" - } + "name": "negative", + "type": "CONDITIONING", + "link": 222 + }, + { + "name": "latent_image", + "type": "LATENT", + "link": 292 } ], "outputs": [ { - "name": "IMAGE", - "type": "IMAGE", + "name": "LATENT", + "type": "LATENT", "links": [ - 285 + 7, + 243 ], "slot_index": 0 - }, - { - "name": "frame_count", - "type": "INT", - "links": null - }, - { - "name": "audio", - "type": "AUDIO", - "links": null - }, - { - "name": "video_info", - "type": "VHS_VIDEOINFO", - "links": null } ], "properties": { - "Node name for S&R": "VHS_LoadVideo" + "Node name for S&R": "KSampler" }, - "widgets_values": { - "video": "pexels_boxer.mp4", - "force_rate": 30, - "force_size": "Disabled", - "custom_width": 512, - "custom_height": 512, - "frame_load_cap": 0, - "skip_first_frames": 0, - "select_every_nth": 1, - "choose video to upload": "image", - "videopreview": { - "hidden": false, - "paused": false, - "params": { - "force_rate": 30, - "frame_load_cap": 0, - "skip_first_frames": 0, - "select_every_nth": 1, - "filename": "pexels_boxer.mp4", - "type": "input", - "format": "video/mp4" - }, - "muted": false - } - } + "widgets_values": [ + 12345678, + "fixed", + 4, + 1.2, + "lcm", + "sgm_uniform", + 0.8 + ] }, { - "id": 142, - "type": "GetImageSizeAndCount", + "id": 161, + "type": "NNLatentUpscale", "pos": [ - -3801.87060546875, - -760.72802734375 + 4529.49365234375, + 127.41600799560547 ], "size": [ - 277.20001220703125, - 86 + 315, + 82 ], - "flags": { - "collapsed": false - }, - "order": 72, + "flags": {}, + "order": 111, "mode": 0, "inputs": [ { - "name": "image", - "type": "IMAGE", - "link": 289 + "name": "latent", + "type": "LATENT", + "link": 243 } ], "outputs": [ { - "name": "image", - "type": "IMAGE", - "links": [], - "slot_index": 0 - }, - { - "name": "width", - "type": "INT", - "links": [ - 202 - ], - "slot_index": 1 - }, - { - "name": "height", - "type": "INT", + "name": "LATENT", + "type": "LATENT", "links": [ - 203 + 244 ], - "slot_index": 2 - }, - { - "name": "count", - "type": "INT", - "links": null + "slot_index": 0 } ], "properties": { - "Node name for S&R": "GetImageSizeAndCount" + "Node name for S&R": "NNLatentUpscale" }, - "widgets_values": [] + "widgets_values": [ + "SD 1.x", + 1.5 + ] }, { - "id": 92, - "type": "VHS_LoadAudioUpload", + "id": 160, + "type": "KSampler", "pos": [ - -3179.532958984375, - -1009.7830200195312 + 4862.53662109375, + -126.73495483398438 ], "size": [ - 243.818359375, - 130 + 315, + 262 + ], + "flags": {}, + "order": 113, + "mode": 0, + "inputs": [ + { + "name": "model", + "type": "MODEL", + "link": 546 + }, + { + "name": "positive", + "type": "CONDITIONING", + "link": 240 + }, + { + "name": "negative", + "type": "CONDITIONING", + "link": 241 + }, + { + "name": "latent_image", + "type": "LATENT", + "link": 244 + } ], - "flags": {}, - "order": 24, - "mode": 0, - "inputs": [], "outputs": [ { - "name": "audio", - "type": "AUDIO", + "name": "LATENT", + "type": "LATENT", "links": [ - 122, - 123, - 132, - 195, - 489 + 235 ], - "slot_index": 0, - "shape": 3 + "slot_index": 0 } ], "properties": { - "Node name for S&R": "VHS_LoadAudioUpload" + "Node name for S&R": "KSampler" }, - "widgets_values": { - "audio": "Golden Girl.mp3", - "start_time": 26.5, - "duration": 7, - "choose audio to upload": "image" - } + "widgets_values": [ + 12345678, + "fixed", + 4, + 1.2, + "lcm", + "sgm_uniform", + 0.25 + ] }, { - "id": 88, - "type": "FeatureMixer", + "id": 82, + "type": "EmptyImageAndMaskFromAudio", "pos": [ - -1542.70263671875, - -580.540771484375 + -3173.924560546875, + -823.614013671875 ], "size": [ - 367.79998779296875, - 342 + 411.6000061035156, + 146 ], "flags": {}, - "order": 93, + "order": 98, "mode": 0, "inputs": [ { - "name": "feature", - "type": "FEATURE", - "link": 140 + "name": "audio", + "type": "AUDIO", + "link": 132 + }, + { + "name": "width", + "type": "INT", + "link": 202, + "widget": { + "name": "width" + } + }, + { + "name": "height", + "type": "INT", + "link": 203, + "widget": { + "name": "height" + } + }, + { + "name": "frame_rate", + "type": "FLOAT", + "link": null, + "widget": { + "name": "frame_rate" + } } ], "outputs": [ { - "name": "FEATURE", - "type": "FEATURE", + "name": "empty_image", + "type": "IMAGE", "links": [ - 130 + 133, + 155 ], "slot_index": 0, "shape": 3 }, { - "name": "FEATURE_VISUALIZATION", - "type": "IMAGE", + "name": "empty_mask", + "type": "MASK", "links": [ - 139 + 145 ], "slot_index": 1, "shape": 3 + }, + { + "name": "frame_count", + "type": "INT", + "links": [], + "slot_index": 2, + "shape": 3 } ], "properties": { - "Node name for S&R": "FeatureMixer" + "Node name for S&R": "EmptyImageAndMaskFromAudio" }, "widgets_values": [ - 1.59, - 0, - 1, - 1, - 1, - 1, - 1, - 0, - 0.15, - 0.5, - 0.5, - false + 30, + 768, + 464 ] }, { - "id": 75, - "type": "SetNode", + "id": 194, + "type": "InvertMask", "pos": [ - -631.8554077148438, - -1310.791748046875 + -819.477294921875, + 560.0089721679688 ], "size": [ 210, - 58 + 26 ], "flags": {}, - "order": 104, + "order": 52, "mode": 0, "inputs": [ { - "name": "FEATURE", - "type": "FEATURE", - "link": 125 + "name": "mask", + "type": "MASK", + "link": 480 } ], "outputs": [ { - "name": "*", - "type": "*", - "links": null + "name": "MASK", + "type": "MASK", + "links": [ + 291 + ], + "slot_index": 0 } ], - "title": "Set_drum_featuire", "properties": { - "previousName": "" + "Node name for S&R": "InvertMask" }, - "widgets_values": [ - "drum_featuire" - ] + "widgets_values": [] }, { - "id": 91, - "type": "FeatureMixer", + "id": 180, + "type": "GroundingDinoSAMSegment (segment anything)", "pos": [ - -1559.99951171875, - -1488.37890625 + -1412.0692138671875, + 330.6407470703125 ], "size": [ - 367.79998779296875, - 342 + 529.199951171875, + 122 ], "flags": {}, - "order": 95, + "order": 34, "mode": 0, "inputs": [ { - "name": "feature", - "type": "FEATURE", - "link": 144 + "name": "sam_model", + "type": "SAM_MODEL", + "link": 272 + }, + { + "name": "grounding_dino_model", + "type": "GROUNDING_DINO_MODEL", + "link": 273 + }, + { + "name": "image", + "type": "IMAGE", + "link": 274 } ], "outputs": [ { - "name": "FEATURE", - "type": "FEATURE", + "name": "IMAGE", + "type": "IMAGE", "links": [ - 125 + 275 ], - "slot_index": 0, - "shape": 3 + "slot_index": 0 }, { - "name": "FEATURE_VISUALIZATION", - "type": "IMAGE", + "name": "MASK", + "type": "MASK", "links": [ - 127 + 479, + 480 ], - "slot_index": 1, - "shape": 3 + "slot_index": 1 } ], "properties": { - "Node name for S&R": "FeatureMixer" + "Node name for S&R": "GroundingDinoSAMSegment (segment anything)" }, "widgets_values": [ - 1, - 0, - 1, - 1, - 1, - 1, - 1, - 0, - 0.3, - 1, - 0.5, - false + "subject", + 0.3 ] }, { - "id": 89, - "type": "FeatureMixer", + "id": 276, + "type": "VHS_VideoCombine", "pos": [ - -1528.88671875, - -1041.274169921875 + -104.60978698730469, + 859.416015625 ], "size": [ - 367.79998779296875, - 342 + 214.7587890625, + 679.811279296875 ], "flags": {}, - "order": 94, + "order": 68, "mode": 0, "inputs": [ { - "name": "feature", - "type": "FEATURE", - "link": 141 - } - ], - "outputs": [ - { - "name": "FEATURE", - "type": "FEATURE", - "links": [ - 128 - ], - "slot_index": 0, - "shape": 3 + "name": "images", + "type": "IMAGE", + "link": 422 }, { - "name": "FEATURE_VISUALIZATION", - "type": "IMAGE", - "links": [ - 131 - ], - "slot_index": 1, - "shape": 3 - } - ], - "properties": { - "Node name for S&R": "FeatureMixer" - }, - "widgets_values": [ - 1, - 0, - 1, - 1, - 1, - 1, - 1, - 0, - 0.52, - 1, - 0.5, - false - ] - }, - { - "id": 181, - "type": "SAMModelLoader (segment anything)", - "pos": [ - -1464.9158935546875, - 85.3639907836914 - ], - "size": [ - 415.8000183105469, - 58 + "name": "audio", + "type": "AUDIO", + "link": 420, + "shape": 7 + }, + { + "name": "meta_batch", + "type": "VHS_BatchManager", + "link": null, + "shape": 7 + }, + { + "name": "vae", + "type": "VAE", + "link": null, + "shape": 7 + } ], - "flags": {}, - "order": 25, - "mode": 0, - "inputs": [], "outputs": [ { - "name": "SAM_MODEL", - "type": "SAM_MODEL", - "links": [ - 272 - ] + "name": "Filenames", + "type": "VHS_FILENAMES", + "links": null } ], "properties": { - "Node name for S&R": "SAMModelLoader (segment anything)" + "Node name for S&R": "VHS_VideoCombine" }, - "widgets_values": [ - "sam_vit_h (2.56GB)" - ] + "widgets_values": { + "frame_rate": 30, + "loop_count": 0, + "filename_prefix": "AnimateDiff", + "format": "video/h264-mp4", + "pix_fmt": "yuv420p", + "crf": 19, + "save_metadata": true, + "trim_to_audio": false, + "pingpong": false, + "save_output": true, + "videopreview": { + "hidden": false, + "paused": false, + "params": { + "filename": "AnimateDiff_02339-audio.mp4", + "subfolder": "", + "type": "output", + "format": "video/h264-mp4", + "frame_rate": 30, + "workflow": "AnimateDiff_02339.png", + "fullpath": "/runpod-volume/ComfyUI_rv/output/AnimateDiff_02339-audio.mp4" + }, + "muted": false + } + } }, { - "id": 183, - "type": "GetNode", + "id": 184, + "type": "VHS_VideoCombine", "pos": [ - -1701.0050048828125, - 266.0216064453125 + -94.98258209228516, + 94.11283111572266 ], "size": [ - 210, - 58 + 214.7587890625, + 679.811279296875 ], "flags": {}, - "order": 26, + "order": 50, "mode": 0, - "inputs": [], - "outputs": [ + "inputs": [ { - "name": "IMAGE", + "name": "images", "type": "IMAGE", - "links": [ - 274 - ], - "slot_index": 0 + "link": 275 + }, + { + "name": "audio", + "type": "AUDIO", + "link": null, + "shape": 7 + }, + { + "name": "meta_batch", + "type": "VHS_BatchManager", + "link": null, + "shape": 7 + }, + { + "name": "vae", + "type": "VAE", + "link": null, + "shape": 7 } ], - "title": "Get_initimg_resize", - "properties": {}, - "widgets_values": [ - "initimg_resize" - ] + "outputs": [ + { + "name": "Filenames", + "type": "VHS_FILENAMES", + "links": null + } + ], + "properties": { + "Node name for S&R": "VHS_VideoCombine" + }, + "widgets_values": { + "frame_rate": 30, + "loop_count": 0, + "filename_prefix": "AnimateDiff", + "format": "video/h264-mp4", + "pix_fmt": "yuv420p", + "crf": 19, + "save_metadata": true, + "trim_to_audio": false, + "pingpong": false, + "save_output": true, + "videopreview": { + "hidden": false, + "paused": false, + "params": { + "filename": "AnimateDiff_02338-audio.mp4", + "subfolder": "", + "type": "output", + "format": "video/h264-mp4", + "frame_rate": 30, + "workflow": "AnimateDiff_02338.png", + "fullpath": "/runpod-volume/ComfyUI_rv/output/AnimateDiff_02338-audio.mp4" + }, + "muted": false + } + } }, { - "id": 195, + "id": 78, "type": "SetNode", "pos": [ - -520.51513671875, - 536.3828125 + -609.3577880859375, + -1082.59033203125 ], "size": [ 210, 58 ], "flags": {}, - "order": 63, + "order": 87, "mode": 0, "inputs": [ { - "name": "MASK", - "type": "MASK", - "link": 291 + "name": "FEATURE", + "type": "FEATURE", + "link": 512 } ], "outputs": [ @@ -2892,33 +2783,33 @@ "links": null } ], - "title": "Set_mask_bg", + "title": "Set_kifck_feature", "properties": { - "previousName": "mask_bg" + "previousName": "" }, "widgets_values": [ - "mask_bg" + "kifck_feature" ] }, { - "id": 185, + "id": 79, "type": "SetNode", "pos": [ - -501.874267578125, - 444.56414794921875 + -619.3171997070312, + -1194.2210693359375 ], "size": [ 210, 58 ], "flags": {}, - "order": 53, + "order": 77, "mode": 0, "inputs": [ { - "name": "MASK", - "type": "MASK", - "link": 479 + "name": "INT", + "type": "INT", + "link": 505 } ], "outputs": [ @@ -2928,876 +2819,881 @@ "links": null } ], - "title": "Set_mask_fg", + "title": "Set_featrurepipe", "properties": { - "previousName": "mask_fg" + "previousName": "" }, "widgets_values": [ - "mask_fg" - ] + "featrurepipe" + ], + "color": "#1b4669", + "bgcolor": "#29699c" }, { - "id": 272, - "type": "GetNode", + "id": 80, + "type": "SetNode", "pos": [ - -1576.5184326171875, - 874.3690795898438 + -604.028076171875, + -969.6499633789062 ], "size": [ 210, 58 ], "flags": {}, - "order": 27, + "order": 93, "mode": 0, - "inputs": [], + "inputs": [ + { + "name": "FEATURE", + "type": "FEATURE", + "link": 509 + } + ], "outputs": [ { - "name": "MASK", - "type": "MASK", - "links": [ - 417 - ], - "slot_index": 0 + "name": "*", + "type": "*", + "links": null } ], - "title": "Get_mask_fg", - "properties": {}, + "title": "Set_bass_feature", + "properties": { + "previousName": "" + }, "widgets_values": [ - "mask_fg" + "bass_feature" ] }, { - "id": 274, - "type": "GetNode", + "id": 171, + "type": "SetNode", "pos": [ - -1577.8724365234375, - 987.2863159179688 + -633.344970703125, + -1672.8128662109375 ], "size": [ 210, 58 ], "flags": {}, - "order": 28, + "order": 101, "mode": 0, - "inputs": [], - "outputs": [ + "inputs": [ { "name": "FEATURE", "type": "FEATURE", - "links": [ - 418 - ], - "slot_index": 0 + "link": 522 } ], - "title": "Get_kifck_feature", - "properties": {}, - "widgets_values": [ - "kifck_feature" - ] - }, - { - "id": 273, - "type": "GetNode", - "pos": [ - -1566.7303466796875, - 1106.2540283203125 - ], - "size": [ - 210, - 58 - ], - "flags": {}, - "order": 29, - "mode": 0, - "inputs": [], "outputs": [ { - "name": "FEATURE_PIPE", - "type": "FEATURE_PIPE", - "links": [ - 419 - ], - "slot_index": 0 + "name": "*", + "type": "*", + "links": null } ], - "title": "Get_featrurepipe", - "properties": {}, + "title": "Set_vocal_feature", + "properties": { + "previousName": "vocal_feature" + }, "widgets_values": [ - "featrurepipe" + "vocal_feature" ] }, { - "id": 271, - "type": "FlexMaskMorph", + "id": 83, + "type": "SetNode", "pos": [ - -1104.1156005859375, - 856.7099609375 + -2703.984619140625, + -826.0731811523438 ], "size": [ - 415.8000183105469, - 266 + 210, + 58 ], "flags": {}, - "order": 44, + "order": 104, "mode": 0, "inputs": [ { - "name": "masks", - "type": "MASK", - "link": 417 - }, - { - "name": "feature", - "type": "FEATURE", - "link": 418 - }, - { - "name": "feature_pipe", - "type": "FEATURE_PIPE", - "link": 419 + "name": "IMAGE", + "type": "IMAGE", + "link": 133 } ], "outputs": [ { - "name": "MASK", - "type": "MASK", - "links": [ - 421, - 475 - ], - "slot_index": 0 + "name": "*", + "type": "*", + "links": null } ], + "title": "Set_emptyimg", "properties": { - "Node name for S&R": "FlexMaskMorph" + "previousName": "" }, "widgets_values": [ - 1, - false, - 0.97, - 0, - 0, - "dilate", - 11, - 25 - ] + "emptyimg" + ], + "color": "#2a363b", + "bgcolor": "#3f5159" }, { - "id": 93, - "type": "FlexMaskOpacity", + "id": 94, + "type": "SetNode", "pos": [ - -1460, - 1710 + -2706.033447265625, + -717.9110717773438 ], "size": [ - 441, - 218 + 210, + 58 ], "flags": {}, - "order": 49, + "order": 106, "mode": 0, "inputs": [ { - "name": "masks", + "name": "MASK", "type": "MASK", - "link": 152 - }, - { - "name": "feature", - "type": "FEATURE", - "link": 146 - }, - { - "name": "feature_pipe", - "type": "FEATURE_PIPE", - "link": 148 + "link": 145 } ], "outputs": [ { - "name": "MASK", - "type": "MASK", - "links": [ - 294 - ], - "slot_index": 0 + "name": "*", + "type": "*", + "links": null } ], + "title": "Set_emptymask", "properties": { - "Node name for S&R": "FlexMaskOpacity" + "previousName": "emptymask" }, "widgets_values": [ - 1, - false, - 0, - 0, - 0, - 1 - ] + "emptymask" + ], + "color": "#1c5715", + "bgcolor": "#1f401b" }, { - "id": 4, - "type": "CLIPTextEncode", + "id": 107, + "type": "GetImageSizeAndCount", "pos": [ - 1422.325927734375, - -268.9685363769531 + -2710.511962890625, + -602.6050415039062 ], "size": [ - 327, - 108 + 277.20001220703125, + 86 ], "flags": {}, - "order": 69, + "order": 105, "mode": 0, "inputs": [ { - "name": "clip", - "type": "CLIP", - "link": 3 + "name": "image", + "type": "IMAGE", + "link": 155 } ], "outputs": [ { - "name": "CONDITIONING", - "type": "CONDITIONING", + "name": "image", + "type": "IMAGE", + "links": null + }, + { + "name": "width", + "type": "INT", "links": [ - 13 + 156 ], - "slot_index": 0 + "slot_index": 1 + }, + { + "name": "height", + "type": "INT", + "links": [ + 157 + ], + "slot_index": 2 + }, + { + "name": "count", + "type": "INT", + "links": null } ], "properties": { - "Node name for S&R": "CLIPTextEncode" + "Node name for S&R": "GetImageSizeAndCount" }, - "widgets_values": [ - "1man, tough boxer made of gold shadow boxing in the gym (ral-chrome, dripping gold made of ral-acidzlime)" - ], - "color": "#232", - "bgcolor": "#353" + "widgets_values": [] }, { - "id": 315, - "type": "GetNode", + "id": 106, + "type": "SetNode", "pos": [ - 1446.72998046875, - -405.689208984375 + -613.6802978515625, + -834.4779663085938 ], "size": [ 210, 58 ], "flags": {}, - "order": 30, + "order": 108, "mode": 0, - "inputs": [], + "inputs": [ + { + "name": "INT", + "type": "INT", + "link": 156 + } + ], "outputs": [ { - "name": "MASK", - "type": "MASK", - "links": [ - 478 - ], - "slot_index": 0 + "name": "*", + "type": "*", + "links": null } ], - "title": "Get_maskopacity", - "properties": {}, + "title": "Set_width", + "properties": { + "previousName": "width" + }, "widgets_values": [ - "maskopacity" - ] + "width" + ], + "color": "#1b4669", + "bgcolor": "#29699c" }, { - "id": 15, - "type": "Reroute", + "id": 108, + "type": "SetNode", "pos": [ - 1770.136474609375, - -409.6941223144531 + -615.9558715820312, + -697.3511962890625 ], "size": [ - 75, - 26 + 210, + 58 ], "flags": {}, - "order": 45, + "order": 109, "mode": 0, "inputs": [ { - "name": "", - "type": "*", - "link": 478 + "name": "INT", + "type": "INT", + "link": 157 } ], "outputs": [ { - "name": "", - "type": "MASK", - "links": [ - 46, - 111 - ], - "slot_index": 0 + "name": "*", + "type": "*", + "links": null } ], + "title": "Set_height", "properties": { - "showOutputText": false, - "horizontal": false - } + "previousName": "height" + }, + "widgets_values": [ + "height" + ], + "color": "#1b4669", + "bgcolor": "#29699c" }, { - "id": 16, - "type": "PairConditioningSetProperties", + "id": 73, + "type": "SetNode", "pos": [ - 1861.81298828125, - -297.5429992675781 - ], - "size": [ - 315, - 162 - ], - "flags": {}, - "order": 76, - "mode": 0, - "inputs": [ - { - "name": "positive_NEW", - "type": "CONDITIONING", - "link": 13 - }, - { - "name": "negative_NEW", - "type": "CONDITIONING", - "link": 14 - }, - { - "name": "mask", - "type": "MASK", - "link": 111, - "shape": 7 - }, - { - "name": "hooks", - "type": "HOOKS", - "link": null, - "shape": 7 - }, + -627.056396484375, + -591.127685546875 + ], + "size": [ + 210, + 58 + ], + "flags": {}, + "order": 45, + "mode": 0, + "inputs": [ { - "name": "timesteps", - "type": "TIMESTEPS_RANGE", - "link": null, - "shape": 7 + "name": "AUDIO", + "type": "AUDIO", + "link": 123 } ], "outputs": [ { - "name": "positive", - "type": "CONDITIONING", - "links": [ - 97 - ], - "slot_index": 0 - }, - { - "name": "negative", - "type": "CONDITIONING", - "links": [ - 98 - ], - "slot_index": 1 + "name": "*", + "type": "*", + "links": null } ], + "title": "Set_audio", "properties": { - "Node name for S&R": "PairConditioningSetProperties" + "previousName": "" }, "widgets_values": [ - 1, - "default" + "audio" ] }, { - "id": 20, - "type": "CreateHookLora", + "id": 295, + "type": "SetNode", "pos": [ - 785.2972412109375, - -302.7511901855469 + -631.903564453125, + -466.83880615234375 ], "size": [ - 291.2920837402344, - 106 + 210, + 58 ], "flags": {}, - "order": 46, + "order": 62, "mode": 0, "inputs": [ { - "name": "prev_hooks", - "type": "HOOKS", - "link": 121, - "shape": 7 + "name": "AUDIO", + "type": "AUDIO", + "link": 495 } ], "outputs": [ { - "name": "HOOKS", - "type": "HOOKS", - "links": [ - 52 - ], - "slot_index": 0 + "name": "*", + "type": "*", + "links": null } ], + "title": "Set_audio_base", "properties": { - "Node name for S&R": "CreateHookLora" + "previousName": "audio_base" }, "widgets_values": [ - "ral-chrome-sd15.safetensors", - 1.1, - 1 + "audio_base" ] }, { - "id": 71, - "type": "CreateHookLora", + "id": 321, + "type": "AudioSeparatorSimple", "pos": [ - 399.3513488769531, - -311.66949462890625 + -2557.80908203125, + -1077.0379638671875 ], "size": [ 315, 106 ], "flags": {}, - "order": 31, + "order": 46, "mode": 0, "inputs": [ { - "name": "prev_hooks", - "type": "HOOKS", - "link": null, - "shape": 7 + "name": "model", + "type": "OPEN_UNMIX_MODEL", + "link": 496 + }, + { + "name": "audio", + "type": "AUDIO", + "link": 491 } ], "outputs": [ { - "name": "HOOKS", - "type": "HOOKS", + "name": "audio", + "type": "AUDIO", + "links": null + }, + { + "name": "drums_audio", + "type": "AUDIO", "links": [ - 121 + 502 + ] + }, + { + "name": "vocals_audio", + "type": "AUDIO", + "links": [ + 517 + ] + }, + { + "name": "bass_audio", + "type": "AUDIO", + "links": [ + 495, + 506 ] + }, + { + "name": "other_audio", + "type": "AUDIO", + "links": null } ], "properties": { - "Node name for S&R": "CreateHookLora" + "Node name for S&R": "AudioSeparatorSimple" }, - "widgets_values": [ - "ral-acidzlime-sd15.safetensors", - 1, - 1 - ] + "widgets_values": [] }, { - "id": 13, - "type": "CheckpointLoaderSimple", + "id": 322, + "type": "DownloadOpenUnmixModel", "pos": [ - 416.5162658691406, - -32.22148513793945 + -2539.671630859375, + -1177.747802734375 ], "size": [ - 315, - 98 + 294, + 58 ], "flags": {}, - "order": 32, + "order": 21, "mode": 0, "inputs": [], "outputs": [ { - "name": "MODEL", - "type": "MODEL", - "links": [ - 208 - ], - "slot_index": 0 - }, - { - "name": "CLIP", - "type": "CLIP", + "name": "OPEN_UNMIX_MODEL", + "type": "OPEN_UNMIX_MODEL", "links": [ - 10 - ], - "slot_index": 1 - }, - { - "name": "VAE", - "type": "VAE", - "links": [], - "slot_index": 2 + 496 + ] } ], "properties": { - "Node name for S&R": "CheckpointLoaderSimple" + "Node name for S&R": "DownloadOpenUnmixModel" }, "widgets_values": [ - "photonLCM_v10.safetensors" + "umxl" ] }, { - "id": 18, - "type": "CreateHookModelAsLora", + "id": 72, + "type": "PreviewAudio", "pos": [ - 615.29736328125, - 203.46449279785156 + -2586.066650390625, + -1379.9227294921875 ], "size": [ 315, - 106 + 76.00001525878906 ], "flags": {}, - "order": 33, + "order": 44, "mode": 0, "inputs": [ { - "name": "prev_hooks", - "type": "HOOKS", - "link": null, - "shape": 7 - } - ], - "outputs": [ - { - "name": "HOOKS", - "type": "HOOKS", - "links": [ - 48 - ], - "slot_index": 0 + "name": "audio", + "type": "AUDIO", + "link": 122 } ], + "outputs": [], "properties": { - "Node name for S&R": "CreateHookModelAsLora" + "Node name for S&R": "PreviewAudio" }, "widgets_values": [ - "photonLCM_v10.safetensors", - 1, - 1 + null ] }, { - "id": 292, - "type": "IPAdapterAdvanced", + "id": 142, + "type": "GetImageSizeAndCount", "pos": [ - 1969.8837890625, - 713.6547241210938 + -3801.87060546875, + -760.72802734375 ], "size": [ - 315, - 278 + 277.20001220703125, + 86 ], - "flags": {}, - "order": 58, + "flags": { + "collapsed": false + }, + "order": 84, "mode": 0, "inputs": [ { - "name": "model", - "type": "MODEL", - "link": 445 - }, - { - "name": "ipadapter", - "type": "IPADAPTER", - "link": 446 - }, + "name": "image", + "type": "IMAGE", + "link": 289 + } + ], + "outputs": [ { "name": "image", "type": "IMAGE", - "link": 451 + "links": [], + "slot_index": 0 }, { - "name": "image_negative", - "type": "IMAGE", - "link": null, - "shape": 7 + "name": "width", + "type": "INT", + "links": [ + 202, + 497 + ], + "slot_index": 1 }, { - "name": "attn_mask", - "type": "MASK", - "link": 476, - "shape": 7 + "name": "height", + "type": "INT", + "links": [ + 203, + 498 + ], + "slot_index": 2 }, { - "name": "clip_vision", - "type": "CLIP_VISION", - "link": null, - "shape": 7 + "name": "count", + "type": "INT", + "links": null } ], - "outputs": [ + "properties": { + "Node name for S&R": "GetImageSizeAndCount" + }, + "widgets_values": [] + }, + { + "id": 324, + "type": "Anything Everywhere?", + "pos": [ + -3552.468017578125, + -1312.3121337890625 + ], + "size": [ + 315, + 106 + ], + "flags": {}, + "order": 97, + "mode": 0, + "inputs": [ { - "name": "MODEL", - "type": "MODEL", - "links": [ - 449 - ] + "name": "INT", + "type": "*", + "link": 497, + "shape": 7, + "color_on": "" } ], + "outputs": [], "properties": { - "Node name for S&R": "IPAdapterAdvanced" + "Node name for S&R": "Anything Everywhere?", + "group_restricted": 0, + "color_restricted": 0 }, "widgets_values": [ - 1, - "linear", - "concat", - 0, - 1, - "V only" + ".*", + "width", + ".*" ] }, { - "id": 312, - "type": "GetNode", + "id": 323, + "type": "Anything Everywhere?", "pos": [ - 1597.7138671875, - 1129.4970703125 + -3586.457275390625, + -1106.33544921875 ], "size": [ - 210, - 58 + 315, + 106 ], "flags": {}, - "order": 34, + "order": 99, "mode": 0, - "inputs": [], - "outputs": [ + "inputs": [ { - "name": "MASK", - "type": "MASK", - "links": [ - 476 - ], - "slot_index": 0 + "name": "INT", + "type": "*", + "link": 498, + "shape": 7, + "color_on": "" } ], - "title": "Get_maskdilate", - "properties": {}, + "outputs": [], + "properties": { + "Node name for S&R": "Anything Everywhere?", + "group_restricted": 0, + "color_restricted": 0 + }, "widgets_values": [ - "maskdilate" + ".*", + "height", + ".*" ] }, { - "id": 141, + "id": 129, "type": "GetNode", "pos": [ - 3537.82568359375, - 255.87149047851562 + -4920.04296875, + -855.3516235351562 ], "size": [ 210, 58 ], "flags": {}, - "order": 35, + "order": 22, "mode": 0, "inputs": [], "outputs": [ { - "name": "LATENT", - "type": "LATENT", + "name": "INT", + "type": "INT", "links": [ - 292 + 204 ], "slot_index": 0 } ], - "title": "Get_init_latent", + "title": "Get_framecount", "properties": {}, "widgets_values": [ - "init_latent" - ] + "framecount" + ], + "color": "#1b4669", + "bgcolor": "#29699c" }, { - "id": 23, - "type": "KSampler", + "id": 102, + "type": "SetNode", "pos": [ - 3616.170166015625, - -127.18345642089844 + -2805.19482421875, + -461.6750183105469 ], "size": [ - 315, - 262 + 210, + 58 ], "flags": {}, - "order": 92, + "order": 64, "mode": 0, "inputs": [ { - "name": "model", - "type": "MODEL", - "link": 180 - }, - { - "name": "positive", - "type": "CONDITIONING", - "link": 221 - }, - { - "name": "negative", - "type": "CONDITIONING", - "link": 222 - }, + "name": "INT", + "type": "INT", + "link": 500 + } + ], + "outputs": [ { - "name": "latent_image", - "type": "LATENT", - "link": 292 + "name": "*", + "type": "*", + "links": null } ], + "title": "Set_framecount", + "properties": { + "previousName": "framecount" + }, + "widgets_values": [ + "framecount" + ], + "color": "#1b4669", + "bgcolor": "#29699c" + }, + { + "id": 327, + "type": "FloatConstant", + "pos": [ + -4276.56640625, + -1207.044189453125 + ], + "size": [ + 210, + 58 + ], + "flags": {}, + "order": 23, + "mode": 0, + "inputs": [], "outputs": [ { - "name": "LATENT", - "type": "LATENT", + "name": "value", + "type": "FLOAT", "links": [ - 7, - 243 + 501 ], "slot_index": 0 } ], "properties": { - "Node name for S&R": "KSampler" + "Node name for S&R": "FloatConstant" }, "widgets_values": [ - 12345678, - "fixed", - 4, - 1.2, - "lcm", - "sgm_uniform", - 0.8 - ] + 30.000000000000004 + ], + "color": "#232", + "bgcolor": "#353" }, { - "id": 161, - "type": "NNLatentUpscale", + "id": 326, + "type": "Anything Everywhere?", "pos": [ - 4516.9619140625, - 135.7705078125 + -3654.347412109375, + -1521.07080078125 ], "size": [ 315, - 82 + 106 ], "flags": {}, - "order": 99, + "order": 41, "mode": 0, "inputs": [ { - "name": "latent", - "type": "LATENT", - "link": 243 - } - ], - "outputs": [ - { - "name": "LATENT", - "type": "LATENT", - "links": [ - 244 - ], - "slot_index": 0 + "name": "FLOAT", + "type": "*", + "link": 501, + "shape": 7, + "color_on": "" } ], + "outputs": [], "properties": { - "Node name for S&R": "NNLatentUpscale" + "Node name for S&R": "Anything Everywhere?", + "group_restricted": 0, + "color_restricted": 0 }, "widgets_values": [ - "SD 1.x", - 1.5 + ".*", + "frame_rate", + ".*" ] }, { - "id": 160, - "type": "KSampler", + "id": 328, + "type": "AudioFeatureExtractor", "pos": [ - 4850.0048828125, - -118.38045501708984 + -2059.356689453125, + -1190.5667724609375 ], "size": [ - 315, - 262 + 415.8000183105469, + 174 ], "flags": {}, - "order": 109, + "order": 60, "mode": 0, "inputs": [ { - "name": "model", - "type": "MODEL", - "link": 239 + "name": "audio", + "type": "AUDIO", + "link": 502 }, { - "name": "positive", - "type": "CONDITIONING", - "link": 240 + "name": "frame_rate", + "type": "FLOAT", + "link": null, + "widget": { + "name": "frame_rate" + } }, { - "name": "negative", - "type": "CONDITIONING", - "link": 241 + "name": "frame_count", + "type": "INT", + "link": null, + "widget": { + "name": "frame_count" + } }, { - "name": "latent_image", - "type": "LATENT", - "link": 244 + "name": "width", + "type": "INT", + "link": null, + "widget": { + "name": "width" + } + }, + { + "name": "height", + "type": "INT", + "link": null, + "widget": { + "name": "height" + } } ], "outputs": [ { - "name": "LATENT", - "type": "LATENT", + "name": "feature", + "type": "FEATURE", "links": [ - 235 - ], - "slot_index": 0 + 511, + 514 + ] + }, + { + "name": "frame_count", + "type": "INT", + "links": [ + 505 + ] } ], "properties": { - "Node name for S&R": "KSampler" + "Node name for S&R": "AudioFeatureExtractor" }, "widgets_values": [ - 12345678, - "fixed", - 4, - 1.2, - "lcm", - "sgm_uniform", - 0.25 + "amplitude_envelope", + 30, + 0, + 512, + 512 ] }, { - "id": 82, - "type": "EmptyImageAndMaskFromAudio", + "id": 329, + "type": "AudioFeatureExtractor", "pos": [ - -3173.924560546875, - -823.614013671875 + -2003.2021484375, + -567.3675537109375 ], "size": [ - 411.6000061035156, - 146 + 415.8000183105469, + 174 ], "flags": {}, - "order": 78, + "order": 63, "mode": 0, "inputs": [ { - "name": "audio", - "type": "AUDIO", - "link": 132 + "name": "audio", + "type": "AUDIO", + "link": 506 + }, + { + "name": "frame_rate", + "type": "FLOAT", + "link": null, + "widget": { + "name": "frame_rate" + } + }, + { + "name": "frame_count", + "type": "INT", + "link": null, + "widget": { + "name": "frame_count" + } }, { "name": "width", "type": "INT", - "link": 202, + "link": null, "widget": { "name": "width" } @@ -3805,7 +3701,7 @@ { "name": "height", "type": "INT", - "link": 203, + "link": null, "widget": { "name": "height" } @@ -3813,66 +3709,48 @@ ], "outputs": [ { - "name": "empty_image", - "type": "IMAGE", - "links": [ - 133, - 155, - 490 - ], - "slot_index": 0, - "shape": 3 - }, - { - "name": "empty_mask", - "type": "MASK", + "name": "feature", + "type": "FEATURE", "links": [ - 145 - ], - "slot_index": 1, - "shape": 3 + 508 + ] }, { "name": "frame_count", "type": "INT", - "links": [], - "slot_index": 2, - "shape": 3 + "links": null } ], "properties": { - "Node name for S&R": "EmptyImageAndMaskFromAudio" + "Node name for S&R": "AudioFeatureExtractor" }, "widgets_values": [ + "amplitude_envelope", 30, - 768, - 464 + 0, + 512, + 512 ] }, { - "id": 86, - "type": "AudioFeatureExtractor", + "id": 331, + "type": "FeatureMixer", "pos": [ - -2003.2021484375, - -567.3675537109375 + -1526.9727783203125, + -576.9107666015625 ], "size": [ - 361.20001220703125, - 78 + 315, + 322 ], "flags": {}, - "order": 89, + "order": 79, "mode": 0, "inputs": [ { - "name": "audio", - "type": "AUDIO", - "link": 484 - }, - { - "name": "feature_pipe", - "type": "FEATURE_PIPE", - "link": 486 + "name": "feature", + "type": "FEATURE", + "link": 508 } ], "outputs": [ @@ -3880,50 +3758,76 @@ "name": "FEATURE", "type": "FEATURE", "links": [ - 140 + 509, + 510 ], - "slot_index": 0, - "shape": 3 - }, - { - "name": "FEATURE_PIPE", - "type": "FEATURE_PIPE", - "links": [], - "slot_index": 1, - "shape": 3 + "slot_index": 0 } ], "properties": { - "Node name for S&R": "AudioFeatureExtractor" + "Node name for S&R": "FeatureMixer" }, "widgets_values": [ - "amplitude_envelope" + 1.59, + 0, + 1, + 1, + 1, + 1, + 1, + 0, + 0.15, + 0.5, + 0.5, + false ] }, { - "id": 90, - "type": "AudioFeatureExtractor", + "id": 332, + "type": "PreviewFeature", "pos": [ - -2059.356689453125, - -1190.5667724609375 + -1106.310546875, + -455.3468322753906 ], "size": [ - 361.20001220703125, - 78 + 315, + 246 ], "flags": {}, - "order": 90, + "order": 94, "mode": 0, "inputs": [ { - "name": "audio", - "type": "AUDIO", - "link": 482 - }, + "name": "feature", + "type": "FEATURE", + "link": 510 + } + ], + "outputs": [], + "properties": { + "Node name for S&R": "PreviewFeature" + }, + "widgets_values": [] + }, + { + "id": 335, + "type": "FeatureMixer", + "pos": [ + -1528.88671875, + -1041.274169921875 + ], + "size": [ + 315, + 322 + ], + "flags": {}, + "order": 75, + "mode": 0, + "inputs": [ { - "name": "feature_pipe", - "type": "FEATURE_PIPE", - "link": 487 + "name": "feature", + "type": "FEATURE", + "link": 511 } ], "outputs": [ @@ -3931,1164 +3835,1430 @@ "name": "FEATURE", "type": "FEATURE", "links": [ - 141, - 144 + 512, + 513 ], - "slot_index": 0, - "shape": 3 - }, + "slot_index": 0 + } + ], + "properties": { + "Node name for S&R": "FeatureMixer" + }, + "widgets_values": [ + 1, + 0, + 1, + 1, + 1, + 1, + 1, + 0, + 0.52, + 1, + 0.5, + false + ] + }, + { + "id": 336, + "type": "PreviewFeature", + "pos": [ + -1143.901123046875, + -1001.4425048828125 + ], + "size": [ + 315, + 246 + ], + "flags": {}, + "order": 88, + "mode": 0, + "inputs": [ + { + "name": "feature", + "type": "FEATURE", + "link": 513 + } + ], + "outputs": [], + "properties": { + "Node name for S&R": "PreviewFeature" + }, + "widgets_values": [] + }, + { + "id": 338, + "type": "FeatureMixer", + "pos": [ + -1546.77685546875, + -1473.5029296875 + ], + "size": [ + 315, + 322 + ], + "flags": {}, + "order": 76, + "mode": 0, + "inputs": [ { - "name": "FEATURE_PIPE", - "type": "FEATURE_PIPE", + "name": "feature", + "type": "FEATURE", + "link": 514 + } + ], + "outputs": [ + { + "name": "FEATURE", + "type": "FEATURE", "links": [ - 129 + 515, + 516 ], - "slot_index": 1, - "shape": 3 + "slot_index": 0 } ], "properties": { - "Node name for S&R": "AudioFeatureExtractor" + "Node name for S&R": "FeatureMixer" }, "widgets_values": [ - "amplitude_envelope" + 1, + 0, + 1, + 1, + 1, + 1, + 1, + 0, + 0.3, + 1, + 0.5, + false ] }, { - "id": 72, - "type": "PreviewAudio", + "id": 339, + "type": "PreviewFeature", "pos": [ - -2591.566650390625, - -1274.3228759765625 + -1177.213134765625, + -1457.3834228515625 ], "size": [ 315, - 76.00001525878906 + 246 ], "flags": {}, - "order": 40, + "order": 90, "mode": 0, "inputs": [ { - "name": "audio", - "type": "AUDIO", - "link": 122 + "name": "feature", + "type": "FEATURE", + "link": 516 } ], "outputs": [], "properties": { - "Node name for S&R": "PreviewAudio" + "Node name for S&R": "PreviewFeature" }, - "widgets_values": [ - null - ] + "widgets_values": [] }, { - "id": 194, - "type": "InvertMask", + "id": 341, + "type": "AudioFeatureExtractor", "pos": [ - -819.477294921875, - 560.0089721679688 + -2040, + -2030 ], "size": [ - 210, - 26 + 415.8000183105469, + 174 ], "flags": {}, - "order": 54, + "order": 61, "mode": 0, "inputs": [ { - "name": "mask", - "type": "MASK", - "link": 480 + "name": "audio", + "type": "AUDIO", + "link": 517 + }, + { + "name": "frame_rate", + "type": "FLOAT", + "link": null, + "widget": { + "name": "frame_rate" + } + }, + { + "name": "frame_count", + "type": "INT", + "link": null, + "widget": { + "name": "frame_count" + } + }, + { + "name": "width", + "type": "INT", + "link": null, + "widget": { + "name": "width" + } + }, + { + "name": "height", + "type": "INT", + "link": null, + "widget": { + "name": "height" + } } ], "outputs": [ { - "name": "MASK", - "type": "MASK", + "name": "feature", + "type": "FEATURE", "links": [ - 291 - ], - "slot_index": 0 + 519 + ] + }, + { + "name": "frame_count", + "type": "INT", + "links": null } ], "properties": { - "Node name for S&R": "InvertMask" + "Node name for S&R": "AudioFeatureExtractor" }, - "widgets_values": [] + "widgets_values": [ + "amplitude_envelope", + 30, + 0, + 512, + 512 + ] }, { - "id": 180, - "type": "GroundingDinoSAMSegment (segment anything)", + "id": 342, + "type": "FeatureMixer", "pos": [ - -1412.0692138671875, - 330.6407470703125 + -1565.6920166015625, + -2070 ], "size": [ - 529.199951171875, - 122 + 315, + 322 ], "flags": {}, - "order": 43, + "order": 78, "mode": 0, "inputs": [ { - "name": "sam_model", - "type": "SAM_MODEL", - "link": 272 - }, - { - "name": "grounding_dino_model", - "type": "GROUNDING_DINO_MODEL", - "link": 273 - }, - { - "name": "image", - "type": "IMAGE", - "link": 274 + "name": "feature", + "type": "FEATURE", + "link": 519 } ], "outputs": [ { - "name": "IMAGE", - "type": "IMAGE", + "name": "FEATURE", + "type": "FEATURE", "links": [ - 275 + 521, + 523 ], "slot_index": 0 - }, - { - "name": "MASK", - "type": "MASK", - "links": [ - 479, - 480 - ], - "slot_index": 1 } ], "properties": { - "Node name for S&R": "GroundingDinoSAMSegment (segment anything)" + "Node name for S&R": "FeatureMixer" }, "widgets_values": [ - "subject", - 0.3 + 1, + 0, + 1, + 1, + 1, + 1, + 1, + 0, + 0.6, + 1, + 0.5, + false ] }, { - "id": 276, - "type": "VHS_VideoCombine", + "id": 345, + "type": "PreviewFeature", "pos": [ - -104.60978698730469, - 859.416015625 + -1099.4437255859375, + -1831.220703125 ], "size": [ - 214.7587890625, - 679.811279296875 + 315, + 246 ], "flags": {}, - "order": 64, + "order": 92, "mode": 0, "inputs": [ { - "name": "images", - "type": "IMAGE", - "link": 422 - }, - { - "name": "audio", - "type": "AUDIO", - "link": 420, - "shape": 7 - }, - { - "name": "meta_batch", - "type": "VHS_BatchManager", - "link": null, - "shape": 7 - }, - { - "name": "vae", - "type": "VAE", - "link": null, - "shape": 7 - } - ], - "outputs": [ - { - "name": "Filenames", - "type": "VHS_FILENAMES", - "links": null + "name": "feature", + "type": "FEATURE", + "link": 523 } ], + "outputs": [], "properties": { - "Node name for S&R": "VHS_VideoCombine" + "Node name for S&R": "PreviewFeature" }, - "widgets_values": { - "frame_rate": 30, - "loop_count": 0, - "filename_prefix": "AnimateDiff", - "format": "video/h264-mp4", - "pix_fmt": "yuv420p", - "crf": 19, - "save_metadata": true, - "trim_to_audio": false, - "pingpong": false, - "save_output": true, - "videopreview": { - "hidden": false, - "paused": false, - "params": { - "filename": "AnimateDiff_00488-audio.mp4", - "subfolder": "", - "type": "output", - "format": "video/h264-mp4", - "frame_rate": 30, - "workflow": "AnimateDiff_00488.png", - "fullpath": "/runpod-volume/ComfyUI_rv/output/AnimateDiff_00488-audio.mp4" - }, - "muted": false - } - } + "widgets_values": [] }, { - "id": 184, - "type": "VHS_VideoCombine", + "id": 344, + "type": "FeatureSmoothing", "pos": [ - -94.98258209228516, - 94.11283111572266 + -1124.7935791015625, + -2099.008544921875 ], "size": [ - 214.7587890625, - 679.811279296875 + 340.20001220703125, + 154 ], "flags": {}, - "order": 52, + "order": 91, "mode": 0, "inputs": [ { - "name": "images", - "type": "IMAGE", - "link": 275 - }, - { - "name": "audio", - "type": "AUDIO", - "link": null, - "shape": 7 - }, - { - "name": "meta_batch", - "type": "VHS_BatchManager", - "link": null, - "shape": 7 - }, - { - "name": "vae", - "type": "VAE", - "link": null, - "shape": 7 + "name": "feature", + "type": "FEATURE", + "link": 521 } ], "outputs": [ { - "name": "Filenames", - "type": "VHS_FILENAMES", - "links": null + "name": "FEATURE", + "type": "FEATURE", + "links": [ + 522, + 524 + ], + "slot_index": 0 } ], "properties": { - "Node name for S&R": "VHS_VideoCombine" + "Node name for S&R": "FeatureSmoothing" }, - "widgets_values": { - "frame_rate": 30, - "loop_count": 0, - "filename_prefix": "AnimateDiff", - "format": "video/h264-mp4", - "pix_fmt": "yuv420p", - "crf": 19, - "save_metadata": true, - "trim_to_audio": false, - "pingpong": false, - "save_output": true, - "videopreview": { - "hidden": false, - "paused": false, - "params": { - "filename": "AnimateDiff_00485.mp4", - "subfolder": "", - "type": "output", - "format": "video/h264-mp4", - "frame_rate": 30, - "workflow": "AnimateDiff_00485.png", - "fullpath": "/runpod-volume/ComfyUI_rv/output/AnimateDiff_00485.mp4" - }, - "muted": false - } - } + "widgets_values": [ + "moving_average", + 5, + 0.3, + 1, + false + ] }, { - "id": 77, - "type": "PreviewImage", + "id": 346, + "type": "PreviewFeature", "pos": [ - -1155.638916015625, - -1474.6986083984375 + -556.1537475585938, + -2052.650634765625 ], "size": [ - 210, + 315, 246 ], "flags": {}, - "order": 105, + "order": 102, "mode": 0, "inputs": [ { - "name": "images", - "type": "IMAGE", - "link": 127 + "name": "feature", + "type": "FEATURE", + "link": 524 } ], "outputs": [], "properties": { - "Node name for S&R": "PreviewImage" + "Node name for S&R": "PreviewFeature" }, "widgets_values": [] }, { - "id": 81, - "type": "PreviewImage", + "id": 348, + "type": "FlexMaskMorph", "pos": [ - -1131.8040771484375, - -1023.344970703125 + -1104.1156005859375, + 856.7099609375 ], "size": [ - 210, - 246 + 315, + 318 ], "flags": {}, - "order": 103, + "order": 35, "mode": 0, "inputs": [ { - "name": "images", - "type": "IMAGE", - "link": 131 + "name": "masks", + "type": "MASK", + "link": 531 + }, + { + "name": "opt_feature", + "type": "FEATURE", + "link": 532, + "shape": 7 + } + ], + "outputs": [ + { + "name": "MASK", + "type": "MASK", + "links": [ + 533, + 534 + ] } ], - "outputs": [], "properties": { - "Node name for S&R": "PreviewImage" + "Node name for S&R": "FlexMaskMorph" }, - "widgets_values": [] + "widgets_values": [ + 1, + 0, + "max_kernel_size", + "relative", + false, + 0.97, + 0, + 1, + "dilate", + 11, + 25 + ] }, { - "id": 78, - "type": "SetNode", + "id": 325, + "type": "AudioInfo", "pos": [ - -609.3577880859375, - -1082.59033203125 + -3140.3466796875, + -566.8145751953125 ], "size": [ - 210, - 58 + 315, + 338 ], "flags": {}, - "order": 102, + "order": 47, "mode": 0, "inputs": [ { - "name": "FEATURE", - "type": "FEATURE", - "link": 128 + "name": "audio", + "type": "AUDIO", + "link": 499 + }, + { + "name": "frame_rate", + "type": "FLOAT", + "link": null, + "widget": { + "name": "frame_rate" + } } ], "outputs": [ { - "name": "*", - "type": "*", + "name": "total_frames", + "type": "INT", + "links": [ + 500, + 535 + ], + "slot_index": 0 + }, + { + "name": "frames_per_beat", + "type": "INT", + "links": null + }, + { + "name": "frames_per_bar", + "type": "INT", + "links": null + }, + { + "name": "frames_per_quarter", + "type": "INT", + "links": null + }, + { + "name": "frames_per_eighth", + "type": "INT", + "links": null + }, + { + "name": "audio_duration", + "type": "FLOAT", + "links": null + }, + { + "name": "beats_per_second", + "type": "FLOAT", + "links": null + }, + { + "name": "detected_bpm", + "type": "FLOAT", + "links": null + }, + { + "name": "sample_rate", + "type": "INT", + "links": null + }, + { + "name": "num_channels", + "type": "INT", + "links": null + }, + { + "name": "num_samples", + "type": "INT", + "links": null + }, + { + "name": "max_amplitude", + "type": "FLOAT", + "links": null + }, + { + "name": "mean_amplitude", + "type": "FLOAT", + "links": null + }, + { + "name": "rms_amplitude", + "type": "FLOAT", + "links": null + }, + { + "name": "bit_depth", + "type": "STRING", "links": null } ], - "title": "Set_kifck_feature", "properties": { - "previousName": "" + "Node name for S&R": "AudioInfo" }, "widgets_values": [ - "kifck_feature" + 30 ] }, { - "id": 79, - "type": "SetNode", + "id": 349, + "type": "Anything Everywhere?", "pos": [ - -619.3171997070312, - -1194.2210693359375 + -2733.45068359375, + -183.8571014404297 ], "size": [ - 210, - 58 + 315, + 106 ], "flags": {}, - "order": 96, + "order": 65, "mode": 0, "inputs": [ { - "name": "FEATURE_PIPE", - "type": "FEATURE_PIPE", - "link": 129 - } - ], - "outputs": [ - { - "name": "*", + "name": "INT", "type": "*", - "links": null + "link": 535, + "shape": 7, + "color_on": "" } ], - "title": "Set_featrurepipe", + "outputs": [], "properties": { - "previousName": "" + "Node name for S&R": "Anything Everywhere?", + "group_restricted": 0, + "color_restricted": 0 }, "widgets_values": [ - "featrurepipe" + ".*", + "frame_count", + ".*" ] }, { - "id": 80, - "type": "SetNode", + "id": 359, + "type": "ADE_AnimateDiffUniformContextOptions", "pos": [ - -604.028076171875, - -969.6499633789062 + 3120, + 120 ], "size": [ - 210, - 58 + 273.269775390625, + 270 ], "flags": {}, - "order": 100, + "order": 24, "mode": 0, "inputs": [ { - "name": "FEATURE", - "type": "FEATURE", - "link": 130 + "name": "prev_context", + "type": "CONTEXT_OPTIONS", + "link": null, + "shape": 7 + }, + { + "name": "view_opts", + "type": "VIEW_OPTS", + "link": null, + "shape": 7 } ], "outputs": [ { - "name": "*", - "type": "*", - "links": null + "name": "CONTEXT_OPTS", + "type": "CONTEXT_OPTIONS", + "links": [ + 542 + ], + "slot_index": 0, + "shape": 3 } ], - "title": "Set_bass_feature", + "title": "Context Options 🎭🅐🅓", "properties": { - "previousName": "" + "Node name for S&R": "ADE_AnimateDiffUniformContextOptions", + "ttNbgOverride": { + "color": "#2a363b", + "bgcolor": "#3f5159", + "groupcolor": "#3f789e" + } }, "widgets_values": [ - "bass_feature" + 16, + 1, + 4, + "uniform", + false, + "pyramid", + false, + 0, + 1, + "" ] }, { - "id": 87, - "type": "PreviewImage", + "id": 358, + "type": "ADE_UseEvolvedSampling", "pos": [ - -1128.9742431640625, - -577.43603515625 + 3150, + -120 ], "size": [ - 210, - 246 + 315, + 118 ], "flags": {}, - "order": 101, + "order": 82, "mode": 0, "inputs": [ { - "name": "images", - "type": "IMAGE", - "link": 139 + "name": "model", + "type": "MODEL", + "link": 544 + }, + { + "name": "m_models", + "type": "M_MODELS", + "link": 541, + "shape": 7 + }, + { + "name": "context_options", + "type": "CONTEXT_OPTIONS", + "link": 542, + "shape": 7 + }, + { + "name": "sample_settings", + "type": "SAMPLE_SETTINGS", + "link": 543, + "shape": 7 + } + ], + "outputs": [ + { + "name": "MODEL", + "type": "MODEL", + "links": [ + 545, + 546 + ], + "slot_index": 0 } ], - "outputs": [], "properties": { - "Node name for S&R": "PreviewImage" + "Node name for S&R": "ADE_UseEvolvedSampling" }, - "widgets_values": [] + "widgets_values": [ + "autoselect" + ] }, { - "id": 178, - "type": "FeatureSmoothing", + "id": 356, + "type": "ADE_ApplyAnimateDiffModelSimple", "pos": [ - -1100, - -2080 + 3160, + -310 ], "size": [ - 319.20001220703125, - 176.288330078125 + 260.3999938964844, + 126 ], "flags": {}, - "order": 106, + "order": 42, "mode": 0, "inputs": [ { - "name": "feature", - "type": "FEATURE", - "link": 267 + "name": "motion_model", + "type": "MOTION_MODEL_ADE", + "link": 537 + }, + { + "name": "motion_lora", + "type": "MOTION_LORA", + "link": 538, + "shape": 7 + }, + { + "name": "scale_multival", + "type": "MULTIVAL", + "link": 539, + "shape": 7 + }, + { + "name": "effect_multival", + "type": "MULTIVAL", + "link": 540, + "shape": 7 + }, + { + "name": "ad_keyframes", + "type": "AD_KEYFRAMES", + "link": null, + "shape": 7 + }, + { + "name": "per_block", + "type": "PER_BLOCK", + "link": null, + "shape": 7 } ], "outputs": [ { - "name": "FEATURE", - "type": "FEATURE", - "links": [ - 270 - ], - "slot_index": 0 - }, - { - "name": "FEATURE_VISUALIZATION", - "type": "IMAGE", + "name": "M_MODELS", + "type": "M_MODELS", "links": [ - 268 - ], - "slot_index": 1 + 541 + ] } ], "properties": { - "Node name for S&R": "FeatureSmoothing" - }, - "widgets_values": [ - "moving_average", - 5, - 0.3, - 1, - false - ] + "Node name for S&R": "ADE_ApplyAnimateDiffModelSimple" + } }, { - "id": 166, - "type": "AudioFeatureExtractor", + "id": 357, + "type": "ADE_LoadAnimateDiffModel", "pos": [ - -2040, - -2030 + 3060, + -450 ], "size": [ - 361.20001220703125, - 78 + 302, + 58 ], "flags": {}, - "order": 91, + "order": 25, "mode": 0, "inputs": [ { - "name": "audio", - "type": "AUDIO", - "link": 483 - }, - { - "name": "feature_pipe", - "type": "FEATURE_PIPE", - "link": 488 + "name": "ad_settings", + "type": "AD_SETTINGS", + "link": null, + "shape": 7 } ], "outputs": [ { - "name": "FEATURE", - "type": "FEATURE", + "name": "MOTION_MODEL", + "type": "MOTION_MODEL_ADE", "links": [ - 260 - ], - "slot_index": 0, - "shape": 3 - }, - { - "name": "FEATURE_PIPE", - "type": "FEATURE_PIPE", - "links": [], - "slot_index": 1, - "shape": 3 + 537 + ] } ], "properties": { - "Node name for S&R": "AudioFeatureExtractor" + "Node name for S&R": "ADE_LoadAnimateDiffModel" }, "widgets_values": [ - "rms_energy" + "ALCM_sd15_t2v_beta.ckpt" ] }, { - "id": 172, - "type": "FeatureMixer", + "id": 353, + "type": "ADE_MultivalDynamic", "pos": [ - -1565.6920166015625, - -2070 + 2779.0048828125, + -400.9428405761719 ], "size": [ - 297.8359680175781, - 342 + 259.9388122558594, + 63.332008361816406 ], "flags": {}, - "order": 97, + "order": 26, "mode": 0, "inputs": [ { - "name": "feature", - "type": "FEATURE", - "link": 260 + "name": "mask_optional", + "type": "MASK", + "link": null, + "shape": 7 } ], "outputs": [ { - "name": "FEATURE", - "type": "FEATURE", - "links": [ - 267 - ], - "slot_index": 0 - }, - { - "name": "FEATURE_VISUALIZATION", - "type": "IMAGE", + "name": "MULTIVAL", + "type": "MULTIVAL", "links": [ - 269 + 539 ], - "slot_index": 1 + "slot_index": 0, + "shape": 3 } ], + "title": "Scale 🎭🅐🅓", "properties": { - "Node name for S&R": "FeatureMixer" + "Node name for S&R": "ADE_MultivalDynamic", + "ttNbgOverride": { + "color": "#2a363b", + "bgcolor": "#3f5159", + "groupcolor": "#3f789e" + } }, "widgets_values": [ - 1, - 0, - 1, - 1, - 1, - 1, - 1, - 0, - 0.6, - 1, - 0.5, - false + 1.1400000000000001 ] }, { - "id": 179, - "type": "PreviewImage", + "id": 352, + "type": "ADE_MultivalDynamic", "pos": [ - -1175.230712890625, - -1871.43603515625 + 2793.64599609375, + -172.73568725585938 ], "size": [ - 210, - 246 + 265.1632385253906, + 58 ], "flags": {}, - "order": 107, + "order": 27, "mode": 0, "inputs": [ { - "name": "images", - "type": "IMAGE", - "link": 269 + "name": "mask_optional", + "type": "MASK", + "link": null, + "shape": 7 } ], - "outputs": [], + "outputs": [ + { + "name": "MULTIVAL", + "type": "MULTIVAL", + "links": [ + 540 + ], + "slot_index": 0, + "shape": 3 + } + ], + "title": "Effect 🎭🅐🅓", "properties": { - "Node name for S&R": "PreviewImage" + "Node name for S&R": "ADE_MultivalDynamic", + "ttNbgOverride": { + "color": "#2a363b", + "bgcolor": "#3f5159", + "groupcolor": "#3f789e" + } }, - "widgets_values": [] + "widgets_values": [ + 1.1 + ] }, { - "id": 169, - "type": "PreviewImage", + "id": 351, + "type": "ADE_AnimateDiffLoRALoader", "pos": [ - -931.3333740234375, - -1855.84619140625 + 2786.056396484375, + -295.0462951660156 ], "size": [ - 210, - 246 + 261.19134521484375, + 82 ], "flags": {}, - "order": 111, + "order": 28, "mode": 0, "inputs": [ { - "name": "images", - "type": "IMAGE", - "link": 268 + "name": "prev_motion_lora", + "type": "MOTION_LORA", + "link": null, + "shape": 7 } ], - "outputs": [], + "outputs": [ + { + "name": "MOTION_LORA", + "type": "MOTION_LORA", + "links": [ + 538 + ], + "slot_index": 0, + "shape": 3 + } + ], + "title": "AnimateDiff LoRA", "properties": { - "Node name for S&R": "PreviewImage" + "Node name for S&R": "ADE_AnimateDiffLoRALoader", + "ttNbgOverride": { + "color": "#2a363b", + "bgcolor": "#3f5159", + "groupcolor": "#3f789e" + } }, - "widgets_values": [] + "widgets_values": [ + "LiquidAF-0-1.safetensors", + 0.8 + ] }, { - "id": 171, - "type": "SetNode", + "id": 354, + "type": "ADE_CustomCFGSimple", "pos": [ - -633.344970703125, - -1672.8128662109375 + 2790.7177734375, + -43.261199951171875 ], "size": [ - 210, - 58 + 257.2469787597656, + 60.893348693847656 ], "flags": {}, - "order": 110, + "order": 29, "mode": 0, "inputs": [ { - "name": "FEATURE", - "type": "FEATURE", - "link": 270 + "name": "cfg_extras", + "type": "CFG_EXTRAS", + "link": null, + "shape": 7 } ], "outputs": [ { - "name": "*", - "type": "*", - "links": null + "name": "CUSTOM_CFG", + "type": "CUSTOM_CFG", + "links": [ + 536 + ], + "slot_index": 0, + "shape": 3 } ], - "title": "Set_vocal_feature", "properties": { - "previousName": "vocal_feature" + "Node name for S&R": "ADE_CustomCFGSimple", + "ttNbgOverride": { + "color": "#2a363b", + "bgcolor": "#3f5159", + "groupcolor": "#3f789e" + } }, "widgets_values": [ - "vocal_feature" + 2 ] }, { - "id": 320, - "type": "workflow>wfe", + "id": 355, + "type": "ADE_AnimateDiffSamplingSettings", "pos": [ - -2571.419921875, - -1107.6658935546875 + 2798.038330078125, + 103.58998107910156 ], "size": [ - 317.4000244140625, - 182 + 273.3500061035156, + 274 ], "flags": {}, - "order": 83, + "order": 43, "mode": 0, "inputs": [ { - "name": "audio", - "type": "AUDIO", - "link": 489 + "name": "noise_layers", + "type": "NOISE_LAYERS", + "link": null, + "slot_index": 0, + "shape": 7 }, { - "name": "video_frames", - "type": "IMAGE", - "link": 490 - } - ], - "outputs": [ + "name": "iteration_opts", + "type": "ITERATION_OPTS", + "link": null, + "shape": 7 + }, { - "name": "audio", - "type": "AUDIO", - "links": null + "name": "custom_cfg", + "type": "CUSTOM_CFG", + "link": 536, + "slot_index": 2, + "shape": 7 }, { - "name": "drums_audio", - "type": "AUDIO", - "links": [ - 482 - ] + "name": "sigma_schedule", + "type": "SIGMA_SCHEDULE", + "link": null, + "slot_index": 3, + "shape": 7 }, { - "name": "vocals_audio", - "type": "AUDIO", - "links": [ - 483 - ] + "name": "seed_override", + "type": "INT", + "link": null, + "widget": { + "name": "seed_override" + } }, { - "name": "bass_audio", - "type": "AUDIO", - "links": [ - 484, - 485 - ] + "name": "seed_override", + "type": "INT", + "link": null, + "widget": { + "name": "seed_override" + }, + "shape": 7 }, { - "name": "other_audio", + "name": "image_inject", + "type": "IMAGE_INJECT", + "link": null, + "shape": 7 + } + ], + "outputs": [ + { + "name": "settings", + "type": "SAMPLE_SETTINGS", + "links": [ + 543 + ], + "slot_index": 0, + "shape": 3 + } + ], + "properties": { + "Node name for S&R": "ADE_AnimateDiffSamplingSettings", + "ttNbgOverride": { + "color": "#2a363b", + "bgcolor": "#3f5159", + "groupcolor": "#3f789e" + } + }, + "widgets_values": [ + 0, + "FreeNoise", + "comfy", + 0, + 0, + false + ] + }, + { + "id": 92, + "type": "VHS_LoadAudioUpload", + "pos": [ + -3165.268798828125, + -1258.0037841796875 + ], + "size": [ + 243.818359375, + 130 + ], + "flags": {}, + "order": 30, + "mode": 0, + "inputs": [], + "outputs": [ + { + "name": "audio", "type": "AUDIO", - "links": null - }, - { - "name": "feature_pipe", - "type": "FEATURE_PIPE", "links": [ - 486, - 487, - 488 - ] + 122, + 123, + 132, + 491, + 499, + 553 + ], + "slot_index": 0, + "shape": 3 } ], - "title": "audio separation", "properties": { - "Node name for S&R": "workflow>wfe" + "Node name for S&R": "VHS_LoadAudioUpload" }, - "widgets_values": [ - "umxl", - 30 - ] + "widgets_values": { + "audio": "Golden Girl.mp3", + "start_time": 26.5, + "duration": 7, + "choose audio to upload": "image" + } }, { - "id": 83, - "type": "SetNode", + "id": 364, + "type": "Anything Everywhere?", "pos": [ - -2703.984619140625, - -826.0731811523438 + -2778.0615234375, + -1599.8172607421875 ], "size": [ - 210, - 58 + 315, + 106 ], "flags": {}, - "order": 81, + "order": 48, "mode": 0, "inputs": [ { - "name": "IMAGE", - "type": "IMAGE", - "link": 133 - } - ], - "outputs": [ - { - "name": "*", + "name": "AUDIO", "type": "*", - "links": null + "link": 553, + "shape": 7, + "color_on": "" } ], - "title": "Set_emptyimg", + "outputs": [], "properties": { - "previousName": "" + "Node name for S&R": "Anything Everywhere?", + "group_restricted": 0, + "color_restricted": 0 }, "widgets_values": [ - "emptyimg" + ".*", + "audio", + ".*" ] }, { - "id": 94, - "type": "SetNode", + "id": 361, + "type": "MaskComposite", "pos": [ - -2706.033447265625, - -717.9110717773438 + -842.6743774414062, + 1624.70361328125 ], "size": [ - 210, - 58 + 315, + 126 ], "flags": {}, - "order": 84, + "order": 66, "mode": 0, "inputs": [ { - "name": "MASK", + "name": "destination", "type": "MASK", - "link": 145 + "link": 549 + }, + { + "name": "source", + "type": "MASK", + "link": 550 } ], "outputs": [ { - "name": "*", - "type": "*", - "links": null + "name": "MASK", + "type": "MASK", + "links": [ + 552, + 554 + ], + "slot_index": 0 } ], - "title": "Set_emptymask", "properties": { - "previousName": "emptymask" + "Node name for S&R": "MaskComposite" }, "widgets_values": [ - "emptymask" + 0, + 0, + "subtract" ] }, { - "id": 107, - "type": "GetImageSizeAndCount", + "id": 362, + "type": "MaskToImage", "pos": [ - -2710.511962890625, - -602.6050415039062 + -815.8050537109375, + 1816.8614501953125 ], "size": [ - 277.20001220703125, - 86 + 264.5999755859375, + 26 ], "flags": {}, - "order": 82, + "order": 80, "mode": 0, "inputs": [ { - "name": "image", - "type": "IMAGE", - "link": 155 + "name": "mask", + "type": "MASK", + "link": 552 } ], "outputs": [ { - "name": "image", + "name": "IMAGE", "type": "IMAGE", - "links": null - }, - { - "name": "width", - "type": "INT", - "links": [ - 156 - ], - "slot_index": 1 - }, - { - "name": "height", - "type": "INT", "links": [ - 157 + 551 ], - "slot_index": 2 - }, - { - "name": "count", - "type": "INT", - "links": null + "slot_index": 0 } ], "properties": { - "Node name for S&R": "GetImageSizeAndCount" - }, - "widgets_values": [] + "Node name for S&R": "MaskToImage" + } }, { - "id": 106, - "type": "SetNode", + "id": 363, + "type": "VHS_VideoCombine", "pos": [ - -613.6802978515625, - -834.4779663085938 + -80.20389556884766, + 1648.654541015625 ], "size": [ - 210, - 58 + 214.7587890625, + 679.811279296875 ], "flags": {}, - "order": 86, + "order": 95, "mode": 0, "inputs": [ { - "name": "INT", - "type": "INT", - "link": 156 + "name": "images", + "type": "IMAGE", + "link": 551 + }, + { + "name": "audio", + "type": "AUDIO", + "link": null, + "shape": 7 + }, + { + "name": "meta_batch", + "type": "VHS_BatchManager", + "link": null, + "shape": 7 + }, + { + "name": "vae", + "type": "VAE", + "link": null, + "shape": 7 } ], "outputs": [ { - "name": "*", - "type": "*", + "name": "Filenames", + "type": "VHS_FILENAMES", "links": null } ], - "title": "Set_width", "properties": { - "previousName": "width" + "Node name for S&R": "VHS_VideoCombine" }, - "widgets_values": [ - "width" - ] + "widgets_values": { + "frame_rate": 30, + "loop_count": 0, + "filename_prefix": "AnimateDiff", + "format": "video/h264-mp4", + "pix_fmt": "yuv420p", + "crf": 19, + "save_metadata": true, + "trim_to_audio": false, + "pingpong": false, + "save_output": true, + "videopreview": { + "hidden": false, + "paused": false, + "params": { + "filename": "AnimateDiff_02340-audio.mp4", + "subfolder": "", + "type": "output", + "format": "video/h264-mp4", + "frame_rate": 30, + "workflow": "AnimateDiff_02340.png", + "fullpath": "/runpod-volume/ComfyUI_rv/output/AnimateDiff_02340-audio.mp4" + }, + "muted": false + } + } }, { - "id": 108, - "type": "SetNode", + "id": 196, + "type": "GetNode", "pos": [ - -615.9558715820312, - -697.3511962890625 + -1184.9947509765625, + 1784.8721923828125 ], "size": [ 210, 58 ], "flags": {}, - "order": 87, + "order": 31, "mode": 0, - "inputs": [ - { - "name": "INT", - "type": "INT", - "link": 157 - } - ], + "inputs": [], "outputs": [ { - "name": "*", - "type": "*", - "links": null + "name": "MASK", + "type": "MASK", + "links": [ + 550 + ], + "slot_index": 0 } ], - "title": "Set_height", - "properties": { - "previousName": "height" - }, + "title": "Get_mask_bg", + "properties": {}, "widgets_values": [ - "height" + "mask_bg" ] }, { - "id": 73, - "type": "SetNode", + "id": 360, + "type": "FeatureToMask", "pos": [ - -627.056396484375, - -591.127685546875 + -1370.2353515625, + 1562.998046875 ], "size": [ - 210, - 58 + 315, + 26 ], "flags": {}, - "order": 41, + "order": 49, "mode": 0, "inputs": [ { - "name": "AUDIO", - "type": "AUDIO", - "link": 123 + "name": "feature", + "type": "FEATURE", + "link": 547 } ], "outputs": [ { - "name": "*", - "type": "*", - "links": null + "name": "MASK", + "type": "MASK", + "links": [ + 549 + ], + "slot_index": 0 } ], - "title": "Set_audio", "properties": { - "previousName": "" - }, - "widgets_values": [ - "audio" - ] + "Node name for S&R": "FeatureToMask" + } }, { - "id": 295, - "type": "SetNode", + "id": 95, + "type": "GetNode", "pos": [ - -631.903564453125, - -466.83880615234375 + -1367.599365234375, + 1414.6229248046875 ], "size": [ - 210, - 58 + 282.97052001953125, + 74.21566772460938 ], "flags": {}, - "order": 88, + "order": 32, "mode": 0, - "inputs": [ - { - "name": "AUDIO", - "type": "AUDIO", - "link": 485 - } - ], + "inputs": [], "outputs": [ { - "name": "*", - "type": "*", - "links": null + "name": "FEATURE", + "type": "FEATURE", + "links": [ + 547 + ], + "slot_index": 0 } ], - "title": "Set_audio_base", - "properties": { - "previousName": "audio_base" - }, + "title": "Get_kifck_feature", + "properties": {}, "widgets_values": [ - "audio_base" + "kifck_feature" ] }, { - "id": 99, - "type": "VHS_VideoCombine", + "id": 313, + "type": "SetNode", "pos": [ - -120, - 1650 + -429.0910339355469, + 1497.06103515625 ], "size": [ - 214.7587890625, - 679.811279296875 + 210, + 58 ], "flags": {}, - "order": 77, + "order": 81, "mode": 0, "inputs": [ { - "name": "images", - "type": "IMAGE", - "link": 150 - }, - { - "name": "audio", - "type": "AUDIO", - "link": 153, - "shape": 7 - }, - { - "name": "meta_batch", - "type": "VHS_BatchManager", - "link": null, - "shape": 7 - }, - { - "name": "vae", - "type": "VAE", - "link": null, - "shape": 7 + "name": "MASK", + "type": "MASK", + "link": 554 } ], "outputs": [ { - "name": "Filenames", - "type": "VHS_FILENAMES", + "name": "*", + "type": "*", "links": null } ], + "title": "Set_maskopacity", "properties": { - "Node name for S&R": "VHS_VideoCombine" + "previousName": "maskopacity" }, - "widgets_values": { - "frame_rate": 30, - "loop_count": 0, - "filename_prefix": "AnimateDiff", - "format": "video/h264-mp4", - "pix_fmt": "yuv420p", - "crf": 19, - "save_metadata": true, - "trim_to_audio": false, - "pingpong": false, - "save_output": true, - "videopreview": { - "hidden": false, - "paused": false, - "params": { - "filename": "AnimateDiff_00489-audio.mp4", - "subfolder": "", - "type": "output", - "format": "video/h264-mp4", - "frame_rate": 30, - "workflow": "AnimateDiff_00489.png", - "fullpath": "/runpod-volume/ComfyUI_rv/output/AnimateDiff_00489-audio.mp4" - }, - "muted": false - } - } + "widgets_values": [ + "maskopacity" + ], + "color": "#1c5715", + "bgcolor": "#1f401b" } ], "links": [ @@ -5192,889 +5362,1009 @@ 52, 20, 0, - 21, + 21, + 1, + "HOOKS" + ], + [ + 97, + 16, + 0, + 17, + 0, + "CONDITIONING" + ], + [ + 98, + 16, + 1, + 17, + 1, + "CONDITIONING" + ], + [ + 99, + 6, + 0, + 17, + 2, + "CONDITIONING" + ], + [ + 100, + 3, + 0, + 17, + 3, + "CONDITIONING" + ], + [ + 111, + 15, + 0, + 16, + 2, + "MASK" + ], + [ + 121, + 71, + 0, + 20, + 0, + "HOOKS" + ], + [ + 122, + 92, + 0, + 72, + 0, + "AUDIO" + ], + [ + 123, + 92, + 0, + 73, + 0, + "*" + ], + [ + 132, + 92, + 0, + 82, + 0, + "AUDIO" + ], + [ + 133, + 82, + 0, + 83, + 0, + "*" + ], + [ + 145, + 82, + 1, + 94, + 0, + "*" + ], + [ + 155, + 82, + 0, + 107, + 0, + "IMAGE" + ], + [ + 156, + 107, + 1, + 106, + 0, + "*" + ], + [ + 157, + 107, + 2, + 108, + 0, + "*" + ], + [ + 164, + 9, + 0, + 110, + 0, + "IMAGE" + ], + [ + 165, + 11, + 0, + 6, + 0, + "CLIP" + ], + [ + 166, + 11, + 0, + 3, + 0, + "CLIP" + ], + [ + 168, + 114, + 0, + 115, + 1, + "VAE" + ], + [ + 192, + 136, + 0, + 110, 1, - "HOOKS" + "AUDIO" ], [ - 97, - 16, + 199, + 115, 0, - 17, + 140, 0, - "CONDITIONING" + "*" ], [ - 98, - 16, + 202, + 142, 1, - 17, + 82, 1, - "CONDITIONING" + "INT" ], [ - 99, - 6, - 0, - 17, + 203, + 142, 2, - "CONDITIONING" - ], - [ - 100, - 3, - 0, - 17, - 3, - "CONDITIONING" + 82, + 2, + "INT" ], [ - 111, - 15, + 204, + 129, 0, - 16, + 143, 2, - "MASK" + "INT" ], [ - 121, - 71, + 208, + 13, 0, - 20, + 144, 0, - "HOOKS" + "MODEL" ], [ - 122, - 92, - 0, - 72, + 218, + 152, 0, - "AUDIO" + 151, + 2, + "CONTROL_NET" ], [ - 123, - 92, - 0, - 73, + 221, + 151, 0, - "*" + 23, + 1, + "CONDITIONING" + ], + [ + 222, + 151, + 1, + 23, + 2, + "CONDITIONING" ], [ - 125, - 91, + 235, + 160, 0, - 75, + 155, 0, - "*" + "LATENT" ], [ - 127, - 91, - 1, - 77, + 236, + 157, 0, - "IMAGE" + 155, + 1, + "VAE" ], [ - 128, - 89, + 237, + 155, 0, - 78, + 156, 0, - "*" + "IMAGE" ], [ - 129, - 90, - 1, - 79, + 238, + 158, 0, - "*" + 156, + 1, + "AUDIO" ], [ - 130, - 88, - 0, - 80, + 240, + 151, 0, - "*" + 160, + 1, + "CONDITIONING" ], [ - 131, - 89, + 241, + 151, 1, - 81, - 0, - "IMAGE" + 160, + 2, + "CONDITIONING" ], [ - 132, - 92, + 243, + 23, 0, - 82, + 161, 0, - "AUDIO" + "LATENT" ], [ - 133, - 82, - 0, - 83, + 244, + 161, 0, - "*" + 160, + 3, + "LATENT" ], [ - 139, - 88, - 1, - 87, + 246, + 150, + 0, + 163, 0, "IMAGE" ], [ - 140, - 86, - 0, - 88, + 247, + 163, 0, - "FEATURE" + 151, + 3, + "IMAGE" ], [ - 141, - 90, + 272, + 181, 0, - 89, + 180, 0, - "FEATURE" + "SAM_MODEL" ], [ - 144, - 90, - 0, - 91, + 273, + 182, 0, - "FEATURE" + 180, + 1, + "GROUNDING_DINO_MODEL" ], [ - 145, - 82, - 1, - 94, + 274, + 183, 0, - "*" + 180, + 2, + "IMAGE" ], [ - 146, - 95, + 275, + 180, 0, - 93, - 1, - "FEATURE" + 184, + 0, + "IMAGE" ], [ - 148, - 96, + 285, + 143, 0, - 93, - 2, - "FEATURE_PIPE" + 192, + 0, + "IMAGE" ], [ - 150, - 98, + 286, + 192, 0, - 99, + 128, 0, "IMAGE" ], [ - 151, - 97, + 289, + 128, 0, - 100, + 142, 0, - "MASK" + "IMAGE" ], [ - 152, - 100, + 291, + 194, 0, - 93, + 195, 0, - "MASK" + "*" ], [ - 153, - 101, + 292, + 141, 0, - 99, - 1, - "AUDIO" + 23, + 3, + "LATENT" ], [ - 155, - 82, + 409, + 128, 0, - 107, + 139, 0, "IMAGE" ], [ - 156, - 107, - 1, - 106, + 410, + 128, 0, - "*" + 115, + 0, + "IMAGE" ], [ - 157, - 107, - 2, - 108, + 420, + 275, 0, - "*" + 276, + 1, + "AUDIO" ], - [ - 164, - 9, + [ + 422, + 277, 0, - 110, + 276, 0, "IMAGE" ], [ - 165, - 11, + 442, + 17, 0, - 6, + 151, 0, - "CLIP" + "CONDITIONING" ], [ - 166, - 11, + 443, + 17, + 1, + 151, + 1, + "CONDITIONING" + ], + [ + 445, + 144, 0, - 3, + 292, 0, - "CLIP" + "MODEL" ], [ - 168, - 114, - 0, - 115, + 446, + 144, 1, - "VAE" + 292, + 1, + "IPADAPTER" ], [ - 173, - 120, + 449, + 292, 0, - 117, - 1, - "CONTEXT_OPTIONS" + 190, + 0, + "MODEL" ], [ - 174, - 125, + 451, + 293, 0, - 117, + 292, 2, - "MOTION_LORA" + "IMAGE" ], [ - 175, - 118, + 476, + 312, 0, - 117, - 5, - "SAMPLE_SETTINGS" + 292, + 4, + "MASK" ], [ - 176, - 119, + 478, + 315, 0, - 117, - 6, - "MULTIVAL" - ], - [ - 177, - 121, + 15, 0, - 117, - 7, - "MULTIVAL" + "*" ], [ - 178, - 122, + 479, + 180, + 1, + 185, 0, - 118, - 2, - "CUSTOM_CFG" + "MASK" ], [ + 480, 180, - 117, - 0, - 23, + 1, + 194, 0, - "MODEL" + "MASK" ], [ - 192, - 136, + 491, + 92, 0, - 110, + 321, 1, "AUDIO" ], [ - 195, - 92, - 0, - 137, + 495, + 321, + 3, + 295, 0, "AUDIO" ], [ - 196, - 137, - 2, - 102, - 0, - "INT" - ], - [ - 199, - 115, + 496, + 322, 0, - 140, + 321, 0, - "*" + "OPEN_UNMIX_MODEL" ], [ - 202, + 497, 142, 1, - 82, - 1, + 324, + 0, "INT" ], [ - 203, + 498, 142, 2, - 82, - 2, - "INT" - ], - [ - 204, - 129, + 323, 0, - 143, - 2, "INT" ], [ - 208, - 13, + 499, + 92, 0, - 144, + 325, 0, - "MODEL" + "AUDIO" ], [ - 218, - 152, + 500, + 325, 0, - 151, - 2, - "CONTROL_NET" - ], - [ - 221, - 151, + 102, 0, - 23, - 1, - "CONDITIONING" - ], - [ - 222, - 151, - 1, - 23, - 2, - "CONDITIONING" + "INT" ], [ - 235, - 160, + 501, + 327, 0, - 155, + 326, 0, - "LATENT" + "FLOAT" ], [ - 236, - 157, - 0, - 155, + 502, + 321, 1, - "VAE" - ], - [ - 237, - 155, - 0, - 156, + 328, 0, - "IMAGE" - ], - [ - 238, - 158, - 0, - 156, - 1, "AUDIO" ], [ - 239, - 117, - 0, - 160, + 505, + 328, + 1, + 79, 0, - "MODEL" + "INT" ], [ - 240, - 151, + 506, + 321, + 3, + 329, 0, - 160, - 1, - "CONDITIONING" - ], - [ - 241, - 151, - 1, - 160, - 2, - "CONDITIONING" + "AUDIO" ], [ - 243, - 23, - 0, - 161, + 508, + 329, 0, - "LATENT" - ], - [ - 244, - 161, + 331, 0, - 160, - 3, - "LATENT" + "FEATURE" ], [ - 246, - 150, + 509, + 331, 0, - 163, + 80, 0, - "IMAGE" + "FEATURE" ], [ - 247, - 163, + 510, + 331, 0, - 151, - 3, - "IMAGE" + 332, + 0, + "FEATURE" ], [ - 260, - 166, + 511, + 328, 0, - 172, + 335, 0, "FEATURE" ], [ - 267, - 172, + 512, + 335, 0, - 178, + 78, 0, "FEATURE" ], [ - 268, - 178, - 1, - 169, + 513, + 335, 0, - "IMAGE" - ], - [ - 269, - 172, - 1, - 179, + 336, 0, - "IMAGE" + "FEATURE" ], [ - 270, - 178, + 514, + 328, 0, - 171, + 338, 0, "FEATURE" ], [ - 272, - 181, + 515, + 338, 0, - 180, + 75, 0, - "SAM_MODEL" + "FEATURE" ], [ - 273, - 182, + 516, + 338, 0, - 180, - 1, - "GROUNDING_DINO_MODEL" - ], - [ - 274, - 183, + 339, 0, - 180, - 2, - "IMAGE" + "FEATURE" ], [ - 275, - 180, - 0, - 184, + 517, + 321, + 2, + 341, 0, - "IMAGE" + "AUDIO" ], [ - 283, - 190, + 519, + 341, 0, - 117, + 342, 0, - "MODEL" + "FEATURE" ], [ - 285, - 143, + 521, + 342, 0, - 192, + 344, 0, - "IMAGE" + "FEATURE" ], [ - 286, - 192, + 522, + 344, 0, - 128, + 171, 0, - "IMAGE" + "FEATURE" ], [ - 289, - 128, + 523, + 342, 0, - 142, + 345, 0, - "IMAGE" + "FEATURE" ], [ - 291, - 194, + 524, + 344, 0, - 195, + 346, 0, - "*" + "FEATURE" ], [ - 292, - 141, + 531, + 272, 0, - 23, - 3, - "LATENT" + 348, + 0, + "MASK" ], [ - 293, - 196, + 532, + 274, 0, - 197, + 348, 1, - "MASK" + "FEATURE" ], [ - 294, - 93, + 533, + 348, 0, - 197, + 277, 0, "MASK" ], [ - 295, - 197, + 534, + 348, 0, - 98, + 311, 0, "MASK" ], [ - 409, - 128, + 535, + 325, 0, - 139, + 349, 0, - "IMAGE" + "INT" ], [ - 410, - 128, - 0, - 115, + 536, + 354, 0, - "IMAGE" + 355, + 2, + "CUSTOM_CFG" ], [ - 417, - 272, + 537, + 357, 0, - 271, + 356, 0, - "MASK" + "MOTION_MODEL_ADE" ], [ - 418, - 274, + 538, + 351, 0, - 271, + 356, 1, - "FEATURE" + "MOTION_LORA" ], [ - 419, - 273, + 539, + 353, 0, - 271, + 356, 2, - "FEATURE_PIPE" + "MULTIVAL" ], [ - 420, - 275, + 540, + 352, 0, - 276, - 1, - "AUDIO" + 356, + 3, + "MULTIVAL" ], [ - 421, - 271, - 0, - 277, + 541, + 356, 0, - "MASK" + 358, + 1, + "M_MODELS" ], [ - 422, - 277, + 542, + 359, 0, - 276, + 358, + 2, + "CONTEXT_OPTIONS" + ], + [ + 543, + 355, 0, - "IMAGE" + 358, + 3, + "SAMPLE_SETTINGS" ], [ - 442, - 17, + 544, + 190, 0, - 151, + 358, 0, - "CONDITIONING" + "MODEL" ], [ - 443, - 17, - 1, - 151, - 1, - "CONDITIONING" + 545, + 358, + 0, + 23, + 0, + "MODEL" ], [ - 445, - 144, + 546, + 358, 0, - 292, + 160, 0, "MODEL" ], [ - 446, - 144, - 1, - 292, - 1, - "IPADAPTER" + 547, + 95, + 0, + 360, + 0, + "FEATURE" ], [ - 449, - 292, + 549, + 360, 0, - 190, + 361, 0, - "MODEL" + "MASK" ], [ - 451, - 293, + 550, + 196, 0, - 292, - 2, - "IMAGE" + 361, + 1, + "MASK" ], [ - 475, - 271, + 551, + 362, 0, - 311, + 363, 0, - "*" + "IMAGE" ], [ - 476, - 312, + 552, + 361, + 0, + 362, 0, - 292, - 4, "MASK" ], [ - 477, - 197, + 553, + 92, + 0, + 364, + 0, + "AUDIO" + ], + [ + 554, + 361, 0, 313, 0, - "*" + "MASK" ], [ - 478, - 315, - 0, - 15, + 555, + 327, 0, - "*" + 82, + 3, + "FLOAT" ], [ - 479, - 180, - 1, - 185, + 556, + 92, 0, - "MASK" + 184, + 1, + "AUDIO" ], [ - 480, - 180, + 557, + 327, + 0, + 328, 1, - 194, + "FLOAT" + ], + [ + 558, + 325, 0, - "MASK" + 328, + 2, + "INT" ], [ - 482, - 320, + 559, + 142, 1, - 90, - 0, - "AUDIO" + 328, + 3, + "INT" ], [ - 483, - 320, + 560, + 142, 2, - 166, - 0, - "AUDIO" + 328, + 4, + "INT" ], [ - 484, - 320, - 3, - 86, + 561, + 327, 0, - "AUDIO" + 329, + 1, + "FLOAT" ], [ - 485, - 320, - 3, - 295, + 562, + 325, 0, - "AUDIO" + 329, + 2, + "INT" ], [ - 486, - 320, - 5, - 86, + 563, + 142, 1, - "FEATURE_PIPE" + 329, + 3, + "INT" ], [ - 487, - 320, - 5, - 90, - 1, - "FEATURE_PIPE" + 564, + 142, + 2, + 329, + 4, + "INT" ], [ - 488, - 320, - 5, - 166, + 565, + 327, + 0, + 341, 1, - "FEATURE_PIPE" + "FLOAT" ], [ - 489, - 92, + 566, + 325, 0, - 320, + 341, + 2, + "INT" + ], + [ + 567, + 142, + 1, + 341, + 3, + "INT" + ], + [ + 568, + 142, + 2, + 341, + 4, + "INT" + ], + [ + 569, + 327, 0, - "AUDIO" + 325, + 1, + "FLOAT" ], [ - 490, - 82, + 570, + 92, 0, - 320, + 363, 1, - "IMAGE" + "AUDIO" ] ], "groups": [ @@ -6130,19 +6420,6 @@ "font_size": 24, "flags": {} }, - { - "id": 6, - "title": "Yuck!", - "bounding": [ - -3179.978515625, - -167.05276489257812, - 861.4481811523438, - 392.4611511230469 - ], - "color": "#3f789e", - "font_size": 24, - "flags": {} - }, { "id": 7, "title": "Load Video", @@ -6173,8 +6450,8 @@ "id": 9, "title": "samp2", "bounding": [ - 4505.4599609375, - -506.8277282714844, + 4517.99169921875, + -515.1822509765625, 1955.6962890625, 1195.548583984375 ], @@ -6212,191 +6489,155 @@ "config": {}, "extra": { "ds": { - "scale": 0.12284597357367237, - "offset": { - "0": 5874.93603515625, - "1": 3045.195556640625 - } + "scale": 0.9090909090909098, + "offset": [ + -3508.848045650636, + 6.451593644326692 + ] }, - "ue_links": [], - "groupNodes": { - "wfe": { - "nodes": [ - { - "id": -1, - "type": "DownloadOpenUnmixModel", - "pos": [ - -2605.094482421875, - -1112.0582275390625 - ], - "size": [ - 361.20001220703125, - 58 - ], - "flags": {}, - "order": 40, - "mode": 0, - "inputs": [], - "outputs": [ - { - "name": "OPEN_UNMIX_MODEL", - "type": "OPEN_UNMIX_MODEL", - "links": [], - "slot_index": 0, - "shape": 3, - "localized_name": "OPEN_UNMIX_MODEL" - } - ], - "properties": { - "Node name for S&R": "DownloadOpenUnmixModel" - }, - "widgets_values": [ - "umxl" - ], - "index": 0 - }, - { - "id": -1, - "type": "AudioSeparator", - "pos": [ - -2572.7392578125, - -1024.678466796875 - ], - "size": [ - 317.4000244140625, - 158 - ], - "flags": {}, - "order": 90, - "mode": 0, - "inputs": [ - { - "name": "model", - "type": "OPEN_UNMIX_MODEL", - "link": null, - "slot_index": 0, - "localized_name": "model" - }, - { - "name": "audio", - "type": "AUDIO", - "link": null, - "localized_name": "audio" - }, - { - "name": "video_frames", - "type": "IMAGE", - "link": null, - "localized_name": "video_frames" - } - ], - "outputs": [ - { - "name": "audio", - "type": "AUDIO", - "links": [], - "slot_index": 0, - "shape": 3, - "localized_name": "audio" - }, - { - "name": "drums_audio", - "type": "AUDIO", - "links": [], - "slot_index": 1, - "shape": 3, - "localized_name": "drums_audio" - }, - { - "name": "vocals_audio", - "type": "AUDIO", - "links": [], - "slot_index": 2, - "shape": 3, - "localized_name": "vocals_audio" - }, - { - "name": "bass_audio", - "type": "AUDIO", - "links": [], - "slot_index": 3, - "shape": 3, - "localized_name": "bass_audio" - }, - { - "name": "other_audio", - "type": "AUDIO", - "links": null, - "shape": 3, - "localized_name": "other_audio" - }, - { - "name": "feature_pipe", - "type": "FEATURE_PIPE", - "links": [], - "slot_index": 5, - "shape": 3, - "localized_name": "feature_pipe" - } - ], - "properties": { - "Node name for S&R": "AudioSeparator" - }, - "widgets_values": [ - 30 - ], - "index": 1 - } - ], - "links": [ - [ - 0, - 0, - 1, - 0, - 84, - "OPEN_UNMIX_MODEL" - ], - [ - null, - 0, - 1, - 1, - 92, - "AUDIO" - ], - [ - null, - 0, - 1, - 2, - 82, - "IMAGE" - ] - ], - "external": [ - [ - 1, - 1, - "AUDIO" - ], - [ - 1, - 2, - "AUDIO" - ], - [ - 1, - 3, - "AUDIO" - ], - [ - 1, - 5, - "FEATURE_PIPE" - ] - ] + "ue_links": [ + { + "downstream": 82, + "downstream_slot": 3, + "upstream": "327", + "upstream_slot": 0, + "controller": 326, + "type": "FLOAT" + }, + { + "downstream": 184, + "downstream_slot": 1, + "upstream": "92", + "upstream_slot": 0, + "controller": 364, + "type": "AUDIO" + }, + { + "downstream": 328, + "downstream_slot": 1, + "upstream": "327", + "upstream_slot": 0, + "controller": 326, + "type": "FLOAT" + }, + { + "downstream": 328, + "downstream_slot": 2, + "upstream": "325", + "upstream_slot": 0, + "controller": 349, + "type": "INT" + }, + { + "downstream": 328, + "downstream_slot": 3, + "upstream": "142", + "upstream_slot": 1, + "controller": 324, + "type": "INT" + }, + { + "downstream": 328, + "downstream_slot": 4, + "upstream": "142", + "upstream_slot": 2, + "controller": 323, + "type": "INT" + }, + { + "downstream": 329, + "downstream_slot": 1, + "upstream": "327", + "upstream_slot": 0, + "controller": 326, + "type": "FLOAT" + }, + { + "downstream": 329, + "downstream_slot": 2, + "upstream": "325", + "upstream_slot": 0, + "controller": 349, + "type": "INT" + }, + { + "downstream": 329, + "downstream_slot": 3, + "upstream": "142", + "upstream_slot": 1, + "controller": 324, + "type": "INT" + }, + { + "downstream": 329, + "downstream_slot": 4, + "upstream": "142", + "upstream_slot": 2, + "controller": 323, + "type": "INT" + }, + { + "downstream": 341, + "downstream_slot": 1, + "upstream": "327", + "upstream_slot": 0, + "controller": 326, + "type": "FLOAT" + }, + { + "downstream": 341, + "downstream_slot": 2, + "upstream": "325", + "upstream_slot": 0, + "controller": 349, + "type": "INT" + }, + { + "downstream": 341, + "downstream_slot": 3, + "upstream": "142", + "upstream_slot": 1, + "controller": 324, + "type": "INT" + }, + { + "downstream": 341, + "downstream_slot": 4, + "upstream": "142", + "upstream_slot": 2, + "controller": 323, + "type": "INT" + }, + { + "downstream": 325, + "downstream_slot": 1, + "upstream": "327", + "upstream_slot": 0, + "controller": 326, + "type": "FLOAT" + }, + { + "downstream": 363, + "downstream_slot": 1, + "upstream": "92", + "upstream_slot": 0, + "controller": 364, + "type": "AUDIO" } + ], + "groupNodes": {}, + "node_versions": { + "comfy-core": "0.3.12", + "ComfyUI-Advanced-ControlNet": "9632af9dc8f9abe28431c0027411d7a6d4f6cd3e", + "comfyui_segment_anything": "ab6395596399d5048639cdab7e44ec9fae857a93", + "ComfyUI-VideoHelperSuite": "6953fa21443cf55f7c3b61ed3f4c87c5d3677fe1", + "ComfyUI_IPAdapter_plus": "b188a6cb39b512a9c6da7235b880af42c78ccd0d", + "comfyui_controlnet_aux": "5a049bde9cc117dafc327cded156459289097ea1", + "ComfyUI-KJNodes": "973ceb6ca8b7525d54873805888ad690090d6b1e", + "ComfyUi_NNLatentUpscale": "08105da31dbd7a54569661e135835e73bd8064b0", + "ComfyUI_RyanOnTheInside": "e2382fa6e72d3aa18cbb4d558eb468cc14c54afc", + "cg-use-everywhere": "cd06259166a6af4c054c62f540871ca09a359b50", + "ComfyUI-AnimateDiff-Evolved": "7ec46937095048a77342aeada964e9823a2102f0" } }, "version": 0.4 diff --git a/examples/audio_particles.json b/examples/audio_particles.json deleted file mode 100644 index 311951f..0000000 --- a/examples/audio_particles.json +++ /dev/null @@ -1,5652 +0,0 @@ -{ - "last_node_id": 189, - "last_link_id": 341, - "nodes": [ - { - "id": 8, - "type": "VAEDecode", - "pos": [ - 4292.735538106925, - 350.89482617683393 - ], - "size": { - "0": 210, - "1": 46 - }, - "flags": {}, - "order": 99, - "mode": 0, - "inputs": [ - { - "name": "samples", - "type": "LATENT", - "link": 7 - }, - { - "name": "vae", - "type": "VAE", - "link": 302 - } - ], - "outputs": [ - { - "name": "IMAGE", - "type": "IMAGE", - "links": [ - 327 - ], - "slot_index": 0 - } - ], - "properties": { - "Node name for S&R": "VAEDecode" - } - }, - { - "id": 34, - "type": "KSampler", - "pos": [ - 5862.632408961488, - 625.052586911583 - ], - "size": { - "0": 315, - "1": 262 - }, - "flags": {}, - "order": 102, - "mode": 0, - "inputs": [ - { - "name": "model", - "type": "MODEL", - "link": 69 - }, - { - "name": "positive", - "type": "CONDITIONING", - "link": 215 - }, - { - "name": "negative", - "type": "CONDITIONING", - "link": 216 - }, - { - "name": "latent_image", - "type": "LATENT", - "link": 48 - } - ], - "outputs": [ - { - "name": "LATENT", - "type": "LATENT", - "links": [ - 52 - ], - "shape": 3, - "slot_index": 0 - } - ], - "properties": { - "Node name for S&R": "KSampler" - }, - "widgets_values": [ - 866894971726240, - "fixed", - 4, - 1, - "lcm", - "sgm_uniform", - 0.3 - ] - }, - { - "id": 46, - "type": "Reroute", - "pos": [ - 3853.735538106928, - 241.89482617683393 - ], - "size": [ - 75, - 26 - ], - "flags": {}, - "order": 97, - "mode": 0, - "inputs": [ - { - "name": "", - "type": "*", - "link": 258 - } - ], - "outputs": [ - { - "name": "", - "type": "MODEL", - "links": [ - 69, - 209 - ], - "slot_index": 0 - } - ], - "properties": { - "showOutputText": false, - "horizontal": false - } - }, - { - "id": 35, - "type": "NNLatentUpscale", - "pos": [ - 5308.63240896149, - 794.052586911583 - ], - "size": { - "0": 315, - "1": 82 - }, - "flags": {}, - "order": 100, - "mode": 0, - "inputs": [ - { - "name": "latent", - "type": "LATENT", - "link": 47 - } - ], - "outputs": [ - { - "name": "LATENT", - "type": "LATENT", - "links": [ - 48 - ], - "shape": 3, - "slot_index": 0 - } - ], - "properties": { - "Node name for S&R": "NNLatentUpscale" - }, - "widgets_values": [ - "SD 1.x", - 1.5 - ] - }, - { - "id": 3, - "type": "KSampler", - "pos": [ - 3934.735538106928, - 457.894826176834 - ], - "size": { - "0": 315, - "1": 262 - }, - "flags": {}, - "order": 98, - "mode": 0, - "inputs": [ - { - "name": "model", - "type": "MODEL", - "link": 209 - }, - { - "name": "positive", - "type": "CONDITIONING", - "link": 212 - }, - { - "name": "negative", - "type": "CONDITIONING", - "link": 213 - }, - { - "name": "latent_image", - "type": "LATENT", - "link": 321 - } - ], - "outputs": [ - { - "name": "LATENT", - "type": "LATENT", - "links": [ - 7, - 47 - ], - "slot_index": 0 - } - ], - "properties": { - "Node name for S&R": "KSampler" - }, - "widgets_values": [ - 1008539459902328, - "fixed", - 4, - 1.9000000000000001, - "lcm", - "sgm_uniform", - 0.8 - ] - }, - { - "id": 44, - "type": "Reroute", - "pos": [ - 3859.735538106928, - 341.89482617683393 - ], - "size": [ - 75, - 26 - ], - "flags": {}, - "order": 77, - "mode": 0, - "inputs": [ - { - "name": "", - "type": "*", - "link": 298 - } - ], - "outputs": [ - { - "name": "", - "type": "CONDITIONING", - "links": [ - 212, - 215 - ], - "slot_index": 0 - } - ], - "properties": { - "showOutputText": false, - "horizontal": false - } - }, - { - "id": 45, - "type": "Reroute", - "pos": [ - 3857.735538106928, - 384.89482617683393 - ], - "size": [ - 75, - 26 - ], - "flags": {}, - "order": 78, - "mode": 0, - "inputs": [ - { - "name": "", - "type": "*", - "link": 297 - } - ], - "outputs": [ - { - "name": "", - "type": "CONDITIONING", - "links": [ - 213, - 216 - ], - "slot_index": 0 - } - ], - "properties": { - "showOutputText": false, - "horizontal": false - } - }, - { - "id": 121, - "type": "Note", - "pos": [ - 5265.63240896149, - 398.05258691158303 - ], - "size": { - "0": 345.6462097167969, - "1": 108.14704895019531 - }, - "flags": {}, - "order": 0, - "mode": 4, - "properties": { - "text": "" - }, - "widgets_values": [ - "for the second sampler, we sample the whole image. Since we only sampled the particles in the first, we still retain some \"washing over\" effect.\n\n" - ], - "color": "#432", - "bgcolor": "#653" - }, - { - "id": 36, - "type": "VAEDecode", - "pos": [ - 6465.447599460892, - 301.0788879967691 - ], - "size": { - "0": 210, - "1": 46 - }, - "flags": {}, - "order": 103, - "mode": 0, - "inputs": [ - { - "name": "samples", - "type": "LATENT", - "link": 52 - }, - { - "name": "vae", - "type": "VAE", - "link": 304 - } - ], - "outputs": [ - { - "name": "IMAGE", - "type": "IMAGE", - "links": [ - 217 - ], - "slot_index": 0 - } - ], - "properties": { - "Node name for S&R": "VAEDecode" - } - }, - { - "id": 114, - "type": "ImageCASharpening+", - "pos": [ - 6627.447599460892, - 436.0788879967691 - ], - "size": { - "0": 315, - "1": 58 - }, - "flags": {}, - "order": 104, - "mode": 0, - "inputs": [ - { - "name": "image", - "type": "IMAGE", - "link": 217 - } - ], - "outputs": [ - { - "name": "IMAGE", - "type": "IMAGE", - "links": [ - 219 - ], - "shape": 3, - "slot_index": 0 - } - ], - "properties": { - "Node name for S&R": "ImageCASharpening+" - }, - "widgets_values": [ - 0.15 - ] - }, - { - "id": 113, - "type": "UpscaleModelLoader", - "pos": [ - 6980.447599460892, - 571.0788879967691 - ], - "size": { - "0": 315, - "1": 58 - }, - "flags": {}, - "order": 1, - "mode": 4, - "outputs": [ - { - "name": "UPSCALE_MODEL", - "type": "UPSCALE_MODEL", - "links": [ - 202 - ], - "shape": 3 - } - ], - "properties": { - "Node name for S&R": "UpscaleModelLoader" - }, - "widgets_values": [ - "RealESRGAN_x2.pth" - ] - }, - { - "id": 112, - "type": "ImageUpscaleWithModel", - "pos": [ - 7067.447599460892, - 357.0788879967691 - ], - "size": { - "0": 241.79998779296875, - "1": 46 - }, - "flags": {}, - "order": 105, - "mode": 4, - "inputs": [ - { - "name": "upscale_model", - "type": "UPSCALE_MODEL", - "link": 202, - "slot_index": 0 - }, - { - "name": "image", - "type": "IMAGE", - "link": 219 - } - ], - "outputs": [ - { - "name": "IMAGE", - "type": "IMAGE", - "links": [ - 336 - ], - "shape": 3, - "slot_index": 0 - } - ], - "properties": { - "Node name for S&R": "ImageUpscaleWithModel" - } - }, - { - "id": 90, - "type": "ConstrainImageforVideo|pysssss", - "pos": [ - -3975.6972251206093, - 916.6434507532306 - ], - "size": { - "0": 315, - "1": 154 - }, - "flags": {}, - "order": 32, - "mode": 0, - "inputs": [ - { - "name": "images", - "type": "IMAGE", - "link": 154 - } - ], - "outputs": [ - { - "name": "IMAGE", - "type": "IMAGE", - "links": [ - 156 - ], - "shape": 3, - "slot_index": 0 - } - ], - "properties": { - "Node name for S&R": "ConstrainImageforVideo|pysssss" - }, - "widgets_values": [ - 768, - 768, - 0, - 0, - "no" - ] - }, - { - "id": 30, - "type": "IPAdapterUnifiedLoader", - "pos": [ - 701.3299330433808, - 184.2781828220632 - ], - "size": { - "0": 315, - "1": 78 - }, - "flags": {}, - "order": 58, - "mode": 0, - "inputs": [ - { - "name": "model", - "type": "MODEL", - "link": 290 - }, - { - "name": "ipadapter", - "type": "IPADAPTER", - "link": null - } - ], - "outputs": [ - { - "name": "model", - "type": "MODEL", - "links": [ - 182 - ], - "shape": 3, - "slot_index": 0 - }, - { - "name": "ipadapter", - "type": "IPADAPTER", - "links": [ - 183, - 196 - ], - "shape": 3, - "slot_index": 1 - } - ], - "properties": { - "Node name for S&R": "IPAdapterUnifiedLoader" - }, - "widgets_values": [ - "PLUS (high strength)" - ] - }, - { - "id": 26, - "type": "_mfc", - "pos": [ - 1185.3299330433806, - 1087.2781828220636 - ], - "size": { - "0": 315, - "1": 130 - }, - "flags": {}, - "order": 87, - "mode": 0, - "inputs": [ - { - "name": "image", - "type": "IMAGE", - "link": 102 - } - ], - "outputs": [ - { - "name": "MASK", - "type": "MASK", - "links": [ - 249 - ], - "shape": 3, - "slot_index": 0 - } - ], - "properties": { - "Node name for S&R": "_mfc" - }, - "widgets_values": [ - 50, - 100, - 150, - 0 - ] - }, - { - "id": 105, - "type": "IPAdapterAdvanced", - "pos": [ - 705.3299330433808, - 693.2781828220633 - ], - "size": { - "0": 315, - "1": 326 - }, - "flags": {}, - "order": 90, - "mode": 0, - "inputs": [ - { - "name": "model", - "type": "MODEL", - "link": 182 - }, - { - "name": "ipadapter", - "type": "IPADAPTER", - "link": 183 - }, - { - "name": "image", - "type": "IMAGE", - "link": 197 - }, - { - "name": "image_negative", - "type": "IMAGE", - "link": null - }, - { - "name": "attn_mask", - "type": "MASK", - "link": 249 - }, - { - "name": "clip_vision", - "type": "CLIP_VISION", - "link": null - } - ], - "outputs": [ - { - "name": "MODEL", - "type": "MODEL", - "links": [ - 187 - ], - "shape": 3 - } - ], - "properties": { - "Node name for S&R": "IPAdapterAdvanced" - }, - "widgets_values": [ - 0.5, - "linear", - "concat", - 0, - 1, - "V only" - ] - }, - { - "id": 106, - "type": "IPAdapterAdvanced", - "pos": [ - 1178.3299330433806, - 691.2781828220633 - ], - "size": { - "0": 315, - "1": 326 - }, - "flags": {}, - "order": 93, - "mode": 0, - "inputs": [ - { - "name": "model", - "type": "MODEL", - "link": 187 - }, - { - "name": "ipadapter", - "type": "IPADAPTER", - "link": 196 - }, - { - "name": "image", - "type": "IMAGE", - "link": 198 - }, - { - "name": "image_negative", - "type": "IMAGE", - "link": null - }, - { - "name": "attn_mask", - "type": "MASK", - "link": 250 - }, - { - "name": "clip_vision", - "type": "CLIP_VISION", - "link": null - } - ], - "outputs": [ - { - "name": "MODEL", - "type": "MODEL", - "links": [ - 191 - ], - "shape": 3 - } - ], - "properties": { - "Node name for S&R": "IPAdapterAdvanced" - }, - "widgets_values": [ - 0.5, - "linear", - "concat", - 0, - 1, - "V only" - ] - }, - { - "id": 27, - "type": "_mfc", - "pos": [ - 700.3299330433808, - 1096.2781828220636 - ], - "size": { - "0": 315, - "1": 130 - }, - "flags": {}, - "order": 88, - "mode": 0, - "inputs": [ - { - "name": "image", - "type": "IMAGE", - "link": 246 - } - ], - "outputs": [ - { - "name": "MASK", - "type": "MASK", - "links": [ - 250 - ], - "shape": 3, - "slot_index": 0 - } - ], - "properties": { - "Node name for S&R": "_mfc" - }, - "widgets_values": [ - 255, - 0, - 0, - 0 - ] - }, - { - "id": 17, - "type": "_mfc", - "pos": [ - -3540, - 1320 - ], - "size": { - "0": 307.56854248046875, - "1": 130 - }, - "flags": {}, - "order": 55, - "mode": 0, - "inputs": [ - { - "name": "image", - "type": "IMAGE", - "link": 18 - } - ], - "outputs": [ - { - "name": "MASK", - "type": "MASK", - "links": [ - 207 - ], - "shape": 3, - "slot_index": 0 - } - ], - "properties": { - "Node name for S&R": "_mfc" - }, - "widgets_values": [ - 255, - 255, - 255, - 0 - ] - }, - { - "id": 10, - "type": "EmptyImage", - "pos": [ - -3550, - 1160 - ], - "size": { - "0": 315, - "1": 130 - }, - "flags": {}, - "order": 49, - "mode": 0, - "inputs": [ - { - "name": "width", - "type": "INT", - "link": 158, - "widget": { - "name": "width" - } - }, - { - "name": "height", - "type": "INT", - "link": 159, - "widget": { - "name": "height" - } - }, - { - "name": "batch_size", - "type": "INT", - "link": 160, - "widget": { - "name": "batch_size" - } - } - ], - "outputs": [ - { - "name": "IMAGE", - "type": "IMAGE", - "links": [ - 18 - ], - "shape": 3, - "slot_index": 0 - } - ], - "properties": { - "Node name for S&R": "EmptyImage" - }, - "widgets_values": [ - 512, - 512, - 64, - 0 - ] - }, - { - "id": 130, - "type": "DownloadOpenUnmixModel", - "pos": [ - -4293.082839590915, - 1874.6612607253853 - ], - "size": { - "0": 361.20001220703125, - "1": 58 - }, - "flags": {}, - "order": 2, - "mode": 0, - "outputs": [ - { - "name": "OPEN_UNMIX_MODEL", - "type": "OPEN_UNMIX_MODEL", - "links": [ - 226 - ], - "shape": 3, - "slot_index": 0 - } - ], - "properties": { - "Node name for S&R": "DownloadOpenUnmixModel" - }, - "widgets_values": [ - "umxl" - ] - }, - { - "id": 135, - "type": "PreviewAudio", - "pos": [ - -3781.0828395909157, - 2229.661260725381 - ], - "size": { - "0": 315, - "1": 76.00011444091797 - }, - "flags": {}, - "order": 40, - "mode": 0, - "inputs": [ - { - "name": "audio", - "type": "AUDIO", - "link": 238 - } - ], - "properties": { - "Node name for S&R": "PreviewAudio" - }, - "widgets_values": [ - null - ] - }, - { - "id": 60, - "type": "Reroute", - "pos": [ - 620.329933043381, - 1202.2781828220634 - ], - "size": [ - 75, - 26 - ], - "flags": {}, - "order": 84, - "mode": 0, - "inputs": [ - { - "name": "", - "type": "*", - "link": 107 - } - ], - "outputs": [ - { - "name": "", - "type": "IMAGE", - "links": [ - 102, - 246 - ], - "slot_index": 0 - } - ], - "properties": { - "showOutputText": false, - "horizontal": false - } - }, - { - "id": 125, - "type": "StaticBody", - "pos": [ - -1313.8830345995825, - 792.1086069314872 - ], - "size": { - "0": 243.60000610351562, - "1": 250 - }, - "flags": { - "collapsed": false - }, - "order": 26, - "mode": 0, - "inputs": [ - { - "name": "previous_body", - "type": "STATIC_BODY", - "link": 223, - "slot_index": 0 - } - ], - "outputs": [ - { - "name": "STATIC_BODY", - "type": "STATIC_BODY", - "links": [ - 222 - ], - "shape": 3 - } - ], - "properties": { - "Node name for S&R": "StaticBody" - }, - "widgets_values": [ - "segment", - 1, - 0, - 1, - 1, - 0.9, - 0.5, - true, - "(255,255,255)" - ] - }, - { - "id": 124, - "type": "StaticBody", - "pos": [ - -1314.8830345995825, - 1087.1086069314877 - ], - "size": { - "0": 243.60000610351562, - "1": 250 - }, - "flags": { - "collapsed": false - }, - "order": 34, - "mode": 0, - "inputs": [ - { - "name": "previous_body", - "type": "STATIC_BODY", - "link": 222, - "slot_index": 0 - } - ], - "outputs": [ - { - "name": "STATIC_BODY", - "type": "STATIC_BODY", - "links": [ - 221 - ], - "shape": 3 - } - ], - "properties": { - "Node name for S&R": "StaticBody" - }, - "widgets_values": [ - "segment", - 0, - 0, - 0, - 1, - 0.9, - 0.5, - true, - "(255,255,255)" - ] - }, - { - "id": 126, - "type": "StaticBody", - "pos": [ - -1293.8830345995827, - 747.1086069314872 - ], - "size": { - "0": 243.60000610351562, - "1": 250 - }, - "flags": { - "collapsed": true - }, - "order": 3, - "mode": 4, - "inputs": [ - { - "name": "previous_body", - "type": "STATIC_BODY", - "link": null - } - ], - "outputs": [ - { - "name": "STATIC_BODY", - "type": "STATIC_BODY", - "links": [ - 223 - ], - "shape": 3 - } - ], - "properties": { - "Node name for S&R": "StaticBody" - }, - "widgets_values": [ - "segment", - 0, - 0.99, - 1, - 0.99, - 0.2, - 0.5, - true, - "(255,255,255)" - ] - }, - { - "id": 117, - "type": "Note", - "pos": [ - -697.8830345995831, - 219.10860693148578 - ], - "size": { - "0": 210, - "1": 58 - }, - "flags": {}, - "order": 4, - "mode": 0, - "properties": { - "text": "" - }, - "widgets_values": [ - "we have two particle emitters, one red one blue" - ], - "color": "#432", - "bgcolor": "#653" - }, - { - "id": 142, - "type": "Note", - "pos": [ - -1299.8830345995827, - 695.1086069314872 - ], - "size": { - "0": 210, - "1": 58 - }, - "flags": {}, - "order": 5, - "mode": 0, - "properties": { - "text": "" - }, - "widgets_values": [ - "build the walls\n" - ], - "color": "#432", - "bgcolor": "#653" - }, - { - "id": 143, - "type": "Note", - "pos": [ - -1280.8830345995827, - 306.1086069314861 - ], - "size": { - "0": 210, - "1": 58 - }, - "flags": {}, - "order": 6, - "mode": 0, - "properties": { - "text": "" - }, - "widgets_values": [ - "modulate speed with kick drum\n" - ], - "color": "#432", - "bgcolor": "#653" - }, - { - "id": 144, - "type": "Note", - "pos": [ - -365.88303459958274, - 952.1086069314878 - ], - "size": { - "0": 311.76348876953125, - "1": 194.08082580566406 - }, - "flags": {}, - "order": 7, - "mode": 0, - "properties": { - "text": "" - }, - "widgets_values": [ - "using start and end frames on particle emitters, and particle lifetime on the simulation, we achieve this effect" - ], - "color": "#432", - "bgcolor": "#653" - }, - { - "id": 137, - "type": "AudioFilter", - "pos": [ - -3752.4112818275444, - 1945.2478222458992 - ], - "size": { - "0": 252, - "1": 46 - }, - "flags": {}, - "order": 42, - "mode": 0, - "inputs": [ - { - "name": "audio", - "type": "AUDIO", - "link": 241 - }, - { - "name": "filters", - "type": "FREQUENCY_FILTER", - "link": 240 - } - ], - "outputs": [ - { - "name": "AUDIO", - "type": "AUDIO", - "links": [ - 242 - ], - "shape": 3, - "slot_index": 0 - } - ], - "properties": { - "Node name for S&R": "AudioFilter" - } - }, - { - "id": 136, - "type": "FrequencyFilterPreset", - "pos": [ - -3803.411281827543, - 1842.2478222458994 - ], - "size": { - "0": 344.3999938964844, - "1": 58 - }, - "flags": {}, - "order": 8, - "mode": 0, - "inputs": [ - { - "name": "previous_filter", - "type": "FREQUENCY_FILTER", - "link": null - } - ], - "outputs": [ - { - "name": "FREQUENCY_FILTER", - "type": "FREQUENCY_FILTER", - "links": [ - 240 - ], - "shape": 3, - "slot_index": 0 - } - ], - "properties": { - "Node name for S&R": "FrequencyFilterPreset" - }, - "widgets_values": [ - "isolate_kick_drum" - ] - }, - { - "id": 146, - "type": "PreviewImage", - "pos": [ - -3353.41128182755, - 2093.247822245896 - ], - "size": { - "0": 318.3671569824219, - "1": 246 - }, - "flags": {}, - "order": 64, - "mode": 0, - "inputs": [ - { - "name": "images", - "type": "IMAGE", - "link": 253 - } - ], - "properties": { - "Node name for S&R": "PreviewImage" - } - }, - { - "id": 40, - "type": "GrowMask", - "pos": [ - 2922.463870968055, - 472.8715993418426 - ], - "size": { - "0": 315, - "1": 82 - }, - "flags": {}, - "order": 89, - "mode": 0, - "inputs": [ - { - "name": "mask", - "type": "MASK", - "link": 301 - } - ], - "outputs": [ - { - "name": "MASK", - "type": "MASK", - "links": [ - 56, - 108 - ], - "shape": 3, - "slot_index": 0 - } - ], - "properties": { - "Node name for S&R": "GrowMask" - }, - "widgets_values": [ - 9, - true - ] - }, - { - "id": 62, - "type": "MaskToImage", - "pos": [ - 2995.4638709680544, - 398.8715993418426 - ], - "size": { - "0": 210, - "1": 26 - }, - "flags": {}, - "order": 92, - "mode": 0, - "inputs": [ - { - "name": "mask", - "type": "MASK", - "link": 108 - } - ], - "outputs": [ - { - "name": "IMAGE", - "type": "IMAGE", - "links": [ - 192 - ], - "shape": 3, - "slot_index": 0 - } - ], - "properties": { - "Node name for S&R": "MaskToImage" - } - }, - { - "id": 119, - "type": "Note", - "pos": [ - 2949.4638709680544, - 236.87159934184268 - ], - "size": { - "0": 276.56475830078125, - "1": 96.5937728881836 - }, - "flags": {}, - "order": 9, - "mode": 0, - "properties": { - "text": "" - }, - "widgets_values": [ - "the latent mask ensures nothing but the masked areas will be sampled\n\nwe expand the masks to give the models more area to work with. Increasing particle size would work too" - ], - "color": "#432", - "bgcolor": "#653" - }, - { - "id": 103, - "type": "GravityWell", - "pos": [ - -362, - 1219 - ], - "size": { - "0": 330, - "1": 202 - }, - "flags": {}, - "order": 10, - "mode": 0, - "inputs": [ - { - "name": "previous_well", - "type": "GRAVITY_WELL", - "link": null - } - ], - "outputs": [ - { - "name": "GRAVITY_WELL", - "type": "GRAVITY_WELL", - "links": [ - 181 - ], - "shape": 3 - } - ], - "properties": { - "Node name for S&R": "GravityWell" - }, - "widgets_values": [ - 0.5, - 0.5, - 5000, - 300, - "attract", - "(255,127,0)", - 0 - ] - }, - { - "id": 133, - "type": "AudioFeatureExtractor", - "pos": [ - -3792.4112818275435, - 2048.2478222458985 - ], - "size": { - "0": 361.20001220703125, - "1": 78 - }, - "flags": {}, - "order": 51, - "mode": 0, - "inputs": [ - { - "name": "audio", - "type": "AUDIO", - "link": 242 - }, - { - "name": "feature_pipe", - "type": "FEATURE_PIPE", - "link": 232 - } - ], - "outputs": [ - { - "name": "FEATURE", - "type": "FEATURE", - "links": [ - 251 - ], - "shape": 3, - "slot_index": 0 - }, - { - "name": "FEATURE_PIPE", - "type": "FEATURE_PIPE", - "links": null, - "shape": 3 - } - ], - "properties": { - "Node name for S&R": "AudioFeatureExtractor" - }, - "widgets_values": [ - "amplitude_envelope" - ] - }, - { - "id": 16, - "type": "VAEEncode", - "pos": [ - -3495, - 836 - ], - "size": { - "0": 210, - "1": 46 - }, - "flags": {}, - "order": 47, - "mode": 0, - "inputs": [ - { - "name": "pixels", - "type": "IMAGE", - "link": 157 - }, - { - "name": "vae", - "type": "VAE", - "link": 14 - } - ], - "outputs": [ - { - "name": "LATENT", - "type": "LATENT", - "links": [ - 270 - ], - "shape": 3, - "slot_index": 0 - } - ], - "properties": { - "Node name for S&R": "VAEEncode" - } - }, - { - "id": 152, - "type": "Reroute", - "pos": [ - -2789, - -145 - ], - "size": [ - 75, - 26 - ], - "flags": {}, - "order": 37, - "mode": 0, - "inputs": [ - { - "name": "", - "type": "*", - "link": 264 - } - ], - "outputs": [ - { - "name": "", - "type": "CONDITIONING", - "links": [ - 280 - ], - "slot_index": 0 - } - ], - "properties": { - "showOutputText": false, - "horizontal": false - } - }, - { - "id": 153, - "type": "Reroute", - "pos": [ - -2789, - -63 - ], - "size": [ - 75, - 26 - ], - "flags": {}, - "order": 41, - "mode": 0, - "inputs": [ - { - "name": "", - "type": "*", - "link": 265 - } - ], - "outputs": [ - { - "name": "", - "type": "AUDIO", - "links": [ - 315 - ], - "slot_index": 0 - } - ], - "properties": { - "showOutputText": false, - "horizontal": false - } - }, - { - "id": 155, - "type": "Reroute", - "pos": [ - -2789, - -36 - ], - "size": [ - 75, - 26 - ], - "flags": {}, - "order": 53, - "mode": 0, - "inputs": [ - { - "name": "", - "type": "*", - "link": 270 - } - ], - "outputs": [ - { - "name": "", - "type": "LATENT", - "links": [ - 305 - ], - "slot_index": 0 - } - ], - "properties": { - "showOutputText": false, - "horizontal": false - } - }, - { - "id": 156, - "type": "Reroute", - "pos": [ - -2789, - -8 - ], - "size": [ - 75, - 26 - ], - "flags": {}, - "order": 31, - "mode": 0, - "inputs": [ - { - "name": "", - "type": "*", - "link": 271 - } - ], - "outputs": [ - { - "name": "", - "type": "VAE", - "links": [ - 278 - ], - "slot_index": 0 - } - ], - "properties": { - "showOutputText": false, - "horizontal": false - } - }, - { - "id": 151, - "type": "Reroute", - "pos": [ - -2789, - -172 - ], - "size": [ - 75, - 26 - ], - "flags": {}, - "order": 36, - "mode": 0, - "inputs": [ - { - "name": "", - "type": "*", - "link": 263 - } - ], - "outputs": [ - { - "name": "", - "type": "CONDITIONING", - "links": [ - 279 - ], - "slot_index": 0 - } - ], - "properties": { - "showOutputText": false, - "horizontal": false - } - }, - { - "id": 166, - "type": "Reroute", - "pos": [ - -224, - -125 - ], - "size": [ - 75, - 26 - ], - "flags": {}, - "order": 45, - "mode": 0, - "inputs": [ - { - "name": "", - "type": "*", - "link": 280, - "slot_index": 0 - } - ], - "outputs": [ - { - "name": "", - "type": "CONDITIONING", - "links": [ - 283 - ], - "slot_index": 0 - } - ], - "properties": { - "showOutputText": false, - "horizontal": false - } - }, - { - "id": 165, - "type": "Reroute", - "pos": [ - -225, - -154 - ], - "size": [ - 75, - 26 - ], - "flags": {}, - "order": 44, - "mode": 0, - "inputs": [ - { - "name": "", - "type": "*", - "link": 279 - } - ], - "outputs": [ - { - "name": "", - "type": "CONDITIONING", - "links": [ - 284 - ], - "slot_index": 0 - } - ], - "properties": { - "showOutputText": false, - "horizontal": false - } - }, - { - "id": 154, - "type": "Reroute", - "pos": [ - -2789, - -91 - ], - "size": [ - 75, - 26 - ], - "flags": {}, - "order": 63, - "mode": 0, - "inputs": [ - { - "name": "", - "type": "*", - "link": 266 - } - ], - "outputs": [ - { - "name": "", - "type": "FEATURE", - "links": [ - 285 - ], - "slot_index": 0 - } - ], - "properties": { - "showOutputText": false, - "horizontal": false - } - }, - { - "id": 57, - "type": "Reroute", - "pos": [ - -2789, - -119 - ], - "size": [ - 75, - 26 - ], - "flags": {}, - "order": 61, - "mode": 0, - "inputs": [ - { - "name": "", - "type": "*", - "link": 207 - } - ], - "outputs": [ - { - "name": "", - "type": "MASK", - "links": [ - 287 - ], - "slot_index": 0 - } - ], - "properties": { - "showOutputText": false, - "horizontal": false - } - }, - { - "id": 168, - "type": "Reroute", - "pos": [ - -346, - -100 - ], - "size": [ - 75, - 26 - ], - "flags": {}, - "order": 67, - "mode": 0, - "inputs": [ - { - "name": "", - "type": "*", - "link": 287 - } - ], - "outputs": [ - { - "name": "", - "type": "MASK", - "links": [ - 288 - ], - "slot_index": 0 - } - ], - "properties": { - "showOutputText": false, - "horizontal": false - } - }, - { - "id": 118, - "type": "Note", - "pos": [ - -112, - 168 - ], - "size": { - "0": 306.046630859375, - "1": 133.32003784179688 - }, - "flags": {}, - "order": 11, - "mode": 0, - "properties": { - "text": "" - }, - "widgets_values": [ - "we send the IMAGE output to the ip adapters so that we can mask the separate colors" - ], - "color": "#432", - "bgcolor": "#653" - }, - { - "id": 169, - "type": "Reroute", - "pos": [ - 587.2406207102108, - 23.54918030884039 - ], - "size": [ - 75, - 26 - ], - "flags": {}, - "order": 52, - "mode": 0, - "inputs": [ - { - "name": "", - "type": "*", - "link": 289 - } - ], - "outputs": [ - { - "name": "", - "type": "MODEL", - "links": [ - 290 - ], - "slot_index": 0 - } - ], - "properties": { - "showOutputText": false, - "horizontal": false - } - }, - { - "id": 150, - "type": "Reroute", - "pos": [ - -2791, - 15 - ], - "size": [ - 75, - 26 - ], - "flags": {}, - "order": 43, - "mode": 0, - "inputs": [ - { - "name": "", - "type": "*", - "link": 323 - } - ], - "outputs": [ - { - "name": "", - "type": "MODEL", - "links": [ - 289 - ], - "slot_index": 0 - } - ], - "properties": { - "showOutputText": false, - "horizontal": false - } - }, - { - "id": 160, - "type": "Reroute", - "pos": [ - 1020, - -110 - ], - "size": [ - 75, - 26 - ], - "flags": {}, - "order": 72, - "mode": 0, - "inputs": [ - { - "name": "", - "type": "*", - "link": 293 - } - ], - "outputs": [ - { - "name": "", - "type": "CONDITIONING", - "links": [ - 295 - ], - "slot_index": 0 - } - ], - "properties": { - "showOutputText": false, - "horizontal": false - } - }, - { - "id": 159, - "type": "Reroute", - "pos": [ - 1020, - -130 - ], - "size": [ - 75, - 26 - ], - "flags": {}, - "order": 71, - "mode": 0, - "inputs": [ - { - "name": "", - "type": "*", - "link": 292 - } - ], - "outputs": [ - { - "name": "", - "type": "CONDITIONING", - "links": [ - 296 - ], - "slot_index": 0 - } - ], - "properties": { - "showOutputText": false, - "horizontal": false - } - }, - { - "id": 170, - "type": "Reroute", - "pos": [ - 3720, - -88.27430795081773 - ], - "size": [ - 75, - 26 - ], - "flags": {}, - "order": 75, - "mode": 0, - "inputs": [ - { - "name": "", - "type": "*", - "link": 295 - } - ], - "outputs": [ - { - "name": "", - "type": "CONDITIONING", - "links": [ - 297 - ], - "slot_index": 0 - } - ], - "properties": { - "showOutputText": false, - "horizontal": false - } - }, - { - "id": 171, - "type": "Reroute", - "pos": [ - 3720, - -121.99592625211795 - ], - "size": [ - 75, - 26 - ], - "flags": {}, - "order": 74, - "mode": 0, - "inputs": [ - { - "name": "", - "type": "*", - "link": 296 - } - ], - "outputs": [ - { - "name": "", - "type": "CONDITIONING", - "links": [ - 298 - ], - "slot_index": 0 - } - ], - "properties": { - "showOutputText": false, - "horizontal": false - } - }, - { - "id": 12, - "type": "ParticleEmissionMask", - "pos": [ - -171.88303459958243, - 358.1086069314863 - ], - "size": { - "0": 360.8669128417969, - "1": 474 - }, - "flags": {}, - "order": 82, - "mode": 0, - "inputs": [ - { - "name": "masks", - "type": "MASK", - "link": 288 - }, - { - "name": "emitters", - "type": "PARTICLE_EMITTER", - "link": 334, - "slot_index": 1 - }, - { - "name": "vortices", - "type": "VORTEX", - "link": null, - "slot_index": 2 - }, - { - "name": "wells", - "type": "GRAVITY_WELL", - "link": 181, - "slot_index": 3 - }, - { - "name": "static_bodies", - "type": "STATIC_BODY", - "link": 221, - "slot_index": 4 - } - ], - "outputs": [ - { - "name": "MASK", - "type": "MASK", - "links": [ - 299 - ], - "shape": 3, - "slot_index": 0 - }, - { - "name": "IMAGE", - "type": "IMAGE", - "links": [ - 107, - 317 - ], - "shape": 3, - "slot_index": 1 - } - ], - "properties": { - "Node name for S&R": "ParticleEmissionMask" - }, - "widgets_values": [ - 1, - false, - 0, - 0, - 1440, - 3.5, - 0, - 0, - 0, - 0, - 0, - false, - 1, - 1, - 1 - ] - }, - { - "id": 161, - "type": "Reroute", - "pos": [ - 268, - -90 - ], - "size": [ - 75, - 26 - ], - "flags": {}, - "order": 83, - "mode": 0, - "inputs": [ - { - "name": "", - "type": "*", - "link": 299 - } - ], - "outputs": [ - { - "name": "", - "type": "MASK", - "links": [ - 300 - ], - "slot_index": 0 - } - ], - "properties": { - "showOutputText": false, - "horizontal": false - } - }, - { - "id": 172, - "type": "Reroute", - "pos": [ - 2900.890186935795, - -57.83110864059398 - ], - "size": [ - 75, - 26 - ], - "flags": {}, - "order": 86, - "mode": 0, - "inputs": [ - { - "name": "", - "type": "*", - "link": 300 - } - ], - "outputs": [ - { - "name": "", - "type": "MASK", - "links": [ - 301 - ], - "slot_index": 0 - } - ], - "properties": { - "showOutputText": false, - "horizontal": false - } - }, - { - "id": 164, - "type": "Reroute", - "pos": [ - 3720, - 40 - ], - "size": [ - 75, - 26 - ], - "flags": {}, - "order": 38, - "mode": 0, - "inputs": [ - { - "name": "", - "type": "*", - "link": 278 - } - ], - "outputs": [ - { - "name": "", - "type": "VAE", - "links": [ - 302, - 303 - ], - "slot_index": 0 - } - ], - "properties": { - "showOutputText": false, - "horizontal": false - } - }, - { - "id": 173, - "type": "Reroute", - "pos": [ - 6413.825474642017, - 70.86294063793503 - ], - "size": [ - 75, - 26 - ], - "flags": {}, - "order": 46, - "mode": 0, - "inputs": [ - { - "name": "", - "type": "*", - "link": 303 - } - ], - "outputs": [ - { - "name": "", - "type": "VAE", - "links": [ - 304 - ], - "slot_index": 0 - } - ], - "properties": { - "showOutputText": false, - "horizontal": false - } - }, - { - "id": 20, - "type": "ADE_UseEvolvedSampling", - "pos": [ - 1868, - 522 - ], - "size": { - "0": 315, - "1": 118 - }, - "flags": {}, - "order": 95, - "mode": 0, - "inputs": [ - { - "name": "model", - "type": "MODEL", - "link": 191, - "slot_index": 0 - }, - { - "name": "m_models", - "type": "M_MODELS", - "link": 22, - "slot_index": 1 - }, - { - "name": "context_options", - "type": "CONTEXT_OPTIONS", - "link": 211, - "slot_index": 2 - }, - { - "name": "sample_settings", - "type": "SAMPLE_SETTINGS", - "link": null, - "slot_index": 3 - } - ], - "outputs": [ - { - "name": "MODEL", - "type": "MODEL", - "links": [ - 257 - ], - "shape": 3, - "slot_index": 0 - } - ], - "properties": { - "Node name for S&R": "ADE_UseEvolvedSampling" - }, - "widgets_values": [ - "lcm >> sqrt_linear" - ] - }, - { - "id": 122, - "type": "ADE_StandardStaticContextOptions", - "pos": [ - 1873, - 687 - ], - "size": { - "0": 319.20001220703125, - "1": 198 - }, - "flags": {}, - "order": 12, - "mode": 0, - "inputs": [ - { - "name": "prev_context", - "type": "CONTEXT_OPTIONS", - "link": null - }, - { - "name": "view_opts", - "type": "VIEW_OPTS", - "link": null - } - ], - "outputs": [ - { - "name": "CONTEXT_OPTS", - "type": "CONTEXT_OPTIONS", - "links": [ - 211 - ], - "shape": 3, - "slot_index": 0 - } - ], - "properties": { - "Node name for S&R": "ADE_StandardStaticContextOptions" - }, - "widgets_values": [ - 16, - 4, - "pyramid", - false, - 0, - 1 - ] - }, - { - "id": 19, - "type": "ADE_ApplyAnimateDiffModelSimple", - "pos": [ - 1879, - 926 - ], - "size": { - "0": 260.3999938964844, - "1": 114 - }, - "flags": {}, - "order": 27, - "mode": 0, - "inputs": [ - { - "name": "motion_model", - "type": "MOTION_MODEL_ADE", - "link": 28, - "slot_index": 0 - }, - { - "name": "motion_lora", - "type": "MOTION_LORA", - "link": null - }, - { - "name": "scale_multival", - "type": "MULTIVAL", - "link": null - }, - { - "name": "effect_multival", - "type": "MULTIVAL", - "link": null - }, - { - "name": "ad_keyframes", - "type": "AD_KEYFRAMES", - "link": null - } - ], - "outputs": [ - { - "name": "M_MODELS", - "type": "M_MODELS", - "links": [ - 22 - ], - "shape": 3, - "slot_index": 0 - } - ], - "properties": { - "Node name for S&R": "ADE_ApplyAnimateDiffModelSimple" - }, - "widgets_values": [ - "" - ] - }, - { - "id": 25, - "type": "ADE_LoadAnimateDiffModel", - "pos": [ - 1879, - 1093 - ], - "size": { - "0": 315, - "1": 58 - }, - "flags": {}, - "order": 13, - "mode": 0, - "inputs": [ - { - "name": "ad_settings", - "type": "AD_SETTINGS", - "link": null - } - ], - "outputs": [ - { - "name": "MOTION_MODEL", - "type": "MOTION_MODEL_ADE", - "links": [ - 28 - ], - "shape": 3 - } - ], - "properties": { - "Node name for S&R": "ADE_LoadAnimateDiffModel" - }, - "widgets_values": [ - "ALCM_sd15_t2v_beta.ckpt" - ] - }, - { - "id": 148, - "type": "ModelSamplingDiscrete", - "pos": [ - 1856, - 370 - ], - "size": { - "0": 315, - "1": 82 - }, - "flags": {}, - "order": 96, - "mode": 0, - "inputs": [ - { - "name": "model", - "type": "MODEL", - "link": 257 - } - ], - "outputs": [ - { - "name": "MODEL", - "type": "MODEL", - "links": [ - 258 - ], - "shape": 3, - "slot_index": 0 - } - ], - "properties": { - "Node name for S&R": "ModelSamplingDiscrete" - }, - "widgets_values": [ - "lcm", - false - ] - }, - { - "id": 129, - "type": "AudioSeparator", - "pos": [ - -4332, - 2116 - ], - "size": { - "0": 317.4000244140625, - "1": 158 - }, - "flags": {}, - "order": 33, - "mode": 0, - "inputs": [ - { - "name": "model", - "type": "OPEN_UNMIX_MODEL", - "link": 226, - "slot_index": 0 - }, - { - "name": "audio", - "type": "AUDIO", - "link": 227 - }, - { - "name": "video_frames", - "type": "IMAGE", - "link": 228 - } - ], - "outputs": [ - { - "name": "audio", - "type": "AUDIO", - "links": [ - 238, - 265 - ], - "shape": 3, - "slot_index": 0 - }, - { - "name": "drums_audio", - "type": "AUDIO", - "links": [ - 241 - ], - "shape": 3, - "slot_index": 1 - }, - { - "name": "vocals_audio", - "type": "AUDIO", - "links": null, - "shape": 3 - }, - { - "name": "bass_audio", - "type": "AUDIO", - "links": [], - "shape": 3, - "slot_index": 3 - }, - { - "name": "other_audio", - "type": "AUDIO", - "links": null, - "shape": 3 - }, - { - "name": "feature_pipe", - "type": "FEATURE_PIPE", - "links": [ - 232 - ], - "shape": 3, - "slot_index": 5 - } - ], - "properties": { - "Node name for S&R": "AudioSeparator" - }, - "widgets_values": [ - 30 - ] - }, - { - "id": 92, - "type": "GetImageSizeAndCount", - "pos": [ - -3977.6972251206093, - 1156.6434507532335 - ], - "size": { - "0": 210, - "1": 86 - }, - "flags": {}, - "order": 39, - "mode": 0, - "inputs": [ - { - "name": "image", - "type": "IMAGE", - "link": 156 - } - ], - "outputs": [ - { - "name": "image", - "type": "IMAGE", - "links": [ - 157, - 309 - ], - "shape": 3, - "slot_index": 0 - }, - { - "name": "432 width", - "type": "INT", - "links": [ - 158 - ], - "shape": 3, - "slot_index": 1 - }, - { - "name": "768 height", - "type": "INT", - "links": [ - 159 - ], - "shape": 3, - "slot_index": 2 - }, - { - "name": "200 count", - "type": "INT", - "links": [ - 160 - ], - "shape": 3, - "slot_index": 3 - } - ], - "properties": { - "Node name for S&R": "GetImageSizeAndCount" - } - }, - { - "id": 176, - "type": "Reroute", - "pos": [ - -2787, - -201 - ], - "size": [ - 75, - 26 - ], - "flags": {}, - "order": 48, - "mode": 0, - "inputs": [ - { - "name": "", - "type": "*", - "link": 309 - } - ], - "outputs": [ - { - "name": "", - "type": "IMAGE", - "links": [ - 310 - ], - "slot_index": 0 - } - ], - "properties": { - "showOutputText": false, - "horizontal": false - } - }, - { - "id": 177, - "type": "Reroute", - "pos": [ - -220.4294721816832, - -177.81376603521517 - ], - "size": [ - 75, - 26 - ], - "flags": {}, - "order": 54, - "mode": 0, - "inputs": [ - { - "name": "", - "type": "*", - "link": 310 - } - ], - "outputs": [ - { - "name": "", - "type": "IMAGE", - "links": [ - 311 - ], - "slot_index": 0 - } - ], - "properties": { - "showOutputText": false, - "horizontal": false - } - }, - { - "id": 96, - "type": "ControlNetApplyAdvanced", - "pos": [ - 268, - -832 - ], - "size": { - "0": 315, - "1": 166 - }, - "flags": {}, - "order": 66, - "mode": 0, - "inputs": [ - { - "name": "positive", - "type": "CONDITIONING", - "link": 284 - }, - { - "name": "negative", - "type": "CONDITIONING", - "link": 283 - }, - { - "name": "control_net", - "type": "CONTROL_NET", - "link": 171, - "slot_index": 2 - }, - { - "name": "image", - "type": "IMAGE", - "link": 195 - } - ], - "outputs": [ - { - "name": "positive", - "type": "CONDITIONING", - "links": [ - 292 - ], - "shape": 3, - "slot_index": 0 - }, - { - "name": "negative", - "type": "CONDITIONING", - "links": [ - 293 - ], - "shape": 3, - "slot_index": 1 - } - ], - "properties": { - "Node name for S&R": "ControlNetApplyAdvanced" - }, - "widgets_values": [ - 0.28, - 0, - 0.6960000000000001 - ] - }, - { - "id": 108, - "type": "DepthAnything_V2", - "pos": [ - -67, - -789 - ], - "size": { - "0": 210, - "1": 46 - }, - "flags": {}, - "order": 60, - "mode": 0, - "inputs": [ - { - "name": "da_model", - "type": "DAMODEL", - "link": 193, - "slot_index": 0 - }, - { - "name": "images", - "type": "IMAGE", - "link": 311 - } - ], - "outputs": [ - { - "name": "image", - "type": "IMAGE", - "links": [ - 195 - ], - "shape": 3, - "slot_index": 0 - } - ], - "properties": { - "Node name for S&R": "DepthAnything_V2" - } - }, - { - "id": 97, - "type": "ControlNetLoader", - "pos": [ - 288, - -589 - ], - "size": { - "0": 315, - "1": 58 - }, - "flags": {}, - "order": 14, - "mode": 0, - "outputs": [ - { - "name": "CONTROL_NET", - "type": "CONTROL_NET", - "links": [ - 171 - ], - "shape": 3 - } - ], - "properties": { - "Node name for S&R": "ControlNetLoader" - }, - "widgets_values": [ - "control_v11f1p_sd15_depth_fp16.safetensors" - ] - }, - { - "id": 109, - "type": "DownloadAndLoadDepthAnythingV2Model", - "pos": [ - -85, - -651 - ], - "size": { - "0": 315, - "1": 58 - }, - "flags": {}, - "order": 15, - "mode": 0, - "outputs": [ - { - "name": "da_v2_model", - "type": "DAMODEL", - "links": [ - 193 - ], - "shape": 3 - } - ], - "properties": { - "Node name for S&R": "DownloadAndLoadDepthAnythingV2Model" - }, - "widgets_values": [ - "depth_anything_v2_vitl_fp32.safetensors" - ] - }, - { - "id": 174, - "type": "Reroute", - "pos": [ - 2898, - 7 - ], - "size": [ - 75, - 26 - ], - "flags": {}, - "order": 59, - "mode": 0, - "inputs": [ - { - "name": "", - "type": "*", - "link": 305 - } - ], - "outputs": [ - { - "name": "", - "type": "LATENT", - "links": [ - 306, - 312 - ], - "slot_index": 0 - } - ], - "properties": { - "showOutputText": false, - "horizontal": false - } - }, - { - "id": 163, - "type": "Reroute", - "pos": [ - 3720, - 10 - ], - "size": [ - 75, - 26 - ], - "flags": {}, - "order": 65, - "mode": 0, - "inputs": [ - { - "name": "", - "type": "*", - "link": 312 - } - ], - "outputs": [ - { - "name": "", - "type": "LATENT", - "links": [], - "slot_index": 0 - } - ], - "properties": { - "showOutputText": false, - "horizontal": false - } - }, - { - "id": 179, - "type": "Reroute", - "pos": [ - -344, - -67 - ], - "size": [ - 75, - 26 - ], - "flags": {}, - "order": 50, - "mode": 0, - "inputs": [ - { - "name": "", - "type": "*", - "link": 315 - } - ], - "outputs": [ - { - "name": "", - "type": "AUDIO", - "links": [ - 318, - 319 - ], - "slot_index": 0 - } - ], - "properties": { - "showOutputText": false, - "horizontal": false - } - }, - { - "id": 180, - "type": "VHS_VideoCombine", - "pos": [ - 32, - 874 - ], - "size": [ - 315, - 310 - ], - "flags": {}, - "order": 85, - "mode": 0, - "inputs": [ - { - "name": "images", - "type": "IMAGE", - "link": 317 - }, - { - "name": "audio", - "type": "AUDIO", - "link": 318 - }, - { - "name": "meta_batch", - "type": "VHS_BatchManager", - "link": null - }, - { - "name": "vae", - "type": "VAE", - "link": null - } - ], - "outputs": [ - { - "name": "Filenames", - "type": "VHS_FILENAMES", - "links": null, - "shape": 3 - } - ], - "properties": { - "Node name for S&R": "VHS_VideoCombine" - }, - "widgets_values": { - "frame_rate": 30, - "loop_count": 0, - "filename_prefix": "AnimateDiff", - "format": "video/h264-mp4", - "pix_fmt": "yuv420p", - "crf": 19, - "save_metadata": true, - "pingpong": false, - "save_output": false, - "videopreview": { - "hidden": false, - "paused": false, - "params": { - "filename": "AnimateDiff_00078-audio.mp4", - "subfolder": "", - "type": "temp", - "format": "video/h264-mp4", - "frame_rate": 30 - } - } - } - }, - { - "id": 181, - "type": "Note", - "pos": [ - -2660, - 370 - ], - "size": { - "0": 929.05517578125, - "1": 675.6070556640625 - }, - "flags": {}, - "order": 16, - "mode": 0, - "properties": { - "text": "" - }, - "widgets_values": [ - "This workflow at a high level: \n\nWe are loading a video, and changing wherever the particles touch the image.\n\nThe lora has an effect on the area of all the particles, while the color of the particles adds additional effect from the IPAdapter.\n\nWe use multiple particle emitters, starting at different times and pointing in different directions.\n\nWe use the kick drum to control the speed of all the particles." - ], - "color": "#432", - "bgcolor": "#653" - }, - { - "id": 145, - "type": "Note", - "pos": [ - -3922.411281827541, - 1649.2478222458997 - ], - "size": { - "0": 377.5563659667969, - "1": 95.57986450195312 - }, - "flags": {}, - "order": 17, - "mode": 0, - "properties": { - "text": "" - }, - "widgets_values": [ - "we separate the drums, isolate the kick, and fine tune the feature" - ], - "color": "#432", - "bgcolor": "#653" - }, - { - "id": 182, - "type": "Note", - "pos": [ - -3843.9910840550833, - 1353.8088449893194 - ], - "size": { - "0": 210, - "1": 58 - }, - "flags": {}, - "order": 18, - "mode": 0, - "properties": { - "text": "" - }, - "widgets_values": [ - "load the video, make blank masks for this use case" - ], - "color": "#432", - "bgcolor": "#653" - }, - { - "id": 167, - "type": "Reroute", - "pos": [ - -1492, - -87 - ], - "size": [ - 75, - 26 - ], - "flags": {}, - "order": 70, - "mode": 0, - "inputs": [ - { - "name": "", - "type": "*", - "link": 285 - } - ], - "outputs": [ - { - "name": "", - "type": "FEATURE", - "links": [ - 286 - ], - "slot_index": 0 - } - ], - "properties": { - "showOutputText": false, - "horizontal": false - } - }, - { - "id": 18, - "type": "SetLatentNoiseMask", - "pos": [ - 2980.7666021050854, - 615.9845317435357 - ], - "size": { - "0": 210, - "1": 46 - }, - "flags": {}, - "order": 91, - "mode": 0, - "inputs": [ - { - "name": "samples", - "type": "LATENT", - "link": 306 - }, - { - "name": "mask", - "type": "MASK", - "link": 56 - } - ], - "outputs": [ - { - "name": "LATENT", - "type": "LATENT", - "links": [ - 321 - ], - "shape": 3, - "slot_index": 0 - } - ], - "properties": { - "Node name for S&R": "SetLatentNoiseMask" - } - }, - { - "id": 120, - "type": "Note", - "pos": [ - 901, - 1273 - ], - "size": { - "0": 210.61317443847656, - "1": 59.68153381347656 - }, - "flags": {}, - "order": 19, - "mode": 0, - "properties": { - "text": "" - }, - "widgets_values": [ - "apply to red, apply to blue" - ], - "color": "#432", - "bgcolor": "#653" - }, - { - "id": 7, - "type": "CLIPTextEncode", - "pos": [ - -3797, - 467 - ], - "size": { - "0": 425.27801513671875, - "1": 180.6060791015625 - }, - "flags": {}, - "order": 30, - "mode": 0, - "inputs": [ - { - "name": "clip", - "type": "CLIP", - "link": 5 - } - ], - "outputs": [ - { - "name": "CONDITIONING", - "type": "CONDITIONING", - "links": [ - 264 - ], - "slot_index": 0 - } - ], - "properties": { - "Node name for S&R": "CLIPTextEncode" - }, - "widgets_values": [ - "text, watermark" - ] - }, - { - "id": 95, - "type": "LoraLoaderModelOnly", - "pos": [ - -3735.1099941771445, - -9.96545643229408 - ], - "size": { - "0": 315, - "1": 82 - }, - "flags": {}, - "order": 28, - "mode": 0, - "inputs": [ - { - "name": "model", - "type": "MODEL", - "link": 165 - } - ], - "outputs": [ - { - "name": "MODEL", - "type": "MODEL", - "links": [ - 322 - ], - "shape": 3, - "slot_index": 0 - } - ], - "properties": { - "Node name for S&R": "LoraLoaderModelOnly" - }, - "widgets_values": [ - "ral-origami-sd15.safetensors", - 1 - ] - }, - { - "id": 141, - "type": "FeatureMixer", - "pos": [ - -3364, - 1712 - ], - "size": { - "0": 367.79998779296875, - "1": 318 - }, - "flags": {}, - "order": 57, - "mode": 0, - "inputs": [ - { - "name": "feature", - "type": "FEATURE", - "link": 251 - } - ], - "outputs": [ - { - "name": "FEATURE", - "type": "FEATURE", - "links": [ - 266 - ], - "shape": 3, - "slot_index": 0 - }, - { - "name": "FEATURE_VISUALIZATION", - "type": "IMAGE", - "links": [ - 253 - ], - "shape": 3, - "slot_index": 1 - } - ], - "properties": { - "Node name for S&R": "FeatureMixer" - }, - "widgets_values": [ - 1, - 0, - 1, - 1, - 1, - 1, - 1, - 0, - 0, - 1, - 0.5 - ] - }, - { - "id": 178, - "type": "Reroute", - "pos": [ - 2902, - -23 - ], - "size": [ - 75, - 26 - ], - "flags": {}, - "order": 56, - "mode": 0, - "inputs": [ - { - "name": "", - "type": "*", - "link": 319 - } - ], - "outputs": [ - { - "name": "", - "type": "AUDIO", - "links": [ - 314, - 324 - ], - "slot_index": 0 - } - ], - "properties": { - "showOutputText": false, - "horizontal": false - } - }, - { - "id": 186, - "type": "VHS_VideoCombine", - "pos": [ - 4719, - 258 - ], - "size": { - "0": 315, - "1": 310 - }, - "flags": {}, - "order": 101, - "mode": 0, - "inputs": [ - { - "name": "images", - "type": "IMAGE", - "link": 327 - }, - { - "name": "audio", - "type": "*", - "link": null - }, - { - "name": "meta_batch", - "type": "VHS_BatchManager", - "link": null - }, - { - "name": "vae", - "type": "VAE", - "link": null - } - ], - "outputs": [ - { - "name": "Filenames", - "type": "VHS_FILENAMES", - "links": null, - "shape": 3 - } - ], - "properties": { - "Node name for S&R": "VHS_VideoCombine" - }, - "widgets_values": { - "frame_rate": 30, - "loop_count": 0, - "filename_prefix": "AnimateDiff", - "format": "video/h264-mp4", - "pix_fmt": "yuv420p", - "crf": 19, - "save_metadata": true, - "pingpong": false, - "save_output": true, - "videopreview": { - "hidden": false, - "paused": false, - "params": { - "filename": "AnimateDiff_02879-audio.mp4", - "subfolder": "", - "type": "output", - "format": "video/h264-mp4", - "frame_rate": 30 - } - } - } - }, - { - "id": 187, - "type": "Reroute", - "pos": [ - 3860.4503163055965, - 306.1783218186079 - ], - "size": [ - 75, - 26 - ], - "flags": {}, - "order": 68, - "mode": 0, - "inputs": [ - { - "name": "", - "type": "*", - "link": 328 - } - ], - "outputs": [ - { - "name": "", - "type": "AUDIO", - "links": [], - "slot_index": 0 - } - ], - "properties": { - "showOutputText": false, - "horizontal": false - } - }, - { - "id": 185, - "type": "Reroute", - "pos": [ - 3724, - -19 - ], - "size": [ - 75, - 26 - ], - "flags": {}, - "order": 62, - "mode": 0, - "inputs": [ - { - "name": "", - "type": "*", - "link": 324 - } - ], - "outputs": [ - { - "name": "", - "type": "AUDIO", - "links": [ - 328, - 330 - ], - "slot_index": 0 - } - ], - "properties": { - "showOutputText": false, - "horizontal": false - } - }, - { - "id": 184, - "type": "LoraLoaderModelOnly", - "pos": [ - -3740, - 115 - ], - "size": { - "0": 315, - "1": 82 - }, - "flags": {}, - "order": 35, - "mode": 4, - "inputs": [ - { - "name": "model", - "type": "MODEL", - "link": 322 - } - ], - "outputs": [ - { - "name": "MODEL", - "type": "MODEL", - "links": [ - 323 - ], - "shape": 3, - "slot_index": 0 - } - ], - "properties": { - "Node name for S&R": "LoraLoaderModelOnly" - }, - "widgets_values": [ - "ALCM_sd15_lora_beta.safetensors", - 1 - ] - }, - { - "id": 4, - "type": "CheckpointLoaderSimple", - "pos": [ - -4305.109994177148, - 340.0345435677062 - ], - "size": { - "0": 315, - "1": 98 - }, - "flags": {}, - "order": 20, - "mode": 0, - "outputs": [ - { - "name": "MODEL", - "type": "MODEL", - "links": [ - 165 - ], - "slot_index": 0 - }, - { - "name": "CLIP", - "type": "CLIP", - "links": [ - 3, - 5 - ], - "slot_index": 1 - }, - { - "name": "VAE", - "type": "VAE", - "links": [ - 14, - 271 - ], - "slot_index": 2 - } - ], - "properties": { - "Node name for S&R": "CheckpointLoaderSimple" - }, - "widgets_values": [ - "photonLCM_v10.safetensors" - ] - }, - { - "id": 183, - "type": "Note", - "pos": [ - -4152, - -20 - ], - "size": { - "0": 354.02020263671875, - "1": 163.20777893066406 - }, - "flags": {}, - "order": 21, - "mode": 0, - "properties": { - "text": "" - }, - "widgets_values": [ - "add the lora, include the trigger word in the prompt\n\nif youre not using an LCM distilled checkpoint, apply the lcm lora" - ], - "color": "#432", - "bgcolor": "#653" - }, - { - "id": 31, - "type": "LoadImage", - "pos": [ - 1155.3299330433806, - 302.27818282206294 - ], - "size": { - "0": 315, - "1": 314 - }, - "flags": {}, - "order": 22, - "mode": 0, - "outputs": [ - { - "name": "IMAGE", - "type": "IMAGE", - "links": [ - 198 - ], - "shape": 3, - "slot_index": 0 - }, - { - "name": "MASK", - "type": "MASK", - "links": null, - "shape": 3 - } - ], - "properties": { - "Node name for S&R": "LoadImage" - }, - "widgets_values": [ - "anime-silver-armoured-android-girl-modern-ai-art-366.webp", - "image" - ] - }, - { - "id": 6, - "type": "CLIPTextEncode", - "pos": [ - -3806, - 253 - ], - "size": { - "0": 422.84503173828125, - "1": 164.31304931640625 - }, - "flags": {}, - "order": 29, - "mode": 0, - "inputs": [ - { - "name": "clip", - "type": "CLIP", - "link": 3 - } - ], - "outputs": [ - { - "name": "CONDITIONING", - "type": "CONDITIONING", - "links": [ - 263 - ], - "slot_index": 0 - } - ], - "properties": { - "Node name for S&R": "CLIPTextEncode" - }, - "widgets_values": [ - "ral-origami falling from the sky transforming everything into ral-origami, trending on artstation, depth of field" - ] - }, - { - "id": 128, - "type": "VHS_LoadAudioUpload", - "pos": [ - -4294.082839590915, - 1665.6612607253858 - ], - "size": { - "0": 226.8000030517578, - "1": 130 - }, - "flags": {}, - "order": 23, - "mode": 0, - "outputs": [ - { - "name": "audio", - "type": "AUDIO", - "links": [ - 227 - ], - "shape": 3, - "slot_index": 0 - } - ], - "properties": { - "Node name for S&R": "VHS_LoadAudioUpload" - }, - "widgets_values": { - "audio": "pexels-polina-tankilevitch-5385809 (1080p).mp4", - "start_time": 0.5, - "duration": 0, - "choose audio to upload": "image" - } - }, - { - "id": 162, - "type": "Reroute", - "pos": [ - 7303, - 6 - ], - "size": [ - 75, - 26 - ], - "flags": {}, - "order": 69, - "mode": 0, - "inputs": [ - { - "name": "", - "type": "*", - "link": 330 - } - ], - "outputs": [ - { - "name": "", - "type": "AUDIO", - "links": [ - 337 - ], - "slot_index": 0 - } - ], - "properties": { - "showOutputText": false, - "horizontal": false - } - }, - { - "id": 189, - "type": "VHS_VideoCombine", - "pos": [ - 7429, - 292 - ], - "size": { - "0": 315, - "1": 310 - }, - "flags": {}, - "order": 106, - "mode": 0, - "inputs": [ - { - "name": "images", - "type": "IMAGE", - "link": 336 - }, - { - "name": "audio", - "type": "AUDIO", - "link": 337 - }, - { - "name": "meta_batch", - "type": "VHS_BatchManager", - "link": null - }, - { - "name": "vae", - "type": "VAE", - "link": null - } - ], - "outputs": [ - { - "name": "Filenames", - "type": "VHS_FILENAMES", - "links": null, - "shape": 3 - } - ], - "properties": { - "Node name for S&R": "VHS_VideoCombine" - }, - "widgets_values": { - "frame_rate": 30, - "loop_count": 0, - "filename_prefix": "AnimateDiff", - "format": "video/h264-mp4", - "pix_fmt": "yuv420p", - "crf": 19, - "save_metadata": true, - "pingpong": false, - "save_output": true, - "videopreview": { - "hidden": false, - "paused": false, - "params": {} - } - } - }, - { - "id": 107, - "type": "VHS_VideoCombine", - "pos": [ - 3380, - 320 - ], - "size": [ - 315, - 334 - ], - "flags": {}, - "order": 94, - "mode": 0, - "inputs": [ - { - "name": "images", - "type": "IMAGE", - "link": 192 - }, - { - "name": "audio", - "type": "AUDIO", - "link": 314 - }, - { - "name": "meta_batch", - "type": "VHS_BatchManager", - "link": null - }, - { - "name": "vae", - "type": "VAE", - "link": null - } - ], - "outputs": [ - { - "name": "Filenames", - "type": "VHS_FILENAMES", - "links": null, - "shape": 3 - } - ], - "properties": { - "Node name for S&R": "VHS_VideoCombine" - }, - "widgets_values": { - "frame_rate": 30, - "loop_count": 0, - "filename_prefix": "AnimateDiff", - "format": "video/nvenc_h264-mp4", - "pix_fmt": "yuv420p", - "bitrate": 10, - "megabit": true, - "save_metadata": false, - "pingpong": false, - "save_output": false, - "videopreview": { - "hidden": false, - "paused": false, - "params": { - "filename": "AnimateDiff_00076-audio.mp4", - "subfolder": "", - "type": "temp", - "format": "video/nvenc_h264-mp4", - "frame_rate": 30 - } - } - } - }, - { - "id": 89, - "type": "VHS_LoadVideo", - "pos": [ - -4340, - 800 - ], - "size": { - "0": 235.1999969482422, - "1": 262 - }, - "flags": {}, - "order": 24, - "mode": 0, - "inputs": [ - { - "name": "meta_batch", - "type": "VHS_BatchManager", - "link": null - }, - { - "name": "vae", - "type": "VAE", - "link": null - } - ], - "outputs": [ - { - "name": "IMAGE", - "type": "IMAGE", - "links": [ - 154, - 228 - ], - "shape": 3, - "slot_index": 0 - }, - { - "name": "frame_count", - "type": "INT", - "links": null, - "shape": 3 - }, - { - "name": "audio", - "type": "AUDIO", - "links": null, - "shape": 3 - }, - { - "name": "video_info", - "type": "VHS_VIDEOINFO", - "links": null, - "shape": 3 - } - ], - "properties": { - "Node name for S&R": "VHS_LoadVideo" - }, - "widgets_values": { - "video": "pexels-polina-tankilevitch-5385809 (1080p).mp4", - "force_rate": 30, - "force_size": "Disabled", - "custom_width": 512, - "custom_height": 512, - "frame_load_cap": 75, - "skip_first_frames": 0, - "select_every_nth": 1, - "choose video to upload": "image", - "videopreview": { - "hidden": false, - "paused": false, - "params": { - "frame_load_cap": 75, - "skip_first_frames": 0, - "force_rate": 30, - "filename": "pexels-polina-tankilevitch-5385809 (1080p).mp4", - "type": "input", - "format": "video/mp4", - "select_every_nth": 1 - } - } - } - }, - { - "id": 32, - "type": "LoadImage", - "pos": [ - 500, - 313 - ], - "size": { - "0": 210, - "1": 314 - }, - "flags": {}, - "order": 25, - "mode": 0, - "outputs": [ - { - "name": "IMAGE", - "type": "IMAGE", - "links": [ - 197 - ], - "shape": 3 - }, - { - "name": "MASK", - "type": "MASK", - "links": null, - "shape": 3 - } - ], - "properties": { - "Node name for S&R": "LoadImage" - }, - "widgets_values": [ - "ddmtface.jpg", - "image" - ] - }, - { - "id": 138, - "type": "ParticleEmitter", - "pos": [ - -691, - 745 - ], - "size": { - "0": 312.3999938964844, - "1": 382 - }, - "flags": {}, - "order": 79, - "mode": 0, - "inputs": [ - { - "name": "previous_emitter", - "type": "PARTICLE_EMITTER", - "link": 339, - "slot_index": 0 - }, - { - "name": "emitter_movement", - "type": "EMITTER_MOVEMENT", - "link": null, - "slot_index": 1 - }, - { - "name": "spring_joint_setting", - "type": "SPRING_JOINT_SETTING", - "link": null, - "slot_index": 2 - }, - { - "name": "particle_modulation", - "type": "PARTICLE_MODULATION", - "link": 341, - "slot_index": 3 - } - ], - "outputs": [ - { - "name": "PARTICLE_EMITTER", - "type": "PARTICLE_EMITTER", - "links": [ - 332 - ], - "shape": 3, - "slot_index": 0 - } - ], - "properties": { - "Node name for S&R": "ParticleEmitter" - }, - "widgets_values": [ - 0.5, - 1, - 270, - 30, - 38.6, - 1, - 38, - "(255,0,0)", - 0, - 100, - 106, - 0 - ] - }, - { - "id": 134, - "type": "ParticleSpeedModulation", - "pos": [ - -1318.8830345995825, - 418.1086069314867 - ], - "size": { - "0": 493.8000183105469, - "1": 222 - }, - "flags": {}, - "order": 73, - "mode": 0, - "inputs": [ - { - "name": "previous_modulation", - "type": "PARTICLE_MODULATION", - "link": null - }, - { - "name": "feature", - "type": "FEATURE", - "link": 286 - } - ], - "outputs": [ - { - "name": "PARTICLE_MODULATION", - "type": "PARTICLE_MODULATION", - "links": [ - 259, - 338, - 341 - ], - "shape": 3, - "slot_index": 0 - } - ], - "properties": { - "Node name for S&R": "ParticleSpeedModulation" - }, - "widgets_values": [ - 0, - 0, - 0, - "ease_in_out", - false, - false, - 529 - ] - }, - { - "id": 149, - "type": "ParticleEmitter", - "pos": [ - -702, - 1178 - ], - "size": { - "0": 312.3999938964844, - "1": 382 - }, - "flags": {}, - "order": 80, - "mode": 0, - "inputs": [ - { - "name": "previous_emitter", - "type": "PARTICLE_EMITTER", - "link": 332, - "slot_index": 0 - }, - { - "name": "emitter_movement", - "type": "EMITTER_MOVEMENT", - "link": null, - "slot_index": 1 - }, - { - "name": "spring_joint_setting", - "type": "SPRING_JOINT_SETTING", - "link": null - }, - { - "name": "particle_modulation", - "type": "PARTICLE_MODULATION", - "link": 259, - "slot_index": 3 - } - ], - "outputs": [ - { - "name": "PARTICLE_EMITTER", - "type": "PARTICLE_EMITTER", - "links": [ - 333 - ], - "shape": 3, - "slot_index": 0 - } - ], - "properties": { - "Node name for S&R": "ParticleEmitter" - }, - "widgets_values": [ - 0, - 0.5, - 0, - 30, - 38.6, - 1, - 38, - "(50,100,150)", - 0, - 185, - 188, - 0 - ] - }, - { - "id": 188, - "type": "ParticleEmitter", - "pos": [ - -704, - 1590 - ], - "size": { - "0": 312.3999938964844, - "1": 382 - }, - "flags": {}, - "order": 81, - "mode": 0, - "inputs": [ - { - "name": "previous_emitter", - "type": "PARTICLE_EMITTER", - "link": 333, - "slot_index": 0 - }, - { - "name": "emitter_movement", - "type": "EMITTER_MOVEMENT", - "link": null, - "slot_index": 1 - }, - { - "name": "spring_joint_setting", - "type": "SPRING_JOINT_SETTING", - "link": null - }, - { - "name": "particle_modulation", - "type": "PARTICLE_MODULATION", - "link": null, - "slot_index": 3 - } - ], - "outputs": [ - { - "name": "PARTICLE_EMITTER", - "type": "PARTICLE_EMITTER", - "links": [ - 334 - ], - "shape": 3, - "slot_index": 0 - } - ], - "properties": { - "Node name for S&R": "ParticleEmitter" - }, - "widgets_values": [ - 0, - 0.5, - 0, - 30, - 38.6, - 1, - 38, - "(50,100,150)", - 0, - 265, - 270, - 0 - ] - }, - { - "id": 13, - "type": "ParticleEmitter", - "pos": [ - -689, - 319 - ], - "size": { - "0": 312.3999938964844, - "1": 382 - }, - "flags": {}, - "order": 76, - "mode": 0, - "inputs": [ - { - "name": "previous_emitter", - "type": "PARTICLE_EMITTER", - "link": null, - "slot_index": 0 - }, - { - "name": "emitter_movement", - "type": "EMITTER_MOVEMENT", - "link": null, - "slot_index": 1 - }, - { - "name": "spring_joint_setting", - "type": "SPRING_JOINT_SETTING", - "link": null - }, - { - "name": "particle_modulation", - "type": "PARTICLE_MODULATION", - "link": 338, - "slot_index": 3 - } - ], - "outputs": [ - { - "name": "PARTICLE_EMITTER", - "type": "PARTICLE_EMITTER", - "links": [ - 339 - ], - "shape": 3, - "slot_index": 0 - } - ], - "properties": { - "Node name for S&R": "ParticleEmitter" - }, - "widgets_values": [ - 0.5, - 0, - 90, - 30, - 38.6, - 1, - 38, - "(50,100,150)", - 0, - 10, - 16, - 0 - ] - } - ], - "links": [ - [ - 3, - 4, - 1, - 6, - 0, - "CLIP" - ], - [ - 5, - 4, - 1, - 7, - 0, - "CLIP" - ], - [ - 7, - 3, - 0, - 8, - 0, - "LATENT" - ], - [ - 14, - 4, - 2, - 16, - 1, - "VAE" - ], - [ - 18, - 10, - 0, - 17, - 0, - "IMAGE" - ], - [ - 22, - 19, - 0, - 20, - 1, - "M_MODELS" - ], - [ - 28, - 25, - 0, - 19, - 0, - "MOTION_MODEL_ADE" - ], - [ - 47, - 3, - 0, - 35, - 0, - "LATENT" - ], - [ - 48, - 35, - 0, - 34, - 3, - "LATENT" - ], - [ - 52, - 34, - 0, - 36, - 0, - "LATENT" - ], - [ - 56, - 40, - 0, - 18, - 1, - "MASK" - ], - [ - 69, - 46, - 0, - 34, - 0, - "MODEL" - ], - [ - 102, - 60, - 0, - 26, - 0, - "IMAGE" - ], - [ - 107, - 12, - 1, - 60, - 0, - "*" - ], - [ - 108, - 40, - 0, - 62, - 0, - "MASK" - ], - [ - 154, - 89, - 0, - 90, - 0, - "IMAGE" - ], - [ - 156, - 90, - 0, - 92, - 0, - "IMAGE" - ], - [ - 157, - 92, - 0, - 16, - 0, - "IMAGE" - ], - [ - 158, - 92, - 1, - 10, - 0, - "INT" - ], - [ - 159, - 92, - 2, - 10, - 1, - "INT" - ], - [ - 160, - 92, - 3, - 10, - 2, - "INT" - ], - [ - 165, - 4, - 0, - 95, - 0, - "MODEL" - ], - [ - 171, - 97, - 0, - 96, - 2, - "CONTROL_NET" - ], - [ - 181, - 103, - 0, - 12, - 3, - "GRAVITY_WELL" - ], - [ - 182, - 30, - 0, - 105, - 0, - "MODEL" - ], - [ - 183, - 30, - 1, - 105, - 1, - "IPADAPTER" - ], - [ - 187, - 105, - 0, - 106, - 0, - "MODEL" - ], - [ - 191, - 106, - 0, - 20, - 0, - "MODEL" - ], - [ - 192, - 62, - 0, - 107, - 0, - "IMAGE" - ], - [ - 193, - 109, - 0, - 108, - 0, - "DAMODEL" - ], - [ - 195, - 108, - 0, - 96, - 3, - "IMAGE" - ], - [ - 196, - 30, - 1, - 106, - 1, - "IPADAPTER" - ], - [ - 197, - 32, - 0, - 105, - 2, - "IMAGE" - ], - [ - 198, - 31, - 0, - 106, - 2, - "IMAGE" - ], - [ - 202, - 113, - 0, - 112, - 0, - "UPSCALE_MODEL" - ], - [ - 207, - 17, - 0, - 57, - 0, - "*" - ], - [ - 209, - 46, - 0, - 3, - 0, - "MODEL" - ], - [ - 211, - 122, - 0, - 20, - 2, - "CONTEXT_OPTIONS" - ], - [ - 212, - 44, - 0, - 3, - 1, - "CONDITIONING" - ], - [ - 213, - 45, - 0, - 3, - 2, - "CONDITIONING" - ], - [ - 215, - 44, - 0, - 34, - 1, - "CONDITIONING" - ], - [ - 216, - 45, - 0, - 34, - 2, - "CONDITIONING" - ], - [ - 217, - 36, - 0, - 114, - 0, - "IMAGE" - ], - [ - 219, - 114, - 0, - 112, - 1, - "IMAGE" - ], - [ - 221, - 124, - 0, - 12, - 4, - "STATIC_BODY" - ], - [ - 222, - 125, - 0, - 124, - 0, - "STATIC_BODY" - ], - [ - 223, - 126, - 0, - 125, - 0, - "STATIC_BODY" - ], - [ - 226, - 130, - 0, - 129, - 0, - "OPEN_UNMIX_MODEL" - ], - [ - 227, - 128, - 0, - 129, - 1, - "AUDIO" - ], - [ - 228, - 89, - 0, - 129, - 2, - "IMAGE" - ], - [ - 232, - 129, - 5, - 133, - 1, - "FEATURE_PIPE" - ], - [ - 238, - 129, - 0, - 135, - 0, - "AUDIO" - ], - [ - 240, - 136, - 0, - 137, - 1, - "FREQUENCY_FILTER" - ], - [ - 241, - 129, - 1, - 137, - 0, - "AUDIO" - ], - [ - 242, - 137, - 0, - 133, - 0, - "AUDIO" - ], - [ - 246, - 60, - 0, - 27, - 0, - "IMAGE" - ], - [ - 249, - 26, - 0, - 105, - 4, - "MASK" - ], - [ - 250, - 27, - 0, - 106, - 4, - "MASK" - ], - [ - 251, - 133, - 0, - 141, - 0, - "FEATURE" - ], - [ - 253, - 141, - 1, - 146, - 0, - "IMAGE" - ], - [ - 257, - 20, - 0, - 148, - 0, - "MODEL" - ], - [ - 258, - 148, - 0, - 46, - 0, - "*" - ], - [ - 259, - 134, - 0, - 149, - 3, - "PARTICLE_MODULATION" - ], - [ - 263, - 6, - 0, - 151, - 0, - "*" - ], - [ - 264, - 7, - 0, - 152, - 0, - "*" - ], - [ - 265, - 129, - 0, - 153, - 0, - "*" - ], - [ - 266, - 141, - 0, - 154, - 0, - "*" - ], - [ - 270, - 16, - 0, - 155, - 0, - "*" - ], - [ - 271, - 4, - 2, - 156, - 0, - "*" - ], - [ - 278, - 156, - 0, - 164, - 0, - "*" - ], - [ - 279, - 151, - 0, - 165, - 0, - "*" - ], - [ - 280, - 152, - 0, - 166, - 0, - "*" - ], - [ - 283, - 166, - 0, - 96, - 1, - "CONDITIONING" - ], - [ - 284, - 165, - 0, - 96, - 0, - "CONDITIONING" - ], - [ - 285, - 154, - 0, - 167, - 0, - "*" - ], - [ - 286, - 167, - 0, - 134, - 1, - "FEATURE" - ], - [ - 287, - 57, - 0, - 168, - 0, - "*" - ], - [ - 288, - 168, - 0, - 12, - 0, - "MASK" - ], - [ - 289, - 150, - 0, - 169, - 0, - "*" - ], - [ - 290, - 169, - 0, - 30, - 0, - "MODEL" - ], - [ - 292, - 96, - 0, - 159, - 0, - "*" - ], - [ - 293, - 96, - 1, - 160, - 0, - "*" - ], - [ - 295, - 160, - 0, - 170, - 0, - "*" - ], - [ - 296, - 159, - 0, - 171, - 0, - "*" - ], - [ - 297, - 170, - 0, - 45, - 0, - "*" - ], - [ - 298, - 171, - 0, - 44, - 0, - "*" - ], - [ - 299, - 12, - 0, - 161, - 0, - "*" - ], - [ - 300, - 161, - 0, - 172, - 0, - "*" - ], - [ - 301, - 172, - 0, - 40, - 0, - "MASK" - ], - [ - 302, - 164, - 0, - 8, - 1, - "VAE" - ], - [ - 303, - 164, - 0, - 173, - 0, - "*" - ], - [ - 304, - 173, - 0, - 36, - 1, - "VAE" - ], - [ - 305, - 155, - 0, - 174, - 0, - "*" - ], - [ - 306, - 174, - 0, - 18, - 0, - "LATENT" - ], - [ - 309, - 92, - 0, - 176, - 0, - "*" - ], - [ - 310, - 176, - 0, - 177, - 0, - "*" - ], - [ - 311, - 177, - 0, - 108, - 1, - "IMAGE" - ], - [ - 312, - 174, - 0, - 163, - 0, - "*" - ], - [ - 314, - 178, - 0, - 107, - 1, - "AUDIO" - ], - [ - 315, - 153, - 0, - 179, - 0, - "*" - ], - [ - 317, - 12, - 1, - 180, - 0, - "IMAGE" - ], - [ - 318, - 179, - 0, - 180, - 1, - "AUDIO" - ], - [ - 319, - 179, - 0, - 178, - 0, - "*" - ], - [ - 321, - 18, - 0, - 3, - 3, - "LATENT" - ], - [ - 322, - 95, - 0, - 184, - 0, - "MODEL" - ], - [ - 323, - 184, - 0, - 150, - 0, - "*" - ], - [ - 324, - 178, - 0, - 185, - 0, - "*" - ], - [ - 327, - 8, - 0, - 186, - 0, - "IMAGE" - ], - [ - 328, - 185, - 0, - 187, - 0, - "*" - ], - [ - 330, - 185, - 0, - 162, - 0, - "*" - ], - [ - 332, - 138, - 0, - 149, - 0, - "PARTICLE_EMITTER" - ], - [ - 333, - 149, - 0, - 188, - 0, - "PARTICLE_EMITTER" - ], - [ - 334, - 188, - 0, - 12, - 1, - "PARTICLE_EMITTER" - ], - [ - 336, - 112, - 0, - 189, - 0, - "IMAGE" - ], - [ - 337, - 162, - 0, - 189, - 1, - "AUDIO" - ], - [ - 338, - 134, - 0, - 13, - 3, - "PARTICLE_MODULATION" - ], - [ - 339, - 13, - 0, - 138, - 0, - "PARTICLE_EMITTER" - ], - [ - 341, - 134, - 0, - 138, - 3, - "PARTICLE_MODULATION" - ] - ], - "groups": [ - { - "title": "Particle Emitter", - "bounding": [ - -1382, - 176, - 1812, - 1712 - ], - "color": "#3f789e", - "font_size": 24, - "locked": false - }, - { - "title": "Anim Diff", - "bounding": [ - 1805, - 127, - 914, - 1153 - ], - "color": "#3f789e", - "font_size": 24, - "locked": false - }, - { - "title": "Load Video", - "bounding": [ - -4387, - 720, - 1209, - 816 - ], - "color": "#3f789e", - "font_size": 24, - "locked": false - }, - { - "title": "Ctrl Net", - "bounding": [ - -115, - -892, - 853, - 511 - ], - "color": "#3f789e", - "font_size": 24, - "locked": false - }, - { - "title": "Latent noise mask", - "bounding": [ - 2894, - 160, - 865, - 679 - ], - "color": "#3f789e", - "font_size": 24, - "locked": false - }, - { - "title": "Sample", - "bounding": [ - 3832, - 148, - 1263, - 753 - ], - "color": "#3f789e", - "font_size": 24, - "locked": false - }, - { - "title": "Sample2", - "bounding": [ - 5151, - 151, - 1082, - 810 - ], - "color": "#3f789e", - "font_size": 24, - "locked": false - }, - { - "title": "Upscale", - "bounding": [ - 6285, - 158, - 1536, - 684 - ], - "color": "#3f789e", - "font_size": 24, - "locked": false - }, - { - "title": "Ipadapters", - "bounding": [ - 625, - 100, - 1036, - 1329 - ], - "color": "#3f789e", - "font_size": 24, - "locked": false - }, - { - "title": "Model", - "bounding": [ - -4320, - -116, - 1132, - 817 - ], - "color": "#3f789e", - "font_size": 24, - "locked": false - }, - { - "title": "Audio feature", - "bounding": [ - -4387, - 1561, - 1423, - 775 - ], - "color": "#3f789e", - "font_size": 24, - "locked": false - } - ], - "config": {}, - "extra": { - "ds": { - "scale": 0.9849732675807893, - "offset": [ - 4914.051898096126, - -1281.0800310855693 - ] - } - }, - "version": 0.4 -} \ No newline at end of file diff --git a/examples/audioreactive_live_portrait_depthflow.json b/examples/audioreactive_live_portrait_depthflow.json deleted file mode 100644 index ca24791..0000000 --- a/examples/audioreactive_live_portrait_depthflow.json +++ /dev/null @@ -1,3567 +0,0 @@ -{ - "last_node_id": 106, - "last_link_id": 103, - "nodes": [ - { - "id": 42, - "type": "BrightnessFeatureNode", - "pos": { - "0": -1937.0078125, - "1": 948.0409545898438 - }, - "size": { - "0": 317.4000244140625, - "1": 102 - }, - "flags": {}, - "order": 0, - "mode": 4, - "inputs": [ - { - "name": "video_frames", - "type": "IMAGE", - "link": null - } - ], - "outputs": [ - { - "name": "FEATURE", - "type": "FEATURE", - "links": null, - "shape": 3 - }, - { - "name": "FEATURE_PIPE", - "type": "FEATURE_PIPE", - "links": null, - "shape": 3 - } - ], - "properties": { - "Node name for S&R": "BrightnessFeatureNode", - "ttNbgOverride": { - "color": "#2a363b", - "bgcolor": "#3f5159", - "groupcolor": "#3f789e" - } - }, - "widgets_values": [ - "mean_brightness", - 30 - ], - "color": "#2a363b", - "bgcolor": "#3f5159" - }, - { - "id": 43, - "type": "ColorFeatureNode", - "pos": { - "0": -1607.0078125, - "1": 948.0409545898438 - }, - "size": { - "0": 317.4000244140625, - "1": 102 - }, - "flags": {}, - "order": 1, - "mode": 4, - "inputs": [ - { - "name": "video_frames", - "type": "IMAGE", - "link": null - } - ], - "outputs": [ - { - "name": "FEATURE", - "type": "FEATURE", - "links": null, - "shape": 3 - }, - { - "name": "FEATURE_PIPE", - "type": "FEATURE_PIPE", - "links": null, - "shape": 3 - } - ], - "properties": { - "Node name for S&R": "ColorFeatureNode", - "ttNbgOverride": { - "color": "#2a363b", - "bgcolor": "#3f5159", - "groupcolor": "#3f789e" - } - }, - "widgets_values": [ - "dominant_color", - 30 - ], - "color": "#2a363b", - "bgcolor": "#3f5159" - }, - { - "id": 47, - "type": "ManualFeatureFromPipe", - "pos": { - "0": -1237.0078125, - "1": 538.0409545898438 - }, - "size": { - "0": 352.79998779296875, - "1": 150 - }, - "flags": {}, - "order": 2, - "mode": 4, - "inputs": [ - { - "name": "feature_pipe", - "type": "FEATURE_PIPE", - "link": null - } - ], - "outputs": [ - { - "name": "FEATURE", - "type": "FEATURE", - "links": null, - "shape": 3 - }, - { - "name": "FEATURE_PIPE", - "type": "FEATURE_PIPE", - "links": null, - "shape": 3 - } - ], - "properties": { - "Node name for S&R": "ManualFeatureFromPipe", - "ttNbgOverride": { - "color": "#2a363b", - "bgcolor": "#3f5159", - "groupcolor": "#3f789e" - } - }, - "widgets_values": [ - "0,10,20", - "0.0,0.5,1.0", - 1, - "none" - ], - "color": "#2a363b", - "bgcolor": "#3f5159" - }, - { - "id": 40, - "type": "TimeFeatureNode", - "pos": { - "0": -1597.0078125, - "1": 538.0409545898438 - }, - "size": { - "0": 262.2439880371094, - "1": 150 - }, - "flags": {}, - "order": 3, - "mode": 4, - "inputs": [ - { - "name": "video_frames", - "type": "IMAGE", - "link": null - } - ], - "outputs": [ - { - "name": "FEATURE", - "type": "FEATURE", - "links": null, - "shape": 3 - }, - { - "name": "FEATURE_PIPE", - "type": "FEATURE_PIPE", - "links": null, - "shape": 3 - } - ], - "properties": { - "Node name for S&R": "TimeFeatureNode", - "ttNbgOverride": { - "color": "#2a363b", - "bgcolor": "#3f5159", - "groupcolor": "#3f789e" - } - }, - "widgets_values": [ - "smooth", - 30, - 1, - 0 - ], - "color": "#2a363b", - "bgcolor": "#3f5159" - }, - { - "id": 48, - "type": "AreaFeatureNode", - "pos": { - "0": -1207.0078125, - "1": 738.0409545898438 - }, - "size": { - "0": 317.4000244140625, - "1": 126 - }, - "flags": {}, - "order": 4, - "mode": 4, - "inputs": [ - { - "name": "video_frames", - "type": "IMAGE", - "link": null - }, - { - "name": "masks", - "type": "MASK", - "link": null - } - ], - "outputs": [ - { - "name": "FEATURE", - "type": "FEATURE", - "links": null, - "shape": 3 - }, - { - "name": "FEATURE_PIPE", - "type": "FEATURE_PIPE", - "links": null, - "shape": 3 - } - ], - "properties": { - "Node name for S&R": "AreaFeatureNode", - "ttNbgOverride": { - "color": "#2a363b", - "bgcolor": "#3f5159", - "groupcolor": "#3f789e" - } - }, - "widgets_values": [ - "total_area", - 30, - 0.5 - ], - "color": "#2a363b", - "bgcolor": "#3f5159" - }, - { - "id": 46, - "type": "DepthFeatureNode", - "pos": { - "0": -1267.0078125, - "1": 938.0409545898438 - }, - "size": { - "0": 317.4000244140625, - "1": 102 - }, - "flags": {}, - "order": 5, - "mode": 4, - "inputs": [ - { - "name": "video_frames", - "type": "IMAGE", - "link": null - }, - { - "name": "depth_maps", - "type": "IMAGE", - "link": null - } - ], - "outputs": [ - { - "name": "FEATURE", - "type": "FEATURE", - "links": null, - "shape": 3 - }, - { - "name": "FEATURE_PIPE", - "type": "FEATURE_PIPE", - "links": null, - "shape": 3 - } - ], - "properties": { - "Node name for S&R": "DepthFeatureNode", - "ttNbgOverride": { - "color": "#2a363b", - "bgcolor": "#3f5159", - "groupcolor": "#3f789e" - } - }, - "widgets_values": [ - "mean_depth", - 30 - ], - "color": "#2a363b", - "bgcolor": "#3f5159" - }, - { - "id": 67, - "type": "PreviewFeature", - "pos": { - "0": 227, - "1": 420 - }, - "size": { - "0": 315, - "1": 58 - }, - "flags": { - "collapsed": true - }, - "order": 37, - "mode": 0, - "inputs": [ - { - "name": "feature", - "type": "FEATURE", - "link": 59 - } - ], - "outputs": [ - { - "name": "FEATURE_PREVIEW", - "type": "IMAGE", - "links": [ - 60 - ], - "shape": 3, - "slot_index": 0 - } - ], - "properties": { - "Node name for S&R": "PreviewFeature", - "ttNbgOverride": { - "color": "#2a363b", - "bgcolor": "#3f5159", - "groupcolor": "#3f789e" - } - }, - "widgets_values": [ - false - ], - "color": "#2a363b", - "bgcolor": "#3f5159" - }, - { - "id": 44, - "type": "RhythmFeatureExtractor", - "pos": { - "0": -1610.4158935546875, - "1": 744.9609375 - }, - "size": { - "0": 352.79998779296875, - "1": 126 - }, - "flags": {}, - "order": 6, - "mode": 4, - "inputs": [ - { - "name": "video_frames", - "type": "IMAGE", - "link": null - }, - { - "name": "audio", - "type": "AUDIO", - "link": null - } - ], - "outputs": [ - { - "name": "FEATURE", - "type": "FEATURE", - "links": null, - "shape": 3 - }, - { - "name": "FEATURE_PIPE", - "type": "FEATURE_PIPE", - "links": null, - "shape": 3 - } - ], - "properties": { - "Node name for S&R": "RhythmFeatureExtractor", - "ttNbgOverride": { - "color": "#2a363b", - "bgcolor": "#3f5159", - "groupcolor": "#3f789e" - } - }, - "widgets_values": [ - "beat_locations", - 30, - 4 - ], - "color": "#2a363b", - "bgcolor": "#3f5159" - }, - { - "id": 45, - "type": "PitchFeatureExtractor", - "pos": { - "0": -1917.4158935546875, - "1": 1112.9609375 - }, - "size": { - "0": 344.3999938964844, - "1": 122 - }, - "flags": {}, - "order": 7, - "mode": 4, - "inputs": [ - { - "name": "audio", - "type": "AUDIO", - "link": null - }, - { - "name": "feature_pipe", - "type": "FEATURE_PIPE", - "link": null - }, - { - "name": "opt_pitch_range_collections", - "type": "PITCH_RANGE_COLLECTION", - "link": null, - "shape": 7 - } - ], - "outputs": [ - { - "name": "FEATURE", - "type": "FEATURE", - "links": null, - "shape": 3 - }, - { - "name": "FEATURE_PIPE", - "type": "FEATURE_PIPE", - "links": null, - "shape": 3 - } - ], - "properties": { - "Node name for S&R": "PitchFeatureExtractor", - "ttNbgOverride": { - "color": "#2a363b", - "bgcolor": "#3f5159", - "groupcolor": "#3f789e" - } - }, - "widgets_values": [ - "frequency", - "medium" - ], - "color": "#2a363b", - "bgcolor": "#3f5159" - }, - { - "id": 68, - "type": "PreviewImage", - "pos": { - "0": 746, - "1": 420 - }, - "size": { - "0": 198.45782470703125, - "1": 246 - }, - "flags": {}, - "order": 42, - "mode": 0, - "inputs": [ - { - "name": "images", - "type": "IMAGE", - "link": 60 - } - ], - "outputs": [], - "properties": { - "Node name for S&R": "PreviewImage", - "ttNbgOverride": { - "color": "#2a363b", - "bgcolor": "#3f5159", - "groupcolor": "#3f789e" - } - }, - "widgets_values": [], - "color": "#2a363b", - "bgcolor": "#3f5159" - }, - { - "id": 31, - "type": "DownloadOpenUnmixModel", - "pos": { - "0": -164, - "1": 619 - }, - "size": { - "0": 361.20001220703125, - "1": 58 - }, - "flags": {}, - "order": 8, - "mode": 0, - "inputs": [], - "outputs": [ - { - "name": "OPEN_UNMIX_MODEL", - "type": "OPEN_UNMIX_MODEL", - "links": [ - 23 - ], - "shape": 3 - } - ], - "properties": { - "Node name for S&R": "DownloadOpenUnmixModel", - "ttNbgOverride": { - "color": "#2a363b", - "bgcolor": "#3f5159", - "groupcolor": "#3f789e" - } - }, - "widgets_values": [ - "umxl" - ], - "color": "#2a363b", - "bgcolor": "#3f5159" - }, - { - "id": 32, - "type": "AudioSeparatorSimple", - "pos": { - "0": -164, - "1": 729 - }, - "size": { - "0": 336, - "1": 106 - }, - "flags": {}, - "order": 31, - "mode": 0, - "inputs": [ - { - "name": "model", - "type": "OPEN_UNMIX_MODEL", - "link": 23 - }, - { - "name": "audio", - "type": "AUDIO", - "link": 24 - } - ], - "outputs": [ - { - "name": "audio", - "type": "AUDIO", - "links": null, - "shape": 3 - }, - { - "name": "drums_audio", - "type": "AUDIO", - "links": [ - 54, - 76 - ], - "shape": 3, - "slot_index": 1 - }, - { - "name": "vocals_audio", - "type": "AUDIO", - "links": [], - "shape": 3, - "slot_index": 2 - }, - { - "name": "bass_audio", - "type": "AUDIO", - "links": [], - "shape": 3, - "slot_index": 3 - }, - { - "name": "other_audio", - "type": "AUDIO", - "links": [ - 51, - 52 - ], - "shape": 3, - "slot_index": 4 - } - ], - "properties": { - "Node name for S&R": "AudioSeparatorSimple", - "ttNbgOverride": { - "color": "#2a363b", - "bgcolor": "#3f5159", - "groupcolor": "#3f789e" - } - }, - "widgets_values": [], - "color": "#2a363b", - "bgcolor": "#3f5159" - }, - { - "id": 64, - "type": "PreviewAudio", - "pos": { - "0": -164, - "1": 1088 - }, - "size": { - "0": 315, - "1": 76 - }, - "flags": {}, - "order": 35, - "mode": 0, - "inputs": [ - { - "name": "audio", - "type": "AUDIO", - "link": 51 - } - ], - "outputs": [], - "properties": { - "Node name for S&R": "PreviewAudio", - "ttNbgOverride": { - "color": "#2a363b", - "bgcolor": "#3f5159", - "groupcolor": "#3f789e" - } - }, - "widgets_values": [ - null - ], - "color": "#2a363b", - "bgcolor": "#3f5159" - }, - { - "id": 51, - "type": "PreviewImage", - "pos": { - "0": 738.1400146484375, - "1": 729 - }, - "size": { - "0": 206.3178253173828, - "1": 246 - }, - "flags": {}, - "order": 47, - "mode": 0, - "inputs": [ - { - "name": "images", - "type": "IMAGE", - "link": 46 - } - ], - "outputs": [], - "properties": { - "Node name for S&R": "PreviewImage", - "ttNbgOverride": { - "color": "#2a363b", - "bgcolor": "#3f5159", - "groupcolor": "#3f789e" - } - }, - "widgets_values": [], - "color": "#2a363b", - "bgcolor": "#3f5159" - }, - { - "id": 41, - "type": "ProximityFeatureNode", - "pos": { - "0": -1973.4158935546875, - "1": 781.9609375 - }, - "size": { - "0": 336, - "1": 122 - }, - "flags": {}, - "order": 9, - "mode": 4, - "inputs": [ - { - "name": "video_frames", - "type": "IMAGE", - "link": null - }, - { - "name": "anchor_locations", - "type": "LOCATION", - "link": null - }, - { - "name": "query_locations", - "type": "LOCATION", - "link": null - } - ], - "outputs": [ - { - "name": "proximity_feature", - "type": "FEATURE", - "links": null, - "shape": 3 - }, - { - "name": "feature_pipe", - "type": "FEATURE_PIPE", - "links": null, - "shape": 3 - } - ], - "properties": { - "Node name for S&R": "ProximityFeatureNode", - "ttNbgOverride": { - "color": "#2a363b", - "bgcolor": "#3f5159", - "groupcolor": "#3f789e" - } - }, - "widgets_values": [ - 30, - "frame" - ], - "color": "#2a363b", - "bgcolor": "#3f5159" - }, - { - "id": 38, - "type": "MIDILoadAndExtract", - "pos": { - "0": -1928.4158935546875, - "1": 144.96095275878906 - }, - "size": { - "0": 1020, - "1": 346 - }, - "flags": {}, - "order": 10, - "mode": 4, - "inputs": [ - { - "name": "video_frames", - "type": "IMAGE", - "link": null - } - ], - "outputs": [ - { - "name": "MIDI", - "type": "MIDI", - "links": null, - "shape": 3 - }, - { - "name": "FEATURE", - "type": "FEATURE", - "links": null, - "shape": 3 - }, - { - "name": "FEATURE_PIPE", - "type": "FEATURE_PIPE", - "links": null, - "shape": 3 - } - ], - "properties": { - "selectedNotes": [], - "ttNbgOverride": { - "color": "#2a363b", - "bgcolor": "#3f5159", - "groupcolor": "#3f789e" - } - }, - "widgets_values": [ - "Velocity", - "prom_single_track.mid", - "all", - 30, - false, - "", - "upload", - "refresh" - ], - "color": "#2a363b", - "bgcolor": "#3f5159" - }, - { - "id": 21, - "type": "AudioFeatureExtractorFirst", - "pos": { - "0": 227, - "1": 980 - }, - "size": { - "0": 394.79998779296875, - "1": 170 - }, - "flags": {}, - "order": 36, - "mode": 0, - "inputs": [ - { - "name": "audio", - "type": "AUDIO", - "link": 52 - } - ], - "outputs": [ - { - "name": "feature", - "type": "FEATURE", - "links": [ - 73 - ], - "shape": 3, - "slot_index": 0 - }, - { - "name": "feature_pipe", - "type": "FEATURE_PIPE", - "links": [ - 44 - ], - "shape": 3, - "slot_index": 1 - }, - { - "name": "frame_count", - "type": "INT", - "links": null, - "shape": 3, - "slot_index": 2 - } - ], - "properties": { - "Node name for S&R": "AudioFeatureExtractorFirst", - "ttNbgOverride": { - "color": "#2a363b", - "bgcolor": "#3f5159", - "groupcolor": "#3f789e" - } - }, - "widgets_values": [ - "amplitude_envelope", - 512, - 512, - 15 - ], - "color": "#2a363b", - "bgcolor": "#3f5159" - }, - { - "id": 73, - "type": "FeatureRenormalize", - "pos": { - "0": 227, - "1": 1211 - }, - "size": { - "0": 310.79998779296875, - "1": 126 - }, - "flags": {}, - "order": 40, - "mode": 0, - "inputs": [ - { - "name": "feature", - "type": "FEATURE", - "link": 73 - } - ], - "outputs": [ - { - "name": "FEATURE", - "type": "FEATURE", - "links": [ - 74 - ], - "shape": 3, - "slot_index": 0 - }, - { - "name": "FEATURE_VISUALIZATION", - "type": "IMAGE", - "links": [ - 72 - ], - "shape": 3, - "slot_index": 1 - } - ], - "properties": { - "Node name for S&R": "FeatureRenormalize", - "ttNbgOverride": { - "color": "#2a363b", - "bgcolor": "#3f5159", - "groupcolor": "#3f789e" - } - }, - "widgets_values": [ - -1, - 1, - false - ], - "color": "#2a363b", - "bgcolor": "#3f5159" - }, - { - "id": 53, - "type": "Note", - "pos": { - "0": 227, - "1": 1387 - }, - "size": { - "0": 234.10646057128906, - "1": 70.32601165771484 - }, - "flags": {}, - "order": 11, - "mode": 0, - "inputs": [], - "outputs": [], - "properties": { - "text": "" - }, - "widgets_values": [ - "audio feature from drums\nmanual feature for fun\nanother audio feature for the synth" - ], - "color": "#432", - "bgcolor": "#653" - }, - { - "id": 39, - "type": "MotionFeatureNode", - "pos": { - "0": -1915, - "1": 542 - }, - "size": { - "0": 268.79998779296875, - "1": 174 - }, - "flags": {}, - "order": 12, - "mode": 4, - "inputs": [ - { - "name": "video_frames", - "type": "IMAGE", - "link": null - } - ], - "outputs": [ - { - "name": "FEATURE", - "type": "FEATURE", - "links": null, - "shape": 3 - }, - { - "name": "FEATURE_PIPE", - "type": "FEATURE_PIPE", - "links": null, - "shape": 3 - } - ], - "properties": { - "Node name for S&R": "MotionFeatureNode", - "ttNbgOverride": { - "color": "#2a363b", - "bgcolor": "#3f5159", - "groupcolor": "#3f789e" - } - }, - "widgets_values": [ - "mean_motion", - 30, - "Farneback", - 0, - 0 - ], - "color": "#2a363b", - "bgcolor": "#3f5159" - }, - { - "id": 81, - "type": "FeatureMixer", - "pos": { - "0": -2048.801513671875, - "1": 1448.3726806640625 - }, - "size": { - "0": 367.79998779296875, - "1": 342 - }, - "flags": {}, - "order": 13, - "mode": 4, - "inputs": [ - { - "name": "feature", - "type": "FEATURE", - "link": null - } - ], - "outputs": [ - { - "name": "FEATURE", - "type": "FEATURE", - "links": null, - "shape": 3 - }, - { - "name": "FEATURE_VISUALIZATION", - "type": "IMAGE", - "links": null, - "shape": 3 - } - ], - "properties": { - "Node name for S&R": "FeatureMixer", - "ttNbgOverride": { - "color": "#2a363b", - "bgcolor": "#3f5159", - "groupcolor": "#3f789e" - } - }, - "widgets_values": [ - 1, - 0, - 1, - 1, - 1, - 1, - 1, - 0, - 0, - 1, - 0.5, - false - ], - "color": "#2a363b", - "bgcolor": "#3f5159" - }, - { - "id": 82, - "type": "FeatureCombine", - "pos": { - "0": -1645.8013916015625, - "1": 1451.3726806640625 - }, - "size": { - "0": 380.4000244140625, - "1": 150 - }, - "flags": {}, - "order": 14, - "mode": 4, - "inputs": [ - { - "name": "feature1", - "type": "FEATURE", - "link": null - }, - { - "name": "feature2", - "type": "FEATURE", - "link": null - } - ], - "outputs": [ - { - "name": "FEATURE", - "type": "FEATURE", - "links": null, - "shape": 3 - }, - { - "name": "FEATURE_VISUALIZATION", - "type": "IMAGE", - "links": null, - "shape": 3 - } - ], - "properties": { - "Node name for S&R": "FeatureCombine", - "ttNbgOverride": { - "color": "#2a363b", - "bgcolor": "#3f5159", - "groupcolor": "#3f789e" - } - }, - "widgets_values": [ - "add", - 1, - 1, - false - ], - "color": "#2a363b", - "bgcolor": "#3f5159" - }, - { - "id": 83, - "type": "FeatureOscillator", - "pos": { - "0": -1232.8013916015625, - "1": 1461.3726806640625 - }, - "size": { - "0": 367.79998779296875, - "1": 198 - }, - "flags": {}, - "order": 15, - "mode": 4, - "inputs": [ - { - "name": "feature", - "type": "FEATURE", - "link": null - } - ], - "outputs": [ - { - "name": "FEATURE", - "type": "FEATURE", - "links": null, - "shape": 3 - }, - { - "name": "FEATURE_VISUALIZATION", - "type": "IMAGE", - "links": null, - "shape": 3 - } - ], - "properties": { - "Node name for S&R": "FeatureOscillator", - "ttNbgOverride": { - "color": "#2a363b", - "bgcolor": "#3f5159", - "groupcolor": "#3f789e" - } - }, - "widgets_values": [ - "sine", - 1, - 0.5, - 0, - 0.5, - false - ], - "color": "#2a363b", - "bgcolor": "#3f5159" - }, - { - "id": 86, - "type": "FeatureMath", - "pos": { - "0": -1639.8013916015625, - "1": 1655.3726806640625 - }, - "size": { - "0": 367.79998779296875, - "1": 126 - }, - "flags": {}, - "order": 16, - "mode": 4, - "inputs": [ - { - "name": "feature", - "type": "FEATURE", - "link": null - } - ], - "outputs": [ - { - "name": "FEATURE", - "type": "FEATURE", - "links": null, - "shape": 3 - }, - { - "name": "FEATURE_VISUALIZATION", - "type": "IMAGE", - "links": null, - "shape": 3 - } - ], - "properties": { - "Node name for S&R": "FeatureMath", - "ttNbgOverride": { - "color": "#2a363b", - "bgcolor": "#3f5159", - "groupcolor": "#3f789e" - } - }, - "widgets_values": [ - 0, - "add", - false - ], - "color": "#2a363b", - "bgcolor": "#3f5159" - }, - { - "id": 84, - "type": "FeatureScaler", - "pos": { - "0": -2049.801513671875, - "1": 1850.3726806640625 - }, - "size": { - "0": 367.79998779296875, - "1": 174 - }, - "flags": {}, - "order": 17, - "mode": 4, - "inputs": [ - { - "name": "feature", - "type": "FEATURE", - "link": null - } - ], - "outputs": [ - { - "name": "FEATURE", - "type": "FEATURE", - "links": null, - "shape": 3 - }, - { - "name": "FEATURE_VISUALIZATION", - "type": "IMAGE", - "links": null, - "shape": 3 - } - ], - "properties": { - "Node name for S&R": "FeatureScaler", - "ttNbgOverride": { - "color": "#2a363b", - "bgcolor": "#3f5159", - "groupcolor": "#3f789e" - } - }, - "widgets_values": [ - "linear", - 0, - 1, - 2, - false - ], - "color": "#2a363b", - "bgcolor": "#3f5159" - }, - { - "id": 85, - "type": "FeatureSmoothing", - "pos": { - "0": -1633.8013916015625, - "1": 1852.3726806640625 - }, - "size": { - "0": 367.79998779296875, - "1": 174 - }, - "flags": {}, - "order": 18, - "mode": 4, - "inputs": [ - { - "name": "feature", - "type": "FEATURE", - "link": null - } - ], - "outputs": [ - { - "name": "FEATURE", - "type": "FEATURE", - "links": null, - "shape": 3 - }, - { - "name": "FEATURE_VISUALIZATION", - "type": "IMAGE", - "links": null, - "shape": 3 - } - ], - "properties": { - "Node name for S&R": "FeatureSmoothing", - "ttNbgOverride": { - "color": "#2a363b", - "bgcolor": "#3f5159", - "groupcolor": "#3f789e" - } - }, - "widgets_values": [ - "moving_average", - 5, - 0.3, - 1, - false - ], - "color": "#2a363b", - "bgcolor": "#3f5159" - }, - { - "id": 87, - "type": "FeatureAccumulate", - "pos": { - "0": -1229.8013916015625, - "1": 1731.3726806640625 - }, - "size": { - "0": 367.79998779296875, - "1": 222 - }, - "flags": {}, - "order": 19, - "mode": 4, - "inputs": [ - { - "name": "feature", - "type": "FEATURE", - "link": null - } - ], - "outputs": [ - { - "name": "FEATURE", - "type": "FEATURE", - "links": null, - "shape": 3 - }, - { - "name": "FEATURE_VISUALIZATION", - "type": "IMAGE", - "links": null, - "shape": 3 - } - ], - "properties": { - "Node name for S&R": "FeatureAccumulate", - "ttNbgOverride": { - "color": "#2a363b", - "bgcolor": "#3f5159", - "groupcolor": "#3f789e" - } - }, - "widgets_values": [ - 0, - 1, - 0, - false, - false, - 0, - false - ], - "color": "#2a363b", - "bgcolor": "#3f5159" - }, - { - "id": 88, - "type": "Note", - "pos": { - "0": -675, - "1": 1660 - }, - "size": { - "0": 343.6423645019531, - "1": 137.95391845703125 - }, - "flags": {}, - "order": 20, - "mode": 0, - "inputs": [], - "outputs": [], - "properties": { - "text": "" - }, - "widgets_values": [ - "\n<--------here's some ways to manipulate features" - ], - "color": "#432", - "bgcolor": "#653" - }, - { - "id": 56, - "type": "PreviewAudio", - "pos": { - "0": -152, - "1": 897 - }, - "size": { - "0": 315, - "1": 76 - }, - "flags": {}, - "order": 34, - "mode": 0, - "inputs": [ - { - "name": "audio", - "type": "AUDIO", - "link": 76 - } - ], - "outputs": [], - "properties": { - "Node name for S&R": "PreviewAudio", - "ttNbgOverride": { - "color": "#2a363b", - "bgcolor": "#3f5159", - "groupcolor": "#3f789e" - } - }, - "widgets_values": [ - null - ], - "color": "#2a363b", - "bgcolor": "#3f5159" - }, - { - "id": 69, - "type": "PreviewImage", - "pos": { - "0": 746.20263671875, - "1": 1067 - }, - "size": { - "0": 198.2552032470703, - "1": 246 - }, - "flags": {}, - "order": 44, - "mode": 0, - "inputs": [ - { - "name": "images", - "type": "IMAGE", - "link": 72 - } - ], - "outputs": [], - "properties": { - "Node name for S&R": "PreviewImage", - "ttNbgOverride": { - "color": "#2a363b", - "bgcolor": "#3f5159", - "groupcolor": "#3f789e" - } - }, - "widgets_values": [], - "color": "#2a363b", - "bgcolor": "#3f5159" - }, - { - "id": 35, - "type": "Note", - "pos": { - "0": 1500, - "1": 1290 - }, - "size": { - "0": 210, - "1": 58 - }, - "flags": {}, - "order": 21, - "mode": 0, - "inputs": [], - "outputs": [], - "properties": { - "text": "" - }, - "widgets_values": [ - "modulate pupils with synth" - ], - "color": "#432", - "bgcolor": "#653" - }, - { - "id": 36, - "type": "Note", - "pos": { - "0": 1870, - "1": 1290 - }, - "size": { - "0": 210, - "1": 58 - }, - "flags": { - "collapsed": false - }, - "order": 22, - "mode": 0, - "inputs": [], - "outputs": [], - "properties": { - "text": "" - }, - "widgets_values": [ - "modulate roll with manual feature" - ], - "color": "#432", - "bgcolor": "#653" - }, - { - "id": 65, - "type": "Note", - "pos": { - "0": 2250, - "1": 1290 - }, - "size": { - "0": 210, - "1": 58 - }, - "flags": { - "collapsed": false - }, - "order": 23, - "mode": 0, - "inputs": [], - "outputs": [], - "properties": { - "text": "" - }, - "widgets_values": [ - "modulate pitch with drums" - ], - "color": "#432", - "bgcolor": "#653" - }, - { - "id": 79, - "type": "Note", - "pos": { - "0": 2688, - "1": 885 - }, - "size": { - "0": 393.7351989746094, - "1": 118.73271179199219 - }, - "flags": {}, - "order": 24, - "mode": 0, - "inputs": [], - "outputs": [], - "properties": { - "text": "" - }, - "widgets_values": [ - "-relative: relative to the parameter value\n-absolute: relative to 0\n\n-the value for a parameter in a previous editor changes the starting position of that part of the expression\n\n-this means a parameter can be modulated multiple times\n" - ], - "color": "#432", - "bgcolor": "#653" - }, - { - "id": 60, - "type": "Note", - "pos": { - "0": -630, - "1": 616 - }, - "size": { - "0": 343.6423645019531, - "1": 137.95391845703125 - }, - "flags": {}, - "order": 25, - "mode": 0, - "inputs": [], - "outputs": [], - "properties": { - "text": "" - }, - "widgets_values": [ - "Audio is one of many feature sources, and they are interchangeable.\n\n<--------here's some other feature sources. \n" - ], - "color": "#432", - "bgcolor": "#653" - }, - { - "id": 59, - "type": "PreviewFeature", - "pos": { - "0": 244, - "1": 699 - }, - "size": { - "0": 315, - "1": 58 - }, - "flags": { - "collapsed": true - }, - "order": 45, - "mode": 0, - "inputs": [ - { - "name": "feature", - "type": "FEATURE", - "link": 47 - } - ], - "outputs": [ - { - "name": "FEATURE_PREVIEW", - "type": "IMAGE", - "links": [ - 46 - ], - "shape": 3, - "slot_index": 0 - } - ], - "properties": { - "Node name for S&R": "PreviewFeature", - "ttNbgOverride": { - "color": "#2a363b", - "bgcolor": "#3f5159", - "groupcolor": "#3f789e" - } - }, - "widgets_values": [ - false - ], - "color": "#2a363b", - "bgcolor": "#3f5159" - }, - { - "id": 58, - "type": "ManualFeatureFromPipe", - "pos": { - "0": 234, - "1": 768 - }, - "size": { - "0": 352.79998779296875, - "1": 150 - }, - "flags": {}, - "order": 41, - "mode": 0, - "inputs": [ - { - "name": "feature_pipe", - "type": "FEATURE_PIPE", - "link": 44 - } - ], - "outputs": [ - { - "name": "FEATURE", - "type": "FEATURE", - "links": [ - 45, - 47 - ], - "shape": 3, - "slot_index": 0 - }, - { - "name": "FEATURE_PIPE", - "type": "FEATURE_PIPE", - "links": null, - "shape": 3, - "slot_index": 1 - } - ], - "properties": { - "Node name for S&R": "ManualFeatureFromPipe", - "ttNbgOverride": { - "color": "#2a363b", - "bgcolor": "#3f5159", - "groupcolor": "#3f789e" - } - }, - "widgets_values": [ - "0", - "-1", - 1, - "ease_out" - ], - "color": "#2a363b", - "bgcolor": "#3f5159" - }, - { - "id": 16, - "type": "VHS_LoadAudioUpload", - "pos": { - "0": -164, - "1": 420 - }, - "size": { - "0": 243.818359375, - "1": 130 - }, - "flags": {}, - "order": 26, - "mode": 0, - "inputs": [], - "outputs": [ - { - "name": "audio", - "type": "AUDIO", - "links": [ - 24, - 30, - 48, - 84 - ], - "shape": 3, - "slot_index": 0 - } - ], - "properties": { - "Node name for S&R": "VHS_LoadAudioUpload", - "ttNbgOverride": { - "color": "#2a363b", - "bgcolor": "#3f5159", - "groupcolor": "#3f789e" - } - }, - "widgets_values": { - "audio": "Spooky Scary Skeletons (Sped Up).mp3", - "start_time": 16.01, - "duration": 7, - "choose audio to upload": "image" - }, - "color": "#2a363b", - "bgcolor": "#3f5159" - }, - { - "id": 22, - "type": "LoadImage", - "pos": { - "0": 1079, - "1": 420 - }, - "size": { - "0": 315, - "1": 314 - }, - "flags": {}, - "order": 27, - "mode": 0, - "inputs": [], - "outputs": [ - { - "name": "IMAGE", - "type": "IMAGE", - "links": [ - 17 - ], - "slot_index": 0, - "shape": 3 - }, - { - "name": "MASK", - "type": "MASK", - "links": null, - "slot_index": 1, - "shape": 3 - } - ], - "properties": { - "Node name for S&R": "LoadImage", - "ttNbgOverride": { - "color": "#2a363b", - "bgcolor": "#3f5159", - "groupcolor": "#3f789e" - } - }, - "widgets_values": [ - "exp_image.png", - "image" - ], - "color": "#2a363b", - "bgcolor": "#3f5159" - }, - { - "id": 61, - "type": "PreviewAudio", - "pos": { - "0": -163, - "1": 285 - }, - "size": { - "0": 315, - "1": 76 - }, - "flags": {}, - "order": 32, - "mode": 0, - "inputs": [ - { - "name": "audio", - "type": "AUDIO", - "link": 48 - } - ], - "outputs": [], - "properties": { - "Node name for S&R": "PreviewAudio", - "ttNbgOverride": { - "color": "#2a363b", - "bgcolor": "#3f5159", - "groupcolor": "#3f789e" - } - }, - "widgets_values": [ - null - ], - "color": "#2a363b", - "bgcolor": "#3f5159" - }, - { - "id": 15, - "type": "FlexExpressionEditor", - "pos": { - "0": 1430, - "1": 420 - }, - "size": { - "0": 338.77764892578125, - "1": 816.7449340820312 - }, - "flags": {}, - "order": 43, - "mode": 0, - "inputs": [ - { - "name": "src_image", - "type": "IMAGE", - "link": 17, - "shape": 7 - }, - { - "name": "sample_image", - "type": "IMAGE", - "link": null, - "shape": 7 - }, - { - "name": "add_exp", - "type": "EXP_DATA", - "link": null, - "shape": 7 - }, - { - "name": "flex_motion_link", - "type": "EDITOR_LINK", - "link": null, - "shape": 7 - }, - { - "name": "feature", - "type": "FEATURE", - "link": 74, - "shape": 7 - } - ], - "outputs": [ - { - "name": "image", - "type": "IMAGE", - "links": null, - "shape": 3 - }, - { - "name": "flex_motion_link", - "type": "EDITOR_LINK", - "links": [ - 18 - ], - "shape": 3, - "slot_index": 1 - }, - { - "name": "save_exp", - "type": "EXP_DATA", - "links": null, - "shape": 3, - "slot_index": 2 - }, - { - "name": "command", - "type": "STRING", - "links": null, - "shape": 3 - } - ], - "properties": { - "Node name for S&R": "FlexExpressionEditor", - "ttNbgOverride": { - "color": "#2a363b", - "bgcolor": "#3f5159", - "groupcolor": "#3f789e" - } - }, - "widgets_values": [ - 0, - 0, - 0, - 0, - 0, - 0, - -14.5, - 0, - 0, - 0, - 0, - 0, - 1, - 1, - "OnlyExpression", - 1.7, - 1, - 0, - "pupil_x", - "relative" - ], - "color": "#2a363b", - "bgcolor": "#3f5159" - }, - { - "id": 28, - "type": "FlexExpressionEditor", - "pos": { - "0": 1830, - "1": 420 - }, - "size": { - "0": 336, - "1": 806 - }, - "flags": {}, - "order": 46, - "mode": 0, - "inputs": [ - { - "name": "src_image", - "type": "IMAGE", - "link": null, - "shape": 7 - }, - { - "name": "sample_image", - "type": "IMAGE", - "link": null, - "shape": 7 - }, - { - "name": "add_exp", - "type": "EXP_DATA", - "link": null, - "shape": 7 - }, - { - "name": "flex_motion_link", - "type": "EDITOR_LINK", - "link": 18, - "shape": 7 - }, - { - "name": "feature", - "type": "FEATURE", - "link": 45, - "shape": 7 - } - ], - "outputs": [ - { - "name": "image", - "type": "IMAGE", - "links": [], - "shape": 3, - "slot_index": 0 - }, - { - "name": "flex_motion_link", - "type": "EDITOR_LINK", - "links": [ - 49 - ], - "shape": 3, - "slot_index": 1 - }, - { - "name": "save_exp", - "type": "EXP_DATA", - "links": null, - "shape": 3 - }, - { - "name": "command", - "type": "STRING", - "links": [ - 77 - ], - "shape": 3, - "slot_index": 3 - } - ], - "properties": { - "Node name for S&R": "FlexExpressionEditor", - "ttNbgOverride": { - "color": "#2a363b", - "bgcolor": "#3f5159", - "groupcolor": "#3f789e" - } - }, - "widgets_values": [ - 0, - 0, - 15, - 0, - 15, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 1, - 1, - "OnlyExpression", - 1.7, - 1, - 0, - "rotate_roll", - "relative" - ], - "color": "#2a363b", - "bgcolor": "#3f5159" - }, - { - "id": 62, - "type": "FlexExpressionEditor", - "pos": { - "0": 2210, - "1": 419 - }, - "size": { - "0": 336, - "1": 806 - }, - "flags": {}, - "order": 48, - "mode": 0, - "inputs": [ - { - "name": "src_image", - "type": "IMAGE", - "link": null, - "shape": 7 - }, - { - "name": "sample_image", - "type": "IMAGE", - "link": null, - "shape": 7 - }, - { - "name": "add_exp", - "type": "EXP_DATA", - "link": null, - "shape": 7 - }, - { - "name": "flex_motion_link", - "type": "EDITOR_LINK", - "link": 49, - "shape": 7 - }, - { - "name": "feature", - "type": "FEATURE", - "link": 55, - "shape": 7 - } - ], - "outputs": [ - { - "name": "image", - "type": "IMAGE", - "links": [], - "shape": 3, - "slot_index": 0 - }, - { - "name": "flex_motion_link", - "type": "EDITOR_LINK", - "links": [ - 71 - ], - "shape": 3, - "slot_index": 1 - }, - { - "name": "save_exp", - "type": "EXP_DATA", - "links": null, - "shape": 3, - "slot_index": 2 - }, - { - "name": "command", - "type": "STRING", - "links": [], - "shape": 3, - "slot_index": 3 - } - ], - "properties": { - "Node name for S&R": "FlexExpressionEditor", - "ttNbgOverride": { - "color": "#2a363b", - "bgcolor": "#3f5159", - "groupcolor": "#3f789e" - } - }, - "widgets_values": [ - 9, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 1, - 1, - "OnlyExpression", - 1.7, - 1, - 0, - "rotate_pitch", - "relative" - ], - "color": "#2a363b", - "bgcolor": "#3f5159" - }, - { - "id": 90, - "type": "DownloadAndLoadDepthCrafterModel", - "pos": { - "0": 3357.42626953125, - "1": 330.4696044921875 - }, - "size": { - "0": 308.93145751953125, - "1": 82 - }, - "flags": {}, - "order": 28, - "mode": 0, - "inputs": [], - "outputs": [ - { - "name": "depthcrafter_model", - "type": "DEPTHCRAFTER_MODEL", - "links": [ - 78 - ] - } - ], - "properties": { - "Node name for S&R": "DownloadAndLoadDepthCrafterModel", - "ttNbgOverride": { - "color": "#2a363b", - "bgcolor": "#3f5159", - "groupcolor": "#3f789e" - } - }, - "widgets_values": [ - true, - false - ], - "color": "#2a363b", - "bgcolor": "#3f5159" - }, - { - "id": 27, - "type": "VHS_VideoCombine", - "pos": { - "0": 2945, - "1": 280 - }, - "size": [ - 253.4889678955078, - 553.4889678955078 - ], - "flags": {}, - "order": 50, - "mode": 0, - "inputs": [ - { - "name": "images", - "type": "IMAGE", - "link": 16, - "shape": 7 - }, - { - "name": "audio", - "type": "AUDIO", - "link": 30, - "shape": 7 - }, - { - "name": "meta_batch", - "type": "VHS_BatchManager", - "link": null, - "shape": 7 - }, - { - "name": "vae", - "type": "VAE", - "link": null, - "shape": 7 - }, - { - "name": "filename_prefix", - "type": "STRING", - "link": 85, - "widget": { - "name": "filename_prefix" - } - } - ], - "outputs": [ - { - "name": "Filenames", - "type": "VHS_FILENAMES", - "links": null, - "shape": 3 - } - ], - "properties": { - "Node name for S&R": "VHS_VideoCombine", - "ttNbgOverride": { - "color": "#2a363b", - "bgcolor": "#3f5159", - "groupcolor": "#3f789e" - } - }, - "widgets_values": { - "frame_rate": 15, - "loop_count": 0, - "filename_prefix": "AdvancedLivePortrait", - "format": "video/h264-mp4", - "pix_fmt": "yuv420p", - "crf": 19, - "save_metadata": true, - "pingpong": false, - "save_output": true, - "videopreview": { - "hidden": false, - "paused": false, - "params": { - "filename": "241106144130_00001-audio.mp4", - "subfolder": "241106/AdvancedLivePortrait", - "type": "output", - "format": "video/h264-mp4", - "frame_rate": 15 - } - } - }, - "color": "#2a363b", - "bgcolor": "#3f5159" - }, - { - "id": 89, - "type": "DepthCrafter", - "pos": { - "0": 3327.42626953125, - "1": 466.4696044921875 - }, - "size": { - "0": 367.79998779296875, - "1": 174 - }, - "flags": {}, - "order": 51, - "mode": 0, - "inputs": [ - { - "name": "depthcrafter_model", - "type": "DEPTHCRAFTER_MODEL", - "link": 78 - }, - { - "name": "images", - "type": "IMAGE", - "link": 79 - } - ], - "outputs": [ - { - "name": "depth_maps", - "type": "IMAGE", - "links": [ - 87, - 95 - ], - "slot_index": 0 - } - ], - "properties": { - "Node name for S&R": "DepthCrafter", - "ttNbgOverride": { - "color": "#2a363b", - "bgcolor": "#3f5159", - "groupcolor": "#3f789e" - } - }, - "widgets_values": [ - 768, - 10, - 1.2, - 110, - 25 - ], - "color": "#2a363b", - "bgcolor": "#3f5159" - }, - { - "id": 97, - "type": "Image To Mask", - "pos": { - "0": 3838.6787109375, - "1": 498.88232421875 - }, - "size": { - "0": 210, - "1": 58 - }, - "flags": {}, - "order": 54, - "mode": 0, - "inputs": [ - { - "name": "image", - "type": "IMAGE", - "link": 95 - } - ], - "outputs": [ - { - "name": "MASK", - "type": "MASK", - "links": [ - 96 - ], - "slot_index": 0 - } - ], - "properties": { - "Node name for S&R": "Image To Mask", - "ttNbgOverride": { - "color": "#2a363b", - "bgcolor": "#3f5159", - "groupcolor": "#3f789e" - } - }, - "widgets_values": [ - "intensity" - ], - "color": "#2a363b", - "bgcolor": "#3f5159" - }, - { - "id": 24, - "type": "AdvancedLivePortrait", - "pos": { - "0": 2680, - "1": 360 - }, - "size": { - "0": 235.1999969482422, - "1": 474.2106018066406 - }, - "flags": {}, - "order": 49, - "mode": 0, - "inputs": [ - { - "name": "src_images", - "type": "IMAGE", - "link": null, - "shape": 7 - }, - { - "name": "motion_link", - "type": "EDITOR_LINK", - "link": 71, - "shape": 7 - }, - { - "name": "driving_images", - "type": "IMAGE", - "link": null, - "shape": 7 - }, - { - "name": "command", - "type": "STRING", - "link": 77, - "widget": { - "name": "command" - } - } - ], - "outputs": [ - { - "name": "images", - "type": "IMAGE", - "links": [ - 16, - 79, - 81, - 98 - ], - "slot_index": 0, - "shape": 3 - } - ], - "properties": { - "Node name for S&R": "AdvancedLivePortrait", - "ttNbgOverride": { - "color": "#2a363b", - "bgcolor": "#3f5159", - "groupcolor": "#3f789e" - } - }, - "widgets_values": [ - 0, - 0, - 1.7000000000000002, - "1 = 1:10\n2 = 5:10\n0 = 2:50\n1 = 2:0", - false, - true, - "1 = 1:10\n2 = 5:10\n0 = 2:50\n1 = 2:0" - ], - "color": "#2a363b", - "bgcolor": "#3f5159" - }, - { - "id": 63, - "type": "AudioFeatureExtractorFirst", - "pos": { - "0": 227, - "1": 420 - }, - "size": { - "0": 394.79998779296875, - "1": 170 - }, - "flags": {}, - "order": 33, - "mode": 0, - "inputs": [ - { - "name": "audio", - "type": "AUDIO", - "link": 54 - } - ], - "outputs": [ - { - "name": "feature", - "type": "FEATURE", - "links": [ - 55, - 59, - 100, - 103 - ], - "shape": 3, - "slot_index": 0 - }, - { - "name": "feature_pipe", - "type": "FEATURE_PIPE", - "links": [], - "shape": 3, - "slot_index": 1 - }, - { - "name": "frame_count", - "type": "INT", - "links": null, - "shape": 3, - "slot_index": 2 - } - ], - "properties": { - "Node name for S&R": "AudioFeatureExtractorFirst", - "ttNbgOverride": { - "color": "#2a363b", - "bgcolor": "#3f5159", - "groupcolor": "#3f789e" - } - }, - "widgets_values": [ - "amplitude_envelope", - 512, - 512, - 15 - ], - "color": "#2a363b", - "bgcolor": "#3f5159" - }, - { - "id": 104, - "type": "DepthflowMotionSetTarget", - "pos": { - "0": 4325.931640625, - "1": 744.1055908203125 - }, - "size": [ - 264.1174546221373, - 198 - ], - "flags": {}, - "order": 29, - "mode": 0, - "inputs": [ - { - "name": "feature", - "type": "FEATURE", - "link": null, - "shape": 7 - }, - { - "name": "motion", - "type": "DEPTHFLOW_MOTION", - "link": null, - "shape": 7 - } - ], - "outputs": [ - { - "name": "DEPTHFLOW_MOTION", - "type": "DEPTHFLOW_MOTION", - "links": [ - 101 - ], - "slot_index": 0 - } - ], - "properties": { - "Node name for S&R": "DepthflowMotionSetTarget", - "ttNbgOverride": { - "color": "#2a363b", - "bgcolor": "#3f5159", - "groupcolor": "#3f789e" - } - }, - "widgets_values": [ - 1, - 0, - "value", - "relative", - "Focus", - 0.5 - ], - "color": "#2a363b", - "bgcolor": "#3f5159" - }, - { - "id": 105, - "type": "DepthflowMotionSetTarget", - "pos": { - "0": 4322.931640625, - "1": 996.1051025390625 - }, - "size": { - "0": 264.1174621582031, - "1": 198 - }, - "flags": {}, - "order": 39, - "mode": 0, - "inputs": [ - { - "name": "feature", - "type": "FEATURE", - "link": 103, - "shape": 7 - }, - { - "name": "motion", - "type": "DEPTHFLOW_MOTION", - "link": 101, - "shape": 7 - } - ], - "outputs": [ - { - "name": "DEPTHFLOW_MOTION", - "type": "DEPTHFLOW_MOTION", - "links": [ - 102 - ], - "slot_index": 0 - } - ], - "properties": { - "Node name for S&R": "DepthflowMotionSetTarget", - "ttNbgOverride": { - "color": "#2a363b", - "bgcolor": "#3f5159", - "groupcolor": "#3f789e" - } - }, - "widgets_values": [ - 2.5, - 0, - "value", - "relative", - "Dolly", - 1 - ], - "color": "#2a363b", - "bgcolor": "#3f5159" - }, - { - "id": 102, - "type": "DilateErodeMask", - "pos": { - "0": 3792.6787109375, - "1": 624.88232421875 - }, - "size": { - "0": 315, - "1": 82 - }, - "flags": {}, - "order": 55, - "mode": 0, - "inputs": [ - { - "name": "masks", - "type": "MASK", - "link": 96 - } - ], - "outputs": [ - { - "name": "MASK", - "type": "MASK", - "links": [ - 97 - ], - "slot_index": 0 - } - ], - "properties": { - "Node name for S&R": "DilateErodeMask", - "ttNbgOverride": { - "color": "#2a363b", - "bgcolor": "#3f5159", - "groupcolor": "#3f789e" - } - }, - "widgets_values": [ - 5, - "circle" - ], - "color": "#2a363b", - "bgcolor": "#3f5159" - }, - { - "id": 99, - "type": "MaskToImage", - "pos": { - "0": 3855.6787109375, - "1": 771.88232421875 - }, - "size": { - "0": 176.39999389648438, - "1": 26 - }, - "flags": {}, - "order": 56, - "mode": 0, - "inputs": [ - { - "name": "mask", - "type": "MASK", - "link": 97 - } - ], - "outputs": [ - { - "name": "IMAGE", - "type": "IMAGE", - "links": [ - 91, - 92 - ], - "slot_index": 0 - } - ], - "properties": { - "Node name for S&R": "MaskToImage", - "ttNbgOverride": { - "color": "#2a363b", - "bgcolor": "#3f5159", - "groupcolor": "#3f789e" - } - }, - "widgets_values": [], - "color": "#2a363b", - "bgcolor": "#3f5159" - }, - { - "id": 100, - "type": "PreviewImage", - "pos": { - "0": 3845.6787109375, - "1": 870.88232421875 - }, - "size": { - "0": 210, - "1": 246 - }, - "flags": {}, - "order": 57, - "mode": 0, - "inputs": [ - { - "name": "images", - "type": "IMAGE", - "link": 91 - } - ], - "outputs": [], - "properties": { - "Node name for S&R": "PreviewImage", - "ttNbgOverride": { - "color": "#2a363b", - "bgcolor": "#3f5159", - "groupcolor": "#3f789e" - } - }, - "widgets_values": [], - "color": "#2a363b", - "bgcolor": "#3f5159" - }, - { - "id": 95, - "type": "PreviewImage", - "pos": { - "0": 3397, - "1": 748 - }, - "size": { - "0": 210, - "1": 246 - }, - "flags": {}, - "order": 53, - "mode": 0, - "inputs": [ - { - "name": "images", - "type": "IMAGE", - "link": 87 - } - ], - "outputs": [], - "properties": { - "Node name for S&R": "PreviewImage", - "ttNbgOverride": { - "color": "#2a363b", - "bgcolor": "#3f5159", - "groupcolor": "#3f789e" - } - }, - "widgets_values": [], - "color": "#2a363b", - "bgcolor": "#3f5159" - }, - { - "id": 103, - "type": "BatchCount+", - "pos": { - "0": 3396, - "1": 142 - }, - "size": { - "0": 210, - "1": 26 - }, - "flags": {}, - "order": 52, - "mode": 0, - "inputs": [ - { - "name": "batch", - "type": "*", - "link": 98 - } - ], - "outputs": [ - { - "name": "INT", - "type": "INT", - "links": [ - 99 - ], - "slot_index": 0 - } - ], - "properties": { - "Node name for S&R": "BatchCount+", - "ttNbgOverride": { - "color": "#2a363b", - "bgcolor": "#3f5159", - "groupcolor": "#3f789e" - } - }, - "color": "#2a363b", - "bgcolor": "#3f5159" - }, - { - "id": 94, - "type": "FileNamePrefixDateDirFirst", - "pos": { - "0": 2880, - "1": -18 - }, - "size": { - "0": 327.6000061035156, - "1": 130 - }, - "flags": {}, - "order": 30, - "mode": 0, - "inputs": [], - "outputs": [ - { - "name": "filename_prefix", - "type": "STRING", - "links": [ - 85, - 86 - ], - "slot_index": 0 - } - ], - "properties": { - "Node name for S&R": "FileNamePrefixDateDirFirst", - "ttNbgOverride": { - "color": "#2a363b", - "bgcolor": "#3f5159", - "groupcolor": "#3f789e" - } - }, - "widgets_values": [ - "true", - "true", - "AdvancedLivePortrait", - "" - ], - "color": "#2a363b", - "bgcolor": "#3f5159" - }, - { - "id": 91, - "type": "Depthflow", - "pos": { - "0": 4286, - "1": 316 - }, - "size": [ - 315, - 286 - ], - "flags": {}, - "order": 58, - "mode": 0, - "inputs": [ - { - "name": "image", - "type": "IMAGE", - "link": 81 - }, - { - "name": "depth_map", - "type": "IMAGE", - "link": 92 - }, - { - "name": "motion", - "type": "DEPTHFLOW_MOTION", - "link": 102 - }, - { - "name": "effects", - "type": "DEPTHFLOW_EFFECTS", - "link": null, - "shape": 7 - }, - { - "name": "num_frames", - "type": "INT", - "link": 99, - "widget": { - "name": "num_frames" - } - } - ], - "outputs": [ - { - "name": "IMAGE", - "type": "IMAGE", - "links": [ - 83 - ], - "slot_index": 0 - } - ], - "properties": { - "Node name for S&R": "Depthflow", - "ttNbgOverride": { - "color": "#2a363b", - "bgcolor": "#3f5159", - "groupcolor": "#3f789e" - } - }, - "widgets_values": [ - 1, - 15, - 15, - 30, - 50, - 2, - 0, - "mirror" - ], - "color": "#2a363b", - "bgcolor": "#3f5159" - }, - { - "id": 93, - "type": "VHS_VideoCombine", - "pos": { - "0": 4667, - "1": 319 - }, - "size": [ - 450.2064208984375, - 750.2064208984375 - ], - "flags": {}, - "order": 59, - "mode": 0, - "inputs": [ - { - "name": "images", - "type": "IMAGE", - "link": 83, - "shape": 7 - }, - { - "name": "audio", - "type": "AUDIO", - "link": 84, - "shape": 7 - }, - { - "name": "meta_batch", - "type": "VHS_BatchManager", - "link": null, - "shape": 7 - }, - { - "name": "vae", - "type": "VAE", - "link": null, - "shape": 7 - }, - { - "name": "filename_prefix", - "type": "STRING", - "link": 86, - "widget": { - "name": "filename_prefix" - } - } - ], - "outputs": [ - { - "name": "Filenames", - "type": "VHS_FILENAMES", - "links": null, - "shape": 3 - } - ], - "properties": { - "Node name for S&R": "VHS_VideoCombine", - "ttNbgOverride": { - "color": "#2a363b", - "bgcolor": "#3f5159", - "groupcolor": "#3f789e" - } - }, - "widgets_values": { - "frame_rate": 15, - "loop_count": 0, - "filename_prefix": "AdvancedLivePortrait", - "format": "video/h264-mp4", - "pix_fmt": "yuv420p", - "crf": 19, - "save_metadata": true, - "pingpong": false, - "save_output": true, - "videopreview": { - "hidden": false, - "paused": false, - "params": { - "filename": "241106144130_00012-audio.mp4", - "subfolder": "241106/AdvancedLivePortrait", - "type": "output", - "format": "video/h264-mp4", - "frame_rate": 15 - } - } - }, - "color": "#2a363b", - "bgcolor": "#3f5159" - }, - { - "id": 92, - "type": "DepthflowMotionPresetDolly", - "pos": { - "0": 4324, - "1": 1350 - }, - "size": [ - 270.4984918509772, - 250 - ], - "flags": {}, - "order": 38, - "mode": 0, - "inputs": [ - { - "name": "feature", - "type": "FEATURE", - "link": 100, - "shape": 7 - } - ], - "outputs": [ - { - "name": "DEPTHFLOW_MOTION", - "type": "DEPTHFLOW_MOTION", - "links": [] - } - ], - "properties": { - "Node name for S&R": "DepthflowMotionPresetDolly", - "ttNbgOverride": { - "color": "#2a363b", - "bgcolor": "#3f5159", - "groupcolor": "#3f789e" - } - }, - "widgets_values": [ - 1, - 0, - "intensity", - "relative", - 2.05, - false, - false, - false, - 0.5 - ], - "color": "#2a363b", - "bgcolor": "#3f5159" - } - ], - "links": [ - [ - 16, - 24, - 0, - 27, - 0, - "IMAGE" - ], - [ - 17, - 22, - 0, - 15, - 0, - "IMAGE" - ], - [ - 18, - 15, - 1, - 28, - 3, - "EDITOR_LINK" - ], - [ - 23, - 31, - 0, - 32, - 0, - "OPEN_UNMIX_MODEL" - ], - [ - 24, - 16, - 0, - 32, - 1, - "AUDIO" - ], - [ - 30, - 16, - 0, - 27, - 1, - "AUDIO" - ], - [ - 44, - 21, - 1, - 58, - 0, - "FEATURE_PIPE" - ], - [ - 45, - 58, - 0, - 28, - 4, - "FEATURE" - ], - [ - 46, - 59, - 0, - 51, - 0, - "IMAGE" - ], - [ - 47, - 58, - 0, - 59, - 0, - "FEATURE" - ], - [ - 48, - 16, - 0, - 61, - 0, - "AUDIO" - ], - [ - 49, - 28, - 1, - 62, - 3, - "EDITOR_LINK" - ], - [ - 51, - 32, - 4, - 64, - 0, - "AUDIO" - ], - [ - 52, - 32, - 4, - 21, - 0, - "AUDIO" - ], - [ - 54, - 32, - 1, - 63, - 0, - "AUDIO" - ], - [ - 55, - 63, - 0, - 62, - 4, - "FEATURE" - ], - [ - 59, - 63, - 0, - 67, - 0, - "FEATURE" - ], - [ - 60, - 67, - 0, - 68, - 0, - "IMAGE" - ], - [ - 71, - 62, - 1, - 24, - 1, - "EDITOR_LINK" - ], - [ - 72, - 73, - 1, - 69, - 0, - "IMAGE" - ], - [ - 73, - 21, - 0, - 73, - 0, - "FEATURE" - ], - [ - 74, - 73, - 0, - 15, - 4, - "FEATURE" - ], - [ - 76, - 32, - 1, - 56, - 0, - "AUDIO" - ], - [ - 77, - 28, - 3, - 24, - 3, - "STRING" - ], - [ - 78, - 90, - 0, - 89, - 0, - "DEPTHCRAFTER_MODEL" - ], - [ - 79, - 24, - 0, - 89, - 1, - "IMAGE" - ], - [ - 81, - 24, - 0, - 91, - 0, - "IMAGE" - ], - [ - 83, - 91, - 0, - 93, - 0, - "IMAGE" - ], - [ - 84, - 16, - 0, - 93, - 1, - "AUDIO" - ], - [ - 85, - 94, - 0, - 27, - 4, - "STRING" - ], - [ - 86, - 94, - 0, - 93, - 4, - "STRING" - ], - [ - 87, - 89, - 0, - 95, - 0, - "IMAGE" - ], - [ - 91, - 99, - 0, - 100, - 0, - "IMAGE" - ], - [ - 92, - 99, - 0, - 91, - 1, - "IMAGE" - ], - [ - 95, - 89, - 0, - 97, - 0, - "IMAGE" - ], - [ - 96, - 97, - 0, - 102, - 0, - "MASK" - ], - [ - 97, - 102, - 0, - 99, - 0, - "MASK" - ], - [ - 98, - 24, - 0, - 103, - 0, - "*" - ], - [ - 99, - 103, - 0, - 91, - 4, - "INT" - ], - [ - 100, - 63, - 0, - 92, - 0, - "FEATURE" - ], - [ - 101, - 104, - 0, - 105, - 1, - "DEPTHFLOW_MOTION" - ], - [ - 102, - 105, - 0, - 91, - 2, - "DEPTHFLOW_MOTION" - ], - [ - 103, - 63, - 0, - 105, - 0, - "FEATURE" - ] - ], - "groups": [ - { - "title": "Create Depthmap", - "bounding": [ - 3307, - 246, - 408, - 414 - ], - "color": "#3f789e", - "font_size": 24, - "flags": {} - }, - { - "title": "Dilate Mask (fix edges)", - "bounding": [ - 3773, - 415, - 355, - 722 - ], - "color": "#3f789e", - "font_size": 24, - "flags": {} - }, - { - "title": ":)", - "bounding": [ - -2768, - -53, - 1989, - 1400 - ], - "color": "#3f789e", - "font_size": 1000, - "flags": {} - }, - { - "title": "Feature Manipulation", - "bounding": [ - -2092, - 1352, - 1315, - 699 - ], - "color": "#3f789e", - "font_size": 24, - "flags": {} - }, - { - "title": "Dolly Zoom Feature", - "bounding": [ - 4302, - 660, - 307, - 554 - ], - "color": "#3f789e", - "font_size": 24, - "flags": {} - } - ], - "config": {}, - "extra": { - "ds": { - "scale": 0.32349184307614853, - "offset": [ - -656.71486786166, - 590.7996280570777 - ] - } - }, - "version": 0.4 -} \ No newline at end of file diff --git a/examples/blood_buubbles.json b/examples/blood_buubbles_version2.json similarity index 75% rename from examples/blood_buubbles.json rename to examples/blood_buubbles_version2.json index a85792c..d98ecf6 100644 --- a/examples/blood_buubbles.json +++ b/examples/blood_buubbles_version2.json @@ -1,44 +1,48 @@ { - "last_node_id": 193, - "last_link_id": 319, + "last_node_id": 213, + "last_link_id": 359, "nodes": [ { "id": 11, "type": "ADE_AnimateDiffSamplingSettings", "pos": [ - 2902.5702592773905, - 566.8767742985053 + 2902.5703125, + 566.8767700195312 + ], + "size": [ + 273.3500061035156, + 274 ], - "size": { - "0": 273.3500061035156, - "1": 254 - }, "flags": {}, - "order": 32, + "order": 36, "mode": 0, "inputs": [ { "name": "noise_layers", "type": "NOISE_LAYERS", "link": null, - "slot_index": 0 + "slot_index": 0, + "shape": 7 }, { "name": "iteration_opts", "type": "ITERATION_OPTS", - "link": null + "link": null, + "shape": 7 }, { "name": "custom_cfg", "type": "CUSTOM_CFG", "link": 16, - "slot_index": 2 + "slot_index": 2, + "shape": 7 }, { "name": "sigma_schedule", "type": "SIGMA_SCHEDULE", "link": 17, - "slot_index": 3 + "slot_index": 3, + "shape": 7 }, { "name": "seed_override", @@ -55,6 +59,12 @@ "widget": { "name": "seed_override" } + }, + { + "name": "image_inject", + "type": "IMAGE_INJECT", + "link": null, + "shape": 7 } ], "outputs": [ @@ -64,8 +74,8 @@ "links": [ 13 ], - "shape": 3, - "slot_index": 0 + "slot_index": 0, + "shape": 3 } ], "properties": { @@ -82,24 +92,24 @@ "comfy", 0, 0, - false, - "" + false ] }, { "id": 12, "type": "ADE_SigmaSchedule", "pos": [ - 2566.9247535405552, - 581.4959996318397 + 2566.9248046875, + 581.4959716796875 + ], + "size": [ + 244.73928833007812, + 58 ], - "size": { - "0": 244.73928833007812, - "1": 58 - }, "flags": {}, "order": 0, "mode": 0, + "inputs": [], "outputs": [ { "name": "SIGMA_SCHEDULE", @@ -107,8 +117,8 @@ "links": [ 17 ], - "shape": 3, - "slot_index": 0 + "slot_index": 0, + "shape": 3 } ], "title": "Sigma Schedule 🎭🅐🅓", @@ -128,13 +138,13 @@ "id": 13, "type": "ADE_MultivalDynamic", "pos": [ - 2556.9247535405552, - 231.49599963183962 + 2556.9248046875, + 231.49600219726562 + ], + "size": [ + 259.9388122558594, + 63.332008361816406 ], - "size": { - "0": 259.9388122558594, - "1": 63.332008361816406 - }, "flags": {}, "order": 1, "mode": 0, @@ -142,7 +152,8 @@ { "name": "mask_optional", "type": "MASK", - "link": null + "link": null, + "shape": 7 } ], "outputs": [ @@ -152,8 +163,8 @@ "links": [ 14 ], - "shape": 3, - "slot_index": 0 + "slot_index": 0, + "shape": 3 } ], "title": "Scale 🎭🅐🅓", @@ -166,21 +177,20 @@ } }, "widgets_values": [ - 1.1400000000000001, - "" + 1.1400000000000001 ] }, { "id": 14, "type": "ADE_AnimateDiffUniformContextOptions", "pos": [ - 2902.5702592773905, - 256.8767742985048 + 2902.5703125, + 256.87677001953125 + ], + "size": [ + 273.269775390625, + 270 ], - "size": { - "0": 273.269775390625, - "1": 270 - }, "flags": {}, "order": 2, "mode": 0, @@ -188,12 +198,14 @@ { "name": "prev_context", "type": "CONTEXT_OPTIONS", - "link": null + "link": null, + "shape": 7 }, { "name": "view_opts", "type": "VIEW_OPTS", - "link": null + "link": null, + "shape": 7 } ], "outputs": [ @@ -203,8 +215,8 @@ "links": [ 10 ], - "shape": 3, - "slot_index": 0 + "slot_index": 0, + "shape": 3 } ], "title": "Context Options 🎭🅐🅓", @@ -233,13 +245,13 @@ "id": 15, "type": "ADE_MultivalDynamic", "pos": [ - 2556.9247535405552, - 121.49599963183998 + 2556.9248046875, + 121.49600219726562 + ], + "size": [ + 265.1632385253906, + 58 ], - "size": { - "0": 265.1632385253906, - "1": 58 - }, "flags": {}, "order": 3, "mode": 0, @@ -247,7 +259,8 @@ { "name": "mask_optional", "type": "MASK", - "link": null + "link": null, + "shape": 7 } ], "outputs": [ @@ -270,21 +283,20 @@ } }, "widgets_values": [ - 1.1, - "" + 1.1 ] }, { "id": 16, "type": "ADE_CustomCFGSimple", "pos": [ - 2556.9247535405552, - 331.4959996318394 + 2556.9248046875, + 331.4960021972656 + ], + "size": [ + 257.2469787597656, + 60.893348693847656 ], - "size": { - "0": 257.2469787597656, - "1": 60.893348693847656 - }, "flags": {}, "order": 4, "mode": 0, @@ -292,7 +304,8 @@ { "name": "cfg_extras", "type": "CFG_EXTRAS", - "link": null + "link": null, + "shape": 7 } ], "outputs": [ @@ -314,38 +327,39 @@ } }, "widgets_values": [ - 2, - "" + 2 ] }, { "id": 17, "type": "ADE_AnimateDiffSettings", "pos": [ - 2586.9247535405552, - 681.4959996318403 + 2586.9248046875, + 681.4959716796875 + ], + "size": [ + 226.8000030517578, + 54 ], - "size": { - "0": 226.8000030517578, - "1": 54 - }, "flags": { "collapsed": true }, - "order": 33, + "order": 37, "mode": 0, "inputs": [ { "name": "pe_adjust", "type": "PE_ADJUST", "link": 18, - "slot_index": 0 + "slot_index": 0, + "shape": 7 }, { "name": "weight_adjust", "type": "WEIGHT_ADJUST", "link": 19, - "slot_index": 1 + "slot_index": 1, + "shape": 7 } ], "outputs": [ @@ -366,21 +380,19 @@ "groupcolor": "#3f789e" } }, - "widgets_values": [ - "" - ] + "widgets_values": [] }, { "id": 18, "type": "ADE_AdjustPESweetspotStretch", "pos": [ - 2556.9247535405552, - 431.49599963184 + 2556.9248046875, + 431.4960021972656 + ], + "size": [ + 253.07310485839844, + 106 ], - "size": { - "0": 253.07310485839844, - "1": 106 - }, "flags": {}, "order": 5, "mode": 0, @@ -388,7 +400,8 @@ { "name": "prev_pe_adjust", "type": "PE_ADJUST", - "link": null + "link": null, + "shape": 7 } ], "outputs": [ @@ -412,21 +425,20 @@ "widgets_values": [ 16, 18, - false, - "" + false ] }, { "id": 20, "type": "ADE_AnimateDiffLoRALoader", "pos": [ - 2573.9247535405557, - -164.5040003681618 + 2573.9248046875, + -164.50399780273438 + ], + "size": [ + 261.19134521484375, + 82 ], - "size": { - "0": 261.19134521484375, - "1": 82 - }, "flags": {}, "order": 6, "mode": 0, @@ -434,7 +446,8 @@ { "name": "prev_motion_lora", "type": "MOTION_LORA", - "link": null + "link": null, + "shape": 7 } ], "outputs": [ @@ -444,8 +457,8 @@ "links": [ 11 ], - "shape": 3, - "slot_index": 0 + "slot_index": 0, + "shape": 3 } ], "title": "AnimateDiff LoRA", @@ -459,21 +472,20 @@ }, "widgets_values": [ "LiquidAF-0-1.safetensors", - 0.8, - "" + 0.8 ] }, { "id": 19, "type": "ADE_AdjustWeightAllMult", "pos": [ - 2568.9247535405552, - -31.504000368160426 + 2568.9248046875, + -31.503999710083008 + ], + "size": [ + 270.3999938964844, + 82 ], - "size": { - "0": 270.3999938964844, - "1": 82 - }, "flags": {}, "order": 7, "mode": 0, @@ -481,7 +493,8 @@ { "name": "prev_weight_adjust", "type": "WEIGHT_ADJUST", - "link": null + "link": null, + "shape": 7 } ], "outputs": [ @@ -504,8 +517,7 @@ }, "widgets_values": [ 1.01, - false, - "" + false ] }, { @@ -515,12 +527,12 @@ -5100, 1270 ], - "size": { - "0": 210, - "1": 86 - }, + "size": [ + 210, + 86 + ], "flags": {}, - "order": 67, + "order": 72, "mode": 4, "inputs": [ { @@ -537,25 +549,25 @@ "shape": 3 }, { - "name": "768 width", + "name": "width", "type": "INT", "links": [ 31 ], - "shape": 3, - "slot_index": 1 + "slot_index": 1, + "shape": 3 }, { - "name": "460 height", + "name": "height", "type": "INT", "links": [ 32 ], - "shape": 3, - "slot_index": 2 + "slot_index": 2, + "shape": 3 }, { - "name": "1 count", + "name": "count", "type": "INT", "links": null, "shape": 3 @@ -563,7 +575,8 @@ ], "properties": { "Node name for S&R": "GetImageSizeAndCount" - } + }, + "widgets_values": [] }, { "id": 29, @@ -574,10 +587,10 @@ ], "size": [ 315, - 501.4609375 + 334 ], "flags": {}, - "order": 84, + "order": 91, "mode": 4, "inputs": [ { @@ -588,17 +601,20 @@ { "name": "audio", "type": "AUDIO", - "link": null + "link": null, + "shape": 7 }, { "name": "meta_batch", "type": "VHS_BatchManager", - "link": null + "link": null, + "shape": 7 }, { "name": "vae", "type": "VAE", - "link": null + "link": null, + "shape": 7 } ], "outputs": [ @@ -620,6 +636,7 @@ "pix_fmt": "yuv420p", "crf": 19, "save_metadata": true, + "trim_to_audio": false, "pingpong": false, "save_output": true, "videopreview": { @@ -639,15 +656,15 @@ "id": 34, "type": "ModelSamplingDiscrete", "pos": [ - 2885.94512355919, - -172.62140968188677 + 2885.945068359375, + -172.6214141845703 + ], + "size": [ + 315, + 82 ], - "size": { - "0": 315, - "1": 82 - }, "flags": {}, - "order": 93, + "order": 100, "mode": 0, "inputs": [ { @@ -664,8 +681,8 @@ 37, 180 ], - "shape": 3, - "slot_index": 0 + "slot_index": 0, + "shape": 3 } ], "properties": { @@ -683,13 +700,14 @@ -4400, 80 ], - "size": { - "0": 361.20001220703125, - "1": 58 - }, + "size": [ + 361.20001220703125, + 58 + ], "flags": {}, "order": 8, "mode": 4, + "inputs": [], "outputs": [ { "name": "GROUNDING_DINO_MODEL", @@ -697,8 +715,8 @@ "links": [ 46 ], - "shape": 3, - "slot_index": 0 + "slot_index": 0, + "shape": 3 } ], "properties": { @@ -712,15 +730,15 @@ "id": 10, "type": "ADE_AnimateDiffLoaderGen1", "pos": [ - 2902.5702592773905, - -43.123225701493766 + 2902.5703125, + -43.123226165771484 + ], + "size": [ + 271.7644958496094, + 242 ], - "size": { - "0": 271.7644958496094, - "1": 242 - }, "flags": {}, - "order": 88, + "order": 95, "mode": 0, "inputs": [ { @@ -733,47 +751,55 @@ "name": "context_options", "type": "CONTEXT_OPTIONS", "link": 10, - "slot_index": 1 + "slot_index": 1, + "shape": 7 }, { "name": "motion_lora", "type": "MOTION_LORA", "link": 11, - "slot_index": 2 + "slot_index": 2, + "shape": 7 }, { "name": "ad_settings", "type": "AD_SETTINGS", "link": 12, - "slot_index": 3 + "slot_index": 3, + "shape": 7 }, { "name": "ad_keyframes", "type": "AD_KEYFRAMES", - "link": null + "link": null, + "shape": 7 }, { "name": "sample_settings", "type": "SAMPLE_SETTINGS", "link": 13, - "slot_index": 5 + "slot_index": 5, + "shape": 7 }, { "name": "scale_multival", "type": "MULTIVAL", "link": 14, - "slot_index": 6 + "slot_index": 6, + "shape": 7 }, { "name": "effect_multival", "type": "MULTIVAL", "link": 15, - "slot_index": 7 + "slot_index": 7, + "shape": 7 }, { "name": "per_block", "type": "PER_BLOCK", - "link": null + "link": null, + "shape": 7 } ], "outputs": [ @@ -783,8 +809,8 @@ "links": [ 36 ], - "shape": 3, - "slot_index": 0 + "slot_index": 0, + "shape": 3 } ], "properties": { @@ -807,12 +833,12 @@ 4129, -213 ], - "size": { - "0": 210, - "1": 46 - }, + "size": [ + 210, + 46 + ], "flags": {}, - "order": 104, + "order": 111, "mode": 0, "inputs": [ { @@ -838,7 +864,8 @@ ], "properties": { "Node name for S&R": "VAEDecode" - } + }, + "widgets_values": [] }, { "id": 39, @@ -847,13 +874,15 @@ -4730, -50 ], - "size": { - "0": 210, - "1": 58 - }, + "size": [ + 210, + 58 + ], "flags": {}, "order": 9, "mode": 4, + "inputs": [], + "outputs": [], "properties": { "text": "" }, @@ -867,15 +896,15 @@ "id": 107, "type": "VHS_VideoCombine", "pos": [ - 6454.090864701701, - -2242.4548117897752 + 7074.869140625, + -2284.9140625 ], "size": [ - 210, - 439 + 214.7587890625, + 465.6667785644531 ], "flags": {}, - "order": 94, + "order": 101, "mode": 0, "inputs": [ { @@ -885,18 +914,21 @@ }, { "name": "audio", - "type": "*", - "link": 173 + "type": "AUDIO", + "link": 173, + "shape": 7 }, { "name": "meta_batch", "type": "VHS_BatchManager", - "link": null + "link": null, + "shape": 7 }, { "name": "vae", "type": "VAE", - "link": null + "link": null, + "shape": 7 } ], "outputs": [ @@ -918,113 +950,36 @@ "pix_fmt": "yuv420p", "crf": 19, "save_metadata": true, + "trim_to_audio": false, "pingpong": false, "save_output": true, "videopreview": { "hidden": false, "paused": false, "params": { - "filename": "AnimateDiff_07568-audio.mp4", + "filename": "AnimateDiff_02351-audio.mp4", "subfolder": "", "type": "output", "format": "video/h264-mp4", - "frame_rate": 30 + "frame_rate": 30, + "workflow": "AnimateDiff_02351.png", + "fullpath": "/runpod-volume/ComfyUI_rv/output/AnimateDiff_02351-audio.mp4" }, "muted": false } } }, { - "id": 106, - "type": "VHS_VideoCombine", + "id": 96, + "type": "GetNode", "pos": [ - 5404.090864701701, - -1872.4548117897748 + 4904.869140625, + -2534.914306640625 ], "size": [ 210, - 439 - ], - "flags": {}, - "order": 81, - "mode": 0, - "inputs": [ - { - "name": "images", - "type": "IMAGE", - "link": 166 - }, - { - "name": "audio", - "type": "*", - "link": null - }, - { - "name": "meta_batch", - "type": "VHS_BatchManager", - "link": null - }, - { - "name": "vae", - "type": "VAE", - "link": null, - "slot_index": 3 - } + 58 ], - "outputs": [ - { - "name": "Filenames", - "type": "VHS_FILENAMES", - "links": null, - "shape": 3 - } - ], - "properties": { - "Node name for S&R": "VHS_VideoCombine" - }, - "widgets_values": { - "frame_rate": 30, - "loop_count": 0, - "filename_prefix": "AnimateDiff", - "format": "video/h264-mp4", - "pix_fmt": "yuv420p", - "crf": 19, - "save_metadata": true, - "pingpong": false, - "save_output": true, - "videopreview": { - "hidden": false, - "paused": false, - "params": { - "filename": "AnimateDiff_07567.mp4", - "subfolder": "", - "type": "output", - "format": "video/h264-mp4", - "frame_rate": 30 - }, - "muted": false - } - } - }, - { - "id": 96, - "type": "GetNode", - "pos": { - "0": 4284.0908203125, - "1": -2492.455078125, - "2": 0, - "3": 0, - "4": 0, - "5": 0, - "6": 0, - "7": 0, - "8": 0, - "9": 0 - }, - "size": { - "0": 210, - "1": 58 - }, "flags": {}, "order": 10, "mode": 0, @@ -1052,12 +1007,12 @@ 5830, -100 ], - "size": { - "0": 210, - "1": 46 - }, + "size": [ + 210, + 46 + ], "flags": {}, - "order": 110, + "order": 117, "mode": 0, "inputs": [ { @@ -1083,27 +1038,20 @@ ], "properties": { "Node name for S&R": "VAEDecode" - } + }, + "widgets_values": [] }, { "id": 85, "type": "GetNode", - "pos": { - "0": 4284, - "1": -330, - "2": 0, - "3": 0, - "4": 0, - "5": 0, - "6": 0, - "7": 0, - "8": 0, - "9": 0 - }, - "size": { - "0": 210, - "1": 58 - }, + "pos": [ + 4284, + -330 + ], + "size": [ + 210, + 58 + ], "flags": {}, "order": 11, "mode": 0, @@ -1128,15 +1076,15 @@ "id": 24, "type": "GetImageSizeAndCount", "pos": [ - 4332.939493202866, - -145.26789521342766 + 4332.939453125, + -145.2678985595703 + ], + "size": [ + 210, + 86 ], - "size": { - "0": 210, - "1": 86 - }, "flags": {}, - "order": 106, + "order": 113, "mode": 0, "inputs": [ { @@ -1152,24 +1100,24 @@ "links": [ 21 ], - "shape": 3, - "slot_index": 0 + "slot_index": 0, + "shape": 3 }, { - "name": "768 width", + "name": "width", "type": "INT", "links": [], - "shape": 3, - "slot_index": 1 + "slot_index": 1, + "shape": 3 }, { - "name": "464 height", + "name": "height", "type": "INT", "links": null, "shape": 3 }, { - "name": "90 count", + "name": "count", "type": "INT", "links": null, "shape": 3 @@ -1177,47 +1125,53 @@ ], "properties": { "Node name for S&R": "GetImageSizeAndCount" - } + }, + "widgets_values": [] }, { "id": 109, "type": "ParticleEmitter", "pos": [ - 4244.090864701702, - -1662.4548117897746 + 4864.869140625, + -1704.9140625 + ], + "size": [ + 468.5999755859375, + 402 ], - "size": { - "0": 468.5999755859375, - "1": 402 - }, "flags": {}, - "order": 59, + "order": 63, "mode": 0, "inputs": [ { "name": "previous_emitter", "type": "PARTICLE_EMITTER", - "link": null + "link": null, + "shape": 7 }, { "name": "emitter_movement", "type": "EMITTER_MOVEMENT", - "link": null + "link": null, + "shape": 7 }, { "name": "spring_joint_setting", "type": "SPRING_JOINT_SETTING", - "link": null + "link": null, + "shape": 7 }, { "name": "particle_modulation", "type": "PARTICLE_MODULATION", - "link": null + "link": null, + "shape": 7 }, { "name": "emitter_modulation", "type": "EMITTER_MODULATION", - "link": 172 + "link": 172, + "shape": 7 } ], "outputs": [ @@ -1227,8 +1181,8 @@ "links": [ 162 ], - "shape": 3, - "slot_index": 0 + "slot_index": 0, + "shape": 3 } ], "properties": { @@ -1253,15 +1207,15 @@ "id": 140, "type": "VHS_VideoCombine", "pos": [ - 6564.090864701701, - -1542.4548117897746 + 7184.869140625, + -1584.9140625 ], "size": [ - 210, - 439 + 214.7587890625, + 465.6667785644531 ], "flags": {}, - "order": 100, + "order": 107, "mode": 0, "inputs": [ { @@ -1271,19 +1225,22 @@ }, { "name": "audio", - "type": "*", - "link": 231 + "type": "AUDIO", + "link": 231, + "shape": 7 }, { "name": "meta_batch", "type": "VHS_BatchManager", - "link": null + "link": null, + "shape": 7 }, { "name": "vae", "type": "VAE", "link": null, - "slot_index": 3 + "slot_index": 3, + "shape": 7 } ], "outputs": [ @@ -1305,17 +1262,20 @@ "pix_fmt": "yuv420p", "crf": 19, "save_metadata": true, + "trim_to_audio": false, "pingpong": false, "save_output": true, "videopreview": { "hidden": false, "paused": false, "params": { - "filename": "AnimateDiff_07569-audio.mp4", + "filename": "AnimateDiff_02345-audio.mp4", "subfolder": "", "type": "output", "format": "video/h264-mp4", - "frame_rate": 30 + "frame_rate": 30, + "workflow": "AnimateDiff_02345.png", + "fullpath": "/runpod-volume/ComfyUI_rv/output/AnimateDiff_02345-audio.mp4" }, "muted": false } @@ -1328,12 +1288,12 @@ -4290, 470 ], - "size": { - "0": 210, - "1": 26 - }, + "size": [ + 210, + 26 + ], "flags": {}, - "order": 90, + "order": 97, "mode": 4, "inputs": [ { @@ -1349,33 +1309,26 @@ "links": [ 51 ], - "shape": 3, - "slot_index": 0 + "slot_index": 0, + "shape": 3 } ], "properties": { "Node name for S&R": "MaskToImage" - } + }, + "widgets_values": [] }, { "id": 127, "type": "GetNode", - "pos": { - "0": 6000, - "1": -200, - "2": 0, - "3": 0, - "4": 0, - "5": 0, - "6": 0, - "7": 0, - "8": 0, - "9": 0 - }, - "size": { - "0": 210, - "1": 58 - }, + "pos": [ + 6000, + -200 + ], + "size": [ + 210, + 58 + ], "flags": {}, "order": 12, "mode": 0, @@ -1401,26 +1354,28 @@ "id": 139, "type": "EmitterEmissionRateModulation", "pos": [ - 3764.090864701702, - -972.4548117897748 + 4384.86865234375, + -1014.9136962890625 + ], + "size": [ + 420, + 222 ], - "size": { - "0": 420, - "1": 222 - }, "flags": {}, - "order": 45, + "order": 44, "mode": 0, "inputs": [ { "name": "previous_modulation", "type": "EMITTER_MODULATION", - "link": null + "link": null, + "shape": 7 }, { "name": "feature", "type": "FEATURE", - "link": 205 + "link": 205, + "shape": 7 } ], "outputs": [ @@ -1430,8 +1385,8 @@ "links": [ 206 ], - "shape": 3, - "slot_index": 0 + "slot_index": 0, + "shape": 3 } ], "properties": { @@ -1451,15 +1406,15 @@ "id": 7, "type": "CLIPTextEncode", "pos": [ - 761.812684642982, - 407.93920696064566 + 761.8126831054688, + 407.939208984375 + ], + "size": [ + 425.27801513671875, + 180.6060791015625 ], - "size": { - "0": 425.27801513671875, - "1": 180.6060791015625 - }, "flags": {}, - "order": 56, + "order": 61, "mode": 0, "inputs": [ { @@ -1488,22 +1443,14 @@ { "id": 155, "type": "GetNode", - "pos": { - "0": 5904.08935546875, - "1": -1412.454833984375, - "2": 0, - "3": 0, - "4": 0, - "5": 0, - "6": 0, - "7": 0, - "8": 0, - "9": 0 - }, - "size": { - "0": 210, - "1": 58 - }, + "pos": [ + 6524.86767578125, + -1454.9140625 + ], + "size": [ + 210, + 58 + ], "flags": {}, "order": 13, "mode": 0, @@ -1528,13 +1475,13 @@ "id": 38, "type": "CR Apply LoRA Stack", "pos": [ - 327.81268464298216, - 358.93920696064566 + 327.81268310546875, + 358.939208984375 + ], + "size": [ + 254.40000915527344, + 66 ], - "size": { - "0": 254.40000915527344, - "1": 66 - }, "flags": {}, "order": 41, "mode": 0, @@ -1562,8 +1509,8 @@ "links": [ 77 ], - "shape": 3, - "slot_index": 0 + "slot_index": 0, + "shape": 3 }, { "name": "CLIP", @@ -1572,8 +1519,8 @@ 257, 258 ], - "shape": 3, - "slot_index": 1 + "slot_index": 1, + "shape": 3 }, { "name": "show_help", @@ -1584,27 +1531,28 @@ ], "properties": { "Node name for S&R": "CR Apply LoRA Stack" - } + }, + "widgets_values": [] }, { "id": 55, "type": "GetImageSizeAndCount", "pos": [ - 508.4575154163309, - -763.0233589876258 + 579.0004272460938, + -739.0653076171875 + ], + "size": [ + 210, + 86 ], - "size": { - "0": 210, - "1": 86 - }, "flags": {}, - "order": 92, + "order": 99, "mode": 0, "inputs": [ { "name": "image", "type": "IMAGE", - "link": 259 + "link": 324 } ], "outputs": [ @@ -1615,54 +1563,55 @@ 69, 146 ], - "shape": 3, - "slot_index": 0 + "slot_index": 0, + "shape": 3 }, { "name": "768 width", "type": "INT", "links": [], - "shape": 3, - "slot_index": 1 + "slot_index": 1, + "shape": 3 }, { "name": "464 height", "type": "INT", "links": [], - "shape": 3, - "slot_index": 2 + "slot_index": 2, + "shape": 3 }, { - "name": "90 count", + "name": "60 count", "type": "INT", "links": [], - "shape": 3, - "slot_index": 3 + "slot_index": 3, + "shape": 3 } ], "properties": { "Node name for S&R": "GetImageSizeAndCount" - } + }, + "widgets_values": [] }, { "id": 177, "type": "GetImageSizeAndCount", "pos": [ - -239.5424845836691, - -816.0233589876258 + -168.99948120117188, + -792.0653686523438 + ], + "size": [ + 210, + 86 ], - "size": { - "0": 210, - "1": 86 - }, "flags": {}, - "order": 78, + "order": 85, "mode": 0, "inputs": [ { "name": "image", "type": "IMAGE", - "link": 265 + "link": 333 } ], "outputs": [ @@ -1670,10 +1619,10 @@ "name": "image", "type": "IMAGE", "links": [ - 256 + 323 ], - "shape": 3, - "slot_index": 0 + "slot_index": 0, + "shape": 3 }, { "name": "768 width", @@ -1696,68 +1645,8 @@ ], "properties": { "Node name for S&R": "GetImageSizeAndCount" - } - }, - { - "id": 179, - "type": "Make Image Batch", - "pos": [ - -639.5424845836687, - -772.0233589876258 - ], - "size": { - "0": 210, - "1": 126 }, - "flags": {}, - "order": 69, - "mode": 0, - "inputs": [ - { - "name": "image1", - "type": "IMAGE", - "link": 297 - }, - { - "name": "image2", - "type": "IMAGE", - "link": 262 - }, - { - "name": "image3", - "type": "IMAGE", - "link": 298 - }, - { - "name": "image4", - "type": "IMAGE", - "link": null - }, - { - "name": "image5", - "type": "IMAGE", - "link": null - }, - { - "name": "image6", - "type": "IMAGE", - "link": null - } - ], - "outputs": [ - { - "name": "IMAGE", - "type": "IMAGE", - "links": [ - 265 - ], - "shape": 3, - "slot_index": 0 - } - ], - "properties": { - "Node name for S&R": "Make Image Batch" - } + "widgets_values": [] }, { "id": 151, @@ -1766,12 +1655,12 @@ -1281, -1822 ], - "size": { - "0": 315, - "1": 76 - }, + "size": [ + 315, + 76 + ], "flags": {}, - "order": 37, + "order": 53, "mode": 0, "inputs": [ { @@ -1780,6 +1669,7 @@ "link": 227 } ], + "outputs": [], "properties": { "Node name for S&R": "PreviewAudio" }, @@ -1790,22 +1680,14 @@ { "id": 182, "type": "GetNode", - "pos": { - "0": 5128.25390625, - "1": 720.1207275390625, - "2": 0, - "3": 0, - "4": 0, - "5": 0, - "6": 0, - "7": 0, - "8": 0, - "9": 0 - }, - "size": { - "0": 210, - "1": 58 - }, + "pos": [ + 5128.25390625, + 720.1207275390625 + ], + "size": [ + 210, + 58 + ], "flags": {}, "order": 14, "mode": 0, @@ -1830,15 +1712,15 @@ "id": 184, "type": "GetImageSizeAndCount", "pos": [ - 5481.252367295645, - 550.1208414082304 + 5481.25244140625, + 550.120849609375 + ], + "size": [ + 210, + 86 ], - "size": { - "0": 210, - "1": 86 - }, "flags": {}, - "order": 113, + "order": 120, "mode": 0, "inputs": [ { @@ -1854,29 +1736,29 @@ "links": [ 291 ], - "shape": 3, - "slot_index": 0 + "slot_index": 0, + "shape": 3 }, { - "name": "1280 width", + "name": "width", "type": "INT", "links": [ 279 ], - "shape": 3, - "slot_index": 1 + "slot_index": 1, + "shape": 3 }, { - "name": "776 height", + "name": "height", "type": "INT", "links": [ 278 ], - "shape": 3, - "slot_index": 2 + "slot_index": 2, + "shape": 3 }, { - "name": "90 count", + "name": "count", "type": "INT", "links": null, "shape": 3 @@ -1884,21 +1766,22 @@ ], "properties": { "Node name for S&R": "GetImageSizeAndCount" - } + }, + "widgets_values": [] }, { "id": 185, "type": "ImageScale", "pos": [ - 5411.252367295645, - 701.1208414082304 + 5411.25244140625, + 701.120849609375 + ], + "size": [ + 315, + 130 ], - "size": { - "0": 315, - "1": 130 - }, "flags": {}, - "order": 114, + "order": 121, "mode": 0, "inputs": [ { @@ -1930,8 +1813,8 @@ "links": [ 292 ], - "shape": 3, - "slot_index": 0 + "slot_index": 0, + "shape": 3 } ], "properties": { @@ -1948,8 +1831,8 @@ "id": 189, "type": "Reroute", "pos": [ - -1014.2945885412466, - -851.2465063881074 + -943.7515258789062, + -827.2885131835938 ], "size": [ 75, @@ -1970,9 +1853,9 @@ "name": "", "type": "IMAGE", "links": [ - 297, - 298, - 299 + 299, + 330, + 332 ], "slot_index": 0 } @@ -1986,15 +1869,15 @@ "id": 178, "type": "ReverseImageBatch", "pos": [ - -969.542484583669, - -708.0233589876262 + -898.9994506835938, + -684.0653076171875 + ], + "size": [ + 210, + 26 ], - "size": { - "0": 210, - "1": 26 - }, "flags": {}, - "order": 53, + "order": 58, "mode": 0, "inputs": [ { @@ -2008,29 +1891,30 @@ "name": "IMAGE", "type": "IMAGE", "links": [ - 262 + 331 ], - "shape": 3, - "slot_index": 0 + "slot_index": 0, + "shape": 3 } ], "properties": { "Node name for S&R": "ReverseImageBatch" - } + }, + "widgets_values": [] }, { "id": 70, "type": "PreviewAudio", "pos": [ - -1330.646235329856, - -2350.152563700022 + -1330.646240234375, + -2350.152587890625 + ], + "size": [ + 315, + 76 ], - "size": { - "0": 315, - "1": 76 - }, "flags": {}, - "order": 35, + "order": 51, "mode": 0, "inputs": [ { @@ -2039,6 +1923,7 @@ "link": 95 } ], + "outputs": [], "properties": { "Node name for S&R": "PreviewAudio" }, @@ -2049,30 +1934,22 @@ { "id": 132, "type": "SetNode", - "pos": { - "0": 305, - "1": -2381, - "2": 0, - "3": 0, - "4": 0, - "5": 0, - "6": 0, - "7": 0, - "8": 0, - "9": 0 - }, - "size": { - "0": 210, - "1": 58 - }, + "pos": [ + 305, + -2381 + ], + "size": [ + 210, + 58 + ], "flags": {}, - "order": 63, + "order": 15, "mode": 0, "inputs": [ { "name": "FEATURE_PIPE", "type": "FEATURE_PIPE", - "link": 196 + "link": null } ], "outputs": [ @@ -2091,137 +1968,24 @@ ] }, { - "id": 108, - "type": "GetNode", - "pos": { - "0": 5022.08935546875, - "1": -2389.455078125, - "2": 0, - "3": 0, - "4": 0, - "5": 0, - "6": 0, - "7": 0, - "8": 0, - "9": 0 - }, - "size": { - "0": 210, - "1": 58 - }, + "id": 112, + "type": "SetNode", + "pos": [ + 775, + -1862 + ], + "size": [ + 210, + 58 + ], "flags": {}, - "order": 15, + "order": 89, "mode": 0, - "inputs": [], - "outputs": [ - { - "name": "IMAGE", - "type": "IMAGE", - "links": [ - 223 - ], - "slot_index": 0 - } - ], - "title": "Get_depth", - "properties": {}, - "widgets_values": [ - "depth" - ] - }, - { - "id": 168, - "type": "Reroute", - "pos": [ - -708, - -1923 - ], - "size": [ - 75, - 26 - ], - "flags": {}, - "order": 50, - "mode": 0, - "inputs": [ - { - "name": "", - "type": "*", - "link": 240, - "widget": { - "name": "value" - } - } - ], - "outputs": [ - { - "name": "", - "type": "INT", - "links": [ - 242, - 244, - 251 - ], - "slot_index": 0 - } - ], - "properties": { - "showOutputText": false, - "horizontal": false - } - }, - { - "id": 88, - "type": "PreviewImage", - "pos": [ - 762, - -2188 - ], - "size": { - "0": 210, - "1": 246 - }, - "flags": {}, - "order": 83, - "mode": 0, - "inputs": [ - { - "name": "images", - "type": "IMAGE", - "link": 140 - } - ], - "properties": { - "Node name for S&R": "PreviewImage" - } - }, - { - "id": 112, - "type": "SetNode", - "pos": { - "0": 775, - "1": -1862, - "2": 0, - "3": 0, - "4": 0, - "5": 0, - "6": 0, - "7": 0, - "8": 0, - "9": 0 - }, - "size": { - "0": 210, - "1": 58 - }, - "flags": {}, - "order": 82, - "mode": 0, - "inputs": [ + "inputs": [ { "name": "FEATURE", "type": "FEATURE", - "link": 168 + "link": 345 } ], "outputs": [ @@ -2246,10 +2010,10 @@ -5150, 690 ], - "size": { - "0": 315, - "1": 106 - }, + "size": [ + 315, + 106 + ], "flags": {}, "order": 38, "mode": 4, @@ -2267,8 +2031,8 @@ "links": [ 29 ], - "shape": 3, - "slot_index": 0 + "slot_index": 0, + "shape": 3 } ], "properties": { @@ -2287,10 +2051,10 @@ -5180, 880 ], - "size": { - "0": 315, - "1": 154 - }, + "size": [ + 315, + 154 + ], "flags": {}, "order": 51, "mode": 4, @@ -2308,8 +2072,8 @@ "links": [ 30 ], - "shape": 3, - "slot_index": 0 + "slot_index": 0, + "shape": 3 } ], "properties": { @@ -2324,159 +2088,18 @@ ] }, { - "id": 171, - "type": "DF_Int_to_Float", - "pos": [ - -563, - -1436 - ], - "size": { - "0": 315, - "1": 58 - }, - "flags": {}, - "order": 64, - "mode": 0, - "inputs": [ - { - "name": "Value", - "type": "INT", - "link": 242, - "widget": { - "name": "Value" - } - } - ], - "outputs": [ - { - "name": "FLOAT", - "type": "FLOAT", - "links": [ - 243 - ], - "shape": 3, - "slot_index": 0 - } - ], - "properties": { - "Node name for S&R": "DF_Int_to_Float" - }, - "widgets_values": [ - 1 - ] - }, - { - "id": 172, - "type": "DF_Int_to_Float", - "pos": [ - -327.65543667495604, - -614.7675435348675 - ], - "size": { - "0": 315, - "1": 58 - }, - "flags": {}, - "order": 65, - "mode": 0, - "inputs": [ - { - "name": "Value", - "type": "INT", - "link": 244, - "widget": { - "name": "Value" - } - } - ], - "outputs": [ - { - "name": "FLOAT", - "type": "FLOAT", - "links": [ - 245 - ], - "shape": 3, - "slot_index": 0 - } - ], - "properties": { - "Node name for S&R": "DF_Int_to_Float" - }, - "widgets_values": [ - 1 - ] - }, - { - "id": 164, - "type": "ImageInterval", + "id": 98, + "type": "SetNode", "pos": [ - 110.34456332504392, - -815.7675435348675 - ], - "size": { - "0": 315, - "1": 106 - }, - "flags": {}, - "order": 87, - "mode": 0, - "inputs": [ - { - "name": "image", - "type": "IMAGE", - "link": 256 - }, - { - "name": "end_at", - "type": "FLOAT", - "link": 245, - "widget": { - "name": "end_at" - } - } + 642.8876342773438, + -876.8094482421875 ], - "outputs": [ - { - "name": "IMAGE", - "type": "IMAGE", - "links": [ - 259 - ], - "shape": 3, - "slot_index": 0 - } + "size": [ + 210, + 58 ], - "properties": { - "Node name for S&R": "ImageInterval" - }, - "widgets_values": [ - 1, - 0, - 0 - ] - }, - { - "id": 98, - "type": "SetNode", - "pos": { - "0": 572.3446044921875, - "1": -900.7674560546875, - "2": 0, - "3": 0, - "4": 0, - "5": 0, - "6": 0, - "7": 0, - "8": 0, - "9": 0 - }, - "size": { - "0": 210, - "1": 58 - }, "flags": {}, - "order": 99, + "order": 106, "mode": 0, "inputs": [ { @@ -2498,7 +2121,9 @@ }, "widgets_values": [ "init_img" - ] + ], + "color": "#2a363b", + "bgcolor": "#3f5159" }, { "id": 35, @@ -2507,12 +2132,12 @@ 596, 1 ], - "size": { - "0": 210, - "1": 46 - }, + "size": [ + 210, + 46 + ], "flags": {}, - "order": 98, + "order": 105, "mode": 0, "inputs": [ { @@ -2533,53 +2158,59 @@ "links": [ 84 ], - "shape": 3, - "slot_index": 0 + "slot_index": 0, + "shape": 3 } ], "properties": { "Node name for S&R": "VAEEncode" - } + }, + "widgets_values": [] }, { "id": 137, "type": "ParticleEmitter", "pos": [ - 4232, - -1086 + 4852.7783203125, + -1128.459228515625 + ], + "size": [ + 468.5999755859375, + 402 ], - "size": { - "0": 468.5999755859375, - "1": 402 - }, "flags": {}, - "order": 60, + "order": 64, "mode": 0, "inputs": [ { "name": "previous_emitter", "type": "PARTICLE_EMITTER", - "link": null + "link": null, + "shape": 7 }, { "name": "emitter_movement", "type": "EMITTER_MOVEMENT", - "link": null + "link": null, + "shape": 7 }, { "name": "spring_joint_setting", "type": "SPRING_JOINT_SETTING", - "link": null + "link": null, + "shape": 7 }, { "name": "particle_modulation", "type": "PARTICLE_MODULATION", - "link": null + "link": null, + "shape": 7 }, { "name": "emitter_modulation", "type": "EMITTER_MODULATION", - "link": 206 + "link": 206, + "shape": 7 } ], "outputs": [ @@ -2589,8 +2220,8 @@ "links": [ 204 ], - "shape": 3, - "slot_index": 0 + "slot_index": 0, + "shape": 3 } ], "properties": { @@ -2615,15 +2246,15 @@ "id": 110, "type": "ParticleEmissionMask", "pos": [ - 4934.090864701701, - -1682.4548117897746 + 5554.869140625, + -1724.9140625 + ], + "size": [ + 336, + 474 ], - "size": { - "0": 336, - "1": 474 - }, "flags": {}, - "order": 73, + "order": 78, "mode": 0, "inputs": [ { @@ -2640,17 +2271,20 @@ { "name": "vortices", "type": "VORTEX", - "link": null + "link": null, + "shape": 7 }, { "name": "wells", "type": "GRAVITY_WELL", - "link": null + "link": null, + "shape": 7 }, { "name": "static_bodies", "type": "STATIC_BODY", - "link": null + "link": null, + "shape": 7 } ], "outputs": [ @@ -2660,8 +2294,8 @@ "links": [ 163 ], - "shape": 3, - "slot_index": 0 + "slot_index": 0, + "shape": 3 }, { "name": "IMAGE", @@ -2669,8 +2303,8 @@ "links": [ 166 ], - "shape": 3, - "slot_index": 1 + "slot_index": 1, + "shape": 3 } ], "properties": { @@ -2698,15 +2332,15 @@ "id": 138, "type": "ParticleEmissionMask", "pos": [ - 4939, - -1157 + 5559.7783203125, + -1199.459228515625 + ], + "size": [ + 336, + 474 ], - "size": { - "0": 336, - "1": 474 - }, "flags": {}, - "order": 74, + "order": 79, "mode": 0, "inputs": [ { @@ -2723,17 +2357,20 @@ { "name": "vortices", "type": "VORTEX", - "link": null + "link": null, + "shape": 7 }, { "name": "wells", "type": "GRAVITY_WELL", - "link": null + "link": null, + "shape": 7 }, { "name": "static_bodies", "type": "STATIC_BODY", - "link": null + "link": null, + "shape": 7 } ], "outputs": [ @@ -2743,15 +2380,15 @@ "links": [ 209 ], - "shape": 3, - "slot_index": 0 + "slot_index": 0, + "shape": 3 }, { "name": "IMAGE", "type": "IMAGE", "links": [], - "shape": 3, - "slot_index": 1 + "slot_index": 1, + "shape": 3 } ], "properties": { @@ -2779,15 +2416,15 @@ "id": 59, "type": "DifferentialDiffusion", "pos": [ - 1921.431109281862, - 427.56038255714316 + 1921.43115234375, + 427.5603942871094 + ], + "size": [ + 184.8000030517578, + 26 ], - "size": { - "0": 184.8000030517578, - "1": 26 - }, "flags": {}, - "order": 79, + "order": 86, "mode": 0, "inputs": [ { @@ -2803,13 +2440,14 @@ "links": [ 81 ], - "shape": 3, - "slot_index": 0 + "slot_index": 0, + "shape": 3 } ], "properties": { "Node name for S&R": "DifferentialDiffusion" - } + }, + "widgets_values": [] }, { "id": 183, @@ -2823,7 +2461,7 @@ 26 ], "flags": {}, - "order": 61, + "order": 65, "mode": 0, "inputs": [ { @@ -2855,12 +2493,12 @@ 6004, 29 ], - "size": { - "0": 210, - "1": 86 - }, + "size": [ + 210, + 86 + ], "flags": {}, - "order": 111, + "order": 118, "mode": 0, "inputs": [ { @@ -2877,24 +2515,24 @@ 186, 275 ], - "shape": 3, - "slot_index": 0 + "slot_index": 0, + "shape": 3 }, { - "name": "1280 width", + "name": "width", "type": "INT", "links": [], - "shape": 3, - "slot_index": 1 + "slot_index": 1, + "shape": 3 }, { - "name": "776 height", + "name": "height", "type": "INT", "links": null, "shape": 3 }, { - "name": "90 count", + "name": "count", "type": "INT", "links": null, "shape": 3 @@ -2902,7 +2540,8 @@ ], "properties": { "Node name for S&R": "GetImageSizeAndCount" - } + }, + "widgets_values": [] }, { "id": 186, @@ -2911,12 +2550,12 @@ 5806, 774 ], - "size": { - "0": 315, - "1": 146 - }, + "size": [ + 315, + 146 + ], "flags": {}, - "order": 115, + "order": 122, "mode": 0, "inputs": [ { @@ -2932,7 +2571,8 @@ { "name": "mask", "type": "MASK", - "link": 282 + "link": 282, + "shape": 7 } ], "outputs": [ @@ -2942,8 +2582,8 @@ "links": [ 287 ], - "shape": 3, - "slot_index": 0 + "slot_index": 0, + "shape": 3 } ], "properties": { @@ -2956,66 +2596,18 @@ ] }, { - "id": 63, - "type": "VHS_LoadAudioUpload", + "id": 101, + "type": "SetNode", "pos": [ - -1560, - -2207 + -725, + -2289 ], - "size": { - "0": 243.818359375, - "1": 130 - }, - "flags": {}, - "order": 16, - "mode": 0, - "inputs": [], - "outputs": [ - { - "name": "audio", - "type": "AUDIO", - "links": [ - 88, - 90, - 95, - 102, - 227 - ], - "slot_index": 0, - "shape": 3 - } + "size": [ + 210, + 58 ], - "properties": { - "Node name for S&R": "VHS_LoadAudioUpload" - }, - "widgets_values": { - "audio": "Delta Deez - Songfinch - Out the Mud.mp3", - "start_time": 15, - "duration": 3, - "choose audio to upload": "image" - } - }, - { - "id": 101, - "type": "SetNode", - "pos": { - "0": -725, - "1": -2289, - "2": 0, - "3": 0, - "4": 0, - "5": 0, - "6": 0, - "7": 0, - "8": 0, - "9": 0 - }, - "size": { - "0": 210, - "1": 58 - }, "flags": {}, - "order": 48, + "order": 67, "mode": 0, "inputs": [ { @@ -3037,439 +2629,415 @@ }, "widgets_values": [ "empty_image" - ] + ], + "color": "#2a363b", + "bgcolor": "#3f5159" }, { - "id": 102, - "type": "SetNode", - "pos": { - "0": -720, - "1": -2113, - "2": 0, - "3": 0, - "4": 0, - "5": 0, - "6": 0, - "7": 0, - "8": 0, - "9": 0 - }, - "size": { - "0": 210, - "1": 58 - }, + "id": 65, + "type": "DownloadOpenUnmixModel", + "pos": [ + -389, + -2387 + ], + "size": [ + 541.800048828125, + 58 + ], "flags": {}, - "order": 49, + "order": 16, "mode": 0, - "inputs": [ + "inputs": [], + "outputs": [ { - "name": "MASK", - "type": "MASK", - "link": 151 + "name": "OPEN_UNMIX_MODEL", + "type": "OPEN_UNMIX_MODEL", + "links": [ + 334 + ], + "shape": 3 } ], + "properties": { + "Node name for S&R": "DownloadOpenUnmixModel" + }, + "widgets_values": [ + "umxl" + ] + }, + { + "id": 43, + "type": "SAMModelLoader (segment anything)", + "pos": [ + -4380, + -30 + ], + "size": [ + 315, + 58 + ], + "flags": {}, + "order": 17, + "mode": 4, + "inputs": [], "outputs": [ { - "name": "*", - "type": "*", - "links": null + "name": "SAM_MODEL", + "type": "SAM_MODEL", + "links": [ + 47 + ], + "slot_index": 0, + "shape": 3 } ], - "title": "Set_empty_mask", "properties": { - "previousName": "empty_mask" + "Node name for S&R": "SAMModelLoader (segment anything)" }, "widgets_values": [ - "empty_mask" + "sam_vit_h (2.56GB)" ] }, { - "id": 73, - "type": "SetNode", - "pos": { - "0": -700, - "1": -1994, - "2": 0, - "3": 0, - "4": 0, - "5": 0, - "6": 0, - "7": 0, - "8": 0, - "9": 0 - }, - "size": { - "0": 210, - "1": 58 - }, + "id": 33, + "type": "ImageScale", + "pos": [ + -4580, + 1080 + ], + "size": [ + 315, + 130 + ], "flags": {}, - "order": 36, - "mode": 0, + "order": 83, + "mode": 4, "inputs": [ { - "name": "AUDIO", - "type": "AUDIO", - "link": 102 + "name": "image", + "type": "IMAGE", + "link": 314 + }, + { + "name": "width", + "type": "INT", + "link": 31, + "widget": { + "name": "width" + } + }, + { + "name": "height", + "type": "INT", + "link": 32, + "widget": { + "name": "height" + } } ], "outputs": [ { - "name": "*", - "type": "*", - "links": null + "name": "IMAGE", + "type": "IMAGE", + "links": [ + 34, + 318 + ], + "slot_index": 0, + "shape": 3 } ], - "title": "Set_audio", "properties": { - "previousName": "audio" + "Node name for S&R": "ImageScale" }, "widgets_values": [ - "audio" + "lanczos", + 512, + 512, + "disabled" ] }, { - "id": 64, - "type": "AudioSeparator", + "id": 25, + "type": "VHS_LoadVideo", "pos": [ - -346, - -2267 + -5518, + 701 + ], + "size": [ + 247.455078125, + 262 ], - "size": { - "0": 415.8000183105469, - "1": 158 - }, "flags": {}, - "order": 47, - "mode": 0, + "order": 18, + "mode": 4, "inputs": [ { - "name": "model", - "type": "OPEN_UNMIX_MODEL", - "link": 87 - }, - { - "name": "audio", - "type": "AUDIO", - "link": 88 + "name": "meta_batch", + "type": "VHS_BatchManager", + "link": null, + "shape": 7 }, { - "name": "video_frames", - "type": "IMAGE", - "link": 89 + "name": "vae", + "type": "VAE", + "link": null, + "shape": 7 } ], "outputs": [ { - "name": "audio", - "type": "AUDIO", - "links": [], - "slot_index": 0, - "shape": 3 - }, - { - "name": "drums_audio", - "type": "AUDIO", + "name": "IMAGE", + "type": "IMAGE", "links": [ - 137 + 313, + 314 ], - "slot_index": 1, + "slot_index": 0, "shape": 3 }, { - "name": "vocals_audio", - "type": "AUDIO", - "links": [], - "shape": 3, - "slot_index": 2 - }, - { - "name": "bass_audio", - "type": "AUDIO", - "links": [], - "slot_index": 3, + "name": "frame_count", + "type": "INT", + "links": null, "shape": 3 }, { - "name": "other_audio", + "name": "audio", "type": "AUDIO", - "links": [], - "shape": 3, - "slot_index": 4 + "links": null, + "shape": 3 }, { - "name": "feature_pipe", - "type": "FEATURE_PIPE", - "links": [ - 124, - 196 - ], - "slot_index": 5, + "name": "video_info", + "type": "VHS_VIDEOINFO", + "links": null, "shape": 3 } ], "properties": { - "Node name for S&R": "AudioSeparator" - }, - "widgets_values": [ - 30 - ] - }, - { - "id": 65, - "type": "DownloadOpenUnmixModel", - "pos": [ - -389, - -2387 - ], - "size": { - "0": 541.800048828125, - "1": 58 + "Node name for S&R": "VHS_LoadVideo" }, - "flags": {}, - "order": 17, - "mode": 0, - "inputs": [], - "outputs": [ - { - "name": "OPEN_UNMIX_MODEL", - "type": "OPEN_UNMIX_MODEL", - "links": [ - 87 - ], - "shape": 3 + "widgets_values": { + "video": "floatinginpool.mp4", + "force_rate": 0, + "force_size": "Disabled", + "custom_width": 512, + "custom_height": 512, + "frame_load_cap": 0, + "skip_first_frames": 0, + "select_every_nth": 1, + "choose video to upload": "image", + "videopreview": { + "hidden": false, + "paused": false, + "params": { + "frame_load_cap": 0, + "skip_first_frames": 0, + "force_rate": 0, + "filename": "floatinginpool.mp4", + "type": "input", + "format": "video/mp4", + "select_every_nth": 1 + } } - ], - "properties": { - "Node name for S&R": "DownloadOpenUnmixModel" - }, - "widgets_values": [ - "umxl" - ] + } }, { - "id": 86, - "type": "AudioFeatureExtractor", + "id": 45, + "type": "VHS_VideoCombine", "pos": [ - -101, - -2034 + -3926, + 308 + ], + "size": [ + 315, + 334 ], - "size": { - "0": 361.20001220703125, - "1": 78 - }, "flags": {}, - "order": 62, - "mode": 0, + "order": 103, + "mode": 4, "inputs": [ + { + "name": "images", + "type": "IMAGE", + "link": 51 + }, { "name": "audio", "type": "AUDIO", - "link": 137 + "link": null, + "shape": 7 }, { - "name": "feature_pipe", - "type": "FEATURE_PIPE", - "link": 124 + "name": "meta_batch", + "type": "VHS_BatchManager", + "link": null, + "shape": 7 + }, + { + "name": "vae", + "type": "VAE", + "link": null, + "shape": 7 } ], "outputs": [ { - "name": "FEATURE", - "type": "FEATURE", - "links": [ - 138 - ], - "shape": 3, - "slot_index": 0 - }, - { - "name": "FEATURE_PIPE", - "type": "FEATURE_PIPE", - "links": [], - "shape": 3, - "slot_index": 1 + "name": "Filenames", + "type": "VHS_FILENAMES", + "links": null, + "shape": 3 } ], "properties": { - "Node name for S&R": "AudioFeatureExtractor" + "Node name for S&R": "VHS_VideoCombine" }, - "widgets_values": [ - "amplitude_envelope" - ] + "widgets_values": { + "frame_rate": 30, + "loop_count": 0, + "filename_prefix": "AnimateDiff", + "format": "video/h264-mp4", + "pix_fmt": "yuv420p", + "crf": 19, + "save_metadata": true, + "trim_to_audio": false, + "pingpong": false, + "save_output": true, + "videopreview": { + "hidden": false, + "paused": false, + "params": { + "filename": "AnimateDiff_04858.mp4", + "subfolder": "", + "type": "output", + "format": "video/h264-mp4", + "frame_rate": 30 + } + } + } }, { - "id": 91, - "type": "FeatureMixer", + "id": 42, + "type": "GroundingDinoSAMSegment (segment anything)", "pos": [ - 305, - -2231 + -4390, + 190 + ], + "size": [ + 352.79998779296875, + 122 ], - "size": { - "0": 367.79998779296875, - "1": 342 - }, "flags": {}, - "order": 75, - "mode": 0, + "order": 92, + "mode": 4, "inputs": [ { - "name": "feature", - "type": "FEATURE", - "link": 138 + "name": "sam_model", + "type": "SAM_MODEL", + "link": 47 + }, + { + "name": "grounding_dino_model", + "type": "GROUNDING_DINO_MODEL", + "link": 46 + }, + { + "name": "image", + "type": "IMAGE", + "link": 318 } ], "outputs": [ { - "name": "FEATURE", - "type": "FEATURE", - "links": [ - 168 - ], - "shape": 3, - "slot_index": 0 + "name": "IMAGE", + "type": "IMAGE", + "links": [], + "slot_index": 0, + "shape": 3 }, { - "name": "FEATURE_VISUALIZATION", - "type": "IMAGE", + "name": "MASK", + "type": "MASK", "links": [ - 140 + 50 ], + "slot_index": 1, "shape": 3 } ], "properties": { - "Node name for S&R": "FeatureMixer" + "Node name for S&R": "GroundingDinoSAMSegment (segment anything)" }, "widgets_values": [ - 1, - 0, - 1, - 1, - 1, - 1, - 1, - 0, - 0.38, - 1, - 0.5, - false + "water", + 0.3 ] }, { - "id": 43, - "type": "SAMModelLoader (segment anything)", + "id": 188, + "type": "Reroute", "pos": [ - -4380, - -30 + -1111, + -1563 + ], + "size": [ + 75, + 26 ], - "size": { - "0": 315, - "1": 58 - }, "flags": {}, - "order": 18, - "mode": 4, + "order": 39, + "mode": 0, + "inputs": [ + { + "name": "", + "type": "*", + "link": 293 + } + ], "outputs": [ { - "name": "SAM_MODEL", - "type": "SAM_MODEL", + "name": "", + "type": "IMAGE", "links": [ - 47 + 300, + 326, + 328 ], - "shape": 3, "slot_index": 0 } ], "properties": { - "Node name for S&R": "SAMModelLoader (segment anything)" - }, - "widgets_values": [ - "sam_vit_h (2.56GB)" - ] + "showOutputText": false, + "horizontal": false + } }, { - "id": 33, - "type": "ImageScale", + "id": 52, + "type": "VHS_LoadVideo", "pos": [ - -4580, - 1080 + -1438, + -1561 + ], + "size": [ + 247.455078125, + 262 ], - "size": { - "0": 315, - "1": 130 - }, "flags": {}, - "order": 76, - "mode": 4, + "order": 19, + "mode": 0, "inputs": [ { - "name": "image", - "type": "IMAGE", - "link": 314 - }, - { - "name": "width", - "type": "INT", - "link": 31, - "widget": { - "name": "width" - } - }, - { - "name": "height", - "type": "INT", - "link": 32, - "widget": { - "name": "height" - } - } - ], - "outputs": [ - { - "name": "IMAGE", - "type": "IMAGE", - "links": [ - 34, - 318 - ], - "shape": 3, - "slot_index": 0 - } - ], - "properties": { - "Node name for S&R": "ImageScale" - }, - "widgets_values": [ - "lanczos", - 512, - 512, - "disabled" - ] - }, - { - "id": 25, - "type": "VHS_LoadVideo", - "pos": [ - -5518, - 701 - ], - "size": [ - 235.1999969482422, - 405.45624816417694 - ], - "flags": {}, - "order": 19, - "mode": 4, - "inputs": [ - { - "name": "meta_batch", - "type": "VHS_BatchManager", - "link": null + "name": "meta_batch", + "type": "VHS_BatchManager", + "link": null, + "shape": 7 }, { "name": "vae", "type": "VAE", - "link": null + "link": null, + "shape": 7 } ], "outputs": [ @@ -3477,11 +3045,10 @@ "name": "IMAGE", "type": "IMAGE", "links": [ - 313, - 314 + 293 ], - "shape": 3, - "slot_index": 0 + "slot_index": 0, + "shape": 3 }, { "name": "frame_count", @@ -3506,7 +3073,7 @@ "Node name for S&R": "VHS_LoadVideo" }, "widgets_values": { - "video": "floatinginpool.mp4", + "video": "floating_in_pool_768_Water_MASK.mp4", "force_rate": 0, "force_size": "Disabled", "custom_width": 512, @@ -3522,7 +3089,7 @@ "frame_load_cap": 0, "skip_first_frames": 0, "force_rate": 0, - "filename": "floatinginpool.mp4", + "filename": "floating_in_pool_768_Water_MASK.mp4", "type": "input", "format": "video/mp4", "select_every_nth": 1 @@ -3531,194 +3098,1042 @@ } }, { - "id": 45, - "type": "VHS_VideoCombine", + "id": 180, + "type": "ReverseImageBatch", "pos": [ - -3926, - 308 + -1112, + -1406 ], "size": [ - 315, - 501.4609375 + 210, + 26 ], "flags": {}, - "order": 96, - "mode": 4, + "order": 57, + "mode": 0, "inputs": [ { "name": "images", "type": "IMAGE", - "link": 51 - }, - { - "name": "audio", - "type": "AUDIO", - "link": null - }, - { - "name": "meta_batch", - "type": "VHS_BatchManager", - "link": null - }, - { - "name": "vae", - "type": "VAE", - "link": null + "link": 300 } ], "outputs": [ { - "name": "Filenames", - "type": "VHS_FILENAMES", - "links": null, + "name": "IMAGE", + "type": "IMAGE", + "links": [ + 327 + ], + "slot_index": 0, "shape": 3 } ], "properties": { - "Node name for S&R": "VHS_VideoCombine" + "Node name for S&R": "ReverseImageBatch" }, - "widgets_values": { - "frame_rate": 30, - "loop_count": 0, - "filename_prefix": "AnimateDiff", - "format": "video/h264-mp4", - "pix_fmt": "yuv420p", - "crf": 19, - "save_metadata": true, - "pingpong": false, - "save_output": true, - "videopreview": { - "hidden": false, - "paused": false, - "params": { - "filename": "AnimateDiff_04858.mp4", - "subfolder": "", - "type": "output", - "format": "video/h264-mp4", - "frame_rate": 30 - } - } - } + "widgets_values": [] }, { - "id": 42, - "type": "GroundingDinoSAMSegment (segment anything)", + "id": 175, + "type": "Display Int (rgthree)", "pos": [ - -4390, - 190 + -543, + -1581 + ], + "size": [ + 315, + 76 ], - "size": { - "0": 352.79998779296875, - "1": 122 - }, "flags": {}, - "order": 85, - "mode": 4, + "order": 81, + "mode": 0, "inputs": [ { - "name": "sam_model", - "type": "SAM_MODEL", - "link": 47 - }, - { - "name": "grounding_dino_model", - "type": "GROUNDING_DINO_MODEL", - "link": 46 - }, + "name": "input", + "type": "INT", + "link": 251, + "widget": { + "name": "input" + }, + "dir": 3 + } + ], + "outputs": [], + "properties": { + "Node name for S&R": "Display Int (rgthree)" + }, + "widgets_values": [ + 0, + "" + ] + }, + { + "id": 176, + "type": "GetImageSizeAndCount", + "pos": [ + -457, + -1279 + ], + "size": [ + 210, + 86 + ], + "flags": {}, + "order": 84, + "mode": 0, + "inputs": [ { "name": "image", "type": "IMAGE", - "link": 318 + "link": 329 } ], "outputs": [ { - "name": "IMAGE", + "name": "image", "type": "IMAGE", - "links": [], - "shape": 3, - "slot_index": 0 - }, - { - "name": "MASK", - "type": "MASK", "links": [ - 50 + 320 ], - "shape": 3, - "slot_index": 1 + "slot_index": 0, + "shape": 3 + }, + { + "name": "768 width", + "type": "INT", + "links": null, + "shape": 3 + }, + { + "name": "464 height", + "type": "INT", + "links": null, + "shape": 3 + }, + { + "name": "759 count", + "type": "INT", + "links": null, + "shape": 3 } ], "properties": { - "Node name for S&R": "GroundingDinoSAMSegment (segment anything)" + "Node name for S&R": "GetImageSizeAndCount" }, - "widgets_values": [ - "water", - 0.3 - ] + "widgets_values": [] }, { - "id": 188, - "type": "Reroute", + "id": 53, + "type": "_mfc", "pos": [ - -1111, - -1563 + 306, + -1404 ], "size": [ - 75, - 26 + 315, + 150 ], "flags": {}, - "order": 39, + "order": 98, "mode": 0, "inputs": [ { - "name": "", - "type": "*", - "link": 293 + "name": "image", + "type": "IMAGE", + "link": 321 } ], "outputs": [ { - "name": "", - "type": "IMAGE", + "name": "MASK", + "type": "MASK", "links": [ - 294, - 295, - 300 + 315 ], - "slot_index": 0 + "slot_index": 0, + "shape": 3 + }, + { + "name": "IMAGE", + "type": "IMAGE", + "links": null, + "shape": 3 } ], "properties": { - "showOutputText": false, - "horizontal": false - } - }, - { - "id": 52, - "type": "VHS_LoadVideo", - "pos": [ - -1438, - -1561 + "Node name for S&R": "_mfc" + }, + "widgets_values": [ + 255, + 255, + 255, + 20 + ] + }, + { + "id": 190, + "type": "SetNode", + "pos": [ + 782, + -1405 + ], + "size": [ + 210, + 58 + ], + "flags": {}, + "order": 104, + "mode": 0, + "inputs": [ + { + "name": "MASK", + "type": "MASK", + "link": 315 + } + ], + "outputs": [ + { + "name": "*", + "type": "*", + "links": null + } + ], + "title": "Set_mask_water", + "properties": { + "previousName": "mask_water" + }, + "widgets_values": [ + "mask_water" + ], + "color": "#1c5715", + "bgcolor": "#1f401b" + }, + { + "id": 36, + "type": "VHS_LoadVideo", + "pos": [ + -1342.456787109375, + -873.0419921875 + ], + "size": [ + 247.455078125, + 262 + ], + "flags": {}, + "order": 20, + "mode": 0, + "inputs": [ + { + "name": "meta_batch", + "type": "VHS_BatchManager", + "link": null, + "shape": 7 + }, + { + "name": "vae", + "type": "VAE", + "link": null, + "shape": 7 + } + ], + "outputs": [ + { + "name": "IMAGE", + "type": "IMAGE", + "links": [ + 296 + ], + "slot_index": 0, + "shape": 3 + }, + { + "name": "frame_count", + "type": "INT", + "links": null, + "shape": 3 + }, + { + "name": "audio", + "type": "AUDIO", + "links": null, + "shape": 3 + }, + { + "name": "video_info", + "type": "VHS_VIDEOINFO", + "links": null, + "shape": 3 + } + ], + "properties": { + "Node name for S&R": "VHS_LoadVideo" + }, + "widgets_values": { + "video": "floating_in_pool_768.mp4", + "force_rate": 0, + "force_size": "Disabled", + "custom_width": 512, + "custom_height": 512, + "frame_load_cap": 0, + "skip_first_frames": 0, + "select_every_nth": 1, + "choose video to upload": "image", + "videopreview": { + "hidden": false, + "paused": false, + "params": { + "frame_load_cap": 0, + "skip_first_frames": 0, + "force_rate": 0, + "filename": "floating_in_pool_768.mp4", + "type": "input", + "format": "video/mp4", + "select_every_nth": 1 + } + } + } + }, + { + "id": 4, + "type": "CheckpointLoaderSimple", + "pos": [ + -149, + 235 + ], + "size": [ + 315, + 98 + ], + "flags": {}, + "order": 21, + "mode": 0, + "inputs": [], + "outputs": [ + { + "name": "MODEL", + "type": "MODEL", + "links": [ + 43 + ], + "slot_index": 0 + }, + { + "name": "CLIP", + "type": "CLIP", + "links": [ + 42 + ], + "slot_index": 1 + }, + { + "name": "VAE", + "type": "VAE", + "links": [ + 38, + 45, + 185 + ], + "slot_index": 2 + } + ], + "properties": { + "Node name for S&R": "CheckpointLoaderSimple" + }, + "widgets_values": [ + "photonLCM_v10.safetensors" + ] + }, + { + "id": 37, + "type": "CR LoRA Stack", + "pos": [ + -137, + 485 + ], + "size": [ + 315, + 342 + ], + "flags": {}, + "order": 22, + "mode": 0, + "inputs": [ + { + "name": "lora_stack", + "type": "LORA_STACK", + "link": null, + "shape": 7 + } + ], + "outputs": [ + { + "name": "LORA_STACK", + "type": "LORA_STACK", + "links": [ + 41 + ], + "slot_index": 0, + "shape": 3 + }, + { + "name": "show_help", + "type": "STRING", + "links": null, + "shape": 3 + } + ], + "properties": { + "Node name for S&R": "CR LoRA Stack" + }, + "widgets_values": [ + "Off", + "CarnageStyle.safetensors", + 1, + 1, + "On", + "add_detail.safetensors", + 0.4, + 0.4, + "Off", + "None", + 1, + 1 + ] + }, + { + "id": 6, + "type": "CLIPTextEncode", + "pos": [ + 821, + 153 + ], + "size": [ + 422.84503173828125, + 164.31304931640625 + ], + "flags": {}, + "order": 60, + "mode": 0, + "inputs": [ + { + "name": "clip", + "type": "CLIP", + "link": 257 + } + ], + "outputs": [ + { + "name": "CONDITIONING", + "type": "CONDITIONING", + "links": [ + 57 + ], + "slot_index": 0 + } + ], + "properties": { + "Node name for S&R": "CLIPTextEncode" + }, + "widgets_values": [ + "swimming pool filled with blood, (blood_red), carnagestyle" + ] + }, + { + "id": 58, + "type": "IPAdapterUnifiedLoader", + "pos": [ + 1438.43115234375, + 47.56038284301758 + ], + "size": [ + 315, + 78 + ], + "flags": {}, + "order": 59, + "mode": 0, + "inputs": [ + { + "name": "model", + "type": "MODEL", + "link": 77 + }, + { + "name": "ipadapter", + "type": "IPADAPTER", + "link": null, + "shape": 7 + } + ], + "outputs": [ + { + "name": "model", + "type": "MODEL", + "links": [ + 78 + ], + "slot_index": 0, + "shape": 3 + }, + { + "name": "ipadapter", + "type": "IPADAPTER", + "links": [ + 79 + ], + "slot_index": 1, + "shape": 3 + } + ], + "properties": { + "Node name for S&R": "IPAdapterUnifiedLoader" + }, + "widgets_values": [ + "PLUS (high strength)" + ] + }, + { + "id": 57, + "type": "IPAdapterAdvanced", + "pos": [ + 1884.43115234375, + 17.560382843017578 + ], + "size": [ + 315, + 278 + ], + "flags": {}, + "order": 75, + "mode": 0, + "inputs": [ + { + "name": "model", + "type": "MODEL", + "link": 78 + }, + { + "name": "ipadapter", + "type": "IPADAPTER", + "link": 79 + }, + { + "name": "image", + "type": "IMAGE", + "link": 85 + }, + { + "name": "image_negative", + "type": "IMAGE", + "link": null, + "shape": 7 + }, + { + "name": "attn_mask", + "type": "MASK", + "link": null, + "shape": 7 + }, + { + "name": "clip_vision", + "type": "CLIP_VISION", + "link": null, + "shape": 7 + } + ], + "outputs": [ + { + "name": "MODEL", + "type": "MODEL", + "links": [ + 80 + ], + "slot_index": 0, + "shape": 3 + } + ], + "properties": { + "Node name for S&R": "IPAdapterAdvanced" + }, + "widgets_values": [ + 1, + "linear", + "concat", + 0, + 1, + "V only" + ] + }, + { + "id": 61, + "type": "LoadImage", + "pos": [ + 1499.43115234375, + 230.5603790283203 + ], + "size": [ + 315, + 314 + ], + "flags": {}, + "order": 23, + "mode": 0, + "inputs": [], + "outputs": [ + { + "name": "IMAGE", + "type": "IMAGE", + "links": [ + 85 + ], + "slot_index": 0, + "shape": 3 + }, + { + "name": "MASK", + "type": "MASK", + "links": null, + "shape": 3 + } + ], + "properties": { + "Node name for S&R": "LoadImage" + }, + "widgets_values": [ + "pasted/image (129).png", + "image" + ] + }, + { + "id": 49, + "type": "ControlNetApplyAdvanced", + "pos": [ + 2082, + -840 + ], + "size": [ + 315, + 186 + ], + "flags": {}, + "order": 76, + "mode": 0, + "inputs": [ + { + "name": "positive", + "type": "CONDITIONING", + "link": 57 + }, + { + "name": "negative", + "type": "CONDITIONING", + "link": 58 + }, + { + "name": "control_net", + "type": "CONTROL_NET", + "link": 60, + "slot_index": 2 + }, + { + "name": "image", + "type": "IMAGE", + "link": 175 + }, + { + "name": "vae", + "type": "VAE", + "link": null, + "shape": 7 + } + ], + "outputs": [ + { + "name": "positive", + "type": "CONDITIONING", + "links": [ + 301, + 307 + ], + "slot_index": 0, + "shape": 3 + }, + { + "name": "negative", + "type": "CONDITIONING", + "links": [ + 302, + 308 + ], + "slot_index": 1, + "shape": 3 + } + ], + "properties": { + "Node name for S&R": "ControlNetApplyAdvanced" + }, + "widgets_values": [ + 0.71, + 0, + 0.729 + ] + }, + { + "id": 103, + "type": "GetNode", + "pos": [ + 5020.7783203125, + -2393.459228515625 + ], + "size": [ + 210, + 58 + ], + "flags": {}, + "order": 24, + "mode": 0, + "inputs": [], + "outputs": [ + { + "name": "MASK", + "type": "MASK", + "links": [ + 152, + 160, + 203 + ], + "slot_index": 0 + } + ], + "title": "Get_empty_mask", + "properties": {}, + "widgets_values": [ + "empty_mask" + ] + }, + { + "id": 104, + "type": "ParticleEmitter", + "pos": [ + 5055.7783203125, + -2264.459228515625 + ], + "size": [ + 468.5999755859375, + 402 + ], + "flags": {}, + "order": 62, + "mode": 0, + "inputs": [ + { + "name": "previous_emitter", + "type": "PARTICLE_EMITTER", + "link": null, + "slot_index": 0, + "shape": 7 + }, + { + "name": "emitter_movement", + "type": "EMITTER_MOVEMENT", + "link": null, + "shape": 7 + }, + { + "name": "spring_joint_setting", + "type": "SPRING_JOINT_SETTING", + "link": null, + "shape": 7 + }, + { + "name": "particle_modulation", + "type": "PARTICLE_MODULATION", + "link": null, + "shape": 7 + }, + { + "name": "emitter_modulation", + "type": "EMITTER_MODULATION", + "link": 170, + "slot_index": 4, + "shape": 7 + } + ], + "outputs": [ + { + "name": "PARTICLE_EMITTER", + "type": "PARTICLE_EMITTER", + "links": [ + 153 + ], + "slot_index": 0, + "shape": 3 + } + ], + "properties": { + "Node name for S&R": "ParticleEmitter" + }, + "widgets_values": [ + 0.15, + 0.75, + 270, + 50, + 50, + 167, + 0, + "(255,255,255)", + 0, + 0, + 0, + 24.5 + ] + }, + { + "id": 114, + "type": "GetNode", + "pos": [ + 4167.77783203125, + -1623.459228515625 + ], + "size": [ + 210, + 58 + ], + "flags": {}, + "order": 25, + "mode": 0, + "inputs": [], + "outputs": [ + { + "name": "FEATURE", + "type": "FEATURE", + "links": [ + 169, + 171, + 205 + ], + "slot_index": 0 + } + ], + "title": "Get_bare_drums", + "properties": {}, + "widgets_values": [ + "bare_drums" + ] + }, + { + "id": 113, + "type": "EmitterEmissionRateModulation", + "pos": [ + 4422.77783203125, + -2305.459228515625 + ], + "size": [ + 420, + 222 + ], + "flags": {}, + "order": 42, + "mode": 0, + "inputs": [ + { + "name": "previous_modulation", + "type": "EMITTER_MODULATION", + "link": null, + "shape": 7 + }, + { + "name": "feature", + "type": "FEATURE", + "link": 169, + "shape": 7 + } + ], + "outputs": [ + { + "name": "EMITTER_MODULATION", + "type": "EMITTER_MODULATION", + "links": [ + 170 + ], + "slot_index": 0, + "shape": 3 + } + ], + "properties": { + "Node name for S&R": "EmitterEmissionRateModulation" + }, + "widgets_values": [ + 0, + 0, + 0, + "ease_in_out", + false, + false, + 14.200000000000001 + ] + }, + { + "id": 115, + "type": "EmitterEmissionRateModulation", + "pos": [ + 4412.77783203125, + -1730.459228515625 + ], + "size": [ + 420, + 222 + ], + "flags": {}, + "order": 43, + "mode": 0, + "inputs": [ + { + "name": "previous_modulation", + "type": "EMITTER_MODULATION", + "link": null, + "shape": 7 + }, + { + "name": "feature", + "type": "FEATURE", + "link": 171, + "shape": 7 + } + ], + "outputs": [ + { + "name": "EMITTER_MODULATION", + "type": "EMITTER_MODULATION", + "links": [ + 172 + ], + "slot_index": 0, + "shape": 3 + } + ], + "properties": { + "Node name for S&R": "EmitterEmissionRateModulation" + }, + "widgets_values": [ + 0, + 0, + 0, + "ease_in_out", + false, + false, + 14.3 + ] + }, + { + "id": 100, + "type": "ParticleEmissionMask", + "pos": [ + 5600.7783203125, + -2303.459228515625 + ], + "size": [ + 336, + 474 + ], + "flags": {}, + "order": 77, + "mode": 0, + "inputs": [ + { + "name": "masks", + "type": "MASK", + "link": 152 + }, + { + "name": "emitters", + "type": "PARTICLE_EMITTER", + "link": 153, + "slot_index": 1 + }, + { + "name": "vortices", + "type": "VORTEX", + "link": null, + "shape": 7 + }, + { + "name": "wells", + "type": "GRAVITY_WELL", + "link": null, + "shape": 7 + }, + { + "name": "static_bodies", + "type": "STATIC_BODY", + "link": null, + "shape": 7 + } + ], + "outputs": [ + { + "name": "MASK", + "type": "MASK", + "links": [ + 156 + ], + "slot_index": 0, + "shape": 3 + }, + { + "name": "IMAGE", + "type": "IMAGE", + "links": [], + "slot_index": 1, + "shape": 3 + } + ], + "properties": { + "Node name for S&R": "ParticleEmissionMask" + }, + "widgets_values": [ + 1, + false, + 0, + 0, + 1323, + 4, + 0, + 0, + 382, + 0, + 0, + 0, + false, + 1, + 1 + ] + }, + { + "id": 105, + "type": "DepthShapeModifierPrecise", + "pos": [ + 6405.7783203125, + -2454.459228515625 ], "size": [ - 235.1999969482422, - 405.45624816417694 + 386.3999938964844, + 174 ], "flags": {}, - "order": 20, + "order": 87, "mode": 0, "inputs": [ { - "name": "meta_batch", - "type": "VHS_BatchManager", - "link": null + "name": "depth_map", + "type": "IMAGE", + "link": 223 }, { - "name": "vae", - "type": "VAE", - "link": null + "name": "mask", + "type": "MASK", + "link": 156 } ], "outputs": [ @@ -3726,1817 +4141,1631 @@ "name": "IMAGE", "type": "IMAGE", "links": [ - 293 + 165 ], - "shape": 3, - "slot_index": 0 - }, - { - "name": "frame_count", - "type": "INT", - "links": null, - "shape": 3 - }, - { - "name": "audio", - "type": "AUDIO", - "links": null, - "shape": 3 - }, - { - "name": "video_info", - "type": "VHS_VIDEOINFO", - "links": null, + "slot_index": 0, "shape": 3 } ], "properties": { - "Node name for S&R": "VHS_LoadVideo" + "Node name for S&R": "DepthShapeModifierPrecise" }, - "widgets_values": { - "video": "floating_in_pool_768_Water_MASK.mp4", - "force_rate": 0, - "force_size": "Disabled", - "custom_width": 512, - "custom_height": 512, - "frame_load_cap": 0, - "skip_first_frames": 0, - "select_every_nth": 1, - "choose video to upload": "image", - "videopreview": { - "hidden": false, - "paused": false, - "params": { - "frame_load_cap": 0, - "skip_first_frames": 0, - "force_rate": 0, - "filename": "floating_in_pool_768_Water_MASK.mp4", - "type": "input", - "format": "video/mp4", - "select_every_nth": 1 - } - } - } + "widgets_values": [ + 2, + 0.35000000000000003, + 0.51, + 1, + "depth_aware" + ] }, { - "id": 181, - "type": "Make Image Batch", + "id": 116, + "type": "SetNode", "pos": [ - -799, - -1455 + 7494.7783203125, + -1757.459228515625 + ], + "size": [ + 210, + 58 ], - "size": { - "0": 210, - "1": 126 - }, "flags": {}, - "order": 68, + "order": 108, "mode": 0, "inputs": [ { - "name": "image1", - "type": "IMAGE", - "link": 294 - }, - { - "name": "image2", - "type": "IMAGE", - "link": 267 - }, - { - "name": "image3", - "type": "IMAGE", - "link": 295 - }, - { - "name": "image4", - "type": "IMAGE", - "link": null - }, - { - "name": "image5", - "type": "IMAGE", - "link": null - }, - { - "name": "image6", + "name": "IMAGE", "type": "IMAGE", - "link": null + "link": 211 } ], "outputs": [ { - "name": "IMAGE", - "type": "IMAGE", - "links": [ - 272 - ], - "shape": 3, - "slot_index": 0 + "name": "*", + "type": "*", + "links": null } ], + "title": "Set_depth_bubbles", "properties": { - "Node name for S&R": "Make Image Batch" - } + "previousName": "depth_bubbles" + }, + "widgets_values": [ + "depth_bubbles" + ], + "color": "#2a363b", + "bgcolor": "#3f5159" }, { - "id": 180, - "type": "ReverseImageBatch", + "id": 117, + "type": "GetNode", "pos": [ - -1112, - -1406 + 1829, + -863 + ], + "size": [ + 210, + 58 ], - "size": { - "0": 210, - "1": 26 - }, "flags": {}, - "order": 52, + "order": 26, "mode": 0, - "inputs": [ - { - "name": "images", - "type": "IMAGE", - "link": 300 - } - ], + "inputs": [], "outputs": [ { "name": "IMAGE", "type": "IMAGE", "links": [ - 267 + 175 ], - "shape": 3, "slot_index": 0 } ], - "properties": { - "Node name for S&R": "ReverseImageBatch" - } + "title": "Get_depth_bubbles", + "properties": {}, + "widgets_values": [ + "depth_bubbles" + ] }, { - "id": 175, - "type": "Display Int (rgthree)", + "id": 191, + "type": "GetNode", "pos": [ - -543, - -1581 + 3372, + -181 + ], + "size": [ + 210, + 58 ], - "size": { - "0": 315, - "1": 76 - }, "flags": {}, - "order": 66, + "order": 27, "mode": 0, - "inputs": [ + "inputs": [], + "outputs": [ { - "name": "input", - "type": "INT", - "link": 251, - "widget": { - "name": "input" - }, - "dir": 3 + "name": "MASK", + "type": "MASK", + "links": [ + 316 + ], + "slot_index": 0 } ], - "properties": { - "Node name for S&R": "Display Int (rgthree)" - }, + "title": "Get_mask_water", + "properties": {}, "widgets_values": [ - 0, - "" + "mask_water" ] }, { - "id": 176, - "type": "GetImageSizeAndCount", + "id": 60, + "type": "GrowMaskWithBlur", "pos": [ - -457, - -1279 + 3577, + -96 + ], + "size": [ + 315, + 246 ], - "size": { - "0": 210, - "1": 86 - }, "flags": {}, - "order": 77, + "order": 45, "mode": 0, "inputs": [ { - "name": "image", - "type": "IMAGE", - "link": 272 + "name": "mask", + "type": "MASK", + "link": 316 } ], "outputs": [ { - "name": "image", - "type": "IMAGE", + "name": "mask", + "type": "MASK", "links": [ - 254 + 83, + 273 ], - "shape": 3, - "slot_index": 0 - }, - { - "name": "768 width", - "type": "INT", - "links": null, - "shape": 3 - }, - { - "name": "464 height", - "type": "INT", - "links": null, + "slot_index": 0, "shape": 3 }, { - "name": "759 count", - "type": "INT", + "name": "mask_inverted", + "type": "MASK", "links": null, "shape": 3 } ], "properties": { - "Node name for S&R": "GetImageSizeAndCount" - } + "Node name for S&R": "GrowMaskWithBlur" + }, + "widgets_values": [ + 10, + 0, + true, + false, + 5.4, + 1, + 1, + false + ] }, { - "id": 163, - "type": "ImageInterval", + "id": 51, + "type": "SetLatentNoiseMask", "pos": [ - -114, - -1381 + 3653, + 282 + ], + "size": [ + 210, + 46 ], - "size": { - "0": 315, - "1": 106 - }, "flags": {}, - "order": 86, + "order": 109, "mode": 0, "inputs": [ { - "name": "image", - "type": "IMAGE", - "link": 254 - }, - { - "name": "end_at", - "type": "FLOAT", - "link": 243, - "widget": { - "name": "end_at" - }, - "slot_index": 1 + "name": "samples", + "type": "LATENT", + "link": 84 + }, + { + "name": "mask", + "type": "MASK", + "link": 83 } ], "outputs": [ { - "name": "IMAGE", - "type": "IMAGE", + "name": "LATENT", + "type": "LATENT", "links": [ - 248 + 66 ], - "shape": 3, - "slot_index": 0 + "slot_index": 0, + "shape": 3 } ], "properties": { - "Node name for S&R": "ImageInterval" + "Node name for S&R": "SetLatentNoiseMask" }, - "widgets_values": [ - 1, - 0, - 0 - ] + "widgets_values": [] }, { - "id": 66, - "type": "EmptyImageAndMaskFromAudio", + "id": 23, + "type": "VHS_VideoCombine", "pos": [ - -1272, - -2191 + 4578, + -182 + ], + "size": [ + 365.99755859375, + 557.0401611328125 ], - "size": { - "0": 411.6000061035156, - "1": 168.1107940673828 - }, "flags": {}, - "order": 34, + "order": 115, "mode": 0, "inputs": [ + { + "name": "images", + "type": "IMAGE", + "link": 21 + }, { "name": "audio", "type": "AUDIO", - "link": 90 - } - ], - "outputs": [ - { - "name": "empty_image", - "type": "IMAGE", - "links": [ - 89, - 150 - ], - "slot_index": 0, - "shape": 3 + "link": 121, + "shape": 7 }, { - "name": "empty_mask", - "type": "MASK", - "links": [ - 151 - ], - "slot_index": 1, - "shape": 3 + "name": "meta_batch", + "type": "VHS_BatchManager", + "link": null, + "shape": 7 }, { - "name": "frame_count", - "type": "INT", - "links": [ - 240 - ], - "slot_index": 2, + "name": "vae", + "type": "VAE", + "link": null, + "shape": 7 + } + ], + "outputs": [ + { + "name": "Filenames", + "type": "VHS_FILENAMES", + "links": null, "shape": 3 } ], "properties": { - "Node name for S&R": "EmptyImageAndMaskFromAudio" + "Node name for S&R": "VHS_VideoCombine" }, - "widgets_values": [ - 30, - 768, - 464 - ] + "widgets_values": { + "frame_rate": 30, + "loop_count": 0, + "filename_prefix": "AnimateDiff", + "format": "video/h264-mp4", + "pix_fmt": "yuv420p", + "crf": 19, + "save_metadata": true, + "trim_to_audio": false, + "pingpong": false, + "save_output": true, + "videopreview": { + "hidden": false, + "paused": false, + "params": { + "filename": "AnimateDiff_02346-audio.mp4", + "subfolder": "", + "type": "output", + "format": "video/h264-mp4", + "frame_rate": 30, + "workflow": "AnimateDiff_02346.png", + "fullpath": "/runpod-volume/ComfyUI_rv/output/AnimateDiff_02346-audio.mp4" + }, + "muted": false + } + } }, { - "id": 53, - "type": "_mfc", + "id": 21, + "type": "KSampler", "pos": [ - 306, - -1404 + 4016, + -47 + ], + "size": [ + 303.4075622558594, + 262 ], - "size": { - "0": 315, - "1": 150 - }, "flags": {}, - "order": 91, + "order": 110, "mode": 0, "inputs": [ { - "name": "image", - "type": "IMAGE", - "link": 248 + "name": "model", + "type": "MODEL", + "link": 37 + }, + { + "name": "positive", + "type": "CONDITIONING", + "link": 301 + }, + { + "name": "negative", + "type": "CONDITIONING", + "link": 302 + }, + { + "name": "latent_image", + "type": "LATENT", + "link": 66 } ], "outputs": [ { - "name": "MASK", - "type": "MASK", + "name": "LATENT", + "type": "LATENT", "links": [ - 315 + 20, + 189 ], - "shape": 3, "slot_index": 0 - }, - { - "name": "IMAGE", - "type": "IMAGE", - "links": null, - "shape": 3 } ], "properties": { - "Node name for S&R": "_mfc" + "Node name for S&R": "KSampler" }, "widgets_values": [ - 255, - 255, - 255, - 20 + 156680208700286, + "fixed", + 8, + 1, + "lcm", + "sgm_uniform", + 0.9 ] }, { - "id": 190, - "type": "SetNode", - "pos": { - "0": 782, - "1": -1405, - "2": 0, - "3": 0, - "4": 0, - "5": 0, - "6": 0, - "7": 0, - "8": 0, - "9": 0 - }, - "size": { - "0": 210, - "1": 58 - }, + "id": 123, + "type": "KSampler", + "pos": [ + 5484, + -137 + ], + "size": [ + 303.4075622558594, + 262 + ], "flags": {}, - "order": 97, + "order": 116, "mode": 0, "inputs": [ { - "name": "MASK", - "type": "MASK", - "link": 315 + "name": "model", + "type": "MODEL", + "link": 180 + }, + { + "name": "positive", + "type": "CONDITIONING", + "link": 307 + }, + { + "name": "negative", + "type": "CONDITIONING", + "link": 308 + }, + { + "name": "latent_image", + "type": "LATENT", + "link": 195 } ], "outputs": [ { - "name": "*", - "type": "*", - "links": null + "name": "LATENT", + "type": "LATENT", + "links": [ + 184 + ], + "slot_index": 0 } ], - "title": "Set_mask_water", "properties": { - "previousName": "mask_water" + "Node name for S&R": "KSampler" }, "widgets_values": [ - "mask_water" + 156680208700286, + "fixed", + 4, + 1, + "lcm", + "sgm_uniform", + 0.5 ] }, { - "id": 36, - "type": "VHS_LoadVideo", + "id": 125, + "type": "VHS_VideoCombine", "pos": [ - -1413, - -897 + 6407, + -216 ], "size": [ - 235.1999969482422, - 405.45624816417694 + 370, + 560.1875 ], "flags": {}, - "order": 21, + "order": 119, "mode": 0, "inputs": [ { - "name": "meta_batch", - "type": "VHS_BatchManager", - "link": null + "name": "images", + "type": "IMAGE", + "link": 186 }, { - "name": "vae", - "type": "VAE", - "link": null - } - ], - "outputs": [ - { - "name": "IMAGE", - "type": "IMAGE", - "links": [ - 296 - ], - "shape": 3, - "slot_index": 0 + "name": "audio", + "type": "AUDIO", + "link": 187, + "shape": 7 }, { - "name": "frame_count", - "type": "INT", - "links": null, - "shape": 3 + "name": "meta_batch", + "type": "VHS_BatchManager", + "link": null, + "shape": 7 }, { - "name": "audio", - "type": "AUDIO", - "links": null, - "shape": 3 - }, + "name": "vae", + "type": "VAE", + "link": null, + "shape": 7 + } + ], + "outputs": [ { - "name": "video_info", - "type": "VHS_VIDEOINFO", + "name": "Filenames", + "type": "VHS_FILENAMES", "links": null, "shape": 3 } ], "properties": { - "Node name for S&R": "VHS_LoadVideo" + "Node name for S&R": "VHS_VideoCombine" }, "widgets_values": { - "video": "floating_in_pool_768.mp4", - "force_rate": 0, - "force_size": "Disabled", - "custom_width": 512, - "custom_height": 512, - "frame_load_cap": 0, - "skip_first_frames": 0, - "select_every_nth": 1, - "choose video to upload": "image", + "frame_rate": 30, + "loop_count": 0, + "filename_prefix": "AnimateDiff", + "format": "video/h264-mp4", + "pix_fmt": "yuv420p", + "crf": 19, + "save_metadata": true, + "trim_to_audio": false, + "pingpong": false, + "save_output": true, "videopreview": { "hidden": false, "paused": false, "params": { - "frame_load_cap": 0, - "skip_first_frames": 0, - "force_rate": 0, - "filename": "floating_in_pool_768.mp4", - "type": "input", - "format": "video/mp4", - "select_every_nth": 1 - } + "filename": "AnimateDiff_02347-audio.mp4", + "subfolder": "", + "type": "output", + "format": "video/h264-mp4", + "frame_rate": 30, + "workflow": "AnimateDiff_02347.png", + "fullpath": "/runpod-volume/ComfyUI_rv/output/AnimateDiff_02347-audio.mp4" + }, + "muted": false } } }, { - "id": 4, - "type": "CheckpointLoaderSimple", + "id": 128, + "type": "NNLatentUpscale", "pos": [ - -149, - 235 - ], - "size": { - "0": 315, - "1": 98 - }, - "flags": {}, - "order": 22, - "mode": 0, - "outputs": [ - { - "name": "MODEL", - "type": "MODEL", - "links": [ - 43 - ], - "slot_index": 0 - }, - { - "name": "CLIP", - "type": "CLIP", - "links": [ - 42 - ], - "slot_index": 1 - }, - { - "name": "VAE", - "type": "VAE", - "links": [ - 38, - 45, - 185 - ], - "slot_index": 2 - } + 5090, + -139 ], - "properties": { - "Node name for S&R": "CheckpointLoaderSimple" - }, - "widgets_values": [ - "photonLCM_v10.safetensors" - ] - }, - { - "id": 37, - "type": "CR LoRA Stack", - "pos": [ - -137, - 485 + "size": [ + 315, + 82 ], - "size": { - "0": 315, - "1": 342 - }, "flags": {}, - "order": 23, + "order": 112, "mode": 0, "inputs": [ { - "name": "lora_stack", - "type": "LORA_STACK", - "link": null + "name": "latent", + "type": "LATENT", + "link": 189 } ], "outputs": [ { - "name": "LORA_STACK", - "type": "LORA_STACK", + "name": "LATENT", + "type": "LATENT", "links": [ - 41 + 192 ], - "shape": 3, - "slot_index": 0 - }, - { - "name": "show_help", - "type": "STRING", - "links": null, + "slot_index": 0, "shape": 3 } ], "properties": { - "Node name for S&R": "CR LoRA Stack" + "Node name for S&R": "NNLatentUpscale" }, "widgets_values": [ - "Off", - "CarnageStyle.safetensors", - 1, - 1, - "On", - "add_detail.safetensors", - 0.4, - 0.4, - "Off", - "None", - 1, - 1 + "SD 1.x", + 1.67 ] }, { - "id": 6, - "type": "CLIPTextEncode", + "id": 129, + "type": "SetLatentNoiseMask", "pos": [ - 821, - 153 + 5232, + 49 + ], + "size": [ + 210, + 46 ], - "size": { - "0": 422.84503173828125, - "1": 164.31304931640625 - }, "flags": {}, - "order": 55, + "order": 114, "mode": 0, "inputs": [ { - "name": "clip", - "type": "CLIP", - "link": 257 + "name": "samples", + "type": "LATENT", + "link": 192 + }, + { + "name": "mask", + "type": "MASK", + "link": 274 } ], "outputs": [ { - "name": "CONDITIONING", - "type": "CONDITIONING", + "name": "LATENT", + "type": "LATENT", "links": [ - 57 + 195 ], - "slot_index": 0 + "slot_index": 0, + "shape": 3 } ], "properties": { - "Node name for S&R": "CLIPTextEncode" + "Node name for S&R": "SetLatentNoiseMask" }, - "widgets_values": [ - "swimming pool filled with blood, (blood_red), carnagestyle" - ] + "widgets_values": [] }, { - "id": 58, - "type": "IPAdapterUnifiedLoader", + "id": 194, + "type": "ImageInterval", "pos": [ - 1438.431109281862, - 47.56038255714321 + -114, + -1381 + ], + "size": [ + 315, + 106 ], - "size": { - "0": 315, - "1": 78 - }, "flags": {}, - "order": 54, + "order": 93, "mode": 0, "inputs": [ { - "name": "model", - "type": "MODEL", - "link": 77 + "name": "image", + "type": "IMAGE", + "link": 320 }, { - "name": "ipadapter", - "type": "IPADAPTER", - "link": null + "name": "end_at", + "type": "INT", + "link": 322, + "widget": { + "name": "end_at" + } } ], "outputs": [ { - "name": "model", - "type": "MODEL", - "links": [ - 78 - ], - "shape": 3, - "slot_index": 0 - }, - { - "name": "ipadapter", - "type": "IPADAPTER", + "name": "IMAGE", + "type": "IMAGE", "links": [ - 79 - ], - "shape": 3, - "slot_index": 1 + 321 + ] } ], "properties": { - "Node name for S&R": "IPAdapterUnifiedLoader" + "Node name for S&R": "ImageInterval" }, "widgets_values": [ - "PLUS (high strength)" + 1, + 0, + 0 ] }, { - "id": 57, - "type": "IPAdapterAdvanced", + "id": 195, + "type": "ImageInterval", "pos": [ - 1884.431109281862, - 17.560382557143193 + 180.8875732421875, + -791.8095092773438 + ], + "size": [ + 315, + 106 ], - "size": { - "0": 315, - "1": 278 - }, "flags": {}, - "order": 70, + "order": 94, "mode": 0, "inputs": [ - { - "name": "model", - "type": "MODEL", - "link": 78 - }, - { - "name": "ipadapter", - "type": "IPADAPTER", - "link": 79 - }, { "name": "image", "type": "IMAGE", - "link": 85 - }, - { - "name": "image_negative", - "type": "IMAGE", - "link": null - }, - { - "name": "attn_mask", - "type": "MASK", - "link": null + "link": 323 }, { - "name": "clip_vision", - "type": "CLIP_VISION", - "link": null + "name": "end_at", + "type": "INT", + "link": 325, + "widget": { + "name": "end_at" + } } ], "outputs": [ { - "name": "MODEL", - "type": "MODEL", + "name": "IMAGE", + "type": "IMAGE", "links": [ - 80 - ], - "shape": 3, - "slot_index": 0 + 324 + ] } ], "properties": { - "Node name for S&R": "IPAdapterAdvanced" + "Node name for S&R": "ImageInterval" }, "widgets_values": [ 1, - "linear", - "concat", 0, - 1, - "V only" + 0 ] }, { - "id": 61, - "type": "LoadImage", + "id": 168, + "type": "Reroute", "pos": [ - 1499.431109281862, - 230.56038255714319 + -708, + -1923 + ], + "size": [ + 75, + 26 ], - "size": { - "0": 315, - "1": 314 - }, "flags": {}, - "order": 24, + "order": 69, "mode": 0, + "inputs": [ + { + "name": "", + "type": "*", + "link": 240, + "widget": { + "name": "value" + } + } + ], "outputs": [ { - "name": "IMAGE", - "type": "IMAGE", + "name": "", + "type": "INT", "links": [ - 85 + 251, + 322, + 325 ], - "shape": 3, "slot_index": 0 - }, - { - "name": "MASK", - "type": "MASK", - "links": null, - "shape": 3 } ], "properties": { - "Node name for S&R": "LoadImage" - }, - "widgets_values": [ - "pasted/image (129).png", - "image" - ] + "showOutputText": false, + "horizontal": false + } }, { - "id": 99, - "type": "GetNode", - "pos": { - "0": 1322, - "1": -520, - "2": 0, - "3": 0, - "4": 0, - "5": 0, - "6": 0, - "7": 0, - "8": 0, - "9": 0 - }, - "size": { - "0": 210, - "1": 58 - }, + "id": 196, + "type": "ImageBatchMulti", + "pos": [ + -785.3680419921875, + -1445.9117431640625 + ], + "size": [ + 210, + 122 + ], "flags": {}, - "order": 25, + "order": 73, "mode": 0, - "inputs": [], + "inputs": [ + { + "name": "image_1", + "type": "IMAGE", + "link": 326 + }, + { + "name": "image_2", + "type": "IMAGE", + "link": 327 + }, + { + "name": "image_3", + "type": "IMAGE", + "link": 328 + } + ], "outputs": [ { - "name": "IMAGE", + "name": "images", "type": "IMAGE", "links": [ - 147 + 329 ], "slot_index": 0 } ], - "title": "Get_init_img", "properties": {}, "widgets_values": [ - "init_img" + 3, + null ] }, { - "id": 47, - "type": "DepthAnything_V2", + "id": 197, + "type": "ImageBatchMulti", "pos": [ - 1677, - -583 + -606.007080078125, + -920.4907836914062 + ], + "size": [ + 210, + 122 ], - "size": { - "0": 210, - "1": 46 - }, "flags": {}, - "order": 42, + "order": 74, "mode": 0, "inputs": [ { - "name": "da_model", - "type": "DAMODEL", - "link": 53 + "name": "image_1", + "type": "IMAGE", + "link": 330 + }, + { + "name": "image_2", + "type": "IMAGE", + "link": 331 }, { - "name": "images", + "name": "image_3", "type": "IMAGE", - "link": 147 + "link": 332 } ], "outputs": [ { - "name": "image", + "name": "images", "type": "IMAGE", "links": [ - 143 + 333 ], - "shape": 3, "slot_index": 0 } ], - "properties": { - "Node name for S&R": "DepthAnything_V2" - } + "properties": {}, + "widgets_values": [ + 3, + null + ] }, { - "id": 48, - "type": "DownloadAndLoadDepthAnythingV2Model", + "id": 198, + "type": "AudioSeparatorSimple", "pos": [ - 1525, - -714 + -451.6066589355469, + -2057.771240234375 + ], + "size": [ + 315, + 106 ], - "size": { - "0": 315, - "1": 58 - }, "flags": {}, - "order": 26, + "order": 54, "mode": 0, + "inputs": [ + { + "name": "model", + "type": "OPEN_UNMIX_MODEL", + "link": 334 + }, + { + "name": "audio", + "type": "AUDIO", + "link": 335 + } + ], "outputs": [ { - "name": "da_v2_model", - "type": "DAMODEL", + "name": "audio", + "type": "AUDIO", + "links": null + }, + { + "name": "drums_audio", + "type": "AUDIO", "links": [ - 53 - ], - "shape": 3, - "slot_index": 0 + 340 + ] + }, + { + "name": "vocals_audio", + "type": "AUDIO", + "links": null + }, + { + "name": "bass_audio", + "type": "AUDIO", + "links": null + }, + { + "name": "other_audio", + "type": "AUDIO", + "links": null } ], "properties": { - "Node name for S&R": "DownloadAndLoadDepthAnythingV2Model" + "Node name for S&R": "AudioSeparatorSimple" }, - "widgets_values": [ - "depth_anything_v2_vitl_fp32.safetensors" - ] + "widgets_values": [] }, { - "id": 50, - "type": "ControlNetLoader", + "id": 202, + "type": "INTConstant", "pos": [ - 1477, - -820 + -1470.3228759765625, + -2833.3154296875 + ], + "size": [ + 210, + 58 ], - "size": { - "0": 315, - "1": 58 - }, "flags": {}, - "order": 27, + "order": 28, "mode": 0, + "inputs": [], "outputs": [ { - "name": "CONTROL_NET", - "type": "CONTROL_NET", + "name": "value", + "type": "INT", "links": [ - 60 + 338 ], - "shape": 3 + "slot_index": 0 } ], "properties": { - "Node name for S&R": "ControlNetLoader" + "Node name for S&R": "INTConstant" }, "widgets_values": [ - "control_v11f1p_sd15_depth.pth" - ] + 768 + ], + "color": "#1b4669", + "bgcolor": "#29699c" }, { - "id": 94, - "type": "SetNode", - "pos": { - "0": 1934, - "1": -543, - "2": 0, - "3": 0, - "4": 0, - "5": 0, - "6": 0, - "7": 0, - "8": 0, - "9": 0 - }, - "size": { - "0": 210, - "1": 58 - }, + "id": 203, + "type": "INTConstant", + "pos": [ + -1467.9849853515625, + -2656.615478515625 + ], + "size": [ + 210, + 58 + ], "flags": {}, - "order": 57, + "order": 29, "mode": 0, - "inputs": [ - { - "name": "IMAGE", - "type": "IMAGE", - "link": 143 - } - ], + "inputs": [], "outputs": [ { - "name": "*", - "type": "*", - "links": null + "name": "value", + "type": "INT", + "links": [ + 339 + ], + "slot_index": 0 } ], - "title": "Set_depth", "properties": { - "previousName": "depth" + "Node name for S&R": "INTConstant" }, "widgets_values": [ - "depth" - ] + 464 + ], + "color": "#1b4669", + "bgcolor": "#29699c" }, { - "id": 49, - "type": "ControlNetApplyAdvanced", + "id": 201, + "type": "Anything Everywhere?", "pos": [ - 2082, - -840 + -1063.6851806640625, + -2659.60205078125 ], - "size": { - "0": 315, - "1": 166 - }, - "flags": {}, - "order": 71, - "mode": 0, - "inputs": [ - { - "name": "positive", - "type": "CONDITIONING", - "link": 57 - }, - { - "name": "negative", - "type": "CONDITIONING", - "link": 58 - }, - { - "name": "control_net", - "type": "CONTROL_NET", - "link": 60, - "slot_index": 2 - }, - { - "name": "image", - "type": "IMAGE", - "link": 175 - } + "size": [ + 315, + 106 ], - "outputs": [ - { - "name": "positive", - "type": "CONDITIONING", - "links": [ - 301, - 307 - ], - "shape": 3, - "slot_index": 0 - }, - { - "name": "negative", - "type": "CONDITIONING", - "links": [ - 302, - 308 - ], - "shape": 3, - "slot_index": 1 + "flags": {}, + "order": 47, + "mode": 0, + "inputs": [ + { + "name": "INT", + "type": "*", + "link": 339, + "shape": 7, + "color_on": "" } ], + "outputs": [], "properties": { - "Node name for S&R": "ControlNetApplyAdvanced" + "Node name for S&R": "Anything Everywhere?", + "group_restricted": 0, + "color_restricted": 0 }, "widgets_values": [ - 0.71, - 0, - 0.729 + ".*", + "height", + ".*" ] }, { - "id": 103, - "type": "GetNode", - "pos": { - "0": 4400, - "1": -2351, - "2": 0, - "3": 0, - "4": 0, - "5": 0, - "6": 0, - "7": 0, - "8": 0, - "9": 0 - }, - "size": { - "0": 210, - "1": 58 - }, + "id": 200, + "type": "Anything Everywhere?", + "pos": [ + -1070.2686767578125, + -2834.5576171875 + ], + "size": [ + 315, + 106 + ], "flags": {}, - "order": 28, + "order": 46, "mode": 0, - "inputs": [], - "outputs": [ + "inputs": [ { - "name": "MASK", - "type": "MASK", - "links": [ - 152, - 160, - 203 - ], - "slot_index": 0 + "name": "INT", + "type": "*", + "link": 338, + "shape": 7, + "color_on": "" } ], - "title": "Get_empty_mask", - "properties": {}, + "outputs": [], + "properties": { + "Node name for S&R": "Anything Everywhere?", + "group_restricted": 0, + "color_restricted": 0 + }, "widgets_values": [ - "empty_mask" + ".*", + "width", + ".*" ] }, { - "id": 104, - "type": "ParticleEmitter", + "id": 199, + "type": "Anything Everywhere?", "pos": [ - 4435, - -2222 + -1056.6351318359375, + -2505.56884765625 + ], + "size": [ + 315, + 106 ], - "size": { - "0": 468.5999755859375, - "1": 402 - }, "flags": {}, - "order": 58, + "order": 55, "mode": 0, "inputs": [ { - "name": "previous_emitter", - "type": "PARTICLE_EMITTER", - "link": null, - "slot_index": 0 - }, - { - "name": "emitter_movement", - "type": "EMITTER_MOVEMENT", - "link": null - }, - { - "name": "spring_joint_setting", - "type": "SPRING_JOINT_SETTING", - "link": null - }, - { - "name": "particle_modulation", - "type": "PARTICLE_MODULATION", - "link": null - }, + "name": "AUDIO", + "type": "*", + "link": 337, + "shape": 7, + "color_on": "" + } + ], + "outputs": [], + "properties": { + "Node name for S&R": "Anything Everywhere?", + "group_restricted": 0, + "color_restricted": 0 + }, + "widgets_values": [ + ".*", + "audio", + ".*" + ] + }, + { + "id": 102, + "type": "SetNode", + "pos": [ + -721.6105346679688, + -2179.030517578125 + ], + "size": [ + 210, + 58 + ], + "flags": {}, + "order": 68, + "mode": 0, + "inputs": [ { - "name": "emitter_modulation", - "type": "EMITTER_MODULATION", - "link": 170, - "slot_index": 4 + "name": "MASK", + "type": "MASK", + "link": 151 } ], "outputs": [ { - "name": "PARTICLE_EMITTER", - "type": "PARTICLE_EMITTER", - "links": [ - 153 - ], - "shape": 3, - "slot_index": 0 + "name": "*", + "type": "*", + "links": null } ], + "title": "Set_empty_mask", "properties": { - "Node name for S&R": "ParticleEmitter" + "previousName": "empty_mask" }, "widgets_values": [ - 0.15, - 0.75, - 270, - 50, - 50, - 167, - 0, - "(255,255,255)", - 0, - 0, - 0, - 24.5 - ] + "empty_mask" + ], + "color": "#1c5715", + "bgcolor": "#1f401b" }, { - "id": 114, - "type": "GetNode", - "pos": { - "0": 3547, - "1": -1581, - "2": 0, - "3": 0, - "4": 0, - "5": 0, - "6": 0, - "7": 0, - "8": 0, - "9": 0 - }, - "size": { - "0": 210, - "1": 58 - }, + "id": 73, + "type": "SetNode", + "pos": [ + -724.1576538085938, + -2061.641357421875 + ], + "size": [ + 210, + 58 + ], "flags": {}, - "order": 29, + "order": 52, "mode": 0, - "inputs": [], + "inputs": [ + { + "name": "AUDIO", + "type": "AUDIO", + "link": 102 + } + ], "outputs": [ { - "name": "FEATURE", - "type": "FEATURE", - "links": [ - 169, - 171, - 205 - ], - "slot_index": 0 + "name": "*", + "type": "*", + "links": null } ], - "title": "Get_bare_drums", - "properties": {}, + "title": "Set_audio", + "properties": { + "previousName": "audio" + }, "widgets_values": [ - "bare_drums" + "audio" ] }, { - "id": 113, - "type": "EmitterEmissionRateModulation", + "id": 204, + "type": "AudioFeatureExtractor", "pos": [ - 3802, - -2263 + -135.34500122070312, + -2109.21923828125 + ], + "size": [ + 415.8000183105469, + 174 ], - "size": { - "0": 420, - "1": 222 - }, "flags": {}, - "order": 43, + "order": 71, "mode": 0, "inputs": [ { - "name": "previous_modulation", - "type": "EMITTER_MODULATION", - "link": null + "name": "audio", + "type": "AUDIO", + "link": 340 }, { - "name": "feature", - "type": "FEATURE", - "link": 169 + "name": "frame_rate", + "type": "FLOAT", + "link": null, + "widget": { + "name": "frame_rate" + } + }, + { + "name": "frame_count", + "type": "INT", + "link": null, + "widget": { + "name": "frame_count" + } + }, + { + "name": "width", + "type": "INT", + "link": null, + "widget": { + "name": "width" + } + }, + { + "name": "height", + "type": "INT", + "link": null, + "widget": { + "name": "height" + } } ], "outputs": [ { - "name": "EMITTER_MODULATION", - "type": "EMITTER_MODULATION", + "name": "feature", + "type": "FEATURE", "links": [ - 170 - ], - "shape": 3, - "slot_index": 0 + 344 + ] + }, + { + "name": "frame_count", + "type": "INT", + "links": null } ], "properties": { - "Node name for S&R": "EmitterEmissionRateModulation" + "Node name for S&R": "AudioFeatureExtractor" }, "widgets_values": [ + "amplitude_envelope", + 30, 0, - 0, - 0, - "ease_in_out", - false, - false, - 14.200000000000001 + 512, + 512 ] }, { - "id": 115, - "type": "EmitterEmissionRateModulation", + "id": 205, + "type": "FloatConstant", "pos": [ - 3792, - -1688 + -1451.2197265625, + -3019.867919921875 + ], + "size": [ + 210, + 58 ], - "size": { - "0": 420, - "1": 222 - }, "flags": {}, - "order": 44, + "order": 30, "mode": 0, - "inputs": [ - { - "name": "previous_modulation", - "type": "EMITTER_MODULATION", - "link": null - }, - { - "name": "feature", - "type": "FEATURE", - "link": 171 - } - ], + "inputs": [], "outputs": [ { - "name": "EMITTER_MODULATION", - "type": "EMITTER_MODULATION", + "name": "value", + "type": "FLOAT", "links": [ - 172 + 342 ], - "shape": 3, "slot_index": 0 } ], "properties": { - "Node name for S&R": "EmitterEmissionRateModulation" + "Node name for S&R": "FloatConstant" }, - "widgets_values": [ - 0, - 0, - 0, - "ease_in_out", - false, - false, - 14.3 - ] + "widgets_values": [ + 30.000000000000004 + ], + "color": "#232", + "bgcolor": "#353" }, { - "id": 136, - "type": "DepthShapeModifierPrecise", + "id": 206, + "type": "Anything Everywhere?", "pos": [ - 5759, - -1871 + -1084.755615234375, + -3015.571044921875 + ], + "size": [ + 315, + 106 ], - "size": { - "0": 386.3999938964844, - "1": 174 - }, "flags": {}, - "order": 95, + "order": 48, "mode": 0, "inputs": [ { - "name": "depth_map", - "type": "IMAGE", - "link": 208 - }, - { - "name": "mask", - "type": "MASK", - "link": 209 - } - ], - "outputs": [ - { - "name": "IMAGE", - "type": "IMAGE", - "links": [ - 210, - 211 - ], - "shape": 3, - "slot_index": 0 + "name": "FLOAT", + "type": "*", + "link": 342, + "shape": 7, + "color_on": "" } ], + "outputs": [], "properties": { - "Node name for S&R": "DepthShapeModifierPrecise" + "Node name for S&R": "Anything Everywhere?", + "group_restricted": 0, + "color_restricted": 0 }, "widgets_values": [ - 2, - 0.17, - 0.32, - 1, - "depth_aware" + ".*", + "frame_rate", + ".*" ] }, { - "id": 100, - "type": "ParticleEmissionMask", + "id": 66, + "type": "EmptyImageAndMaskFromAudio", "pos": [ - 4980, - -2261 + -1272, + -2191 + ], + "size": [ + 411.6000061035156, + 168.1107940673828 ], - "size": { - "0": 336, - "1": 474 - }, "flags": {}, - "order": 72, + "order": 50, "mode": 0, "inputs": [ { - "name": "masks", - "type": "MASK", - "link": 152 - }, - { - "name": "emitters", - "type": "PARTICLE_EMITTER", - "link": 153, - "slot_index": 1 + "name": "audio", + "type": "AUDIO", + "link": 90 }, { - "name": "vortices", - "type": "VORTEX", - "link": null + "name": "width", + "type": "INT", + "link": null, + "widget": { + "name": "width" + } }, { - "name": "wells", - "type": "GRAVITY_WELL", - "link": null + "name": "height", + "type": "INT", + "link": null, + "widget": { + "name": "height" + } }, { - "name": "static_bodies", - "type": "STATIC_BODY", - "link": null + "name": "frame_rate", + "type": "FLOAT", + "link": null, + "widget": { + "name": "frame_rate" + } } ], "outputs": [ { - "name": "MASK", + "name": "empty_image", + "type": "IMAGE", + "links": [ + 150 + ], + "slot_index": 0, + "shape": 3 + }, + { + "name": "empty_mask", "type": "MASK", "links": [ - 156 + 151 ], - "shape": 3, - "slot_index": 0 + "slot_index": 1, + "shape": 3 }, { - "name": "IMAGE", - "type": "IMAGE", - "links": [], - "shape": 3, - "slot_index": 1 + "name": "frame_count", + "type": "INT", + "links": [ + 240, + 343 + ], + "slot_index": 2, + "shape": 3 } ], "properties": { - "Node name for S&R": "ParticleEmissionMask" + "Node name for S&R": "EmptyImageAndMaskFromAudio" }, "widgets_values": [ - 1, - false, - 0, - 0, - 1323, - 4, - 0, - 0, - 382, - 0, - 0, - 0, - false, - 1, - 1 + 30, + 768, + 464 ] }, { - "id": 105, - "type": "DepthShapeModifierPrecise", + "id": 207, + "type": "Anything Everywhere?", "pos": [ - 5785, - -2412 + -655.9651489257812, + -2546.548828125 + ], + "size": [ + 315, + 106 ], - "size": { - "0": 386.3999938964844, - "1": 174 - }, "flags": {}, - "order": 80, + "order": 70, "mode": 0, "inputs": [ { - "name": "depth_map", - "type": "IMAGE", - "link": 223 - }, - { - "name": "mask", - "type": "MASK", - "link": 156 - } - ], - "outputs": [ - { - "name": "IMAGE", - "type": "IMAGE", - "links": [ - 165 - ], - "shape": 3, - "slot_index": 0 + "name": "INT", + "type": "*", + "link": 343, + "shape": 7, + "color_on": "" } ], + "outputs": [], "properties": { - "Node name for S&R": "DepthShapeModifierPrecise" + "Node name for S&R": "Anything Everywhere?", + "group_restricted": 0, + "color_restricted": 0 }, "widgets_values": [ - 2, - 0.35000000000000003, - 0.51, - 1, - "depth_aware" + ".*", + "frame_count", + ".*" ] }, { - "id": 111, - "type": "DepthShapeModifierPrecise", + "id": 209, + "type": "FeatureMixer", "pos": [ - 5777, - -2171 + 305, + -2231 + ], + "size": [ + 315, + 322 ], - "size": { - "0": 386.3999938964844, - "1": 174 - }, "flags": {}, - "order": 89, + "order": 82, "mode": 0, "inputs": [ { - "name": "depth_map", - "type": "IMAGE", - "link": 165 - }, - { - "name": "mask", - "type": "MASK", - "link": 163 + "name": "feature", + "type": "FEATURE", + "link": 344 } ], "outputs": [ { - "name": "IMAGE", - "type": "IMAGE", + "name": "FEATURE", + "type": "FEATURE", "links": [ - 167, - 208 + 345, + 346 ], - "shape": 3, "slot_index": 0 } ], "properties": { - "Node name for S&R": "DepthShapeModifierPrecise" + "Node name for S&R": "FeatureMixer" }, "widgets_values": [ - 2, - 0.7000000000000001, - 0.85, 1, - "depth_aware" + 0, + 1, + 1, + 1, + 1, + 1, + 0, + 0.38, + 1, + 0.5, + false ] }, { - "id": 116, - "type": "SetNode", - "pos": { - "0": 6874, - "1": -1715, - "2": 0, - "3": 0, - "4": 0, - "5": 0, - "6": 0, - "7": 0, - "8": 0, - "9": 0 - }, - "size": { - "0": 210, - "1": 58 - }, + "id": 210, + "type": "PreviewFeature", + "pos": [ + 728.6032104492188, + -2207.300048828125 + ], + "size": [ + 315, + 246 + ], "flags": {}, - "order": 101, + "order": 90, "mode": 0, "inputs": [ { - "name": "IMAGE", - "type": "IMAGE", - "link": 211 - } - ], - "outputs": [ - { - "name": "*", - "type": "*", - "links": null + "name": "feature", + "type": "FEATURE", + "link": 346 } ], - "title": "Set_depth_bubbles", + "outputs": [], "properties": { - "previousName": "depth_bubbles" + "Node name for S&R": "PreviewFeature" }, - "widgets_values": [ - "depth_bubbles" - ] + "widgets_values": [] }, { - "id": 117, - "type": "GetNode", - "pos": { - "0": 1829, - "1": -863, - "2": 0, - "3": 0, - "4": 0, - "5": 0, - "6": 0, - "7": 0, - "8": 0, - "9": 0 - }, - "size": { - "0": 210, - "1": 58 - }, + "id": 94, + "type": "SetNode", + "pos": [ + 2206.25, + -538.1600341796875 + ], + "size": [ + 210, + 58 + ], "flags": {}, - "order": 30, + "order": 80, "mode": 0, - "inputs": [], + "inputs": [ + { + "name": "IMAGE", + "type": "IMAGE", + "link": 351 + } + ], "outputs": [ { - "name": "IMAGE", - "type": "IMAGE", - "links": [ - 175 - ], - "slot_index": 0 + "name": "*", + "type": "*", + "links": null } ], - "title": "Get_depth_bubbles", - "properties": {}, + "title": "Set_depth", + "properties": { + "previousName": "depth" + }, "widgets_values": [ - "depth_bubbles" - ] + "depth" + ], + "color": "#2a363b", + "bgcolor": "#3f5159" }, { - "id": 191, + "id": 99, "type": "GetNode", - "pos": { - "0": 3372, - "1": -181, - "2": 0, - "3": 0, - "4": 0, - "5": 0, - "6": 0, - "7": 0, - "8": 0, - "9": 0 - }, - "size": { - "0": 210, - "1": 58 - }, + "pos": [ + 1551.9000244140625, + -666.4099731445312 + ], + "size": [ + 210, + 58 + ], "flags": {}, "order": 31, "mode": 0, "inputs": [], "outputs": [ { - "name": "MASK", - "type": "MASK", + "name": "IMAGE", + "type": "IMAGE", "links": [ - 316 + 347 ], "slot_index": 0 } ], - "title": "Get_mask_water", + "title": "Get_init_img", "properties": {}, "widgets_values": [ - "mask_water" + "init_img" ] }, { - "id": 60, - "type": "GrowMaskWithBlur", + "id": 50, + "type": "ControlNetLoader", "pos": [ - 3577, - -96 + 1550.81005859375, + -782.4900512695312 + ], + "size": [ + 315, + 58 ], - "size": { - "0": 315, - "1": 246 - }, "flags": {}, - "order": 46, + "order": 32, "mode": 0, - "inputs": [ - { - "name": "mask", - "type": "MASK", - "link": 316 - } - ], + "inputs": [], "outputs": [ { - "name": "mask", - "type": "MASK", + "name": "CONTROL_NET", + "type": "CONTROL_NET", "links": [ - 83, - 273 + 60 ], - "shape": 3, - "slot_index": 0 - }, - { - "name": "mask_inverted", - "type": "MASK", - "links": null, "shape": 3 } ], "properties": { - "Node name for S&R": "GrowMaskWithBlur" + "Node name for S&R": "ControlNetLoader" }, "widgets_values": [ - 10, - 0, - true, - false, - 5.4, - 1, - 1, - false + "control_v11f1p_sd15_depth.pth" ] }, { - "id": 51, - "type": "SetLatentNoiseMask", + "id": 63, + "type": "VHS_LoadAudioUpload", "pos": [ - 3653, - 282 + -1560, + -2207 + ], + "size": [ + 243.818359375, + 130 ], - "size": { - "0": 210, - "1": 46 - }, "flags": {}, - "order": 102, + "order": 33, "mode": 0, - "inputs": [ - { - "name": "samples", - "type": "LATENT", - "link": 84 - }, - { - "name": "mask", - "type": "MASK", - "link": 83 - } - ], + "inputs": [], "outputs": [ { - "name": "LATENT", - "type": "LATENT", + "name": "audio", + "type": "AUDIO", "links": [ - 66 + 90, + 95, + 102, + 227, + 335, + 337 ], - "shape": 3, - "slot_index": 0 + "slot_index": 0, + "shape": 3 } ], "properties": { - "Node name for S&R": "SetLatentNoiseMask" + "Node name for S&R": "VHS_LoadAudioUpload" + }, + "widgets_values": { + "audio": "Delta Deez - Songfinch - Out the Mud.mp3", + "start_time": 15, + "duration": 2, + "choose audio to upload": "image" } }, { - "id": 23, + "id": 187, "type": "VHS_VideoCombine", "pos": [ - 4578, - -182 + 6187.28125, + 545.4400634765625 ], "size": [ - 365.99755859375, - 533.300983346147 + 370, + 560.1875 ], "flags": {}, - "order": 108, + "order": 123, "mode": 0, "inputs": [ { "name": "images", "type": "IMAGE", - "link": 21 + "link": 287 }, { "name": "audio", "type": "AUDIO", - "link": 121 + "link": 286, + "shape": 7 }, { "name": "meta_batch", "type": "VHS_BatchManager", - "link": null + "link": null, + "shape": 7 }, { "name": "vae", "type": "VAE", - "link": null + "link": null, + "shape": 7 } ], "outputs": [ @@ -5558,175 +5787,63 @@ "pix_fmt": "yuv420p", "crf": 19, "save_metadata": true, + "trim_to_audio": false, "pingpong": false, "save_output": true, "videopreview": { "hidden": false, - "paused": false, + "paused": true, "params": { - "filename": "AnimateDiff_07570-audio.mp4", + "filename": "AnimateDiff_02348-audio.mp4", "subfolder": "", "type": "output", "format": "video/h264-mp4", - "frame_rate": 30 + "frame_rate": 30, + "workflow": "AnimateDiff_02348.png", + "fullpath": "/runpod-volume/ComfyUI_rv/output/AnimateDiff_02348-audio.mp4" }, "muted": false } } }, { - "id": 21, - "type": "KSampler", - "pos": [ - 4016, - -47 - ], - "size": { - "0": 303.4075622558594, - "1": 262 - }, - "flags": {}, - "order": 103, - "mode": 0, - "inputs": [ - { - "name": "model", - "type": "MODEL", - "link": 37 - }, - { - "name": "positive", - "type": "CONDITIONING", - "link": 301 - }, - { - "name": "negative", - "type": "CONDITIONING", - "link": 302 - }, - { - "name": "latent_image", - "type": "LATENT", - "link": 66 - } - ], - "outputs": [ - { - "name": "LATENT", - "type": "LATENT", - "links": [ - 20, - 189 - ], - "slot_index": 0 - } - ], - "properties": { - "Node name for S&R": "KSampler" - }, - "widgets_values": [ - 156680208700286, - "fixed", - 8, - 1, - "lcm", - "sgm_uniform", - 0.9 - ] - }, - { - "id": 123, - "type": "KSampler", - "pos": [ - 5484, - -137 - ], - "size": { - "0": 303.4075622558594, - "1": 262 - }, - "flags": {}, - "order": 109, - "mode": 0, - "inputs": [ - { - "name": "model", - "type": "MODEL", - "link": 180 - }, - { - "name": "positive", - "type": "CONDITIONING", - "link": 307 - }, - { - "name": "negative", - "type": "CONDITIONING", - "link": 308 - }, - { - "name": "latent_image", - "type": "LATENT", - "link": 195 - } - ], - "outputs": [ - { - "name": "LATENT", - "type": "LATENT", - "links": [ - 184 - ], - "slot_index": 0 - } - ], - "properties": { - "Node name for S&R": "KSampler" - }, - "widgets_values": [ - 156680208700286, - "fixed", - 4, - 1, - "lcm", - "sgm_uniform", - 0.5 - ] - }, - { - "id": 125, + "id": 106, "type": "VHS_VideoCombine", "pos": [ - 6407, - -216 + 6003.6484375, + -1728.6363525390625 ], "size": [ - 370, - 536 + 214.7587890625, + 465.6667785644531 ], "flags": {}, - "order": 112, + "order": 88, "mode": 0, "inputs": [ { "name": "images", "type": "IMAGE", - "link": 186 + "link": 166 }, { "name": "audio", "type": "AUDIO", - "link": 187 + "link": null, + "shape": 7 }, { "name": "meta_batch", "type": "VHS_BatchManager", - "link": null + "link": null, + "shape": 7 }, { "name": "vae", "type": "VAE", - "link": null + "link": null, + "slot_index": 3, + "shape": 7 } ], "outputs": [ @@ -5748,173 +5865,271 @@ "pix_fmt": "yuv420p", "crf": 19, "save_metadata": true, + "trim_to_audio": false, "pingpong": false, "save_output": true, "videopreview": { "hidden": false, "paused": false, "params": { - "filename": "AnimateDiff_07571-audio.mp4", + "filename": "AnimateDiff_02350-audio.mp4", "subfolder": "", "type": "output", "format": "video/h264-mp4", - "frame_rate": 30 + "frame_rate": 30, + "workflow": "AnimateDiff_02350.png", + "fullpath": "/runpod-volume/ComfyUI_rv/output/AnimateDiff_02350-audio.mp4" }, "muted": false } } }, { - "id": 128, - "type": "NNLatentUpscale", + "id": 211, + "type": "AIO_Preprocessor", "pos": [ - 5090, - -139 + 1735.9215087890625, + -539.2509155273438 + ], + "size": [ + 315, + 82 ], - "size": { - "0": 315, - "1": 82 - }, "flags": {}, - "order": 105, + "order": 49, "mode": 0, "inputs": [ { - "name": "latent", - "type": "LATENT", - "link": 189 + "name": "image", + "type": "IMAGE", + "link": 347 } ], "outputs": [ { - "name": "LATENT", - "type": "LATENT", + "name": "IMAGE", + "type": "IMAGE", "links": [ - 192 + 349 ], - "shape": 3, "slot_index": 0 } ], "properties": { - "Node name for S&R": "NNLatentUpscale" + "Node name for S&R": "AIO_Preprocessor" }, "widgets_values": [ - "SD 1.x", - 1.67 + "DepthAnythingV2Preprocessor", + 512 ] }, { - "id": 129, - "type": "SetLatentNoiseMask", + "id": 213, + "type": "GetNode", "pos": [ - 5232, - 49 + 1729.4423828125, + -391.8521728515625 + ], + "size": [ + 210, + 58 ], - "size": { - "0": 210, - "1": 46 - }, "flags": {}, - "order": 107, + "order": 34, + "mode": 0, + "inputs": [], + "outputs": [ + { + "name": "IMAGE", + "type": "IMAGE", + "links": [ + 350 + ], + "slot_index": 0 + } + ], + "title": "Get_empty_image", + "properties": {}, + "widgets_values": [ + "empty_image" + ], + "color": "#2a363b", + "bgcolor": "#3f5159" + }, + { + "id": 212, + "type": "ImageScaleToTarget", + "pos": [ + 2137.212158203125, + -410.0022277832031 + ], + "size": [ + 415.8000183105469, + 102 + ], + "flags": {}, + "order": 66, "mode": 0, "inputs": [ { - "name": "samples", - "type": "LATENT", - "link": 192 + "name": "image", + "type": "IMAGE", + "link": 349 }, { - "name": "mask", - "type": "MASK", - "link": 274 + "name": "target_image", + "type": "IMAGE", + "link": 350 } ], "outputs": [ { - "name": "LATENT", - "type": "LATENT", + "name": "IMAGE", + "type": "IMAGE", "links": [ - 195 + 351 ], - "shape": 3, "slot_index": 0 } ], "properties": { - "Node name for S&R": "SetLatentNoiseMask" - } + "Node name for S&R": "ImageScaleToTarget" + }, + "widgets_values": [ + "lanczos", + "disabled" + ] }, { - "id": 187, - "type": "VHS_VideoCombine", + "id": 108, + "type": "GetNode", "pos": [ - 6254, - 551 + 5937.22900390625, + -2503.578125 ], "size": [ - 370, - 536 + 210, + 58 ], "flags": {}, - "order": 116, + "order": 35, + "mode": 0, + "inputs": [], + "outputs": [ + { + "name": "IMAGE", + "type": "IMAGE", + "links": [ + 223 + ], + "slot_index": 0 + } + ], + "title": "Get_depth", + "properties": {}, + "widgets_values": [ + "depth" + ], + "color": "#2a363b", + "bgcolor": "#3f5159" + }, + { + "id": 111, + "type": "DepthShapeModifierPrecise", + "pos": [ + 6415.494140625, + -2176.41796875 + ], + "size": [ + 386.3999938964844, + 174 + ], + "flags": {}, + "order": 96, "mode": 0, "inputs": [ { - "name": "images", + "name": "depth_map", "type": "IMAGE", - "link": 287 + "link": 165 }, { - "name": "audio", - "type": "AUDIO", - "link": 286 - }, + "name": "mask", + "type": "MASK", + "link": 163 + } + ], + "outputs": [ { - "name": "meta_batch", - "type": "VHS_BatchManager", - "link": null + "name": "IMAGE", + "type": "IMAGE", + "links": [ + 167, + 208 + ], + "slot_index": 0, + "shape": 3 + } + ], + "properties": { + "Node name for S&R": "DepthShapeModifierPrecise" + }, + "widgets_values": [ + 2, + 0.7000000000000001, + 0.85, + 1, + "depth_aware" + ] + }, + { + "id": 136, + "type": "DepthShapeModifierPrecise", + "pos": [ + 6420.04150390625, + -1918.290771484375 + ], + "size": [ + 386.3999938964844, + 174 + ], + "flags": {}, + "order": 102, + "mode": 0, + "inputs": [ + { + "name": "depth_map", + "type": "IMAGE", + "link": 208 }, { - "name": "vae", - "type": "VAE", - "link": null + "name": "mask", + "type": "MASK", + "link": 209 } ], "outputs": [ { - "name": "Filenames", - "type": "VHS_FILENAMES", - "links": null, + "name": "IMAGE", + "type": "IMAGE", + "links": [ + 210, + 211 + ], + "slot_index": 0, "shape": 3 } ], "properties": { - "Node name for S&R": "VHS_VideoCombine" + "Node name for S&R": "DepthShapeModifierPrecise" }, - "widgets_values": { - "frame_rate": 30, - "loop_count": 0, - "filename_prefix": "AnimateDiff", - "format": "video/h264-mp4", - "pix_fmt": "yuv420p", - "crf": 19, - "save_metadata": true, - "pingpong": false, - "save_output": true, - "videopreview": { - "hidden": false, - "paused": true, - "params": { - "filename": "AnimateDiff_07572-audio.mp4", - "subfolder": "", - "type": "output", - "format": "video/h264-mp4", - "frame_rate": 30 - }, - "muted": false - } - } + "widgets_values": [ + 2, + 0.17, + 0.32, + 1, + "depth_aware" + ] } ], "links": [ @@ -6150,14 +6365,6 @@ 0, "IMAGE" ], - [ - 53, - 48, - 0, - 47, - 0, - "DAMODEL" - ], [ 57, 6, @@ -6243,46 +6450,22 @@ 60, 0, 51, - 1, - "MASK" - ], - [ - 84, - 35, - 0, - 51, - 0, - "LATENT" - ], - [ - 85, - 61, - 0, - 57, - 2, - "IMAGE" - ], - [ - 87, - 65, - 0, - 64, - 0, - "OPEN_UNMIX_MODEL" + 1, + "MASK" ], [ - 88, - 63, + 84, + 35, 0, - 64, - 1, - "AUDIO" + 51, + 0, + "LATENT" ], [ - 89, - 66, + 85, + 61, 0, - 64, + 57, 2, "IMAGE" ], @@ -6318,46 +6501,6 @@ 1, "AUDIO" ], - [ - 124, - 64, - 5, - 86, - 1, - "FEATURE_PIPE" - ], - [ - 137, - 64, - 1, - 86, - 0, - "AUDIO" - ], - [ - 138, - 86, - 0, - 91, - 0, - "FEATURE" - ], - [ - 140, - 91, - 1, - 88, - 0, - "IMAGE" - ], - [ - 143, - 47, - 0, - 94, - 0, - "*" - ], [ 146, 55, @@ -6366,14 +6509,6 @@ 0, "*" ], - [ - 147, - 99, - 0, - 47, - 1, - "IMAGE" - ], [ 150, 66, @@ -6462,14 +6597,6 @@ 0, "IMAGE" ], - [ - 168, - 91, - 0, - 112, - 0, - "*" - ], [ 169, 114, @@ -6590,14 +6717,6 @@ 3, "LATENT" ], - [ - 196, - 64, - 5, - 132, - 0, - "*" - ], [ 203, 103, @@ -6695,352 +6814,521 @@ "*" ], [ - 242, + 251, 168, 0, - 171, + 175, 0, "INT" ], [ - 243, - 171, + 257, + 38, + 1, + 6, 0, - 163, + "CLIP" + ], + [ + 258, + 38, 1, - "FLOAT" + 7, + 0, + "CLIP" ], [ - 244, - 168, + 273, + 60, 0, - 172, + 183, + 0, + "*" + ], + [ + 274, + 183, + 0, + 129, + 1, + "MASK" + ], + [ + 275, + 126, + 0, + 184, 0, + "IMAGE" + ], + [ + 278, + 184, + 2, + 185, + 2, "INT" ], [ - 245, - 172, + 279, + 184, + 1, + 185, + 1, + "INT" + ], + [ + 281, + 182, + 0, + 185, + 0, + "IMAGE" + ], + [ + 282, + 183, + 0, + 186, + 2, + "MASK" + ], + [ + 286, + 127, 0, - 164, + 187, 1, - "FLOAT" + "AUDIO" ], [ - 248, - 163, + 287, + 186, + 0, + 187, + 0, + "IMAGE" + ], + [ + 291, + 184, + 0, + 186, + 1, + "IMAGE" + ], + [ + 292, + 185, + 0, + 186, + 0, + "IMAGE" + ], + [ + 293, + 52, + 0, + 188, + 0, + "*" + ], + [ + 296, + 36, + 0, + 189, + 0, + "*" + ], + [ + 299, + 189, + 0, + 178, + 0, + "IMAGE" + ], + [ + 300, + 188, 0, + 180, + 0, + "IMAGE" + ], + [ + 301, + 49, + 0, + 21, + 1, + "CONDITIONING" + ], + [ + 302, + 49, + 1, + 21, + 2, + "CONDITIONING" + ], + [ + 307, + 49, + 0, + 123, + 1, + "CONDITIONING" + ], + [ + 308, + 49, + 1, + 123, + 2, + "CONDITIONING" + ], + [ + 313, + 25, + 0, + 31, + 0, + "IMAGE" + ], + [ + 314, + 25, + 0, + 33, + 0, + "IMAGE" + ], + [ + 315, 53, 0, - "IMAGE" + 190, + 0, + "*" + ], + [ + 316, + 191, + 0, + 60, + 0, + "MASK" ], [ - 251, - 168, - 0, - 175, + 318, + 33, 0, - "INT" + 42, + 2, + "IMAGE" ], [ - 254, + 320, 176, 0, - 163, + 194, 0, "IMAGE" ], [ - 256, - 177, + 321, + 194, 0, - 164, + 53, 0, "IMAGE" ], [ - 257, - 38, - 1, - 6, + 322, + 168, 0, - "CLIP" + 194, + 1, + "INT" ], [ - 258, - 38, - 1, - 7, + 323, + 177, 0, - "CLIP" + 195, + 0, + "IMAGE" ], [ - 259, - 164, + 324, + 195, 0, 55, 0, "IMAGE" ], [ - 262, - 178, + 325, + 168, 0, - 179, + 195, 1, - "IMAGE" + "INT" ], [ - 265, - 179, + 326, + 188, 0, - 177, + 196, 0, "IMAGE" ], [ - 267, + 327, 180, 0, - 181, + 196, 1, "IMAGE" ], [ - 272, - 181, - 0, - 176, + 328, + 188, 0, + 196, + 2, "IMAGE" ], [ - 273, - 60, + 329, + 196, 0, - 183, + 176, 0, - "*" + "IMAGE" ], [ - 274, - 183, + 330, + 189, 0, - 129, - 1, - "MASK" + 197, + 0, + "IMAGE" ], [ - 275, - 126, - 0, - 184, + 331, + 178, 0, + 197, + 1, "IMAGE" ], [ - 278, - 184, - 2, - 185, + 332, + 189, + 0, + 197, 2, - "INT" - ], - [ - 279, - 184, - 1, - 185, - 1, - "INT" + "IMAGE" ], [ - 281, - 182, + 333, + 197, 0, - 185, + 177, 0, "IMAGE" ], [ - 282, - 183, + 334, + 65, 0, - 186, - 2, - "MASK" + 198, + 0, + "OPEN_UNMIX_MODEL" ], [ - 286, - 127, + 335, + 63, 0, - 187, + 198, 1, "AUDIO" ], [ - 287, - 186, + 337, + 63, 0, - 187, + 199, 0, - "IMAGE" + "AUDIO" ], [ - 291, - 184, + 338, + 202, 0, - 186, - 1, - "IMAGE" + 200, + 0, + "INT" ], [ - 292, - 185, + 339, + 203, 0, - 186, + 201, 0, - "IMAGE" + "INT" ], [ - 293, - 52, - 0, - 188, + 340, + 198, + 1, + 204, 0, - "*" + "AUDIO" ], [ - 294, - 188, + 342, + 205, 0, - 181, + 206, 0, - "IMAGE" + "FLOAT" ], [ - 295, - 188, - 0, - 181, + 343, + 66, 2, - "IMAGE" + 207, + 0, + "INT" ], [ - 296, - 36, + 344, + 204, 0, - 189, + 209, 0, - "*" + "FEATURE" ], [ - 297, - 189, + 345, + 209, 0, - 179, + 112, 0, - "IMAGE" + "FEATURE" ], [ - 298, - 189, + 346, + 209, 0, - 179, - 2, - "IMAGE" + 210, + 0, + "FEATURE" ], [ - 299, - 189, + 347, + 99, 0, - 178, + 211, 0, "IMAGE" ], [ - 300, - 188, + 349, + 211, 0, - 180, + 212, 0, "IMAGE" ], [ - 301, - 49, + 350, + 213, 0, - 21, + 212, 1, - "CONDITIONING" + "IMAGE" ], [ - 302, - 49, - 1, - 21, - 2, - "CONDITIONING" + 351, + 212, + 0, + 94, + 0, + "IMAGE" ], [ - 307, - 49, + 352, + 205, 0, - 123, + 204, 1, - "CONDITIONING" + "FLOAT" ], [ - 308, - 49, - 1, - 123, + 353, + 66, 2, - "CONDITIONING" + 204, + 2, + "INT" ], [ - 313, - 25, - 0, - 31, + 354, + 202, 0, - "IMAGE" + 204, + 3, + "INT" ], [ - 314, - 25, - 0, - 33, + 355, + 203, 0, - "IMAGE" + 204, + 4, + "INT" ], [ - 315, - 53, + 356, + 202, 0, - 190, - 0, - "*" + 66, + 1, + "INT" ], [ - 316, - 191, + 357, + 203, 0, - 60, + 66, + 2, + "INT" + ], + [ + 358, + 205, 0, - "MASK" + 66, + 3, + "FLOAT" ], [ - 318, - 33, + 359, + 63, 0, - 42, - 2, - "IMAGE" + 106, + 1, + "AUDIO" ] ], "groups": [ { + "id": 1, "title": "adif", "bounding": [ 2554, @@ -7050,9 +7338,10 @@ ], "color": "#3f789e", "font_size": 24, - "locked": false + "flags": {} }, { + "id": 2, "title": "samp1", "bounding": [ 3539, @@ -7062,9 +7351,10 @@ ], "color": "#3f789e", "font_size": 24, - "locked": false + "flags": {} }, { + "id": 3, "title": "ipadap1", "bounding": [ 1425, @@ -7074,9 +7364,10 @@ ], "color": "#3f789e", "font_size": 24, - "locked": false + "flags": {} }, { + "id": 4, "title": "Load Audio", "bounding": [ -1469, @@ -7086,33 +7377,36 @@ ], "color": "#3f789e", "font_size": 24, - "locked": false + "flags": {} }, { + "id": 5, "title": "depth", "bounding": [ 1516, -946, - 970, - 509 + 1205.949951171875, + 666.2999877929688 ], "color": "#3f789e", "font_size": 24, - "locked": false + "flags": {} }, { + "id": 6, "title": "ParticleDepth", "bounding": [ - 3536, - -2615, + 4156.77734375, + -2657.459228515625, 3652, 2050 ], "color": "#3f789e", "font_size": 24, - "locked": false + "flags": {} }, { + "id": 7, "title": "Samp", "bounding": [ 5024, @@ -7122,9 +7416,10 @@ ], "color": "#3f789e", "font_size": 24, - "locked": false + "flags": {} }, { + "id": 8, "title": "Preprocess", "bounding": [ -5540, @@ -7134,9 +7429,10 @@ ], "color": "#3f789e", "font_size": 24, - "locked": false + "flags": {} }, { + "id": 9, "title": "Masks", "bounding": [ -1479, @@ -7146,21 +7442,23 @@ ], "color": "#3f789e", "font_size": 24, - "locked": false + "flags": {} }, { + "id": 10, "title": "Images", "bounding": [ - -1486, - -1020, + -1415.456787109375, + -996.0419921875, 2310, 555 ], "color": "#3f789e", "font_size": 24, - "locked": false + "flags": {} }, { + "id": 11, "title": "paste original", "bounding": [ 5094, @@ -7170,9 +7468,10 @@ ], "color": "#3f789e", "font_size": 24, - "locked": false + "flags": {} }, { + "id": 12, "title": "Blah blah blah", "bounding": [ -192, @@ -7182,18 +7481,98 @@ ], "color": "#3f789e", "font_size": 24, - "locked": false + "flags": {} } ], "config": {}, "extra": { "ds": { - "scale": 0.12100000000000294, + "scale": 0.6209213230591577, "offset": [ - 6277.735484916542, - 3972.6849448850417 + -5891.057041768552, + 2570.0936622858285 ] - } + }, + "node_versions": { + "ComfyUI-AnimateDiff-Evolved": "7ec46937095048a77342aeada964e9823a2102f0", + "ComfyUI-KJNodes": "973ceb6ca8b7525d54873805888ad690090d6b1e", + "ComfyUI-VideoHelperSuite": "6953fa21443cf55f7c3b61ed3f4c87c5d3677fe1", + "comfy-core": "0.3.12", + "comfyui_segment_anything": "ab6395596399d5048639cdab7e44ec9fae857a93", + "ComfyUI_RyanOnTheInside": "e2382fa6e72d3aa18cbb4d558eb468cc14c54afc", + "ComfyUI_Comfyroll_CustomNodes": "d78b780ae43fcf8c6b7c6505e6ffb4584281ceca", + "rgthree-comfy": "5f2d8a1d19fcb2cac6dbc933085b20c1c0a8bb9f", + "ComfyUI_IPAdapter_plus": "b188a6cb39b512a9c6da7235b880af42c78ccd0d", + "ComfyUi_NNLatentUpscale": "08105da31dbd7a54569661e135835e73bd8064b0", + "cg-use-everywhere": "cd06259166a6af4c054c62f540871ca09a359b50", + "comfyui_controlnet_aux": "5a049bde9cc117dafc327cded156459289097ea1" + }, + "ue_links": [ + { + "downstream": 204, + "downstream_slot": 1, + "upstream": "205", + "upstream_slot": 0, + "controller": 206, + "type": "FLOAT" + }, + { + "downstream": 204, + "downstream_slot": 2, + "upstream": "66", + "upstream_slot": 2, + "controller": 207, + "type": "INT" + }, + { + "downstream": 204, + "downstream_slot": 3, + "upstream": "202", + "upstream_slot": 0, + "controller": 200, + "type": "INT" + }, + { + "downstream": 204, + "downstream_slot": 4, + "upstream": "203", + "upstream_slot": 0, + "controller": 201, + "type": "INT" + }, + { + "downstream": 66, + "downstream_slot": 1, + "upstream": "202", + "upstream_slot": 0, + "controller": 200, + "type": "INT" + }, + { + "downstream": 66, + "downstream_slot": 2, + "upstream": "203", + "upstream_slot": 0, + "controller": 201, + "type": "INT" + }, + { + "downstream": 66, + "downstream_slot": 3, + "upstream": "205", + "upstream_slot": 0, + "controller": 206, + "type": "FLOAT" + }, + { + "downstream": 106, + "downstream_slot": 1, + "upstream": "63", + "upstream_slot": 0, + "controller": 199, + "type": "AUDIO" + } + ] }, "version": 0.4 } \ No newline at end of file diff --git a/examples/circl_line_visualizer.json b/examples/circl_line_visualizerVERSION2.json similarity index 58% rename from examples/circl_line_visualizer.json rename to examples/circl_line_visualizerVERSION2.json index e1b9039..c542c36 100644 --- a/examples/circl_line_visualizer.json +++ b/examples/circl_line_visualizerVERSION2.json @@ -1,44 +1,48 @@ { - "last_node_id": 279, - "last_link_id": 486, + "last_node_id": 328, + "last_link_id": 561, "nodes": [ { "id": 165, "type": "ADE_AnimateDiffSamplingSettings", "pos": [ - 5707.480888441229, - -528.7132590696225 + 5707.48095703125, + -528.7132568359375 + ], + "size": [ + 273.3500061035156, + 274 ], - "size": { - "0": 273.3500061035156, - "1": 254 - }, "flags": {}, - "order": 17, + "order": 19, "mode": 0, "inputs": [ { "name": "noise_layers", "type": "NOISE_LAYERS", "link": null, - "slot_index": 0 + "slot_index": 0, + "shape": 7 }, { "name": "iteration_opts", "type": "ITERATION_OPTS", - "link": null + "link": null, + "shape": 7 }, { "name": "custom_cfg", "type": "CUSTOM_CFG", "link": 285, - "slot_index": 2 + "slot_index": 2, + "shape": 7 }, { "name": "sigma_schedule", "type": "SIGMA_SCHEDULE", "link": null, - "slot_index": 3 + "slot_index": 3, + "shape": 7 }, { "name": "seed_override", @@ -55,6 +59,12 @@ "widget": { "name": "seed_override" } + }, + { + "name": "image_inject", + "type": "IMAGE_INJECT", + "link": null, + "shape": 7 } ], "outputs": [ @@ -64,8 +74,8 @@ "links": [ 282 ], - "shape": 3, - "slot_index": 0 + "slot_index": 0, + "shape": 3 } ], "properties": { @@ -82,21 +92,20 @@ "comfy", 0, 0, - false, - "" + false ] }, { "id": 166, "type": "ADE_MultivalDynamic", "pos": [ - 5357.480888441229, - -728.7132590696225 + 5357.48095703125, + -728.7132568359375 + ], + "size": [ + 259.9388122558594, + 63.332008361816406 ], - "size": { - "0": 259.9388122558594, - "1": 63.332008361816406 - }, "flags": {}, "order": 0, "mode": 0, @@ -104,7 +113,8 @@ { "name": "mask_optional", "type": "MASK", - "link": null + "link": null, + "shape": 7 } ], "outputs": [ @@ -114,8 +124,8 @@ "links": [ 283 ], - "shape": 3, - "slot_index": 0 + "slot_index": 0, + "shape": 3 } ], "title": "Scale 🎭🅐🅓", @@ -128,21 +138,20 @@ } }, "widgets_values": [ - 1.1400000000000001, - "" + 1.1400000000000001 ] }, { "id": 167, "type": "ADE_AnimateDiffUniformContextOptions", "pos": [ - 5707.480888441229, - -838.7132590696225 + 5707.48095703125, + -838.7132568359375 + ], + "size": [ + 273.269775390625, + 270 ], - "size": { - "0": 273.269775390625, - "1": 270 - }, "flags": {}, "order": 1, "mode": 0, @@ -150,12 +159,14 @@ { "name": "prev_context", "type": "CONTEXT_OPTIONS", - "link": null + "link": null, + "shape": 7 }, { "name": "view_opts", "type": "VIEW_OPTS", - "link": null + "link": null, + "shape": 7 } ], "outputs": [ @@ -165,8 +176,8 @@ "links": [ 280 ], - "shape": 3, - "slot_index": 0 + "slot_index": 0, + "shape": 3 } ], "title": "Context Options 🎭🅐🅓", @@ -195,13 +206,13 @@ "id": 168, "type": "ADE_MultivalDynamic", "pos": [ - 5357.480888441229, - -838.7132590696225 + 5357.48095703125, + -838.7132568359375 + ], + "size": [ + 265.1632385253906, + 58 ], - "size": { - "0": 265.1632385253906, - "1": 58 - }, "flags": {}, "order": 2, "mode": 0, @@ -209,7 +220,8 @@ { "name": "mask_optional", "type": "MASK", - "link": null + "link": null, + "shape": 7 } ], "outputs": [ @@ -232,21 +244,20 @@ } }, "widgets_values": [ - 1.1, - "" + 1.1 ] }, { "id": 169, "type": "ADE_CustomCFGSimple", "pos": [ - 5357.480888441229, - -628.7132590696225 + 5357.48095703125, + -628.7132568359375 + ], + "size": [ + 257.2469787597656, + 60.893348693847656 ], - "size": { - "0": 257.2469787597656, - "1": 60.893348693847656 - }, "flags": {}, "order": 3, "mode": 0, @@ -254,7 +265,8 @@ { "name": "cfg_extras", "type": "CFG_EXTRAS", - "link": null + "link": null, + "shape": 7 } ], "outputs": [ @@ -276,21 +288,20 @@ } }, "widgets_values": [ - 2, - "" + 2 ] }, { "id": 170, "type": "ADE_AdjustPESweetspotStretch", "pos": [ - 5357.480888441229, - -528.7132590696225 + 5357.48095703125, + -528.7132568359375 + ], + "size": [ + 253.07310485839844, + 106 ], - "size": { - "0": 253.07310485839844, - "1": 106 - }, "flags": {}, "order": 4, "mode": 0, @@ -298,7 +309,8 @@ { "name": "prev_pe_adjust", "type": "PE_ADJUST", - "link": null + "link": null, + "shape": 7 } ], "outputs": [ @@ -320,21 +332,20 @@ "widgets_values": [ 16, 18, - false, - "" + false ] }, { "id": 171, "type": "ADE_AdjustWeightAllMult", "pos": [ - 5347.480888441229, - -998.7132590696226 + 5347.48095703125, + -998.7132568359375 + ], + "size": [ + 270.3999938964844, + 82 ], - "size": { - "0": 270.3999938964844, - "1": 82 - }, "flags": {}, "order": 5, "mode": 0, @@ -342,7 +353,8 @@ { "name": "prev_weight_adjust", "type": "WEIGHT_ADJUST", - "link": null + "link": null, + "shape": 7 } ], "outputs": [ @@ -363,21 +375,20 @@ }, "widgets_values": [ 1.01, - false, - "" + false ] }, { "id": 172, "type": "ADE_AnimateDiffLoRALoader", "pos": [ - 5347.480888441229, - -1138.7132590696226 + 5347.48095703125, + -1138.7132568359375 + ], + "size": [ + 261.19134521484375, + 82 ], - "size": { - "0": 261.19134521484375, - "1": 82 - }, "flags": {}, "order": 6, "mode": 0, @@ -385,7 +396,8 @@ { "name": "prev_motion_lora", "type": "MOTION_LORA", - "link": null + "link": null, + "shape": 7 } ], "outputs": [ @@ -395,8 +407,8 @@ "links": [ 281 ], - "shape": 3, - "slot_index": 0 + "slot_index": 0, + "shape": 3 } ], "title": "AnimateDiff LoRA", @@ -410,23 +422,22 @@ }, "widgets_values": [ "LiquidAF-0-1.safetensors", - 0.8, - "" + 0.8 ] }, { "id": 174, "type": "CR Apply LoRA Stack", "pos": [ - 3768.6730438767927, - -913.3205474276132 + 3768.673095703125, + -913.320556640625 + ], + "size": [ + 254.40000915527344, + 66 ], - "size": { - "0": 254.40000915527344, - "1": 66 - }, "flags": {}, - "order": 24, + "order": 29, "mode": 0, "inputs": [ { @@ -452,8 +463,8 @@ "links": [ 279 ], - "shape": 3, - "slot_index": 0 + "slot_index": 0, + "shape": 3 }, { "name": "CLIP", @@ -462,8 +473,8 @@ 271, 272 ], - "shape": 3, - "slot_index": 1 + "slot_index": 1, + "shape": 3 }, { "name": "show_help", @@ -474,62 +485,24 @@ ], "properties": { "Node name for S&R": "CR Apply LoRA Stack" - } - }, - { - "id": 211, - "type": "VAEDecode", - "pos": [ - 8298.385224487198, - -825.9747015236773 - ], - "size": { - "0": 210, - "1": 46 }, - "flags": {}, - "order": 59, - "mode": 0, - "inputs": [ - { - "name": "samples", - "type": "LATENT", - "link": 347 - }, - { - "name": "vae", - "type": "VAE", - "link": 338 - } - ], - "outputs": [ - { - "name": "IMAGE", - "type": "IMAGE", - "links": [ - 417 - ], - "slot_index": 0 - } - ], - "properties": { - "Node name for S&R": "VAEDecode" - } + "widgets_values": [] }, { "id": 11, "type": "CheckpointLoaderSimple", "pos": [ - 3242.6730438767927, - -980.3205474276132 + 3242.673095703125, + -980.320556640625 + ], + "size": [ + 315, + 98 ], - "size": { - "0": 315, - "1": 98 - }, "flags": {}, "order": 7, "mode": 0, + "inputs": [], "outputs": [ { "name": "MODEL", @@ -572,12 +545,12 @@ 4908, -938 ], - "size": { - "0": 304.79998779296875, - "1": 66 - }, + "size": [ + 304.79998779296875, + 66 + ], "flags": {}, - "order": 36, + "order": 43, "mode": 4, "inputs": [ { @@ -594,7 +567,8 @@ "name": "cnet_stack", "type": "CONTROL_NET_STACK", "link": null, - "slot_index": 2 + "slot_index": 2, + "shape": 7 } ], "outputs": [ @@ -605,8 +579,8 @@ 343, 447 ], - "shape": 3, - "slot_index": 0 + "slot_index": 0, + "shape": 3 }, { "name": "CONDITIONING-", @@ -615,8 +589,8 @@ 344, 448 ], - "shape": 3, - "slot_index": 1 + "slot_index": 1, + "shape": 3 } ], "properties": { @@ -627,21 +601,22 @@ "groupcolor": "#3f789e" } }, + "widgets_values": [], "shape": 1 }, { "id": 160, "type": "CLIPTextEncode", "pos": [ - 4188.67304387679, - -783.3205474276132 + 4188.6728515625, + -783.320556640625 + ], + "size": [ + 425.27801513671875, + 180.6060791015625 ], - "size": { - "0": 425.27801513671875, - "1": 180.6060791015625 - }, "flags": {}, - "order": 29, + "order": 36, "mode": 0, "inputs": [ { @@ -671,21 +646,21 @@ "id": 216, "type": "Reroute", "pos": [ - 3551.6730438767927, - -1164.3205474276133 + 3551.673095703125, + -1164.320556640625 ], "size": [ 75, 26 ], "flags": {}, - "order": 52, + "order": 60, "mode": 0, "inputs": [ { "name": "", "type": "*", - "link": 353 + "link": 532 } ], "outputs": [ @@ -703,91 +678,19 @@ "horizontal": false } }, - { - "id": 49, - "type": "PreviewAudio", - "pos": [ - -1747.3801746345473, - -892.9039383842822 - ], - "size": { - "0": 315, - "1": 76.00001525878906 - }, - "flags": {}, - "order": 20, - "mode": 0, - "inputs": [ - { - "name": "audio", - "type": "AUDIO", - "link": 56 - } - ], - "properties": { - "Node name for S&R": "PreviewAudio" - }, - "widgets_values": [ - null - ] - }, - { - "id": 45, - "type": "SetNode", - "pos": { - "0": -1747.3792724609375, - "1": -1002.9035034179688, - "2": 0, - "3": 0, - "4": 0, - "5": 0, - "6": 0, - "7": 0, - "8": 0, - "9": 0 - }, - "size": { - "0": 210, - "1": 58 - }, - "flags": {}, - "order": 19, - "mode": 0, - "inputs": [ - { - "name": "AUDIO", - "type": "AUDIO", - "link": 48 - } - ], - "outputs": [ - { - "name": "*", - "type": "*", - "links": null - } - ], - "title": "Set_audio", - "properties": { - "previousName": "audio" - }, - "widgets_values": [ - "audio" - ] - }, { "id": 164, "type": "ADE_AnimateDiffLoaderGen1", "pos": [ - 5707.480888441229, - -1138.7132590696226 + 5707.48095703125, + -1138.7132568359375 + ], + "size": [ + 271.7644958496094, + 242 ], - "size": { - "0": 271.7644958496094, - "1": 242 - }, "flags": {}, - "order": 27, + "order": 34, "mode": 0, "inputs": [ { @@ -799,47 +702,55 @@ "name": "context_options", "type": "CONTEXT_OPTIONS", "link": 280, - "slot_index": 1 + "slot_index": 1, + "shape": 7 }, { "name": "motion_lora", "type": "MOTION_LORA", "link": 281, - "slot_index": 2 + "slot_index": 2, + "shape": 7 }, { "name": "ad_settings", "type": "AD_SETTINGS", "link": null, - "slot_index": 3 + "slot_index": 3, + "shape": 7 }, { "name": "ad_keyframes", "type": "AD_KEYFRAMES", - "link": null + "link": null, + "shape": 7 }, { "name": "sample_settings", "type": "SAMPLE_SETTINGS", "link": 282, - "slot_index": 5 + "slot_index": 5, + "shape": 7 }, { "name": "scale_multival", "type": "MULTIVAL", "link": 283, - "slot_index": 6 + "slot_index": 6, + "shape": 7 }, { "name": "effect_multival", "type": "MULTIVAL", "link": 284, - "slot_index": 7 + "slot_index": 7, + "shape": 7 }, { "name": "per_block", "type": "PER_BLOCK", - "link": null + "link": null, + "shape": 7 } ], "outputs": [ @@ -849,8 +760,8 @@ "links": [ 451 ], - "shape": 3, - "slot_index": 0 + "slot_index": 0, + "shape": 3 } ], "properties": { @@ -870,15 +781,15 @@ "id": 263, "type": "ModelSamplingDiscrete", "pos": [ - 5669.480888441229, - -1253.7132590696226 + 5669.48095703125, + -1253.7132568359375 + ], + "size": [ + 315, + 82 ], - "size": { - "0": 315, - "1": 82 - }, "flags": {}, - "order": 35, + "order": 42, "mode": 0, "inputs": [ { @@ -895,8 +806,8 @@ 452, 453 ], - "shape": 3, - "slot_index": 0 + "slot_index": 0, + "shape": 3 } ], "properties": { @@ -907,66 +818,19 @@ false ] }, - { - "id": 224, - "type": "GetNode", - "pos": { - "0": 9435.060546875, - "1": -881.0486450195312, - "2": 0, - "3": 0, - "4": 0, - "5": 0, - "6": 0, - "7": 0, - "8": 0, - "9": 0 - }, - "size": { - "0": 210, - "1": 58 - }, - "flags": {}, - "order": 8, - "mode": 0, - "inputs": [], - "outputs": [ - { - "name": "FEATURE_PIPE", - "type": "FEATURE_PIPE", - "links": [ - 465 - ], - "slot_index": 0 - } - ], - "title": "Get_featrurepipe", - "properties": {}, - "widgets_values": [ - "featrurepipe" - ] - }, { "id": 46, "type": "GetNode", - "pos": { - "0": 8580.3828125, - "1": -849.9746704101562, - "2": 0, - "3": 0, - "4": 0, - "5": 0, - "6": 0, - "7": 0, - "8": 0, - "9": 0 - }, - "size": { - "0": 210, - "1": 58 - }, + "pos": [ + 8282.166015625, + -1031.9354248046875 + ], + "size": [ + 210, + 58 + ], "flags": {}, - "order": 9, + "order": 8, "mode": 0, "inputs": [], "outputs": [ @@ -987,78 +851,767 @@ ] }, { - "id": 254, - "type": "GetNode", - "pos": { - "0": 10145.591796875, - "1": -904.9506225585938, - "2": 0, - "3": 0, - "4": 0, - "5": 0, - "6": 0, - "7": 0, - "8": 0, - "9": 0 - }, - "size": { - "0": 210, - "1": 58 - }, - "flags": {}, - "order": 10, - "mode": 0, - "inputs": [], - "outputs": [ - { - "name": "AUDIO", - "type": "AUDIO", - "links": [ - 415 - ], - "slot_index": 0 - } - ], - "title": "Get_audio", - "properties": {}, - "widgets_values": [ - "audio" - ] - }, - { - "id": 236, - "type": "VHS_VideoCombine", + "id": 162, + "type": "VAEEncode", "pos": [ - 10629.600954592146, - -1071.9506468228058 + 3824, + -1094 ], "size": [ - 538.985595703125, - 638.2940733862705 + 210, + 46 ], "flags": {}, - "order": 63, + "order": 61, "mode": 0, "inputs": [ { - "name": "images", + "name": "pixels", "type": "IMAGE", - "link": 467 + "link": 354 }, { - "name": "audio", - "type": "AUDIO", - "link": 415 + "name": "vae", + "type": "VAE", + "link": 276 + } + ], + "outputs": [ + { + "name": "LATENT", + "type": "LATENT", + "links": [ + 270 + ], + "slot_index": 0, + "shape": 3 + } + ], + "properties": { + "Node name for S&R": "VAEEncode" + }, + "widgets_values": [] + }, + { + "id": 159, + "type": "CLIPTextEncode", + "pos": [ + 4150, + -1045 + ], + "size": [ + 422.84503173828125, + 164.31304931640625 + ], + "flags": {}, + "order": 35, + "mode": 0, + "inputs": [ + { + "name": "clip", + "type": "CLIP", + "link": 271 + } + ], + "outputs": [ + { + "name": "CONDITIONING", + "type": "CONDITIONING", + "links": [ + 444 + ], + "slot_index": 0 + } + ], + "properties": { + "Node name for S&R": "CLIPTextEncode" + }, + "widgets_values": [ + "ral-acidzlime, spooky mounds of slime, sphere" + ] + }, + { + "id": 209, + "type": "NNLatentUpscale", + "pos": [ + 7627.41162109375, + -1226.911376953125 + ], + "size": [ + 315, + 82 + ], + "flags": {}, + "order": 64, + "mode": 0, + "inputs": [ + { + "name": "latent", + "type": "LATENT", + "link": 475 + } + ], + "outputs": [ + { + "name": "LATENT", + "type": "LATENT", + "links": [ + 411 + ], + "slot_index": 0, + "shape": 3 + } + ], + "properties": { + "Node name for S&R": "NNLatentUpscale" + }, + "widgets_values": [ + "SD 1.x", + 1.67 + ] + }, + { + "id": 213, + "type": "KSampler", + "pos": [ + 7641.41162109375, + -1071.9112548828125 + ], + "size": [ + 315, + 262 + ], + "flags": {}, + "order": 66, + "mode": 0, + "inputs": [ + { + "name": "model", + "type": "MODEL", + "link": 452 + }, + { + "name": "positive", + "type": "CONDITIONING", + "link": 343 + }, + { + "name": "negative", + "type": "CONDITIONING", + "link": 344 + }, + { + "name": "latent_image", + "type": "LATENT", + "link": 411 + } + ], + "outputs": [ + { + "name": "LATENT", + "type": "LATENT", + "links": [ + 347 + ], + "slot_index": 0 + } + ], + "properties": { + "Node name for S&R": "KSampler" + }, + "widgets_values": [ + 156680208700286, + "fixed", + 8, + 1, + "lcm", + "sgm_uniform", + 0.35000000000000003 + ] + }, + { + "id": 161, + "type": "VAEDecode", + "pos": [ + 6630.60498046875, + -1277.600341796875 + ], + "size": [ + 210, + 46 + ], + "flags": {}, + "order": 63, + "mode": 0, + "inputs": [ + { + "name": "samples", + "type": "LATENT", + "link": 273 + }, + { + "name": "vae", + "type": "VAE", + "link": 274 + } + ], + "outputs": [ + { + "name": "IMAGE", + "type": "IMAGE", + "links": [ + 483 + ], + "slot_index": 0 + } + ], + "properties": { + "Node name for S&R": "VAEDecode" + }, + "widgets_values": [] + }, + { + "id": 158, + "type": "KSampler", + "pos": [ + 6404.9560546875, + -1068.975830078125 + ], + "size": [ + 315, + 262 + ], + "flags": {}, + "order": 62, + "mode": 0, + "inputs": [ + { + "name": "model", + "type": "MODEL", + "link": 453 + }, + { + "name": "positive", + "type": "CONDITIONING", + "link": 447 + }, + { + "name": "negative", + "type": "CONDITIONING", + "link": 448 + }, + { + "name": "latent_image", + "type": "LATENT", + "link": 270 + } + ], + "outputs": [ + { + "name": "LATENT", + "type": "LATENT", + "links": [ + 273, + 475 + ], + "slot_index": 0 + } + ], + "properties": { + "Node name for S&R": "KSampler" + }, + "widgets_values": [ + 156680208700286, + "fixed", + 4, + 1, + "lcm", + "sgm_uniform", + 0.45 + ] + }, + { + "id": 276, + "type": "VHS_VideoCombine", + "pos": [ + 7036.9560546875, + -1227.975341796875 + ], + "size": [ + 452.57537841796875, + 609.3475952148438 + ], + "flags": {}, + "order": 65, + "mode": 0, + "inputs": [ + { + "name": "images", + "type": "IMAGE", + "link": 483 + }, + { + "name": "audio", + "type": "AUDIO", + "link": 482, + "shape": 7 + }, + { + "name": "meta_batch", + "type": "VHS_BatchManager", + "link": null, + "shape": 7 + }, + { + "name": "vae", + "type": "VAE", + "link": null, + "shape": 7 + } + ], + "outputs": [ + { + "name": "Filenames", + "type": "VHS_FILENAMES", + "links": null, + "shape": 3 + } + ], + "properties": { + "Node name for S&R": "VHS_VideoCombine" + }, + "widgets_values": { + "frame_rate": 30, + "loop_count": 0, + "filename_prefix": "AnimateDiff", + "format": "video/h264-mp4", + "pix_fmt": "yuv420p", + "crf": 19, + "save_metadata": true, + "trim_to_audio": false, + "pingpong": false, + "save_output": true, + "videopreview": { + "hidden": false, + "paused": false, + "params": { + "filename": "AnimateDiff_02389-audio.mp4", + "subfolder": "", + "type": "output", + "format": "video/h264-mp4", + "frame_rate": 30, + "workflow": "AnimateDiff_02389.png", + "fullpath": "/runpod-volume/ComfyUI_rv/output/AnimateDiff_02389-audio.mp4" + } + } + } + }, + { + "id": 212, + "type": "VHS_VideoCombine", + "pos": [ + 8555.783203125, + -1214.960693359375 + ], + "size": [ + 452.57537841796875, + 610.2488403320312 + ], + "flags": {}, + "order": 68, + "mode": 0, + "inputs": [ + { + "name": "images", + "type": "IMAGE", + "link": 539 + }, + { + "name": "audio", + "type": "AUDIO", + "link": 340, + "shape": 7 + }, + { + "name": "meta_batch", + "type": "VHS_BatchManager", + "link": null, + "shape": 7 + }, + { + "name": "vae", + "type": "VAE", + "link": null, + "shape": 7 + } + ], + "outputs": [ + { + "name": "Filenames", + "type": "VHS_FILENAMES", + "links": null, + "shape": 3 + } + ], + "properties": { + "Node name for S&R": "VHS_VideoCombine" + }, + "widgets_values": { + "frame_rate": 30, + "loop_count": 0, + "filename_prefix": "AnimateDiff", + "format": "video/h264-mp4", + "pix_fmt": "yuv420p", + "crf": 19, + "save_metadata": true, + "trim_to_audio": false, + "pingpong": false, + "save_output": true, + "videopreview": { + "hidden": false, + "paused": false, + "params": { + "filename": "AnimateDiff_02390-audio.mp4", + "subfolder": "", + "type": "output", + "format": "video/h264-mp4", + "frame_rate": 30, + "workflow": "AnimateDiff_02390.png", + "fullpath": "/runpod-volume/ComfyUI_rv/output/AnimateDiff_02390-audio.mp4" + } + } + } + }, + { + "id": 111, + "type": "CR LoRA Stack", + "pos": [ + 3230, + -799 + ], + "size": [ + 315, + 342 + ], + "flags": {}, + "order": 9, + "mode": 0, + "inputs": [ + { + "name": "lora_stack", + "type": "LORA_STACK", + "link": null, + "shape": 7 + } + ], + "outputs": [ + { + "name": "LORA_STACK", + "type": "LORA_STACK", + "links": [ + 184 + ], + "slot_index": 0, + "shape": 3 + }, + { + "name": "show_help", + "type": "STRING", + "links": null, + "shape": 3 + } + ], + "properties": { + "Node name for S&R": "CR LoRA Stack" + }, + "widgets_values": [ + "On", + "halloweenTech-202.safetensors", + 0.58, + 0.46, + "Off", + "add_detail.safetensors", + 1, + 1, + "Off", + "ral-acidzlime-sd15.safetensors", + 1, + 1 + ] + }, + { + "id": 29, + "type": "CR LoRA Stack", + "pos": [ + 3575, + -765 + ], + "size": [ + 315, + 342 + ], + "flags": {}, + "order": 20, + "mode": 0, + "inputs": [ + { + "name": "lora_stack", + "type": "LORA_STACK", + "link": 184, + "shape": 7 + } + ], + "outputs": [ + { + "name": "LORA_STACK", + "type": "LORA_STACK", + "links": [ + 289 + ], + "slot_index": 0, + "shape": 3 + }, + { + "name": "show_help", + "type": "STRING", + "links": null, + "shape": 3 + } + ], + "properties": { + "Node name for S&R": "CR LoRA Stack" + }, + "widgets_values": [ + "On", + "AnimateLCM_sd15_t2v_lora.safetensors", + 1, + 1, + "On", + "add_detail.safetensors", + 1, + 1, + "On", + "ral-acidzlime-sd15.safetensors", + 1, + 1 + ] + }, + { + "id": 283, + "type": "SetNode", + "pos": [ + 735.22314453125, + -1010.9373779296875 + ], + "size": [ + 210, + 58 + ], + "flags": {}, + "order": 46, + "mode": 0, + "inputs": [ + { + "name": "FEATURE", + "type": "FEATURE", + "link": 492 + } + ], + "outputs": [ + { + "name": "*", + "type": "*", + "links": null + } + ], + "title": "Set_drum_featuire", + "properties": { + "previousName": "" + }, + "widgets_values": [ + "drum_featuire" + ] + }, + { + "id": 284, + "type": "SetNode", + "pos": [ + 695.2228393554688, + -843.9659423828125 + ], + "size": [ + 210, + 58 + ], + "flags": {}, + "order": 44, + "mode": 0, + "inputs": [ + { + "name": "FEATURE", + "type": "FEATURE", + "link": 493 + } + ], + "outputs": [ + { + "name": "*", + "type": "*", + "links": null + } + ], + "title": "Set_kifck_feature", + "properties": { + "previousName": "" + }, + "widgets_values": [ + "kifck_feature" + ] + }, + { + "id": 285, + "type": "SetNode", + "pos": [ + 703.2228393554688, + -697.9659423828125 + ], + "size": [ + 210, + 58 + ], + "flags": {}, + "order": 40, + "mode": 0, + "inputs": [ + { + "name": "INT", + "type": "INT", + "link": 494 + } + ], + "outputs": [ + { + "name": "*", + "type": "*", + "links": null + } + ], + "title": "Set_featrurepipe", + "properties": { + "previousName": "" + }, + "widgets_values": [ + "featrurepipe" + ], + "color": "#1b4669", + "bgcolor": "#29699c" + }, + { + "id": 286, + "type": "SetNode", + "pos": [ + 701.2228393554688, + -573.9659423828125 + ], + "size": [ + 210, + 58 + ], + "flags": {}, + "order": 51, + "mode": 0, + "inputs": [ + { + "name": "FEATURE", + "type": "FEATURE", + "link": 495 + } + ], + "outputs": [ + { + "name": "*", + "type": "*", + "links": null + } + ], + "title": "Set_bass_feature", + "properties": { + "previousName": "" + }, + "widgets_values": [ + "bass_feature" + ] + }, + { + "id": 287, + "type": "DownloadOpenUnmixModel", + "pos": [ + -1232.7774658203125, + -997.9659423828125 + ], + "size": [ + 361.20001220703125, + 58 + ], + "flags": {}, + "order": 10, + "mode": 0, + "inputs": [], + "outputs": [ + { + "name": "OPEN_UNMIX_MODEL", + "type": "OPEN_UNMIX_MODEL", + "links": [ + 502 + ], + "slot_index": 0, + "shape": 3 + } + ], + "properties": { + "Node name for S&R": "DownloadOpenUnmixModel" + }, + "widgets_values": [ + "umxl" + ] + }, + { + "id": 288, + "type": "VHS_VideoCombine", + "pos": [ + 1678.2227783203125, + -1200.9373779296875 + ], + "size": [ + 214.7587890625, + 467.69549560546875 + ], + "flags": {}, + "order": 53, + "mode": 0, + "inputs": [ + { + "name": "images", + "type": "IMAGE", + "link": 496 + }, + { + "name": "audio", + "type": "AUDIO", + "link": 497, + "shape": 7 }, { "name": "meta_batch", "type": "VHS_BatchManager", - "link": null + "link": null, + "shape": 7 }, { "name": "vae", "type": "VAE", - "link": null + "link": null, + "shape": 7 } ], "outputs": [ @@ -1073,188 +1626,110 @@ "Node name for S&R": "VHS_VideoCombine" }, "widgets_values": { - "frame_rate": 33, + "frame_rate": 30, "loop_count": 0, "filename_prefix": "AnimateDiff", "format": "video/h264-mp4", "pix_fmt": "yuv420p", "crf": 19, "save_metadata": true, + "trim_to_audio": false, "pingpong": false, "save_output": true, "videopreview": { "hidden": false, "paused": false, "params": { - "filename": "AnimateDiff_07553-audio.mp4", + "filename": "AnimateDiff_02382-audio.mp4", "subfolder": "", "type": "output", "format": "video/h264-mp4", - "frame_rate": 33 + "frame_rate": 30, + "workflow": "AnimateDiff_02382.png", + "fullpath": "/runpod-volume/ComfyUI_rv/output/AnimateDiff_02382-audio.mp4" } } } }, { - "id": 51, - "type": "PreviewFeature", + "id": 289, + "type": "GetNode", "pos": [ - -198.41529810871012, - -1431.3111562631182 + 1660.22314453125, + -1337.9375 + ], + "size": [ + 210, + 58 ], - "size": { - "0": 315, - "1": 58 - }, "flags": {}, - "order": 30, + "order": 11, "mode": 0, - "inputs": [ - { - "name": "feature", - "type": "FEATURE", - "link": 58 - } - ], + "inputs": [], "outputs": [ { - "name": "FEATURE_PREVIEW", - "type": "IMAGE", + "name": "AUDIO", + "type": "AUDIO", "links": [ - 59 + 497 ], - "shape": 3, "slot_index": 0 } ], - "properties": { - "Node name for S&R": "PreviewFeature" - }, + "title": "Get_audio", + "properties": {}, "widgets_values": [ - false + "audio" ] }, { - "id": 221, - "type": "SetNode", - "pos": { - "0": 762.5850219726562, - "1": -942.2825927734375, - "2": 0, - "3": 0, - "4": 0, - "5": 0, - "6": 0, - "7": 0, - "8": 0, - "9": 0 - }, - "size": { - "0": 210, - "1": 58 - }, + "id": 290, + "type": "GetNode", + "pos": [ + 2323.22119140625, + -1591.9375 + ], + "size": [ + 210, + 58 + ], "flags": {}, - "order": 38, + "order": 12, "mode": 0, - "inputs": [ - { - "name": "FEATURE", - "type": "FEATURE", - "link": 360 - } - ], + "inputs": [], "outputs": [ { - "name": "*", - "type": "*", - "links": null + "name": "AUDIO", + "type": "AUDIO", + "links": [], + "slot_index": 0 } ], - "title": "Set_drum_featuire", - "properties": { - "previousName": "drum_featuire" - }, + "title": "Get_audio", + "properties": {}, "widgets_values": [ - "drum_featuire" + "audio" ] }, { - "id": 52, - "type": "PreviewImage", + "id": 291, + "type": "SetNode", "pos": [ - 355.58470189129, - -1472.3111562631182 - ], - "size": { - "0": 210, - "1": 246 - }, - "flags": {}, - "order": 37, - "mode": 0, - "inputs": [ - { - "name": "images", - "type": "IMAGE", - "link": 59 - } + -1105.20751953125, + -629.035888671875 ], - "properties": { - "Node name for S&R": "PreviewImage" - } - }, - { - "id": 71, - "type": "PreviewImage", - "pos": [ - 350.58470189129, - -1176.3111562631182 + "size": [ + 210, + 58 ], - "size": { - "0": 210, - "1": 246 - }, "flags": {}, - "order": 42, + "order": 32, "mode": 0, "inputs": [ { - "name": "images", + "name": "IMAGE", "type": "IMAGE", - "link": 111 - } - ], - "properties": { - "Node name for S&R": "PreviewImage" - } - }, - { - "id": 231, - "type": "SetNode", - "pos": { - "0": 722.584716796875, - "1": -775.3111572265625, - "2": 0, - "3": 0, - "4": 0, - "5": 0, - "6": 0, - "7": 0, - "8": 0, - "9": 0 - }, - "size": { - "0": 210, - "1": 58 - }, - "flags": {}, - "order": 43, - "mode": 0, - "inputs": [ - { - "name": "FEATURE", - "type": "FEATURE", - "link": 377 + "link": 498 } ], "outputs": [ @@ -1264,400 +1739,300 @@ "links": null } ], - "title": "Set_kifck_feature", + "title": "Set_emptyimg", "properties": { - "previousName": "kifck_feature" + "previousName": "" }, "widgets_values": [ - "kifck_feature" - ] + "emptyimg" + ], + "color": "#2a363b", + "bgcolor": "#3f5159" }, { - "id": 222, - "type": "SetNode", - "pos": { - "0": 730.584716796875, - "1": -629.3111572265625, - "2": 0, - "3": 0, - "4": 0, - "5": 0, - "6": 0, - "7": 0, - "8": 0, - "9": 0 - }, - "size": { - "0": 210, - "1": 58 - }, - "flags": {}, - "order": 33, - "mode": 0, - "inputs": [ - { - "name": "FEATURE_PIPE", - "type": "FEATURE_PIPE", - "link": 361 - } + "id": 292, + "type": "Anything Everywhere?", + "pos": [ + -2257.3623046875, + -318.6548156738281 ], - "outputs": [ - { - "name": "*", - "type": "*", - "links": null - } + "size": [ + 315, + 106 ], - "title": "Set_featrurepipe", - "properties": { - "previousName": "featrurepipe" - }, - "widgets_values": [ - "featrurepipe" - ] - }, - { - "id": 267, - "type": "SetNode", - "pos": { - "0": 728.584716796875, - "1": -505.3111572265625, - "2": 0, - "3": 0, - "4": 0, - "5": 0, - "6": 0, - "7": 0, - "8": 0, - "9": 0 - }, - "size": { - "0": 210, - "1": 58 - }, "flags": {}, - "order": 45, + "order": 23, "mode": 0, "inputs": [ { - "name": "FEATURE", - "type": "FEATURE", - "link": 474 - } - ], - "outputs": [ - { - "name": "*", + "name": "FLOAT", "type": "*", - "links": null + "link": 499, + "shape": 7, + "color_on": "" } ], - "title": "Set_bass_feature", + "outputs": [], "properties": { - "previousName": "bass_feature" + "Node name for S&R": "Anything Everywhere?", + "group_restricted": 0, + "color_restricted": 0 }, "widgets_values": [ - "bass_feature" + ".*", + "frame_rate", + ".*" ] }, { - "id": 230, - "type": "PreviewImage", + "id": 293, + "type": "INTConstant", "pos": [ - 324.58470189128997, - -644.3111562631183 + -2527.3623046875, + -778.65478515625 + ], + "size": [ + 210, + 58 ], - "size": { - "0": 210, - "1": 246 - }, "flags": {}, - "order": 44, + "order": 13, "mode": 0, - "inputs": [ + "inputs": [], + "outputs": [ { - "name": "images", - "type": "IMAGE", - "link": 375 + "name": "value", + "type": "INT", + "links": [ + 501 + ], + "slot_index": 0 } ], "properties": { - "Node name for S&R": "PreviewImage" - } + "Node name for S&R": "INTConstant" + }, + "widgets_values": [ + 768 + ], + "color": "#1b4669", + "bgcolor": "#29699c" }, { - "id": 42, - "type": "EmptyImageAndMaskFromAudio", + "id": 294, + "type": "INTConstant", "pos": [ - -1765.4152981087116, - -541.3111562631183 + -2497.3623046875, + -548.65478515625 + ], + "size": [ + 210, + 58 ], - "size": { - "0": 411.6000061035156, - "1": 146 - }, "flags": {}, - "order": 18, + "order": 14, "mode": 0, - "inputs": [ - { - "name": "audio", - "type": "AUDIO", - "link": 38 - } - ], + "inputs": [], "outputs": [ { - "name": "empty_image", - "type": "IMAGE", + "name": "value", + "type": "INT", "links": [ - 39, - 162 + 500 ], - "shape": 3, "slot_index": 0 - }, - { - "name": "empty_mask", - "type": "MASK", - "links": null, - "shape": 3 - }, - { - "name": "frame_count", - "type": "INT", - "links": [], - "shape": 3, - "slot_index": 2 } ], "properties": { - "Node name for S&R": "EmptyImageAndMaskFromAudio" + "Node name for S&R": "INTConstant" }, "widgets_values": [ - 30, - 768, - 464 - ] + 468 + ], + "color": "#1b4669", + "bgcolor": "#29699c" }, { - "id": 101, - "type": "SetNode", - "pos": { - "0": -1219.41552734375, - "1": -479.3111267089844, - "2": 0, - "3": 0, - "4": 0, - "5": 0, - "6": 0, - "7": 0, - "8": 0, - "9": 0 - }, - "size": { - "0": 210, - "1": 58 - }, + "id": 295, + "type": "FloatConstant", + "pos": [ + -2487.3623046875, + -308.6548156738281 + ], + "size": [ + 210, + 58 + ], "flags": {}, - "order": 23, + "order": 15, "mode": 0, - "inputs": [ - { - "name": "IMAGE", - "type": "IMAGE", - "link": 162 - } - ], + "inputs": [], "outputs": [ { - "name": "*", - "type": "*", - "links": null + "name": "value", + "type": "FLOAT", + "links": [ + 499 + ], + "slot_index": 0 } ], - "title": "Set_emptyimg", "properties": { - "previousName": "emptyimg" + "Node name for S&R": "FloatConstant" }, "widgets_values": [ - "emptyimg" - ] + 30.000000000000004 + ], + "color": "#232", + "bgcolor": "#353" }, { - "id": 39, - "type": "VHS_LoadAudioUpload", + "id": 296, + "type": "Anything Everywhere?", "pos": [ - -1775.4152981087116, - -734.3111562631183 + -2267.3623046875, + -548.65478515625 + ], + "size": [ + 315, + 106 ], - "size": { - "0": 226.8000030517578, - "1": 130 - }, "flags": {}, - "order": 11, + "order": 22, "mode": 0, - "outputs": [ + "inputs": [ { - "name": "audio", - "type": "AUDIO", - "links": [ - 37, - 38, - 48, - 56 - ], - "shape": 3, - "slot_index": 0 + "name": "INT", + "type": "*", + "link": 500, + "shape": 7, + "color_on": "" } ], + "outputs": [], "properties": { - "Node name for S&R": "VHS_LoadAudioUpload" + "Node name for S&R": "Anything Everywhere?", + "group_restricted": 0, + "color_restricted": 0 }, - "widgets_values": { - "audio": "Delta Deez - Songfinch - Out the Mud.mp3", - "start_time": 15, - "duration": 7.5, - "choose audio to upload": "image" - } + "widgets_values": [ + ".*", + "height", + ".*" + ] }, { - "id": 41, - "type": "DownloadOpenUnmixModel", + "id": 297, + "type": "Anything Everywhere?", "pos": [ - -1205.4152981087116, - -929.3111562631183 + -2297.3623046875, + -788.65478515625 + ], + "size": [ + 315, + 106 ], - "size": { - "0": 361.20001220703125, - "1": 58 - }, "flags": {}, - "order": 12, + "order": 21, "mode": 0, - "outputs": [ + "inputs": [ { - "name": "OPEN_UNMIX_MODEL", - "type": "OPEN_UNMIX_MODEL", - "links": [ - 36 - ], - "shape": 3, - "slot_index": 0 + "name": "INT", + "type": "*", + "link": 501, + "shape": 7, + "color_on": "" } ], + "outputs": [], "properties": { - "Node name for S&R": "DownloadOpenUnmixModel" + "Node name for S&R": "Anything Everywhere?", + "group_restricted": 0, + "color_restricted": 0 }, "widgets_values": [ - "umxl" + ".*", + "width", + ".*" ] }, { - "id": 40, - "type": "AudioSeparator", + "id": 298, + "type": "AudioSeparatorSimple", "pos": [ - -1224.4152981087116, - -792.3111562631183 + -1235.202392578125, + -841.3253173828125 + ], + "size": [ + 315, + 106 ], - "size": { - "0": 317.4000244140625, - "1": 158 - }, "flags": {}, - "order": 22, + "order": 25, "mode": 0, "inputs": [ { "name": "model", "type": "OPEN_UNMIX_MODEL", - "link": 36, - "slot_index": 0 + "link": 502 }, { "name": "audio", "type": "AUDIO", - "link": 37 - }, - { - "name": "video_frames", - "type": "IMAGE", - "link": 39 + "link": 503 } ], "outputs": [ { "name": "audio", "type": "AUDIO", - "links": [], - "shape": 3, - "slot_index": 0 + "links": null }, { "name": "drums_audio", "type": "AUDIO", "links": [ - 41, - 436 - ], - "shape": 3, - "slot_index": 1 + 513, + 528 + ] }, { "name": "vocals_audio", "type": "AUDIO", "links": [ - 422, - 425 - ], - "shape": 3, - "slot_index": 2 + 517, + 519 + ] }, { "name": "bass_audio", "type": "AUDIO", "links": [ - 459 - ], - "shape": 3, - "slot_index": 3 + 506 + ] }, { "name": "other_audio", "type": "AUDIO", - "links": null, - "shape": 3 - }, - { - "name": "feature_pipe", - "type": "FEATURE_PIPE", - "links": [ - 42, - 460 - ], - "shape": 3, - "slot_index": 5 + "links": null } ], "properties": { - "Node name for S&R": "AudioSeparator" + "Node name for S&R": "AudioSeparatorSimple" }, - "widgets_values": [ - 30 - ] + "widgets_values": [] }, { - "id": 266, - "type": "AudioFeatureExtractor", + "id": 299, + "type": "EmptyImageAndMaskFromAudio", "pos": [ - -676.4152981087104, - -379.3111562631183 + -1792.77734375, + -609.9659423828125 + ], + "size": [ + 411.6000061035156, + 146 ], - "size": { - "0": 361.20001220703125, - "1": 78 - }, "flags": {}, "order": 26, "mode": 0, @@ -1665,279 +2040,211 @@ { "name": "audio", "type": "AUDIO", - "link": 459 + "link": 504 }, { - "name": "feature_pipe", - "type": "FEATURE_PIPE", - "link": 460 - } - ], - "outputs": [ - { - "name": "FEATURE", - "type": "FEATURE", - "links": [ - 472 - ], - "shape": 3, - "slot_index": 0 + "name": "width", + "type": "INT", + "link": null, + "widget": { + "name": "width" + } }, { - "name": "FEATURE_PIPE", - "type": "FEATURE_PIPE", - "links": [], - "shape": 3, - "slot_index": 1 - } - ], - "properties": { - "Node name for S&R": "AudioFeatureExtractor" - }, - "widgets_values": [ - "amplitude_envelope" - ] - }, - { - "id": 273, - "type": "PreviewImage", - "pos": [ - 225.58470189129, - -262.3111562631182 - ], - "size": { - "0": 210, - "1": 246 - }, - "flags": {}, - "order": 46, - "mode": 0, - "inputs": [ - { - "name": "images", - "type": "IMAGE", - "link": 473 - } - ], - "properties": { - "Node name for S&R": "PreviewImage" - } - }, - { - "id": 272, - "type": "FeatureMixer", - "pos": [ - -215.4152981087101, - -315.3111562631183 - ], - "size": { - "0": 367.79998779296875, - "1": 342 - }, - "flags": {}, - "order": 34, - "mode": 0, - "inputs": [ + "name": "height", + "type": "INT", + "link": null, + "widget": { + "name": "height" + } + }, { - "name": "feature", - "type": "FEATURE", - "link": 472 + "name": "frame_rate", + "type": "FLOAT", + "link": null, + "widget": { + "name": "frame_rate" + } } ], "outputs": [ { - "name": "FEATURE", - "type": "FEATURE", + "name": "empty_image", + "type": "IMAGE", "links": [ - 474 + 498 ], - "shape": 3, - "slot_index": 0 + "slot_index": 0, + "shape": 3 }, { - "name": "FEATURE_VISUALIZATION", - "type": "IMAGE", + "name": "empty_mask", + "type": "MASK", + "links": null, + "shape": 3 + }, + { + "name": "frame_count", + "type": "INT", "links": [ - 473 + 505 ], - "shape": 3, - "slot_index": 1 + "slot_index": 2, + "shape": 3 } ], "properties": { - "Node name for S&R": "FeatureMixer" + "Node name for S&R": "EmptyImageAndMaskFromAudio" }, "widgets_values": [ - 1, - 0, - 1, - 1, - 1, - 1, - 1, - 0, - 0.15, - 1, - 0.5, - false + 30, + 768, + 464 ] }, { - "id": 229, - "type": "FeatureMixer", + "id": 300, + "type": "Anything Everywhere?", "pos": [ - -228.41529810871018, - -810.3111562631183 + -1377.32861328125, + -380.9324645996094 + ], + "size": [ + 315, + 106 ], - "size": { - "0": 367.79998779296875, - "1": 342 - }, "flags": {}, - "order": 32, + "order": 33, "mode": 0, "inputs": [ { - "name": "feature", - "type": "FEATURE", - "link": 376 - } - ], - "outputs": [ - { - "name": "FEATURE", - "type": "FEATURE", - "links": [ - 377 - ], - "shape": 3, - "slot_index": 0 - }, - { - "name": "FEATURE_VISUALIZATION", - "type": "IMAGE", - "links": [ - 375 - ], - "shape": 3, - "slot_index": 1 + "name": "INT", + "type": "*", + "link": 505, + "shape": 7, + "color_on": "" } ], + "outputs": [], "properties": { - "Node name for S&R": "FeatureMixer" + "Node name for S&R": "Anything Everywhere?", + "group_restricted": 0, + "color_restricted": 0 }, "widgets_values": [ - 1, - 0, - 1, - 1, - 1, - 1, - 1, - 0, - 0.52, - 1, - 0.5, - false + ".*", + "frame_count", + ".*" ] }, { - "id": 43, + "id": 301, "type": "AudioFeatureExtractor", "pos": [ - -787.4152981087105, - -804.3111562631183 + -796.3421630859375, + -608.5328979492188 + ], + "size": [ + 415.8000183105469, + 174 ], - "size": { - "0": 361.20001220703125, - "1": 78 - }, "flags": {}, - "order": 25, + "order": 31, "mode": 0, "inputs": [ { "name": "audio", "type": "AUDIO", - "link": 41 + "link": 506 + }, + { + "name": "height", + "type": "INT", + "link": null, + "widget": { + "name": "height" + } + }, + { + "name": "width", + "type": "INT", + "link": null, + "widget": { + "name": "width" + } + }, + { + "name": "frame_count", + "type": "INT", + "link": null, + "widget": { + "name": "frame_count" + } }, { - "name": "feature_pipe", - "type": "FEATURE_PIPE", - "link": 42 + "name": "frame_rate", + "type": "FLOAT", + "link": null, + "widget": { + "name": "frame_rate" + } } ], "outputs": [ { - "name": "FEATURE", + "name": "feature", "type": "FEATURE", "links": [ - 58, - 110, - 376 - ], - "shape": 3, - "slot_index": 0 + 507 + ] }, { - "name": "FEATURE_PIPE", - "type": "FEATURE_PIPE", - "links": [ - 361 - ], - "shape": 3, - "slot_index": 1 + "name": "frame_count", + "type": "INT", + "links": null } ], "properties": { "Node name for S&R": "AudioFeatureExtractor" }, "widgets_values": [ - "amplitude_envelope" + "amplitude_envelope", + 30, + 0, + 512, + 512 ] }, { - "id": 70, + "id": 302, "type": "FeatureMixer", "pos": [ - -245.41529810871003, - -1284.3111562631182 + -242.77728271484375, + -383.9659729003906 + ], + "size": [ + 315, + 322 ], - "size": { - "0": 367.79998779296875, - "1": 342 - }, "flags": {}, - "order": 31, + "order": 41, "mode": 0, "inputs": [ { "name": "feature", "type": "FEATURE", - "link": 110 + "link": 507 } ], "outputs": [ { "name": "FEATURE", - "type": "FEATURE", - "links": [ - 360, - 423, - 426, - 437 - ], - "shape": 3, - "slot_index": 0 - }, - { - "name": "FEATURE_VISUALIZATION", - "type": "IMAGE", + "type": "FEATURE", "links": [ - 111 + 495, + 508 ], - "shape": 3, - "slot_index": 1 + "slot_index": 0 } ], "properties": { @@ -1952,680 +2259,813 @@ 1, 1, 0, - 0.3, + 0.15, 1, 0.5, false ] }, { - "id": 162, - "type": "VAEEncode", + "id": 303, + "type": "PreviewFeature", "pos": [ - 3824, - -1094 + 202.6227569580078, + -345.1170654296875 + ], + "size": [ + 315, + 246 ], - "size": { - "0": 210, - "1": 46 - }, "flags": {}, - "order": 53, + "order": 52, "mode": 0, "inputs": [ { - "name": "pixels", - "type": "IMAGE", - "link": 354 - }, - { - "name": "vae", - "type": "VAE", - "link": 276 - } - ], - "outputs": [ - { - "name": "LATENT", - "type": "LATENT", - "links": [ - 270 - ], - "shape": 3, - "slot_index": 0 + "name": "feature", + "type": "FEATURE", + "link": 508 } ], + "outputs": [], "properties": { - "Node name for S&R": "VAEEncode" - } + "Node name for S&R": "PreviewFeature" + }, + "widgets_values": [] }, { - "id": 159, - "type": "CLIPTextEncode", + "id": 304, + "type": "FeatureMixer", "pos": [ - 4150, - -1045 + -236.24307250976562, + -878.9658203125 + ], + "size": [ + 315, + 322 ], - "size": { - "0": 422.84503173828125, - "1": 164.31304931640625 - }, "flags": {}, - "order": 28, + "order": 37, "mode": 0, "inputs": [ { - "name": "clip", - "type": "CLIP", - "link": 271 + "name": "feature", + "type": "FEATURE", + "link": 509 } ], "outputs": [ { - "name": "CONDITIONING", - "type": "CONDITIONING", + "name": "FEATURE", + "type": "FEATURE", "links": [ - 444 + 493, + 510 ], "slot_index": 0 } ], "properties": { - "Node name for S&R": "CLIPTextEncode" + "Node name for S&R": "FeatureMixer" }, "widgets_values": [ - "ral-acidzlime, spooky mounds of slime, sphere" + 1, + 0, + 1, + 1, + 1, + 1, + 1, + 0, + 0.52, + 1, + 0.5, + false ] }, { - "id": 209, - "type": "NNLatentUpscale", + "id": 305, + "type": "PreviewFeature", "pos": [ - 7925.626945863037, - -1044.9506468228058 + 182.58547973632812, + -781.2538452148438 + ], + "size": [ + 315, + 246 ], - "size": { - "0": 315, - "1": 82 - }, "flags": {}, - "order": 56, + "order": 45, "mode": 0, "inputs": [ { - "name": "latent", - "type": "LATENT", - "link": 475 - } - ], - "outputs": [ - { - "name": "LATENT", - "type": "LATENT", - "links": [ - 411 - ], - "shape": 3, - "slot_index": 0 + "name": "feature", + "type": "FEATURE", + "link": 510 } ], + "outputs": [], "properties": { - "Node name for S&R": "NNLatentUpscale" + "Node name for S&R": "PreviewFeature" }, - "widgets_values": [ - "SD 1.x", - 1.67 - ] + "widgets_values": [] }, { - "id": 213, - "type": "KSampler", + "id": 306, + "type": "FeatureMixer", "pos": [ - 7939.626945863037, - -889.9506468228057 + -272.77728271484375, + -1352.9659423828125 + ], + "size": [ + 315, + 322 ], - "size": { - "0": 315, - "1": 262 - }, "flags": {}, - "order": 58, + "order": 38, "mode": 0, "inputs": [ { - "name": "model", - "type": "MODEL", - "link": 452 - }, - { - "name": "positive", - "type": "CONDITIONING", - "link": 343 - }, - { - "name": "negative", - "type": "CONDITIONING", - "link": 344 - }, - { - "name": "latent_image", - "type": "LATENT", - "link": 411 + "name": "feature", + "type": "FEATURE", + "link": 511 } ], "outputs": [ { - "name": "LATENT", - "type": "LATENT", + "name": "FEATURE", + "type": "FEATURE", "links": [ - 347 + 492, + 512, + 518, + 520, + 529 ], "slot_index": 0 } ], "properties": { - "Node name for S&R": "KSampler" + "Node name for S&R": "FeatureMixer" }, "widgets_values": [ - 156680208700286, - "fixed", - 8, 1, - "lcm", - "sgm_uniform", - 0.35000000000000003 + 0, + 1, + 1, + 1, + 1, + 1, + 0, + 0.3, + 1, + 0.5, + false ] }, { - "id": 256, - "type": "ImageCASBatch", + "id": 307, + "type": "PreviewFeature", "pos": [ - 8319.626945863034, - -1005.9506468228057 + 200.14454650878906, + -1195.9306640625 + ], + "size": [ + 315, + 246 ], - "size": { - "0": 462, - "1": 82 - }, "flags": {}, - "order": 60, + "order": 47, "mode": 0, "inputs": [ { - "name": "image", - "type": "IMAGE", - "link": 417 - } - ], - "outputs": [ - { - "name": "IMAGE", - "type": "IMAGE", - "links": [ - 476, - 478 - ], - "shape": 3, - "slot_index": 0 + "name": "feature", + "type": "FEATURE", + "link": 512 } ], + "outputs": [], "properties": { - "Node name for S&R": "ImageCASBatch" + "Node name for S&R": "PreviewFeature" }, - "widgets_values": [ - 0.8, - 4 - ] + "widgets_values": [] }, { - "id": 270, - "type": "FlexImageHueShift", + "id": 308, + "type": "AudioFeatureExtractor", "pos": [ - 9720.600954592146, - -994.9506468228055 + -786.9472045898438, + -853.60595703125 + ], + "size": [ + 415.8000183105469, + 174 ], - "size": { - "0": 319.20001220703125, - "1": 214 - }, "flags": {}, - "order": 61, + "order": 30, "mode": 0, "inputs": [ { - "name": "images", - "type": "IMAGE", - "link": 476 + "name": "audio", + "type": "AUDIO", + "link": 513 }, { - "name": "opt_feature", - "type": "FEATURE", - "link": 464 + "name": "height", + "type": "INT", + "link": null, + "widget": { + "name": "height" + } }, { - "name": "opt_feature_pipe", - "type": "FEATURE_PIPE", - "link": 465 + "name": "width", + "type": "INT", + "link": null, + "widget": { + "name": "width" + } }, { - "name": "opt_mask", - "type": "MASK", - "link": null + "name": "frame_count", + "type": "INT", + "link": null, + "widget": { + "name": "frame_count" + } + }, + { + "name": "frame_rate", + "type": "FLOAT", + "link": null, + "widget": { + "name": "frame_rate" + } } ], "outputs": [ { - "name": "IMAGE", - "type": "IMAGE", + "name": "feature", + "type": "FEATURE", "links": [ - 467 + 509, + 511, + 514 ], - "shape": 3, "slot_index": 0 + }, + { + "name": "frame_count", + "type": "INT", + "links": [ + 494 + ] } ], "properties": { - "Node name for S&R": "FlexImageHueShift" + "Node name for S&R": "AudioFeatureExtractor" }, "widgets_values": [ - 1, + "amplitude_envelope", + 30, 0, - "hue_shift", - "absolute", - 210 + 512, + 512 ] }, { - "id": 223, - "type": "GetNode", - "pos": { - "0": 9438.591796875, - "1": -1052.95068359375, - "2": 0, - "3": 0, - "4": 0, - "5": 0, - "6": 0, - "7": 0, - "8": 0, - "9": 0 - }, - "size": { - "0": 210, - "1": 58 - }, + "id": 309, + "type": "PreviewFeature", + "pos": [ + 218.6659698486328, + -1560.464599609375 + ], + "size": [ + 315, + 246 + ], "flags": {}, - "order": 13, + "order": 39, "mode": 0, - "inputs": [], - "outputs": [ + "inputs": [ { - "name": "FEATURE", + "name": "feature", "type": "FEATURE", - "links": [ - 464 - ], - "slot_index": 0 + "link": 514 } ], - "title": "Get_bass_feature", - "properties": {}, - "widgets_values": [ - "bass_feature" - ] + "outputs": [], + "properties": { + "Node name for S&R": "PreviewFeature" + }, + "widgets_values": [] }, - { - "id": 161, - "type": "VAEDecode", + { + "id": 310, + "type": "MaskComposite", "pos": [ - 6933.875209058141, - -1080.4769633121846 + 1934.8564453125, + -1511.9481201171875 + ], + "size": [ + 315, + 126 ], - "size": { - "0": 210, - "1": 46 - }, "flags": {}, - "order": 55, + "order": 54, "mode": 0, "inputs": [ { - "name": "samples", - "type": "LATENT", - "link": 273 + "name": "destination", + "type": "MASK", + "link": 515 }, { - "name": "vae", - "type": "VAE", - "link": 274 + "name": "source", + "type": "MASK", + "link": 516 } ], "outputs": [ { - "name": "IMAGE", - "type": "IMAGE", + "name": "MASK", + "type": "MASK", "links": [ - 483 + 521 ], "slot_index": 0 } ], "properties": { - "Node name for S&R": "VAEDecode" - } + "Node name for S&R": "MaskComposite" + }, + "widgets_values": [ + 0, + 0, + "add" + ] }, { - "id": 158, - "type": "KSampler", + "id": 311, + "type": "FlexAudioVisualizerLine", "pos": [ - 6708.225901568219, - -871.851940468417 + 1067.222900390625, + -1871.9373779296875 + ], + "size": [ + 453.5999755859375, + 630 ], - "size": { - "0": 315, - "1": 262 - }, "flags": {}, - "order": 54, + "order": 48, "mode": 0, "inputs": [ { - "name": "model", - "type": "MODEL", - "link": 453 + "name": "audio", + "type": "AUDIO", + "link": 517 }, { - "name": "positive", - "type": "CONDITIONING", - "link": 447 + "name": "opt_feature", + "type": "FEATURE", + "link": 518, + "shape": 7 }, { - "name": "negative", - "type": "CONDITIONING", - "link": 448 + "name": "screen_width", + "type": "INT", + "link": null, + "widget": { + "name": "screen_width" + } }, { - "name": "latent_image", - "type": "LATENT", - "link": 270 + "name": "screen_height", + "type": "INT", + "link": null, + "widget": { + "name": "screen_height" + } + }, + { + "name": "frame_rate", + "type": "FLOAT", + "link": null, + "widget": { + "name": "frame_rate" + } } ], "outputs": [ { - "name": "LATENT", - "type": "LATENT", + "name": "IMAGE", + "type": "IMAGE", + "links": null + }, + { + "name": "MASK", + "type": "MASK", "links": [ - 273, - 475 - ], - "slot_index": 0 + 515 + ] } ], "properties": { - "Node name for S&R": "KSampler" + "Node name for S&R": "FlexAudioVisualizerLine" }, "widgets_values": [ - 156680208700286, - "fixed", - 4, 1, - "lcm", - "sgm_uniform", - 0.45 + 0, + "smoothing", + "relative", + 30, + 768, + 464, + 0.5, + 0.5, + "line", + "frequency", + 0.5, + 0, + 0, + 64, + 200, + 10, + 5, + 0, + 0, + 2048, + 20, + 8000, + true ] }, { - "id": 258, + "id": 312, "type": "FlexAudioVisualizerLine", "pos": [ - 1094.5848849967588, - -1803.2825382554306 + 1057.874755859375, + -1180.274169921875 + ], + "size": [ + 453.5999755859375, + 630 ], - "size": { - "0": 447.7563171386719, - "1": 606 - }, "flags": {}, - "order": 39, + "order": 49, "mode": 0, "inputs": [ { "name": "audio", "type": "AUDIO", - "link": 422 + "link": 519 }, { "name": "opt_feature", "type": "FEATURE", - "link": 423 + "link": 520, + "shape": 7 + }, + { + "name": "screen_width", + "type": "INT", + "link": null, + "widget": { + "name": "screen_width" + } + }, + { + "name": "screen_height", + "type": "INT", + "link": null, + "widget": { + "name": "screen_height" + } + }, + { + "name": "frame_rate", + "type": "FLOAT", + "link": null, + "widget": { + "name": "frame_rate" + } } ], "outputs": [ { "name": "IMAGE", "type": "IMAGE", - "links": [], - "shape": 3, - "slot_index": 0 + "links": [ + 496 + ] }, { "name": "MASK", "type": "MASK", "links": [ - 484 - ], - "shape": 3, - "slot_index": 1 + 516 + ] } ], "properties": { "Node name for S&R": "FlexAudioVisualizerLine" }, "widgets_values": [ + 1, + 0, + "smoothing", + "relative", 30, 768, 464, - 1, - "max_frequency", - "relative", - "None", 0.5, 0.5, "line", "frequency", 0.5, + 180, 0, 64, 200, 10, 5, 0, - true, 0, 2048, - 200, - 8000 + 20, + 8000, + true ] }, { - "id": 259, - "type": "FlexAudioVisualizerLine", + "id": 313, + "type": "MaskComposite", "pos": [ - 1090.5848849967588, - -1115.2825382554306 + 2066.471435546875, + -1120.6600341796875 + ], + "size": [ + 315, + 126 ], - "size": { - "0": 460.1441650390625, - "1": 606 - }, "flags": {}, - "order": 40, + "order": 55, "mode": 0, "inputs": [ { - "name": "audio", - "type": "AUDIO", - "link": 425 + "name": "destination", + "type": "MASK", + "link": 521 }, { - "name": "opt_feature", - "type": "FEATURE", - "link": 426 + "name": "source", + "type": "MASK", + "link": 522 } ], "outputs": [ { - "name": "IMAGE", - "type": "IMAGE", + "name": "MASK", + "type": "MASK", + "links": [ + 523, + 526 + ], + "slot_index": 0 + } + ], + "properties": { + "Node name for S&R": "MaskComposite" + }, + "widgets_values": [ + 0, + 0, + "add" + ] + }, + { + "id": 314, + "type": "MaskFlip+", + "pos": [ + 2330.026123046875, + -1354.7342529296875 + ], + "size": [ + 315, + 58 + ], + "flags": {}, + "order": 56, + "mode": 0, + "inputs": [ + { + "name": "mask", + "type": "MASK", + "link": 523 + } + ], + "outputs": [ + { + "name": "MASK", + "type": "MASK", "links": [ - 427 + 525 ], - "shape": 3, "slot_index": 0 + } + ], + "properties": { + "Node name for S&R": "MaskFlip+" + }, + "widgets_values": [ + "x" + ] + }, + { + "id": 315, + "type": "Anything Everywhere?", + "pos": [ + -1276.2767333984375, + -1218.492431640625 + ], + "size": [ + 315, + 106 + ], + "flags": {}, + "order": 27, + "mode": 0, + "inputs": [ + { + "name": "AUDIO", + "type": "*", + "link": 524, + "shape": 7, + "color_on": "" + } + ], + "outputs": [], + "properties": { + "Node name for S&R": "Anything Everywhere?", + "group_restricted": 0, + "color_restricted": 0 + }, + "widgets_values": [ + ".*", + "audio", + ".*" + ] + }, + { + "id": 316, + "type": "VHS_LoadAudioUpload", + "pos": [ + -1802.77734375, + -802.9659423828125 + ], + "size": [ + 243.818359375, + 130 + ], + "flags": {}, + "order": 16, + "mode": 0, + "inputs": [], + "outputs": [ + { + "name": "audio", + "type": "AUDIO", + "links": [ + 491, + 503, + 504, + 524, + 527 + ], + "slot_index": 0, + "shape": 3 + } + ], + "properties": { + "Node name for S&R": "VHS_LoadAudioUpload" + }, + "widgets_values": { + "audio": "Delta Deez - Songfinch - Out the Mud.mp3", + "start_time": 15, + "duration": 3, + "choose audio to upload": "image" + } + }, + { + "id": 317, + "type": "MaskComposite", + "pos": [ + 2542.879638671875, + -1108.701904296875 + ], + "size": [ + 315, + 126 + ], + "flags": {}, + "order": 57, + "mode": 0, + "inputs": [ + { + "name": "destination", + "type": "MASK", + "link": 525 }, + { + "name": "source", + "type": "MASK", + "link": 526 + } + ], + "outputs": [ { "name": "MASK", "type": "MASK", "links": [ - 485 + 531 ], - "shape": 3, - "slot_index": 1 + "slot_index": 0 } ], "properties": { - "Node name for S&R": "FlexAudioVisualizerLine" + "Node name for S&R": "MaskComposite" }, "widgets_values": [ - 30, - 768, - 464, - 1, - "max_frequency", - "relative", - "None", - 0.5, - 0.5, - "line", - "frequency", - 0.5, - 180, - 64, - 200, - 10, - 5, 0, - true, 0, - 2048, - 200, - 8000 + "add" ] }, { - "id": 262, - "type": "FlexAudioVisualizerCircular", + "id": 318, + "type": "PreviewAudio", "pos": [ - 1092.5848849967588, - -422.28253825543106 + -1774.7421875, + -961.5587158203125 + ], + "size": [ + 315, + 76.00001525878906 ], - "size": { - "0": 403.20001220703125, - "1": 558 - }, "flags": {}, - "order": 41, + "order": 28, "mode": 0, "inputs": [ { "name": "audio", "type": "AUDIO", - "link": 436 - }, - { - "name": "opt_feature", - "type": "FEATURE", - "link": 437 - } - ], - "outputs": [ - { - "name": "IMAGE", - "type": "IMAGE", - "links": [], - "shape": 3 - }, - { - "name": "MASK", - "type": "MASK", - "links": [ - 486 - ], - "shape": 3, - "slot_index": 1 + "link": 527 } ], + "outputs": [], "properties": { - "Node name for S&R": "FlexAudioVisualizerCircular" + "Node name for S&R": "PreviewAudio" }, "widgets_values": [ - 30, - 768, - 464, - 1, - "max_frequency", - "relative", - "None", - 0.5, - 0.5, - "bar", - "frequency", - 0.5, - 90, - 360, - 2048, - 20, - 8000, - 150, - 4, - 100, - 150 + null ] }, { - "id": 276, + "id": 320, "type": "VHS_VideoCombine", "pos": [ - 7340.225901568219, - -1030.8519404684173 + 2800.19482421875, + -479.6005859375 ], "size": [ - 452.57537841796875, - 585.3476244608562 + 214.7587890625, + 467.69549560546875 ], "flags": {}, - "order": 57, + "order": 59, "mode": 0, "inputs": [ { "name": "images", "type": "IMAGE", - "link": 483 + "link": 530 }, { "name": "audio", "type": "AUDIO", - "link": 482 + "link": null, + "shape": 7 }, { "name": "meta_batch", "type": "VHS_BatchManager", - "link": null + "link": null, + "shape": 7 }, { "name": "vae", "type": "VAE", - "link": null + "link": null, + "shape": 7 } ], "outputs": [ @@ -2647,510 +3087,477 @@ "pix_fmt": "yuv420p", "crf": 19, "save_metadata": true, + "trim_to_audio": false, "pingpong": false, "save_output": true, "videopreview": { "hidden": false, "paused": false, "params": { - "filename": "AnimateDiff_07551-audio.mp4", + "filename": "AnimateDiff_02388-audio.mp4", "subfolder": "", "type": "output", "format": "video/h264-mp4", - "frame_rate": 30 + "frame_rate": 30, + "workflow": "AnimateDiff_02388.png", + "fullpath": "/runpod-volume/ComfyUI_rv/output/AnimateDiff_02388-audio.mp4" } } } }, { - "id": 212, - "type": "VHS_VideoCombine", + "id": 321, + "type": "MaskToImage", "pos": [ - 8854, - -1033 + 2596.95166015625, + -733.9804077148438 ], "size": [ - 452.57537841796875, - 586.04566276418 + 210, + 26 ], "flags": {}, - "order": 62, + "order": 58, "mode": 0, "inputs": [ { - "name": "images", - "type": "IMAGE", - "link": 478 - }, - { - "name": "audio", - "type": "AUDIO", - "link": 340 - }, - { - "name": "meta_batch", - "type": "VHS_BatchManager", - "link": null - }, - { - "name": "vae", - "type": "VAE", - "link": null + "name": "mask", + "type": "MASK", + "link": 531 } ], "outputs": [ { - "name": "Filenames", - "type": "VHS_FILENAMES", - "links": null, + "name": "IMAGE", + "type": "IMAGE", + "links": [ + 530, + 532 + ], + "slot_index": 0, "shape": 3 } ], "properties": { - "Node name for S&R": "VHS_VideoCombine" + "Node name for S&R": "MaskToImage" }, - "widgets_values": { - "frame_rate": 30, - "loop_count": 0, - "filename_prefix": "AnimateDiff", - "format": "video/h264-mp4", - "pix_fmt": "yuv420p", - "crf": 19, - "save_metadata": true, - "pingpong": false, - "save_output": true, - "videopreview": { - "hidden": false, - "paused": false, - "params": { - "filename": "AnimateDiff_07552-audio.mp4", - "subfolder": "", - "type": "output", - "format": "video/h264-mp4", - "frame_rate": 30 - } - } - } + "widgets_values": [] }, { - "id": 148, - "type": "VHS_VideoCombine", + "id": 282, + "type": "SetNode", "pos": [ - 1705.5848849967572, - -1132.2825382554306 + -1774.7413330078125, + -1071.558349609375 ], "size": [ 210, - 439 + 58 ], "flags": {}, - "order": 47, + "order": 24, "mode": 0, "inputs": [ { - "name": "images", - "type": "IMAGE", - "link": 427 - }, - { - "name": "audio", + "name": "AUDIO", "type": "AUDIO", - "link": 254 - }, - { - "name": "meta_batch", - "type": "VHS_BatchManager", - "link": null - }, - { - "name": "vae", - "type": "VAE", - "link": null + "link": 491 } ], "outputs": [ { - "name": "Filenames", - "type": "VHS_FILENAMES", - "links": null, - "shape": 3 + "name": "*", + "type": "*", + "links": null } ], + "title": "Set_audio", "properties": { - "Node name for S&R": "VHS_VideoCombine" + "previousName": "audio" }, - "widgets_values": { - "frame_rate": 30, - "loop_count": 0, - "filename_prefix": "AnimateDiff", - "format": "video/h264-mp4", - "pix_fmt": "yuv420p", - "crf": 19, - "save_metadata": true, - "pingpong": false, - "save_output": true, - "videopreview": { - "hidden": false, - "paused": false, - "params": { - "filename": "AnimateDiff_07539-audio.mp4", - "subfolder": "", - "type": "output", - "format": "video/h264-mp4", - "frame_rate": 30 - } - } - } + "widgets_values": [ + "audio" + ] }, { - "id": 149, - "type": "GetNode", - "pos": { - "0": 1687.585205078125, - "1": -1269.28271484375, - "2": 0, - "3": 0, - "4": 0, - "5": 0, - "6": 0, - "7": 0, - "8": 0, - "9": 0 - }, - "size": { - "0": 210, - "1": 58 - }, + "id": 319, + "type": "FlexAudioVisualizerCircular", + "pos": [ + 1071.8720703125, + -492.2303466796875 + ], + "size": [ + 504, + 558 + ], "flags": {}, - "order": 14, + "order": 50, "mode": 0, - "inputs": [], - "outputs": [ + "inputs": [ { - "name": "AUDIO", + "name": "audio", "type": "AUDIO", + "link": 528 + }, + { + "name": "opt_feature", + "type": "FEATURE", + "link": 529, + "shape": 7 + } + ], + "outputs": [ + { + "name": "IMAGE", + "type": "IMAGE", + "links": null + }, + { + "name": "MASK", + "type": "MASK", "links": [ - 254 - ], - "slot_index": 0 + 522 + ] } ], - "title": "Get_audio", - "properties": {}, + "properties": { + "Node name for S&R": "FlexAudioVisualizerCircular" + }, "widgets_values": [ - "audio" + 1, + 0, + "smoothing", + "relative", + 30, + 768, + 464, + 0.5, + 0.5, + "bar", + "frequency", + 0.5, + 90, + 495, + 2048, + 20, + 8000, + 150, + 2, + 100, + 150 ] }, { - "id": 153, - "type": "MaskCompositePlus", + "id": 323, + "type": "ImageCASBatch", "pos": [ - 1924.5848849967574, - -1546.2825382554306 + 10534.427734375, + -1164.3585205078125 + ], + "size": [ + 462, + 82 ], - "size": { - "0": 315, - "1": 78 - }, "flags": {}, - "order": 48, + "order": 72, "mode": 0, "inputs": [ { - "name": "mask1", - "type": "MASK", - "link": 484 - }, - { - "name": "mask2", - "type": "MASK", - "link": 485 + "name": "image", + "type": "IMAGE", + "link": 533 } ], "outputs": [ { - "name": "MASK", - "type": "MASK", + "name": "IMAGE", + "type": "IMAGE", "links": [ - 480 + 538 ], - "shape": 3, - "slot_index": 0 + "slot_index": 0, + "shape": 3 } ], "properties": { - "Node name for S&R": "MaskCompositePlus" + "Node name for S&R": "ImageCASBatch" }, "widgets_values": [ - "add" + 0.8, + 4 ] }, { - "id": 155, - "type": "MaskCompositePlus", + "id": 324, + "type": "FlexImageHueShift", "pos": [ - 2109.584884996756, - -805.2825382554311 + 10044.1845703125, + -1108.841064453125 + ], + "size": [ + 378, + 194 ], - "size": { - "0": 315, - "1": 78 - }, "flags": {}, - "order": 49, + "order": 70, "mode": 0, "inputs": [ { - "name": "mask1", - "type": "MASK", - "link": 480 + "name": "images", + "type": "IMAGE", + "link": 540 + }, + { + "name": "opt_feature", + "type": "FEATURE", + "link": 534, + "shape": 7 }, { - "name": "mask2", + "name": "opt_mask", "type": "MASK", - "link": 486 + "link": 535, + "shape": 7 + }, + { + "name": "hue_shift", + "type": "INT", + "link": 536, + "widget": { + "name": "hue_shift" + } } ], "outputs": [ { - "name": "MASK", - "type": "MASK", + "name": "IMAGE", + "type": "IMAGE", "links": [ - 359 + 533 ], - "shape": 3, "slot_index": 0 } ], "properties": { - "Node name for S&R": "MaskCompositePlus" + "Node name for S&R": "FlexImageHueShift" }, "widgets_values": [ - "add" + 1, + 0, + "hue_shift", + "relative", + 0 ] }, { - "id": 146, - "type": "GetNode", - "pos": { - "0": 2350.58349609375, - "1": -1523.28271484375, - "2": 0, - "3": 0, - "4": 0, - "5": 0, - "6": 0, - "7": 0, - "8": 0, - "9": 0 - }, - "size": { - "0": 210, - "1": 58 - }, + "id": 325, + "type": "ColorPicker", + "pos": [ + 9213.7783203125, + -1214.458251953125 + ], + "size": [ + 220, + 380 + ], "flags": {}, - "order": 15, + "order": 17, "mode": 0, "inputs": [], "outputs": [ { - "name": "AUDIO", - "type": "AUDIO", - "links": [ - 250 - ], - "slot_index": 0 - } - ], - "title": "Get_audio", - "properties": {}, - "widgets_values": [ - "audio" - ] - }, - { - "id": 151, - "type": "MaskToImage", - "pos": [ - 2503.584884996755, - -802.2825382554311 - ], - "size": { - "0": 210, - "1": 26 - }, - "flags": {}, - "order": 50, - "mode": 0, - "inputs": [ + "name": "hex_color", + "type": "STRING", + "links": null + }, { - "name": "mask", - "type": "MASK", - "link": 359 - } - ], - "outputs": [ + "name": "rgb_color", + "type": "STRING", + "links": null + }, { - "name": "IMAGE", - "type": "IMAGE", + "name": "hue_shift", + "type": "INT", "links": [ - 249, - 353 + 536 ], - "shape": 3, - "slot_index": 0 + "slot_index": 2 } ], "properties": { - "Node name for S&R": "MaskToImage" - } + "Node name for S&R": "ColorPicker" + }, + "widgets_values": [ + null, + "{\"hex\":\"#f429ff\",\"rgb\":\"244,41,255\",\"hue\":297}" + ], + "color": "#f429ff", + "rgb": "244,41,255", + "hue": 297 }, { - "id": 111, - "type": "CR LoRA Stack", + "id": 326, + "type": "AdvancedLuminanceMask", "pos": [ - 3230, - -799 + 9188.82421875, + -728.6874389648438 + ], + "size": [ + 415.8000183105469, + 174 ], - "size": { - "0": 315, - "1": 342 - }, "flags": {}, - "order": 16, + "order": 69, "mode": 0, "inputs": [ { - "name": "lora_stack", - "type": "LORA_STACK", - "link": null + "name": "image", + "type": "IMAGE", + "link": 541 } ], "outputs": [ { - "name": "LORA_STACK", - "type": "LORA_STACK", + "name": "MASK", + "type": "MASK", "links": [ - 184 + 535 ], - "shape": 3, "slot_index": 0 }, { - "name": "show_help", - "type": "STRING", - "links": null, - "shape": 3 + "name": "IMAGE", + "type": "IMAGE", + "links": [ + 537 + ], + "slot_index": 1 } ], "properties": { - "Node name for S&R": "CR LoRA Stack" + "Node name for S&R": "AdvancedLuminanceMask" }, "widgets_values": [ - "On", - "halloweenTech-202.safetensors", - 0.58, - 0.46, - "Off", - "add_detail.safetensors", - 1, - 1, - "Off", - "ral-acidzlime-sd15.safetensors", - 1, - 1 + 0.5, + 5, + 0.5, + 10, + 0.3 ] }, { - "id": 29, - "type": "CR LoRA Stack", + "id": 327, + "type": "VHS_VideoCombine", "pos": [ - 3575, - -765 + 10010.2294921875, + -837.1151733398438 + ], + "size": [ + 538.985595703125, + 662.635009765625 ], - "size": { - "0": 315, - "1": 342 - }, "flags": {}, - "order": 21, + "order": 71, "mode": 0, "inputs": [ { - "name": "lora_stack", - "type": "LORA_STACK", - "link": 184 + "name": "images", + "type": "IMAGE", + "link": 537 + }, + { + "name": "audio", + "type": "AUDIO", + "link": null, + "shape": 7 + }, + { + "name": "meta_batch", + "type": "VHS_BatchManager", + "link": null, + "shape": 7 + }, + { + "name": "vae", + "type": "VAE", + "link": null, + "shape": 7 } ], "outputs": [ { - "name": "LORA_STACK", - "type": "LORA_STACK", - "links": [ - 289 - ], - "shape": 3, - "slot_index": 0 - }, - { - "name": "show_help", - "type": "STRING", + "name": "Filenames", + "type": "VHS_FILENAMES", "links": null, "shape": 3 } ], "properties": { - "Node name for S&R": "CR LoRA Stack" + "Node name for S&R": "VHS_VideoCombine" }, - "widgets_values": [ - "On", - "AnimateLCM_sd15_t2v_lora.safetensors", - 1, - 1, - "On", - "add_detail.safetensors", - 1, - 1, - "On", - "ral-acidzlime-sd15.safetensors", - 1, - 1 - ] + "widgets_values": { + "frame_rate": 33, + "loop_count": 0, + "filename_prefix": "AnimateDiff", + "format": "video/h264-mp4", + "pix_fmt": "yuv420p", + "crf": 19, + "save_metadata": true, + "trim_to_audio": false, + "pingpong": false, + "save_output": true, + "videopreview": { + "hidden": false, + "paused": false, + "params": { + "filename": "AnimateDiff_02391-audio.mp4", + "subfolder": "", + "type": "output", + "format": "video/h264-mp4", + "frame_rate": 33, + "workflow": "AnimateDiff_02391.png", + "fullpath": "/runpod-volume/ComfyUI_rv/output/AnimateDiff_02391-audio.mp4" + } + } + } }, { - "id": 145, + "id": 328, "type": "VHS_VideoCombine", "pos": [ - 2787, - -1374 + 10667, + -855.6465454101562 ], "size": [ - 210, - 439 + 538.985595703125, + 662.635009765625 ], "flags": {}, - "order": 51, + "order": 73, "mode": 0, "inputs": [ { "name": "images", "type": "IMAGE", - "link": 249 + "link": 538 }, { "name": "audio", - "type": "*", - "link": 250 + "type": "AUDIO", + "link": null, + "shape": 7 }, { "name": "meta_batch", "type": "VHS_BatchManager", - "link": null + "link": null, + "shape": 7 }, { "name": "vae", "type": "VAE", - "link": null + "link": null, + "shape": 7 } ], "outputs": [ @@ -3165,134 +3572,107 @@ "Node name for S&R": "VHS_VideoCombine" }, "widgets_values": { - "frame_rate": 30, + "frame_rate": 33, "loop_count": 0, "filename_prefix": "AnimateDiff", "format": "video/h264-mp4", "pix_fmt": "yuv420p", "crf": 19, "save_metadata": true, + "trim_to_audio": false, "pingpong": false, "save_output": true, "videopreview": { "hidden": false, "paused": false, "params": { - "filename": "AnimateDiff_07550-audio.mp4", + "filename": "AnimateDiff_02392-audio.mp4", "subfolder": "", "type": "output", "format": "video/h264-mp4", - "frame_rate": 30 + "frame_rate": 33, + "workflow": "AnimateDiff_02392.png", + "fullpath": "/runpod-volume/ComfyUI_rv/output/AnimateDiff_02392-audio.mp4" } } - } + } + }, + { + "id": 211, + "type": "VAEDecode", + "pos": [ + 8000.17041015625, + -1007.935546875 + ], + "size": [ + 210, + 46 + ], + "flags": {}, + "order": 67, + "mode": 0, + "inputs": [ + { + "name": "samples", + "type": "LATENT", + "link": 347 + }, + { + "name": "vae", + "type": "VAE", + "link": 338 + } + ], + "outputs": [ + { + "name": "IMAGE", + "type": "IMAGE", + "links": [ + 539, + 540, + 541 + ], + "slot_index": 0 + } + ], + "properties": { + "Node name for S&R": "VAEDecode" + }, + "widgets_values": [] + }, + { + "id": 322, + "type": "GetNode", + "pos": [ + 9622.5390625, + -1161.4991455078125 + ], + "size": [ + 303.388427734375, + 72.0495834350586 + ], + "flags": {}, + "order": 18, + "mode": 0, + "inputs": [], + "outputs": [ + { + "name": "FEATURE", + "type": "FEATURE", + "links": [ + 534 + ], + "slot_index": 0 + } + ], + "title": "Get_bass_feature", + "properties": {}, + "widgets_values": [ + "bass_feature" + ] } ], "links": [ - [ - 36, - 41, - 0, - 40, - 0, - "OPEN_UNMIX_MODEL" - ], - [ - 37, - 39, - 0, - 40, - 1, - "AUDIO" - ], - [ - 38, - 39, - 0, - 42, - 0, - "AUDIO" - ], - [ - 39, - 42, - 0, - 40, - 2, - "IMAGE" - ], - [ - 41, - 40, - 1, - 43, - 0, - "AUDIO" - ], - [ - 42, - 40, - 5, - 43, - 1, - "FEATURE_PIPE" - ], - [ - 48, - 39, - 0, - 45, - 0, - "*" - ], - [ - 56, - 39, - 0, - 49, - 0, - "AUDIO" - ], - [ - 58, - 43, - 0, - 51, - 0, - "FEATURE" - ], - [ - 59, - 51, - 0, - 52, - 0, - "IMAGE" - ], - [ - 110, - 43, - 0, - 70, - 0, - "FEATURE" - ], - [ - 111, - 70, - 1, - 71, - 0, - "IMAGE" - ], - [ - 162, - 42, - 0, - 101, - 0, - "*" - ], [ 184, 111, @@ -3301,30 +3681,6 @@ 0, "LORA_STACK" ], - [ - 249, - 151, - 0, - 145, - 0, - "IMAGE" - ], - [ - 250, - 146, - 0, - 145, - 1, - "AUDIO" - ], - [ - 254, - 149, - 0, - 148, - 1, - "AUDIO" - ], [ 270, 162, @@ -3491,347 +3847,676 @@ 0, 211, 0, - "LATENT" + "LATENT" + ], + [ + 354, + 216, + 0, + 162, + 0, + "IMAGE" + ], + [ + 411, + 209, + 0, + 213, + 3, + "LATENT" + ], + [ + 444, + 159, + 0, + 175, + 0, + "CONDITIONING" + ], + [ + 445, + 160, + 0, + 175, + 1, + "CONDITIONING" + ], + [ + 447, + 175, + 0, + 158, + 1, + "CONDITIONING" + ], + [ + 448, + 175, + 1, + 158, + 2, + "CONDITIONING" + ], + [ + 451, + 164, + 0, + 263, + 0, + "MODEL" + ], + [ + 452, + 263, + 0, + 213, + 0, + "MODEL" + ], + [ + 453, + 263, + 0, + 158, + 0, + "MODEL" + ], + [ + 475, + 158, + 0, + 209, + 0, + "LATENT" + ], + [ + 482, + 46, + 0, + 276, + 1, + "AUDIO" + ], + [ + 483, + 161, + 0, + 276, + 0, + "IMAGE" + ], + [ + 491, + 316, + 0, + 282, + 0, + "*" + ], + [ + 492, + 306, + 0, + 283, + 0, + "*" + ], + [ + 493, + 304, + 0, + 284, + 0, + "*" + ], + [ + 494, + 308, + 1, + 285, + 0, + "*" + ], + [ + 495, + 302, + 0, + 286, + 0, + "*" + ], + [ + 496, + 312, + 0, + 288, + 0, + "IMAGE" + ], + [ + 497, + 289, + 0, + 288, + 1, + "AUDIO" + ], + [ + 498, + 299, + 0, + 291, + 0, + "*" + ], + [ + 499, + 295, + 0, + 292, + 0, + "FLOAT" + ], + [ + 500, + 294, + 0, + 296, + 0, + "INT" + ], + [ + 501, + 293, + 0, + 297, + 0, + "INT" ], [ - 353, - 151, + 502, + 287, 0, - 216, + 298, 0, - "*" + "OPEN_UNMIX_MODEL" ], [ - 354, - 216, - 0, - 162, + 503, + 316, 0, - "IMAGE" + 298, + 1, + "AUDIO" ], [ - 359, - 155, + 504, + 316, 0, - 151, + 299, 0, - "MASK" + "AUDIO" ], [ - 360, - 70, + 505, + 299, + 2, + 300, 0, - 221, + "INT" + ], + [ + 506, + 298, + 3, + 301, 0, - "*" + "AUDIO" ], [ - 361, - 43, - 1, - 222, + 507, + 301, 0, - "*" + 302, + 0, + "FEATURE" ], [ - 375, - 229, - 1, - 230, + 508, + 302, 0, - "IMAGE" + 303, + 0, + "FEATURE" ], [ - 376, - 43, + 509, + 308, 0, - 229, + 304, 0, "FEATURE" ], [ - 377, - 229, + 510, + 304, 0, - 231, + 305, 0, - "*" + "FEATURE" ], [ - 411, - 209, + 511, + 308, 0, - 213, - 3, - "LATENT" + 306, + 0, + "FEATURE" ], [ - 415, - 254, + 512, + 306, + 0, + 307, 0, - 236, + "FEATURE" + ], + [ + 513, + 298, 1, + 308, + 0, "AUDIO" ], [ - 417, - 211, + 514, + 308, 0, - 256, + 309, 0, - "IMAGE" + "FEATURE" + ], + [ + 515, + 311, + 1, + 310, + 0, + "MASK" + ], + [ + 516, + 312, + 1, + 310, + 1, + "MASK" ], [ - 422, - 40, + 517, + 298, 2, - 258, + 311, 0, "AUDIO" ], [ - 423, - 70, + 518, + 306, 0, - 258, + 311, 1, "FEATURE" ], [ - 425, - 40, + 519, + 298, 2, - 259, + 312, 0, "AUDIO" ], [ - 426, - 70, + 520, + 306, 0, - 259, + 312, 1, "FEATURE" ], [ - 427, - 259, + 521, + 310, 0, - 148, + 313, 0, - "IMAGE" + "MASK" ], [ - 436, - 40, + 522, + 319, + 1, + 313, 1, - 262, + "MASK" + ], + [ + 523, + 313, 0, - "AUDIO" + 314, + 0, + "MASK" ], [ - 437, - 70, + 524, + 316, 0, - 262, - 1, - "FEATURE" + 315, + 0, + "AUDIO" ], [ - 444, - 159, + 525, + 314, 0, - 175, + 317, 0, - "CONDITIONING" + "MASK" ], [ - 445, - 160, + 526, + 313, 0, - 175, + 317, 1, - "CONDITIONING" + "MASK" ], [ - 447, - 175, + 527, + 316, 0, - 158, + 318, + 0, + "AUDIO" + ], + [ + 528, + 298, 1, - "CONDITIONING" + 319, + 0, + "AUDIO" ], [ - 448, - 175, + 529, + 306, + 0, + 319, 1, - 158, - 2, - "CONDITIONING" + "FEATURE" ], [ - 451, - 164, + 530, + 321, 0, - 263, + 320, 0, - "MODEL" + "IMAGE" ], [ - 452, - 263, + 531, + 317, 0, - 213, + 321, 0, - "MODEL" + "MASK" ], [ - 453, - 263, + 532, + 321, 0, - 158, + 216, 0, - "MODEL" + "*" ], [ - 459, - 40, - 3, - 266, + 533, + 324, 0, - "AUDIO" + 323, + 0, + "IMAGE" ], [ - 460, - 40, - 5, - 266, + 534, + 322, + 0, + 324, 1, - "FEATURE_PIPE" + "FEATURE" ], [ - 464, - 223, + 535, + 326, 0, - 270, + 324, + 2, + "MASK" + ], + [ + 536, + 325, + 2, + 324, + 3, + "INT" + ], + [ + 537, + 326, 1, - "FEATURE" + 327, + 0, + "IMAGE" ], [ - 465, - 224, + 538, + 323, 0, - 270, - 2, - "FEATURE_PIPE" + 328, + 0, + "IMAGE" ], [ - 467, - 270, + 539, + 211, 0, - 236, + 212, 0, "IMAGE" ], [ - 472, - 266, + 540, + 211, 0, - 272, + 324, 0, - "FEATURE" + "IMAGE" ], [ - 473, - 272, - 1, - 273, + 541, + 211, + 0, + 326, 0, "IMAGE" ], [ - 474, - 272, + 542, + 293, 0, - 267, + 299, + 1, + "INT" + ], + [ + 543, + 294, 0, - "FEATURE" + 299, + 2, + "INT" ], [ - 475, - 158, + 544, + 295, 0, - 209, + 299, + 3, + "FLOAT" + ], + [ + 545, + 294, 0, - "LATENT" + 301, + 1, + "INT" ], [ - 476, - 256, + 546, + 293, 0, - 270, + 301, + 2, + "INT" + ], + [ + 547, + 299, + 2, + 301, + 3, + "INT" + ], + [ + 548, + 295, 0, - "IMAGE" + 301, + 4, + "FLOAT" ], [ - 478, - 256, + 549, + 294, 0, - 212, + 308, + 1, + "INT" + ], + [ + 550, + 293, 0, - "IMAGE" + 308, + 2, + "INT" + ], + [ + 551, + 299, + 2, + 308, + 3, + "INT" ], [ - 480, - 153, + 552, + 295, 0, - 155, + 308, + 4, + "FLOAT" + ], + [ + 553, + 293, 0, - "MASK" + 311, + 2, + "INT" ], [ - 482, - 46, + 554, + 294, 0, - 276, - 1, - "AUDIO" + 311, + 3, + "INT" ], [ - 483, - 161, + 555, + 295, 0, - 276, + 311, + 4, + "FLOAT" + ], + [ + 556, + 293, 0, - "IMAGE" + 312, + 2, + "INT" ], [ - 484, - 258, - 1, - 153, + 557, + 294, 0, - "MASK" + 312, + 3, + "INT" ], [ - 485, - 259, - 1, - 153, + 558, + 295, + 0, + 312, + 4, + "FLOAT" + ], + [ + 559, + 316, + 0, + 320, 1, - "MASK" + "AUDIO" ], [ - 486, - 262, + 560, + 316, + 0, + 327, 1, - 155, + "AUDIO" + ], + [ + 561, + 316, + 0, + 328, 1, - "MASK" + "AUDIO" ] ], "groups": [ { + "id": 1, "title": "ipadap", "bounding": [ 3766, @@ -3841,21 +4526,23 @@ ], "color": "#3f789e", "font_size": 24, - "locked": false + "flags": {} }, { + "id": 2, "title": "samp", "bounding": [ - 6463, - -1160, + 6159.72998046875, + -1357.1234130859375, 1375, 755 ], "color": "#3f789e", "font_size": 24, - "locked": false + "flags": {} }, { + "id": 3, "title": "samp22", "bounding": [ 3690, @@ -3865,9 +4552,10 @@ ], "color": "#3f789e", "font_size": 24, - "locked": false + "flags": {} }, { + "id": 4, "title": "adiff", "bounding": [ 5318, @@ -3877,9 +4565,10 @@ ], "color": "#3f789e", "font_size": 24, - "locked": false + "flags": {} }, { + "id": 5, "title": "model", "bounding": [ 3184, @@ -3889,9 +4578,10 @@ ], "color": "#3f789e", "font_size": 24, - "locked": false + "flags": {} }, { + "id": 6, "title": "controlnet", "bounding": [ 3731, @@ -3901,66 +4591,244 @@ ], "color": "#3f789e", "font_size": 24, - "locked": false + "flags": {} + }, + { + "id": 10, + "title": "Samp2", + "bounding": [ + 7568.78466796875, + -1346.960693359375, + 1500, + 756 + ], + "color": "#3f789e", + "font_size": 24, + "flags": {} }, { + "id": 11, "title": "Load Audio", "bounding": [ - -1828, - -1617, + -1855.362060546875, + -1685.65478515625, 2766, 1674 ], "color": "#3f789e", "font_size": 24, - "locked": false + "flags": {} }, { + "id": 12, "title": "Audio vidualizers", "bounding": [ - 966, - -1920, + 938.6381225585938, + -1988.65478515625, 2148, 2246 ], "color": "#3f789e", "font_size": 24, - "locked": false + "flags": {} }, { + "id": 13, "title": "Hue shift", "bounding": [ - 9407, - -1171, - 1987, - 771 - ], - "color": "#3f789e", - "font_size": 24, - "locked": false - }, - { - "title": "Samp2", - "bounding": [ - 7867, - -1165, - 1500, - 756 + 9146.779296875, + -1282.349365234375, + 2238.07421875, + 1190.408203125 ], "color": "#3f789e", "font_size": 24, - "locked": false + "flags": {} } ], "config": {}, "extra": { "ds": { - "scale": 0.10000000000000206, - "offset": { - "0": 5449.0137232868055, - "1": 6827.253539534981 + "scale": 0.3186308177103567, + "offset": [ + -5471.606559807217, + 2350.0575187866484 + ] + }, + "node_versions": { + "ComfyUI-AnimateDiff-Evolved": "7ec46937095048a77342aeada964e9823a2102f0", + "ComfyUI_Comfyroll_CustomNodes": "d78b780ae43fcf8c6b7c6505e6ffb4584281ceca", + "comfy-core": "0.3.12", + "efficiency-nodes-comfyui": "3ead4afd120833f3bffdefeca0d6545df8051798", + "ComfyUi_NNLatentUpscale": "08105da31dbd7a54569661e135835e73bd8064b0", + "ComfyUI-VideoHelperSuite": "6953fa21443cf55f7c3b61ed3f4c87c5d3677fe1", + "ComfyUI_RyanOnTheInside": "0507092b2c3f5c51b45989c6c4fd51c1add26513", + "cg-use-everywhere": "cd06259166a6af4c054c62f540871ca09a359b50", + "ComfyUI-KJNodes": "973ceb6ca8b7525d54873805888ad690090d6b1e", + "ComfyUI_essentials": "33ff89fd354d8ec3ab6affb605a79a931b445d99" + }, + "ue_links": [ + { + "downstream": 299, + "downstream_slot": 1, + "upstream": "293", + "upstream_slot": 0, + "controller": 297, + "type": "INT" + }, + { + "downstream": 299, + "downstream_slot": 2, + "upstream": "294", + "upstream_slot": 0, + "controller": 296, + "type": "INT" + }, + { + "downstream": 299, + "downstream_slot": 3, + "upstream": "295", + "upstream_slot": 0, + "controller": 292, + "type": "FLOAT" + }, + { + "downstream": 301, + "downstream_slot": 1, + "upstream": "294", + "upstream_slot": 0, + "controller": 296, + "type": "INT" + }, + { + "downstream": 301, + "downstream_slot": 2, + "upstream": "293", + "upstream_slot": 0, + "controller": 297, + "type": "INT" + }, + { + "downstream": 301, + "downstream_slot": 3, + "upstream": "299", + "upstream_slot": 2, + "controller": 300, + "type": "INT" + }, + { + "downstream": 301, + "downstream_slot": 4, + "upstream": "295", + "upstream_slot": 0, + "controller": 292, + "type": "FLOAT" + }, + { + "downstream": 308, + "downstream_slot": 1, + "upstream": "294", + "upstream_slot": 0, + "controller": 296, + "type": "INT" + }, + { + "downstream": 308, + "downstream_slot": 2, + "upstream": "293", + "upstream_slot": 0, + "controller": 297, + "type": "INT" + }, + { + "downstream": 308, + "downstream_slot": 3, + "upstream": "299", + "upstream_slot": 2, + "controller": 300, + "type": "INT" + }, + { + "downstream": 308, + "downstream_slot": 4, + "upstream": "295", + "upstream_slot": 0, + "controller": 292, + "type": "FLOAT" + }, + { + "downstream": 311, + "downstream_slot": 2, + "upstream": "293", + "upstream_slot": 0, + "controller": 297, + "type": "INT" + }, + { + "downstream": 311, + "downstream_slot": 3, + "upstream": "294", + "upstream_slot": 0, + "controller": 296, + "type": "INT" + }, + { + "downstream": 311, + "downstream_slot": 4, + "upstream": "295", + "upstream_slot": 0, + "controller": 292, + "type": "FLOAT" + }, + { + "downstream": 312, + "downstream_slot": 2, + "upstream": "293", + "upstream_slot": 0, + "controller": 297, + "type": "INT" + }, + { + "downstream": 312, + "downstream_slot": 3, + "upstream": "294", + "upstream_slot": 0, + "controller": 296, + "type": "INT" + }, + { + "downstream": 312, + "downstream_slot": 4, + "upstream": "295", + "upstream_slot": 0, + "controller": 292, + "type": "FLOAT" + }, + { + "downstream": 320, + "downstream_slot": 1, + "upstream": "316", + "upstream_slot": 0, + "controller": 315, + "type": "AUDIO" + }, + { + "downstream": 327, + "downstream_slot": 1, + "upstream": "316", + "upstream_slot": 0, + "controller": 315, + "type": "AUDIO" + }, + { + "downstream": 328, + "downstream_slot": 1, + "upstream": "316", + "upstream_slot": 0, + "controller": 315, + "type": "AUDIO" } - } + ] }, "version": 0.4 } \ No newline at end of file diff --git a/examples/depth_chamber_image.json b/examples/depth_chamber_image VERSION22.json similarity index 77% rename from examples/depth_chamber_image.json rename to examples/depth_chamber_image VERSION22.json index 0adcbb3..d4fab44 100644 --- a/examples/depth_chamber_image.json +++ b/examples/depth_chamber_image VERSION22.json @@ -1,21 +1,22 @@ { - "last_node_id": 178, - "last_link_id": 299, + "last_node_id": 185, + "last_link_id": 319, "nodes": [ { "id": 30, "type": "ADE_SigmaSchedule", "pos": [ - 3141.5897819464126, - 1118.8759046187079 + 3141.58984375, + 1118.8758544921875 + ], + "size": [ + 244.73928833007812, + 58 ], - "size": { - "0": 244.73928833007812, - "1": 58 - }, "flags": {}, "order": 0, "mode": 0, + "inputs": [], "outputs": [ { "name": "SIGMA_SCHEDULE", @@ -23,8 +24,8 @@ "links": [ 51 ], - "shape": 3, - "slot_index": 0 + "slot_index": 0, + "shape": 3 } ], "title": "Sigma Schedule 🎭🅐🅓", @@ -44,13 +45,13 @@ "id": 32, "type": "ADE_MultivalDynamic", "pos": [ - 3131.5897819464126, - 768.8759046187079 + 3131.58984375, + 768.8759155273438 + ], + "size": [ + 259.9388122558594, + 63.332008361816406 ], - "size": { - "0": 259.9388122558594, - "1": 63.332008361816406 - }, "flags": {}, "order": 1, "mode": 0, @@ -58,7 +59,8 @@ { "name": "mask_optional", "type": "MASK", - "link": null + "link": null, + "shape": 7 } ], "outputs": [ @@ -68,8 +70,8 @@ "links": [ 48 ], - "shape": 3, - "slot_index": 0 + "slot_index": 0, + "shape": 3 } ], "title": "Scale 🎭🅐🅓", @@ -82,21 +84,20 @@ } }, "widgets_values": [ - 1.1400000000000001, - "" + 1.1400000000000001 ] }, { "id": 34, "type": "ADE_MultivalDynamic", "pos": [ - 3131.5897819464126, - 658.8759046187079 + 3131.58984375, + 658.8759155273438 + ], + "size": [ + 265.1632385253906, + 58 ], - "size": { - "0": 265.1632385253906, - "1": 58 - }, "flags": {}, "order": 2, "mode": 0, @@ -104,7 +105,8 @@ { "name": "mask_optional", "type": "MASK", - "link": null + "link": null, + "shape": 7 } ], "outputs": [ @@ -127,21 +129,20 @@ } }, "widgets_values": [ - 1.1, - "" + 1.1 ] }, { "id": 35, "type": "ADE_CustomCFGSimple", "pos": [ - 3131.5897819464126, - 868.8759046187079 + 3131.58984375, + 868.8759155273438 + ], + "size": [ + 257.2469787597656, + 60.893348693847656 ], - "size": { - "0": 257.2469787597656, - "1": 60.893348693847656 - }, "flags": {}, "order": 3, "mode": 0, @@ -149,7 +150,8 @@ { "name": "cfg_extras", "type": "CFG_EXTRAS", - "link": null + "link": null, + "shape": 7 } ], "outputs": [ @@ -171,38 +173,39 @@ } }, "widgets_values": [ - 2, - "" + 2 ] }, { "id": 36, "type": "ADE_AnimateDiffSettings", "pos": [ - 3161.5897819464126, - 1218.8759046187079 + 3161.58984375, + 1218.8758544921875 + ], + "size": [ + 226.8000030517578, + 54 ], - "size": { - "0": 226.8000030517578, - "1": 54 - }, "flags": { "collapsed": true }, - "order": 38, + "order": 35, "mode": 0, "inputs": [ { "name": "pe_adjust", "type": "PE_ADJUST", "link": 53, - "slot_index": 0 + "slot_index": 0, + "shape": 7 }, { "name": "weight_adjust", "type": "WEIGHT_ADJUST", "link": 54, - "slot_index": 1 + "slot_index": 1, + "shape": 7 } ], "outputs": [ @@ -223,21 +226,19 @@ "groupcolor": "#3f789e" } }, - "widgets_values": [ - "" - ] + "widgets_values": [] }, { "id": 37, "type": "ADE_AdjustPESweetspotStretch", "pos": [ - 3131.5897819464126, - 968.8759046187079 + 3131.58984375, + 968.8759155273438 + ], + "size": [ + 253.07310485839844, + 106 ], - "size": { - "0": 253.07310485839844, - "1": 106 - }, "flags": {}, "order": 4, "mode": 0, @@ -245,7 +246,8 @@ { "name": "prev_pe_adjust", "type": "PE_ADJUST", - "link": null + "link": null, + "shape": 7 } ], "outputs": [ @@ -269,29 +271,20 @@ "widgets_values": [ 16, 18, - false, - "" + false ] }, { "id": 57, "type": "GetNode", - "pos": { - "0": 981.441162109375, - "1": 1401.961181640625, - "2": 0, - "3": 0, - "4": 0, - "5": 0, - "6": 0, - "7": 0, - "8": 0, - "9": 0 - }, - "size": { - "0": 210, - "1": 58 - }, + "pos": [ + 981.441162109375, + 1401.961181640625 + ], + "size": [ + 210, + 58 + ], "flags": {}, "order": 5, "mode": 0, @@ -310,27 +303,21 @@ "properties": {}, "widgets_values": [ "depth_maps" - ] + ], + "color": "#2a363b", + "bgcolor": "#3f5159" }, { "id": 58, "type": "GetNode", - "pos": { - "0": 961.441162109375, - "1": 1551.961181640625, - "2": 0, - "3": 0, - "4": 0, - "5": 0, - "6": 0, - "7": 0, - "8": 0, - "9": 0 - }, - "size": { - "0": 210, - "1": 58 - }, + "pos": [ + 961.441162109375, + 1551.961181640625 + ], + "size": [ + 210, + 58 + ], "flags": {}, "order": 6, "mode": 0, @@ -358,12 +345,12 @@ 1430, -4640 ], - "size": { - "0": 210, - "1": 246 - }, + "size": [ + 210, + 246 + ], "flags": {}, - "order": 61, + "order": 56, "mode": 4, "inputs": [ { @@ -372,23 +359,25 @@ "link": 95 } ], + "outputs": [], "properties": { "Node name for S&R": "PreviewImage" - } + }, + "widgets_values": [] }, { "id": 19, "type": "EmptyImage", "pos": [ - -309.8733202685141, - -894.0264396732274 + -309.8733215332031, + -894.0264282226562 + ], + "size": [ + 315, + 130 ], - "size": { - "0": 315, - "1": 130 - }, "flags": {}, - "order": 62, + "order": 57, "mode": 0, "inputs": [ { @@ -423,8 +412,8 @@ "links": [ 30 ], - "shape": 3, - "slot_index": 0 + "slot_index": 0, + "shape": 3 } ], "properties": { @@ -441,15 +430,15 @@ "id": 50, "type": "LineartStandardPreprocessor", "pos": [ - -2702.5557197546927, - -976.6574720262626 + -2702.5556640625, + -976.657470703125 + ], + "size": [ + 315, + 106 ], - "size": { - "0": 315, - "1": 106 - }, "flags": {}, - "order": 65, + "order": 61, "mode": 0, "inputs": [ { @@ -465,8 +454,8 @@ "links": [ 92 ], - "shape": 3, - "slot_index": 0 + "slot_index": 0, + "shape": 3 } ], "properties": { @@ -482,15 +471,15 @@ "id": 60, "type": "RepeatImageBatch", "pos": [ - -2335.555719754692, - -957.6574720262623 + -2335.5556640625, + -957.657470703125 + ], + "size": [ + 315, + 58 ], - "size": { - "0": 315, - "1": 58 - }, "flags": {}, - "order": 72, + "order": 68, "mode": 0, "inputs": [ { @@ -502,10 +491,10 @@ "name": "amount", "type": "INT", "link": 90, + "slot_index": 1, "widget": { "name": "amount" - }, - "slot_index": 1 + } } ], "outputs": [ @@ -515,45 +504,45 @@ "links": [ 93 ], - "shape": 3, - "slot_index": 0 + "slot_index": 0, + "shape": 3 } ], "properties": { "Node name for S&R": "RepeatImageBatch" }, "widgets_values": [ - 60 + 30 ] }, { "id": 16, "type": "RepeatImageBatch", "pos": [ - -2338.555719754692, - -667.6574720262613 + -2338.5556640625, + -667.657470703125 + ], + "size": [ + 315, + 58 ], - "size": { - "0": 315, - "1": 58 - }, "flags": {}, - "order": 73, + "order": 69, "mode": 0, "inputs": [ { "name": "image", "type": "IMAGE", - "link": 17 + "link": 311 }, { "name": "amount", "type": "INT", "link": 41, + "slot_index": 1, "widget": { "name": "amount" - }, - "slot_index": 1 + } } ], "outputs": [ @@ -563,28 +552,28 @@ "links": [ 77 ], - "shape": 3, - "slot_index": 0 + "slot_index": 0, + "shape": 3 } ], "properties": { "Node name for S&R": "RepeatImageBatch" }, "widgets_values": [ - 60 + 30 ] }, { "id": 33, "type": "ADE_AnimateDiffUniformContextOptions", "pos": [ - 3481.5897819464126, - 658.8759046187079 + 3481.58984375, + 658.8759155273438 + ], + "size": [ + 273.269775390625, + 270 ], - "size": { - "0": 273.269775390625, - "1": 270 - }, "flags": {}, "order": 7, "mode": 0, @@ -592,12 +581,14 @@ { "name": "prev_context", "type": "CONTEXT_OPTIONS", - "link": null + "link": null, + "shape": 7 }, { "name": "view_opts", "type": "VIEW_OPTS", - "link": null + "link": null, + "shape": 7 } ], "outputs": [ @@ -607,8 +598,8 @@ "links": [ 44 ], - "shape": 3, - "slot_index": 0 + "slot_index": 0, + "shape": 3 } ], "title": "Context Options 🎭🅐🅓", @@ -637,39 +628,43 @@ "id": 29, "type": "ADE_AnimateDiffSamplingSettings", "pos": [ - 3481.5897819464126, - 968.8759046187079 + 3481.58984375, + 968.8759155273438 + ], + "size": [ + 273.3500061035156, + 274 ], - "size": { - "0": 273.3500061035156, - "1": 254 - }, "flags": {}, - "order": 37, + "order": 34, "mode": 0, "inputs": [ { "name": "noise_layers", "type": "NOISE_LAYERS", "link": null, - "slot_index": 0 + "slot_index": 0, + "shape": 7 }, { "name": "iteration_opts", "type": "ITERATION_OPTS", - "link": null + "link": null, + "shape": 7 }, { "name": "custom_cfg", "type": "CUSTOM_CFG", "link": 50, - "slot_index": 2 + "slot_index": 2, + "shape": 7 }, { "name": "sigma_schedule", "type": "SIGMA_SCHEDULE", "link": 51, - "slot_index": 3 + "slot_index": 3, + "shape": 7 }, { "name": "seed_override", @@ -686,6 +681,12 @@ "widget": { "name": "seed_override" } + }, + { + "name": "image_inject", + "type": "IMAGE_INJECT", + "link": null, + "shape": 7 } ], "outputs": [ @@ -695,8 +696,8 @@ "links": [ 47 ], - "shape": 3, - "slot_index": 0 + "slot_index": 0, + "shape": 3 } ], "properties": { @@ -713,66 +714,25 @@ "comfy", 0, 0, - false, - "" + false ] }, - { - "id": 14, - "type": "DepthAnything_V2", - "pos": [ - -2688.433746544838, - -613.3686263142703 - ], - "size": { - "0": 210, - "1": 46 - }, - "flags": {}, - "order": 66, - "mode": 0, - "inputs": [ - { - "name": "da_model", - "type": "DAMODEL", - "link": 15, - "slot_index": 0 - }, - { - "name": "images", - "type": "IMAGE", - "link": 130 - } - ], - "outputs": [ - { - "name": "image", - "type": "IMAGE", - "links": [ - 17 - ], - "shape": 3, - "slot_index": 0 - } - ], - "properties": { - "Node name for S&R": "DepthAnything_V2" - } - }, { "id": 86, "type": "Note", "pos": [ - 3160.2307942589186, - 250.7002531609014 + 3160.230712890625, + 250.70025634765625 + ], + "size": [ + 210, + 58 ], - "size": { - "0": 210, - "1": 58 - }, "flags": {}, "order": 8, "mode": 0, + "inputs": [], + "outputs": [], "properties": { "text": "" }, @@ -789,18 +749,18 @@ 1562, 458 ], - "size": { - "0": 210, - "1": 46 - }, + "size": [ + 210, + 46 + ], "flags": {}, - "order": 74, + "order": 71, "mode": 0, "inputs": [ { "name": "pixels", "type": "IMAGE", - "link": 230 + "link": 303 }, { "name": "vae", @@ -815,13 +775,14 @@ "links": [ 67 ], - "shape": 3, - "slot_index": 0 + "slot_index": 0, + "shape": 3 } ], "properties": { "Node name for S&R": "VAEEncode" - } + }, + "widgets_values": [] }, { "id": 43, @@ -830,12 +791,12 @@ 1524, 612 ], - "size": { - "0": 254.40000915527344, - "1": 66 - }, + "size": [ + 254.40000915527344, + 66 + ], "flags": {}, - "order": 44, + "order": 41, "mode": 0, "inputs": [ { @@ -861,8 +822,8 @@ "links": [ 65 ], - "shape": 3, - "slot_index": 0 + "slot_index": 0, + "shape": 3 }, { "name": "CLIP", @@ -871,8 +832,8 @@ 63, 64 ], - "shape": 3, - "slot_index": 1 + "slot_index": 1, + "shape": 3 }, { "name": "show_help", @@ -883,21 +844,22 @@ ], "properties": { "Node name for S&R": "CR Apply LoRA Stack" - } + }, + "widgets_values": [] }, { "id": 44, "type": "SetLatentNoiseMask", "pos": [ - 5196.2924473208695, - 361.47099519392407 + 5196.29248046875, + 361.47100830078125 + ], + "size": [ + 210, + 46 ], - "size": { - "0": 210, - "1": 46 - }, "flags": {}, - "order": 102, + "order": 99, "mode": 0, "inputs": [ { @@ -918,27 +880,28 @@ "links": [ 68 ], - "shape": 3, - "slot_index": 0 + "slot_index": 0, + "shape": 3 } ], "properties": { "Node name for S&R": "SetLatentNoiseMask" - } + }, + "widgets_values": [] }, { "id": 64, "type": "ImageScale", "pos": [ - 4420.911603734175, - 290.661003053677 + 4420.91162109375, + 290.6610107421875 + ], + "size": [ + 315, + 130 ], - "size": { - "0": 315, - "1": 130 - }, "flags": {}, - "order": 42, + "order": 39, "mode": 0, "inputs": [ { @@ -954,8 +917,8 @@ "links": [ 98 ], - "shape": 3, - "slot_index": 0 + "slot_index": 0, + "shape": 3 } ], "properties": { @@ -972,15 +935,15 @@ "id": 40, "type": "IPAdapterUnifiedLoader", "pos": [ - 4427.911603734175, - 481.6610030536765 + 4427.91162109375, + 481.6610107421875 + ], + "size": [ + 315, + 78 ], - "size": { - "0": 315, - "1": 78 - }, "flags": {}, - "order": 68, + "order": 64, "mode": 0, "inputs": [ { @@ -991,7 +954,8 @@ { "name": "ipadapter", "type": "IPADAPTER", - "link": null + "link": null, + "shape": 7 } ], "outputs": [ @@ -1001,8 +965,8 @@ "links": [ 57 ], - "shape": 3, - "slot_index": 0 + "slot_index": 0, + "shape": 3 }, { "name": "ipadapter", @@ -1010,8 +974,8 @@ "links": [ 58 ], - "shape": 3, - "slot_index": 1 + "slot_index": 1, + "shape": 3 } ], "properties": { @@ -1028,12 +992,12 @@ 1937, 702 ], - "size": { - "0": 425.27801513671875, - "1": 180.6060791015625 - }, + "size": [ + 425.27801513671875, + 180.6060791015625 + ], "flags": {}, - "order": 57, + "order": 53, "mode": 0, "inputs": [ { @@ -1066,10 +1030,10 @@ 3114, 356 ], - "size": { - "0": 261.19134521484375, - "1": 82 - }, + "size": [ + 261.19134521484375, + 82 + ], "flags": {}, "order": 9, "mode": 0, @@ -1077,7 +1041,8 @@ { "name": "prev_motion_lora", "type": "MOTION_LORA", - "link": null + "link": null, + "shape": 7 } ], "outputs": [ @@ -1087,8 +1052,8 @@ "links": [ 45 ], - "shape": 3, - "slot_index": 0 + "slot_index": 0, + "shape": 3 } ], "title": "AnimateDiff LoRA", @@ -1102,8 +1067,7 @@ }, "widgets_values": [ "LiquidAF-0-1.safetensors", - 0.8, - "" + 0.8 ] }, { @@ -1113,10 +1077,10 @@ 3115, 498 ], - "size": { - "0": 270.3999938964844, - "1": 82 - }, + "size": [ + 270.3999938964844, + 82 + ], "flags": {}, "order": 10, "mode": 0, @@ -1124,7 +1088,8 @@ { "name": "prev_weight_adjust", "type": "WEIGHT_ADJUST", - "link": null + "link": null, + "shape": 7 } ], "outputs": [ @@ -1147,8 +1112,7 @@ }, "widgets_values": [ 1.01, - false, - "" + false ] }, { @@ -1158,13 +1122,14 @@ 1094, 453 ], - "size": { - "0": 315, - "1": 98 - }, + "size": [ + 315, + 98 + ], "flags": {}, "order": 11, "mode": 0, + "inputs": [], "outputs": [ { "name": "MODEL", @@ -1206,12 +1171,12 @@ 2524, 581 ], - "size": { - "0": 304.79998779296875, - "1": 66 - }, - "flags": {}, - "order": 69, + "size": [ + 304.79998779296875, + 66 + ], + "flags": {}, + "order": 65, "mode": 0, "inputs": [ { @@ -1228,7 +1193,8 @@ "name": "cnet_stack", "type": "CONTROL_NET_STACK", "link": 84, - "slot_index": 2 + "slot_index": 2, + "shape": 7 } ], "outputs": [ @@ -1238,8 +1204,8 @@ "links": [ 134 ], - "shape": 3, - "slot_index": 0 + "slot_index": 0, + "shape": 3 }, { "name": "CONDITIONING-", @@ -1247,8 +1213,8 @@ "links": [ 135 ], - "shape": 3, - "slot_index": 1 + "slot_index": 1, + "shape": 3 } ], "properties": { @@ -1259,13 +1225,14 @@ "groupcolor": "#3f789e" } }, + "widgets_values": [], "shape": 1 }, { "id": 88, "type": "Reroute", "pos": [ - 2860.8354071366402, + 2860.83544921875, 64 ], "size": [ @@ -1273,7 +1240,7 @@ 26 ], "flags": {}, - "order": 39, + "order": 36, "mode": 0, "inputs": [ { @@ -1301,7 +1268,7 @@ "id": 89, "type": "Reroute", "pos": [ - 2860.8354071366402, + 2860.83544921875, 105 ], "size": [ @@ -1309,7 +1276,7 @@ 26 ], "flags": {}, - "order": 77, + "order": 73, "mode": 0, "inputs": [ { @@ -1337,15 +1304,15 @@ "id": 90, "type": "Reroute", "pos": [ - 2860.8354071366402, - 143.3452987595907 + 2860.83544921875, + 143.3452911376953 ], "size": [ 75, 26 ], "flags": {}, - "order": 78, + "order": 74, "mode": 0, "inputs": [ { @@ -1381,7 +1348,7 @@ 26 ], "flags": {}, - "order": 100, + "order": 97, "mode": 0, "inputs": [ { @@ -1410,15 +1377,15 @@ "id": 100, "type": "SetLatentNoiseMask", "pos": [ - 6505.217366877503, - 369.41342322069596 + 6505.21728515625, + 369.4134216308594 + ], + "size": [ + 210, + 46 ], - "size": { - "0": 210, - "1": 46 - }, "flags": {}, - "order": 108, + "order": 105, "mode": 0, "inputs": [ { @@ -1439,13 +1406,14 @@ "links": [ 153 ], - "shape": 3, - "slot_index": 0 + "slot_index": 0, + "shape": 3 } ], "properties": { "Node name for S&R": "SetLatentNoiseMask" - } + }, + "widgets_values": [] }, { "id": 17, @@ -1454,12 +1422,12 @@ -3900, -866 ], - "size": { - "0": 210, - "1": 86 - }, + "size": [ + 210, + 86 + ], "flags": {}, - "order": 40, + "order": 37, "mode": 0, "inputs": [ { @@ -1476,15 +1444,15 @@ 122, 128 ], - "shape": 3, - "slot_index": 0 + "slot_index": 0, + "shape": 3 }, { "name": "700 width", "type": "INT", "links": null, - "shape": 3, - "slot_index": 1 + "slot_index": 1, + "shape": 3 }, { "name": "1050 height", @@ -1501,7 +1469,8 @@ ], "properties": { "Node name for S&R": "GetImageSizeAndCount" - } + }, + "widgets_values": [] }, { "id": 11, @@ -1510,12 +1479,12 @@ -3251, -611 ], - "size": { - "0": 315, - "1": 58 - }, + "size": [ + 315, + 58 + ], "flags": {}, - "order": 64, + "order": 60, "mode": 0, "inputs": [ { @@ -1539,15 +1508,15 @@ "links": [ 110 ], - "shape": 3, - "slot_index": 0 + "slot_index": 0, + "shape": 3 } ], "properties": { "Node name for S&R": "RepeatImageBatch" }, "widgets_values": [ - 60 + 30 ] }, { @@ -1557,12 +1526,12 @@ -3652, -898 ], - "size": { - "0": 310.7047424316406, - "1": 238 - }, + "size": [ + 310.7047424316406, + 238 + ], "flags": {}, - "order": 52, + "order": 48, "mode": 0, "inputs": [ { @@ -1573,7 +1542,8 @@ { "name": "get_image_size", "type": "IMAGE", - "link": null + "link": null, + "shape": 7 }, { "name": "width_input", @@ -1598,10 +1568,10 @@ "type": "IMAGE", "links": [ 129, - 130 + 310 ], - "shape": 3, - "slot_index": 0 + "slot_index": 0, + "shape": 3 }, { "name": "width", @@ -1637,12 +1607,12 @@ -3691, -1010 ], - "size": { - "0": 315, - "1": 58 - }, + "size": [ + 315, + 58 + ], "flags": {}, - "order": 46, + "order": 45, "mode": 0, "inputs": [ { @@ -1666,36 +1636,28 @@ "links": [ 164 ], - "shape": 3, - "slot_index": 0 + "slot_index": 0, + "shape": 3 } ], "properties": { "Node name for S&R": "RepeatImageBatch" }, "widgets_values": [ - 60 + 30 ] }, { "id": 104, "type": "SetNode", - "pos": { - "0": -3212, - "1": -997, - "2": 0, - "3": 0, - "4": 0, - "5": 0, - "6": 0, - "7": 0, - "8": 0, - "9": 0 - }, - "size": { - "0": 210, - "1": 58 - }, + "pos": [ + -3212, + -997 + ], + "size": [ + 210, + 58 + ], "flags": {}, "order": 58, "mode": 0, @@ -1719,29 +1681,23 @@ }, "widgets_values": [ "init_img" - ] + ], + "color": "#2a363b", + "bgcolor": "#3f5159" }, { "id": 76, "type": "SetNode", - "pos": { - "0": -3106, - "1": -475, - "2": 0, - "3": 0, - "4": 0, - "5": 0, - "6": 0, - "7": 0, - "8": 0, - "9": 0 - }, - "size": { - "0": 210, - "1": 58 - }, + "pos": [ + -3106, + -475 + ], + "size": [ + 210, + 58 + ], "flags": {}, - "order": 71, + "order": 67, "mode": 0, "inputs": [ { @@ -1763,29 +1719,23 @@ }, "widgets_values": [ "init_images_resize" - ] + ], + "color": "#2a363b", + "bgcolor": "#3f5159" }, { "id": 52, "type": "SetNode", - "pos": { - "0": -1992, - "1": -966, - "2": 0, - "3": 0, - "4": 0, - "5": 0, - "6": 0, - "7": 0, - "8": 0, - "9": 0 - }, - "size": { - "0": 210, - "1": 58 - }, + "pos": [ + -1992, + -966 + ], + "size": [ + 210, + 58 + ], "flags": {}, - "order": 79, + "order": 75, "mode": 0, "inputs": [ { @@ -1807,7 +1757,9 @@ }, "widgets_values": [ "lineart" - ] + ], + "color": "#2a363b", + "bgcolor": "#3f5159" }, { "id": 115, @@ -1816,13 +1768,15 @@ -2340, -859 ], - "size": { - "0": 363.1609191894531, - "1": 148.97213745117188 - }, + "size": [ + 363.1609191894531, + 148.97213745117188 + ], "flags": {}, "order": 12, "mode": 0, + "inputs": [], + "outputs": [], "properties": { "text": "" }, @@ -1836,16 +1790,18 @@ "id": 72, "type": "Note", "pos": [ - -326.87332026851414, - -1087.026439673227 + -326.8733215332031, + -1087.0264892578125 + ], + "size": [ + 357.3516845703125, + 135.6949462890625 ], - "size": { - "0": 357.3516845703125, - "1": 135.6949462890625 - }, "flags": {}, "order": 13, "mode": 0, + "inputs": [], + "outputs": [], "properties": { "text": "" }, @@ -1862,13 +1818,15 @@ 1490, 809 ], - "size": { - "0": 380.91632080078125, - "1": 230.8916015625 - }, + "size": [ + 380.91632080078125, + 230.8916015625 + ], "flags": {}, "order": 14, "mode": 0, + "inputs": [], + "outputs": [], "properties": { "text": "" }, @@ -1890,7 +1848,7 @@ 26 ], "flags": {}, - "order": 82, + "order": 78, "mode": 0, "inputs": [ { @@ -1927,7 +1885,7 @@ 26 ], "flags": {}, - "order": 83, + "order": 79, "mode": 0, "inputs": [ { @@ -1956,16 +1914,18 @@ "id": 125, "type": "Note", "pos": [ - 4337.8690841450125, - 699.6818760329338 + 4337.869140625, + 699.681884765625 + ], + "size": [ + 336.1888122558594, + 206.84153747558594 ], - "size": { - "0": 336.1888122558594, - "1": 206.84153747558594 - }, "flags": {}, "order": 15, "mode": 0, + "inputs": [], + "outputs": [], "properties": { "text": "" }, @@ -1982,12 +1942,12 @@ 4798, 303 ], - "size": { - "0": 315, - "1": 278 - }, + "size": [ + 315, + 278 + ], "flags": {}, - "order": 76, + "order": 72, "mode": 0, "inputs": [ { @@ -2009,17 +1969,20 @@ { "name": "image_negative", "type": "IMAGE", - "link": null + "link": null, + "shape": 7 }, { "name": "attn_mask", "type": "MASK", - "link": null + "link": null, + "shape": 7 }, { "name": "clip_vision", "type": "CLIP_VISION", - "link": null + "link": null, + "shape": 7 } ], "outputs": [ @@ -2030,8 +1993,8 @@ 66, 112 ], - "shape": 3, - "slot_index": 0 + "slot_index": 0, + "shape": 3 } ], "properties": { @@ -2050,16 +2013,17 @@ "id": 10, "type": "LoadImage", "pos": [ - -4271.1294444297155, - -976.9201161093288 + -4271.12939453125, + -976.9201049804688 + ], + "size": [ + 315, + 314 ], - "size": { - "0": 315, - "1": 314 - }, "flags": {}, "order": 16, "mode": 0, + "inputs": [], "outputs": [ { "name": "IMAGE", @@ -2068,8 +2032,8 @@ 18, 163 ], - "shape": 3, - "slot_index": 0 + "slot_index": 0, + "shape": 3 }, { "name": "MASK", @@ -2090,15 +2054,15 @@ "id": 122, "type": "FeatureMixer", "pos": [ - -72.21454028302455, - -5668.483763498456 + -72.21453857421875, + -5668.48388671875 + ], + "size": [ + 367.79998779296875, + 342 ], - "size": { - "0": 367.79998779296875, - "1": 342 - }, "flags": {}, - "order": 47, + "order": 42, "mode": 4, "inputs": [ { @@ -2114,8 +2078,8 @@ "links": [ 199 ], - "shape": 3, - "slot_index": 0 + "slot_index": 0, + "shape": 3 }, { "name": "FEATURE_VISUALIZATION", @@ -2123,8 +2087,8 @@ "links": [ 196 ], - "shape": 3, - "slot_index": 1 + "slot_index": 1, + "shape": 3 } ], "properties": { @@ -2148,22 +2112,14 @@ { "id": 77, "type": "GetNode", - "pos": { - "0": 1038, - "1": 291, - "2": 0, - "3": 0, - "4": 0, - "5": 0, - "6": 0, - "7": 0, - "8": 0, - "9": 0 - }, - "size": { - "0": 210, - "1": 58 - }, + "pos": [ + 1038, + 291 + ], + "size": [ + 210, + 58 + ], "flags": {}, "order": 17, "mode": 0, @@ -2174,7 +2130,7 @@ "type": "IMAGE", "links": [ 220, - 228 + 300 ], "slot_index": 0 } @@ -2186,121 +2142,60 @@ ] }, { - "id": 133, - "type": "MaskToImage", + "id": 68, + "type": "Note", "pos": [ - 1292, - -368 + -4267.12939453125, + -555.9201049804688 + ], + "size": [ + 372.2613220214844, + 154.43922424316406 ], - "size": { - "0": 210, - "1": 26 - }, "flags": {}, - "order": 92, + "order": 18, "mode": 0, - "inputs": [ - { - "name": "mask", - "type": "MASK", - "link": 215 - } - ], - "outputs": [ - { - "name": "IMAGE", - "type": "IMAGE", - "links": [ - 213, - 222 - ], - "shape": 3, - "slot_index": 0 - } - ], + "inputs": [], + "outputs": [], "properties": { - "Node name for S&R": "MaskToImage" - } - }, - { - "id": 139, - "type": "Image Batch", - "pos": [ - 1738, - -309 - ], - "size": { - "0": 210, - "1": 86 + "text": "" }, - "flags": {}, - "order": 95, - "mode": 0, - "inputs": [ - { - "name": "images_a", - "type": "IMAGE", - "link": 222 - }, - { - "name": "images_b", - "type": "IMAGE", - "link": 223 - }, - { - "name": "images_c", - "type": "IMAGE", - "link": null - }, - { - "name": "images_d", - "type": "IMAGE", - "link": null - } - ], - "outputs": [ - { - "name": "image", - "type": "IMAGE", - "links": [ - 225 - ], - "shape": 3, - "slot_index": 0 - } + "widgets_values": [ + "1. Downscale the input image so the KSampler doesnt explode, but downscale another copy of the image LESS. This is specifically for the depth maps, to avoid losing detail in the maps.\n\nThen since we are dealing with a single image, we replicate it. Set that in num frames below.\n\nTo repeat the last frame and mask set extend last frame" ], - "properties": { - "Node name for S&R": "Image Batch" - } + "color": "#432", + "bgcolor": "#653" }, { - "id": 140, + "id": 136, "type": "RepeatImageBatch", "pos": [ - 1288, - -153 + 1290, + -60 ], - "size": { - "0": 315, - "1": 58 + "size": [ + 315, + 58 + ], + "flags": { + "collapsed": false }, - "flags": {}, - "order": 94, + "order": 49, "mode": 0, "inputs": [ { "name": "image", "type": "IMAGE", - "link": 232 + "link": 226 }, { "name": "amount", "type": "INT", - "link": 233, + "link": 218, + "slot_index": 1, "widget": { "name": "amount" - }, - "slot_index": 1 + } } ], "outputs": [ @@ -2308,127 +2203,17 @@ "name": "IMAGE", "type": "IMAGE", "links": [ - 223 + 301 ], - "shape": 3, - "slot_index": 0 + "slot_index": 0, + "shape": 3 } ], "properties": { "Node name for S&R": "RepeatImageBatch" }, "widgets_values": [ - 30 - ] - }, - { - "id": 137, - "type": "PrimitiveNode", - "pos": [ - -4241, - -198 - ], - "size": { - "0": 210, - "1": 82 - }, - "flags": {}, - "order": 18, - "mode": 0, - "outputs": [ - { - "name": "INT", - "type": "INT", - "links": [ - 218, - 233 - ], - "slot_index": 0, - "widget": { - "name": "amount" - } - } - ], - "title": "Extend last frame", - "properties": { - "Run widget replace on values": false - }, - "widgets_values": [ - 30, - "fixed" - ] - }, - { - "id": 68, - "type": "Note", - "pos": [ - -4267.1294444297155, - -555.9201161093287 - ], - "size": { - "0": 372.2613220214844, - "1": 154.43922424316406 - }, - "flags": {}, - "order": 19, - "mode": 0, - "properties": { - "text": "" - }, - "widgets_values": [ - "1. Downscale the input image so the KSampler doesnt explode, but downscale another copy of the image LESS. This is specifically for the depth maps, to avoid losing detail in the maps.\n\nThen since we are dealing with a single image, we replicate it. Set that in num frames below.\n\nTo repeat the last frame and mask set extend last frame" - ], - "color": "#432", - "bgcolor": "#653" - }, - { - "id": 136, - "type": "RepeatImageBatch", - "pos": [ - 1290, - -60 - ], - "size": { - "0": 315, - "1": 58 - }, - "flags": { - "collapsed": false - }, - "order": 53, - "mode": 0, - "inputs": [ - { - "name": "image", - "type": "IMAGE", - "link": 226 - }, - { - "name": "amount", - "type": "INT", - "link": 218, - "widget": { - "name": "amount" - }, - "slot_index": 1 - } - ], - "outputs": [ - { - "name": "IMAGE", - "type": "IMAGE", - "links": [ - 229 - ], - "shape": 3, - "slot_index": 0 - } - ], - "properties": { - "Node name for S&R": "RepeatImageBatch" - }, - "widgets_values": [ - 30 + 16 ] }, { @@ -2438,12 +2223,12 @@ 1286, 39 ], - "size": { - "0": 315, - "1": 106 - }, + "size": [ + 315, + 106 + ], "flags": {}, - "order": 41, + "order": 38, "mode": 0, "inputs": [ { @@ -2459,8 +2244,8 @@ "links": [ 226 ], - "shape": 3, - "slot_index": 0 + "slot_index": 0, + "shape": 3 } ], "properties": { @@ -2476,16 +2261,17 @@ "id": 41, "type": "LoadImage", "pos": [ - 4072.911603734174, - 274.6610030536769 + 4072.91162109375, + 274.6610107421875 + ], + "size": [ + 315, + 314.0000305175781 ], - "size": { - "0": 315, - "1": 314.0000305175781 - }, "flags": {}, - "order": 20, + "order": 19, "mode": 0, + "inputs": [], "outputs": [ { "name": "IMAGE", @@ -2493,8 +2279,8 @@ "links": [ 97 ], - "shape": 3, - "slot_index": 0 + "slot_index": 0, + "shape": 3 }, { "name": "MASK", @@ -2516,20 +2302,21 @@ "type": "ControlNetLoaderAdvanced", "pos": [ 984, - 1273.8269519976366 + 1273.826904296875 + ], + "size": [ + 327.6000061035156, + 58 ], - "size": { - "0": 327.6000061035156, - "1": 58 - }, "flags": {}, - "order": 21, + "order": 20, "mode": 0, "inputs": [ { - "name": "timestep_keyframe", + "name": "tk_optional", "type": "TIMESTEP_KEYFRAME", - "link": null + "link": null, + "shape": 7 } ], "outputs": [ @@ -2559,20 +2346,21 @@ "type": "ControlNetLoaderAdvanced", "pos": [ 1339, - 1281.8269519976366 + 1281.826904296875 + ], + "size": [ + 327.6000061035156, + 58 ], - "size": { - "0": 327.6000061035156, - "1": 58 - }, "flags": {}, - "order": 22, + "order": 21, "mode": 0, "inputs": [ { - "name": "timestep_keyframe", + "name": "tk_optional", "type": "TIMESTEP_KEYFRAME", - "link": null + "link": null, + "shape": 7 } ], "outputs": [ @@ -2609,7 +2397,7 @@ 26 ], "flags": {}, - "order": 99, + "order": 96, "mode": 0, "inputs": [ { @@ -2640,12 +2428,12 @@ 1942, 483 ], - "size": { - "0": 422.84503173828125, - "1": 164.31304931640625 - }, + "size": [ + 422.84503173828125, + 164.31304931640625 + ], "flags": {}, - "order": 56, + "order": 52, "mode": 0, "inputs": [ { @@ -2678,18 +2466,19 @@ 1110, 683 ], - "size": { - "0": 315, - "1": 342 - }, + "size": [ + 315, + 342 + ], "flags": {}, - "order": 23, + "order": 22, "mode": 0, "inputs": [ { "name": "lora_stack", "type": "LORA_STACK", - "link": null + "link": null, + "shape": 7 } ], "outputs": [ @@ -2699,8 +2488,8 @@ "links": [ 62 ], - "shape": 3, - "slot_index": 0 + "slot_index": 0, + "shape": 3 }, { "name": "show_help", @@ -2727,83 +2516,6 @@ 1 ] }, - { - "id": 15, - "type": "DownloadAndLoadDepthAnythingV2Model", - "pos": [ - -2760, - -789 - ], - "size": { - "0": 315, - "1": 58 - }, - "flags": {}, - "order": 24, - "mode": 0, - "outputs": [ - { - "name": "da_v2_model", - "type": "DAMODEL", - "links": [ - 15, - 234 - ], - "shape": 3, - "slot_index": 0 - } - ], - "properties": { - "Node name for S&R": "DownloadAndLoadDepthAnythingV2Model" - }, - "widgets_values": [ - "depth_anything_v2_vitl_fp32.safetensors" - ] - }, - { - "id": 146, - "type": "SetNode", - "pos": { - "0": -2391.599365234375, - "1": -384.9447021484375, - "2": 0, - "3": 0, - "4": 0, - "5": 0, - "6": 0, - "7": 0, - "8": 0, - "9": 0 - }, - "size": { - "0": 210, - "1": 58 - }, - "flags": {}, - "order": 45, - "mode": 0, - "inputs": [ - { - "name": "DAMODEL", - "type": "DAMODEL", - "link": 234 - } - ], - "outputs": [ - { - "name": "*", - "type": "*", - "links": null - } - ], - "title": "Set_DA_MODEL", - "properties": { - "previousName": "DA_MODEL" - }, - "widgets_values": [ - "DA_MODEL" - ] - }, { "id": 8, "type": "VAEDecode", @@ -2811,12 +2523,12 @@ 5898, 437 ], - "size": { - "0": 210, - "1": 46 - }, + "size": [ + 210, + 46 + ], "flags": {}, - "order": 105, + "order": 102, "mode": 0, "inputs": [ { @@ -2842,7 +2554,8 @@ ], "properties": { "Node name for S&R": "VAEDecode" - } + }, + "widgets_values": [] }, { "id": 79, @@ -2851,12 +2564,12 @@ 5920, 273 ], - "size": { - "0": 315, - "1": 82 - }, + "size": [ + 315, + 82 + ], "flags": {}, - "order": 106, + "order": 103, "mode": 0, "inputs": [ { @@ -2872,8 +2585,8 @@ "links": [ 152 ], - "shape": 3, - "slot_index": 0 + "slot_index": 0, + "shape": 3 } ], "properties": { @@ -2884,45 +2597,6 @@ 1.6500000000000001 ] }, - { - "id": 27, - "type": "PrimitiveNode", - "pos": [ - -4242, - -327 - ], - "size": { - "0": 210, - "1": 82 - }, - "flags": {}, - "order": 25, - "mode": 0, - "outputs": [ - { - "name": "INT", - "type": "INT", - "links": [ - 41, - 42, - 90, - 162 - ], - "slot_index": 0, - "widget": { - "name": "amount" - } - } - ], - "title": "Num frames", - "properties": { - "Run widget replace on values": false - }, - "widgets_values": [ - 60, - "fixed" - ] - }, { "id": 91, "type": "Reroute", @@ -2935,7 +2609,7 @@ 26 ], "flags": {}, - "order": 50, + "order": 46, "mode": 0, "inputs": [ { @@ -2961,106 +2635,42 @@ } }, { - "id": 148, - "type": "DepthAnything_V2", + "id": 13, + "type": "VHS_VideoCombine", "pos": [ - 9728.386098469018, - 266.75074584506234 + 6206, + 403 + ], + "size": [ + 214.7587890625, + 640.13818359375 ], - "size": { - "0": 210, - "1": 46 - }, "flags": {}, - "order": 117, + "order": 104, "mode": 0, "inputs": [ - { - "name": "da_model", - "type": "DAMODEL", - "link": 235 - }, { "name": "images", "type": "IMAGE", - "link": 248 - } - ], - "outputs": [ - { - "name": "image", - "type": "IMAGE", - "links": [ - 237, - 239 - ], - "shape": 3, - "slot_index": 0 - } - ], - "properties": { - "Node name for S&R": "DepthAnything_V2" - } - }, - { - "id": 154, - "type": "PreviewImage", - "pos": [ - 9946.386098469018, - 637.7507458450624 - ], - "size": { - "0": 481.87567138671875, - "1": 246 - }, - "flags": {}, - "order": 121, - "mode": 0, - "inputs": [ - { - "name": "images", - "type": "IMAGE", - "link": 250 - } - ], - "properties": { - "Node name for S&R": "PreviewImage" - } - }, - { - "id": 13, - "type": "VHS_VideoCombine", - "pos": [ - 6206, - 403 - ], - "size": [ - 210, - 609 - ], - "flags": {}, - "order": 107, - "mode": 0, - "inputs": [ - { - "name": "images", - "type": "IMAGE", - "link": 13 - }, + "link": 13 + }, { "name": "audio", "type": "AUDIO", - "link": null + "link": null, + "shape": 7 }, { "name": "meta_batch", "type": "VHS_BatchManager", - "link": null + "link": null, + "shape": 7 }, { "name": "vae", "type": "VAE", - "link": null + "link": null, + "shape": 7 } ], "outputs": [ @@ -3082,17 +2692,20 @@ "pix_fmt": "yuv420p", "crf": 19, "save_metadata": true, + "trim_to_audio": false, "pingpong": false, "save_output": true, "videopreview": { "hidden": false, "paused": false, "params": { - "filename": "AnimateDiff_03259.mp4", + "filename": "AnimateDiff_02423.mp4", "subfolder": "", "type": "output", "format": "video/h264-mp4", - "frame_rate": 20 + "frame_rate": 20, + "workflow": "AnimateDiff_02423.png", + "fullpath": "/runpod-volume/ComfyUI_rv/output/AnimateDiff_02423.mp4" } } } @@ -3101,16 +2714,17 @@ "id": 113, "type": "UpscaleModelLoader", "pos": [ - 8493.811170891195, - 363.5270008378391 + 8493.8115234375, + 363.5270080566406 + ], + "size": [ + 315, + 58 ], - "size": { - "0": 315, - "1": 58 - }, "flags": {}, - "order": 26, + "order": 23, "mode": 4, + "inputs": [], "outputs": [ { "name": "UPSCALE_MODEL", @@ -3135,12 +2749,12 @@ 5463, 294 ], - "size": { - "0": 315, - "1": 262 - }, + "size": [ + 315, + 262 + ], "flags": {}, - "order": 104, + "order": 101, "mode": 0, "inputs": [ { @@ -3188,74 +2802,19 @@ 1 ] }, - { - "id": 47, - "type": "Control Net Stacker", - "pos": [ - 1346, - 1457.8269519976366 - ], - "size": { - "0": 315, - "1": 146 - }, - "flags": {}, - "order": 43, - "mode": 0, - "inputs": [ - { - "name": "control_net", - "type": "CONTROL_NET", - "link": 76, - "slot_index": 0 - }, - { - "name": "image", - "type": "IMAGE", - "link": 81 - }, - { - "name": "cnet_stack", - "type": "CONTROL_NET_STACK", - "link": null - } - ], - "outputs": [ - { - "name": "CNET_STACK", - "type": "CONTROL_NET_STACK", - "links": [ - 83 - ], - "shape": 3, - "slot_index": 0 - } - ], - "properties": { - "Node name for S&R": "Control Net Stacker" - }, - "widgets_values": [ - 0.47000000000000003, - 0, - 0.5 - ], - "color": "#223322", - "bgcolor": "#335533", - "shape": 1 - }, { "id": 55, "type": "Control Net Stacker", "pos": [ 1776, - 1381.8269519976366 + 1381.826904296875 + ], + "size": [ + 315, + 146 ], - "size": { - "0": 315, - "1": 146 - }, "flags": {}, - "order": 54, + "order": 50, "mode": 0, "inputs": [ { @@ -3272,7 +2831,8 @@ { "name": "cnet_stack", "type": "CONTROL_NET_STACK", - "link": 83 + "link": 83, + "shape": 7 } ], "outputs": [ @@ -3282,8 +2842,8 @@ "links": [ 84 ], - "shape": 3, - "slot_index": 0 + "slot_index": 0, + "shape": 3 } ], "properties": { @@ -3302,15 +2862,15 @@ "id": 28, "type": "ADE_AnimateDiffLoaderGen1", "pos": [ - 3481.5897819464126, - 358.87590461870786 + 3481.58984375, + 358.87591552734375 + ], + "size": [ + 271.7644958496094, + 242 ], - "size": { - "0": 271.7644958496094, - "1": 242 - }, "flags": {}, - "order": 55, + "order": 51, "mode": 0, "inputs": [ { @@ -3322,47 +2882,55 @@ "name": "context_options", "type": "CONTEXT_OPTIONS", "link": 44, - "slot_index": 1 + "slot_index": 1, + "shape": 7 }, { "name": "motion_lora", "type": "MOTION_LORA", "link": 45, - "slot_index": 2 + "slot_index": 2, + "shape": 7 }, { "name": "ad_settings", "type": "AD_SETTINGS", "link": 46, - "slot_index": 3 + "slot_index": 3, + "shape": 7 }, { "name": "ad_keyframes", "type": "AD_KEYFRAMES", - "link": null + "link": null, + "shape": 7 }, { "name": "sample_settings", "type": "SAMPLE_SETTINGS", "link": 47, - "slot_index": 5 + "slot_index": 5, + "shape": 7 }, { "name": "scale_multival", "type": "MULTIVAL", "link": 48, - "slot_index": 6 + "slot_index": 6, + "shape": 7 }, { "name": "effect_multival", "type": "MULTIVAL", "link": 49, - "slot_index": 7 + "slot_index": 7, + "shape": 7 }, { "name": "per_block", "type": "PER_BLOCK", - "link": null + "link": null, + "shape": 7 } ], "outputs": [ @@ -3372,8 +2940,8 @@ "links": [ 56 ], - "shape": 3, - "slot_index": 0 + "slot_index": 0, + "shape": 3 } ], "properties": { @@ -3401,7 +2969,7 @@ 26 ], "flags": {}, - "order": 63, + "order": 59, "mode": 0, "inputs": [ { @@ -3437,7 +3005,7 @@ 26 ], "flags": {}, - "order": 86, + "order": 82, "mode": 0, "inputs": [ { @@ -3473,7 +3041,7 @@ 26 ], "flags": {}, - "order": 87, + "order": 83, "mode": 0, "inputs": [ { @@ -3501,15 +3069,15 @@ "id": 78, "type": "KSampler", "pos": [ - 6735.217366877503, - 289.41342322069596 + 6735.21728515625, + 289.4134216308594 + ], + "size": [ + 315, + 262 ], - "size": { - "0": 315, - "1": 262 - }, "flags": {}, - "order": 109, + "order": 106, "mode": 0, "inputs": [ { @@ -3568,7 +3136,7 @@ 26 ], "flags": {}, - "order": 97, + "order": 94, "mode": 0, "inputs": [ { @@ -3597,20 +3165,20 @@ 2027, -354 ], - "size": { - "0": 315, - "1": 150 - }, + "size": [ + 315, + 150 + ], "flags": { "collapsed": false }, - "order": 96, + "order": 93, "mode": 0, "inputs": [ { "name": "image", "type": "IMAGE", - "link": 225 + "link": 306 } ], "outputs": [ @@ -3621,8 +3189,8 @@ 217, 270 ], - "shape": 3, - "slot_index": 0 + "slot_index": 0, + "shape": 3 }, { "name": "IMAGE", @@ -3644,24 +3212,16 @@ { "id": 168, "type": "SetNode", - "pos": { - "0": 2392.9833984375, - "1": -244.07666015625, - "2": 0, - "3": 0, - "4": 0, - "5": 0, - "6": 0, - "7": 0, - "8": 0, - "9": 0 - }, - "size": { - "0": 210, - "1": 58 - }, + "pos": [ + 2392.9833984375, + -244.07666015625 + ], + "size": [ + 210, + 58 + ], "flags": {}, - "order": 98, + "order": 95, "mode": 0, "inputs": [ { @@ -3686,86 +3246,9 @@ }, "widgets_values": [ "depth_chamber" - ] - }, - { - "id": 82, - "type": "ImageResizeKJ", - "pos": [ - -3662, - -585 - ], - "size": { - "0": 310.7047424316406, - "1": 238 - }, - "flags": {}, - "order": 51, - "mode": 0, - "inputs": [ - { - "name": "image", - "type": "IMAGE", - "link": 122 - }, - { - "name": "get_image_size", - "type": "IMAGE", - "link": null - }, - { - "name": "width_input", - "type": "INT", - "link": null, - "widget": { - "name": "width_input" - } - }, - { - "name": "height_input", - "type": "INT", - "link": null, - "widget": { - "name": "height_input" - } - } - ], - "outputs": [ - { - "name": "IMAGE", - "type": "IMAGE", - "links": [ - 126 - ], - "shape": 3, - "slot_index": 0 - }, - { - "name": "width", - "type": "INT", - "links": null, - "shape": 3 - }, - { - "name": "height", - "type": "INT", - "links": null, - "shape": 3 - } ], - "properties": { - "Node name for S&R": "ImageResizeKJ" - }, - "widgets_values": [ - 960, - 960, - "lanczos", - true, - 2, - 0, - 0, - "disabled" - ] + "color": "#1c5715", + "bgcolor": "#1f401b" }, { "id": 99, @@ -3779,7 +3262,7 @@ 26 ], "flags": {}, - "order": 101, + "order": 98, "mode": 0, "inputs": [ { @@ -3808,15 +3291,15 @@ "id": 80, "type": "VAEDecode", "pos": [ - 7092.217366877503, - 294.41342322069596 + 7092.21728515625, + 294.4134216308594 + ], + "size": [ + 210, + 46 ], - "size": { - "0": 210, - "1": 46 - }, "flags": {}, - "order": 110, + "order": 107, "mode": 0, "inputs": [ { @@ -3842,7 +3325,8 @@ ], "properties": { "Node name for S&R": "VAEDecode" - } + }, + "widgets_values": [] }, { "id": 172, @@ -3856,7 +3340,7 @@ 26 ], "flags": {}, - "order": 103, + "order": 100, "mode": 0, "inputs": [ { @@ -3881,59 +3365,18 @@ } }, { - "id": 131, - "type": "ImageInterval", + "id": 121, + "type": "TimeFeatureNode", "pos": [ - 1292, - -306 + -449.21453857421875, + -5524.48388671875 ], - "size": { - "0": 315, - "1": 106 - }, - "flags": {}, - "order": 93, - "mode": 0, - "inputs": [ - { - "name": "image", - "type": "IMAGE", - "link": 213 - } - ], - "outputs": [ - { - "name": "IMAGE", - "type": "IMAGE", - "links": [ - 232 - ], - "shape": 3, - "slot_index": 0 - } - ], - "properties": { - "Node name for S&R": "ImageInterval" - }, - "widgets_values": [ - 1, - 100000, - 0 - ] - }, - { - "id": 121, - "type": "TimeFeatureNode", - "pos": [ - -449.21454028302617, - -5524.483763498457 + "size": [ + 317.4000244140625, + 222 ], - "size": { - "0": 317.4000244140625, - "1": 150 - }, "flags": {}, - "order": 27, + "order": 24, "mode": 4, "inputs": [ { @@ -3949,8 +3392,8 @@ "links": [ 195 ], - "shape": 3, - "slot_index": 0 + "slot_index": 0, + "shape": 3 }, { "name": "FEATURE_PIPE", @@ -3958,8 +3401,8 @@ "links": [ 193 ], - "shape": 3, - "slot_index": 1 + "slot_index": 1, + "shape": 3 } ], "properties": { @@ -3969,6 +3412,9 @@ 30, "smooth", 0.4, + 0, + 512, + 30, 0 ] }, @@ -3976,15 +3422,15 @@ "id": 123, "type": "PreviewImage", "pos": [ - 446.7854597169757, - -5708.483763498455 + 446.78546142578125, + -5708.48388671875 + ], + "size": [ + 443.01776123046875, + 260.46453857421875 ], - "size": { - "0": 443.01776123046875, - "1": 260.46453857421875 - }, "flags": {}, - "order": 60, + "order": 55, "mode": 4, "inputs": [ { @@ -3993,23 +3439,25 @@ "link": 196 } ], + "outputs": [], "properties": { "Node name for S&R": "PreviewImage" - } + }, + "widgets_values": [] }, { "id": 69, "type": "FlexMaskDepthChamber", "pos": [ - 487.78545971697525, - -5416.483763498458 + 487.78546142578125, + -5416.48388671875 + ], + "size": [ + 344.3999938964844, + 334 ], - "size": { - "0": 344.3999938964844, - "1": 310 - }, "flags": {}, - "order": 59, + "order": 54, "mode": 4, "inputs": [ { @@ -4018,14 +3466,15 @@ "link": null }, { - "name": "feature", - "type": "FEATURE", + "name": "depth_map", + "type": "IMAGE", "link": 199 }, { - "name": "feature_pipe", - "type": "FEATURE_PIPE", - "link": 193 + "name": "opt_feature", + "type": "FEATURE", + "link": 193, + "shape": 7 }, { "name": "depth_map", @@ -4038,8 +3487,8 @@ "name": "MASK", "type": "MASK", "links": [], - "shape": 3, - "slot_index": 0 + "slot_index": 0, + "shape": 3 } ], "properties": { @@ -4054,7 +3503,8 @@ 1, 0.66, "both", - "move_back" + "move_back", + 0 ] }, { @@ -4064,12 +3514,12 @@ 127, -4746 ], - "size": { - "0": 344.3999938964844, - "1": 310 - }, + "size": [ + 344.3999938964844, + 334 + ], "flags": {}, - "order": 28, + "order": 25, "mode": 4, "inputs": [ { @@ -4078,14 +3528,15 @@ "link": null }, { - "name": "feature", - "type": "FEATURE", + "name": "depth_map", + "type": "IMAGE", "link": null }, { - "name": "feature_pipe", - "type": "FEATURE_PIPE", - "link": null + "name": "opt_feature", + "type": "FEATURE", + "link": null, + "shape": 7 }, { "name": "depth_map", @@ -4098,8 +3549,8 @@ "name": "MASK", "type": "MASK", "links": [], - "shape": 3, - "slot_index": 0 + "slot_index": 0, + "shape": 3 } ], "properties": { @@ -4114,7 +3565,8 @@ 0.12, 0.21, "both", - "expand" + "expand", + 0 ] }, { @@ -4124,12 +3576,12 @@ 610, -4500 ], - "size": { - "0": 317.4000244140625, - "1": 150 - }, + "size": [ + 317.4000244140625, + 222 + ], "flags": {}, - "order": 29, + "order": 26, "mode": 4, "inputs": [ { @@ -4145,15 +3597,15 @@ "links": [ 94 ], - "shape": 3, - "slot_index": 0 + "slot_index": 0, + "shape": 3 }, { "name": "FEATURE_PIPE", "type": "FEATURE_PIPE", "links": [], - "shape": 3, - "slot_index": 1 + "slot_index": 1, + "shape": 3 } ], "properties": { @@ -4163,6 +3615,9 @@ 20, "bounce", 0.5, + 0, + 512, + 30, 0 ] }, @@ -4173,12 +3628,12 @@ 1010, -4620 ], - "size": { - "0": 367.79998779296875, - "1": 342 - }, + "size": [ + 367.79998779296875, + 342 + ], "flags": {}, - "order": 48, + "order": 43, "mode": 4, "inputs": [ { @@ -4192,8 +3647,8 @@ "name": "FEATURE", "type": "FEATURE", "links": [], - "shape": 3, - "slot_index": 0 + "slot_index": 0, + "shape": 3 }, { "name": "FEATURE_VISUALIZATION", @@ -4201,8 +3656,8 @@ "links": [ 95 ], - "shape": 3, - "slot_index": 1 + "slot_index": 1, + "shape": 3 } ], "properties": { @@ -4227,16 +3682,18 @@ "id": 71, "type": "Note", "pos": [ - -1428.9870702311473, - -1013.2101283245443 + -1428.987060546875, + -1013.2101440429688 + ], + "size": [ + 344.94537353515625, + 142.8384552001953 ], - "size": { - "0": 344.94537353515625, - "1": 142.8384552001953 - }, "flags": {}, - "order": 30, + "order": 27, "mode": 0, + "inputs": [], + "outputs": [], "properties": { "text": "" }, @@ -4247,124 +3704,18 @@ "bgcolor": "#653" }, { - "id": 128, - "type": "TimeFeatureNode", + "id": 74, + "type": "GetNode", "pos": [ - -1422.9870702311473, - -715.2101283245419 - ], - "size": { - "0": 317.4000244140625, - "1": 150 - }, - "flags": {}, - "order": 84, - "mode": 0, - "inputs": [ - { - "name": "video_frames", - "type": "IMAGE", - "link": 286 - } - ], - "outputs": [ - { - "name": "FEATURE", - "type": "FEATURE", - "links": [ - 209 - ], - "shape": 3, - "slot_index": 0 - }, - { - "name": "FEATURE_PIPE", - "type": "FEATURE_PIPE", - "links": [ - 202 - ], - "shape": 3, - "slot_index": 1 - } - ], - "properties": { - "Node name for S&R": "TimeFeatureNode" - }, - "widgets_values": [ - 30, - "accelerate", - 0.4, - 0 - ] - }, - { - "id": 49, - "type": "SetNode", - "pos": { - "0": -1970, - "1": -676, - "2": 0, - "3": 0, - "4": 0, - "5": 0, - "6": 0, - "7": 0, - "8": 0, - "9": 0 - }, - "size": { - "0": 210, - "1": 58 - }, - "flags": {}, - "order": 80, - "mode": 0, - "inputs": [ - { - "name": "IMAGE", - "type": "IMAGE", - "link": 77 - } + -576, + -833 ], - "outputs": [ - { - "name": "IMAGE", - "type": "IMAGE", - "links": [ - 286 - ], - "slot_index": 0 - } + "size": [ + 210, + 58 ], - "title": "Set_depth_maps", - "properties": { - "previousName": "depth_maps" - }, - "widgets_values": [ - "depth_maps" - ] - }, - { - "id": 74, - "type": "GetNode", - "pos": { - "0": -576, - "1": -833, - "2": 0, - "3": 0, - "4": 0, - "5": 0, - "6": 0, - "7": 0, - "8": 0, - "9": 0 - }, - "size": { - "0": 210, - "1": 58 - }, "flags": {}, - "order": 31, + "order": 28, "mode": 0, "inputs": [], "outputs": [ @@ -4373,7 +3724,7 @@ "type": "IMAGE", "links": [ 108, - 203 + 317 ], "slot_index": 0 } @@ -4382,7 +3733,9 @@ "properties": {}, "widgets_values": [ "depth_maps" - ] + ], + "color": "#2a363b", + "bgcolor": "#3f5159" }, { "id": 20, @@ -4391,12 +3744,12 @@ -564, -1048 ], - "size": { - "0": 210, - "1": 86 - }, + "size": [ + 210, + 86 + ], "flags": {}, - "order": 49, + "order": 44, "mode": 0, "inputs": [ { @@ -4410,40 +3763,41 @@ "name": "image", "type": "IMAGE", "links": [], - "shape": 3, - "slot_index": 0 + "slot_index": 0, + "shape": 3 }, { - "name": "852 width", + "name": "512 width", "type": "INT", "links": [ 26 ], - "shape": 3, - "slot_index": 1 + "slot_index": 1, + "shape": 3 }, { - "name": "1280 height", + "name": "769 height", "type": "INT", "links": [ 27 ], - "shape": 3, - "slot_index": 2 + "slot_index": 2, + "shape": 3 }, { - "name": "60 count", + "name": "30 count", "type": "INT", "links": [ 103 ], - "shape": 3, - "slot_index": 3 + "slot_index": 3, + "shape": 3 } ], "properties": { "Node name for S&R": "GetImageSizeAndCount" - } + }, + "widgets_values": [] }, { "id": 134, @@ -4457,13 +3811,13 @@ 26 ], "flags": {}, - "order": 90, + "order": 87, "mode": 0, "inputs": [ { "name": "", "type": "*", - "link": 214 + "link": 319 } ], "outputs": [ @@ -4482,174 +3836,66 @@ } }, { - "id": 21, - "type": "_mfc", + "id": 114, + "type": "Note", "pos": [ - -317, - -703 + 71, + -1074 + ], + "size": [ + 484.20526123046875, + 158.15316772460938 ], - "size": { - "0": 315, - "1": 150 + "flags": {}, + "order": 29, + "mode": 0, + "inputs": [], + "outputs": [], + "properties": { + "text": "" }, + "widgets_values": [ + "see above for additional example configuration of this node that i left behind. You can do a lot" + ], + "color": "#432", + "bgcolor": "#653" + }, + { + "id": 25, + "type": "MaskToImage", + "pos": [ + 595, + -1044 + ], + "size": [ + 210, + 26 + ], "flags": {}, - "order": 70, + "order": 86, "mode": 0, "inputs": [ { - "name": "image", - "type": "IMAGE", - "link": 30 + "name": "mask", + "type": "MASK", + "link": 318 } ], "outputs": [ { - "name": "MASK", - "type": "MASK", + "name": "IMAGE", + "type": "IMAGE", "links": [ - 200 + 37 ], - "shape": 3, - "slot_index": 0 - }, - { - "name": "IMAGE", - "type": "IMAGE", - "links": null, + "slot_index": 0, "shape": 3 } ], - "properties": { - "Node name for S&R": "_mfc" - }, - "widgets_values": [ - 0, - 0, - 0, - 0 - ] - }, - { - "id": 127, - "type": "FlexMaskDepthChamber", - "pos": [ - 105, - -839 - ], - "size": { - "0": 344.3999938964844, - "1": 310 - }, - "flags": {}, - "order": 88, - "mode": 0, - "inputs": [ - { - "name": "masks", - "type": "MASK", - "link": 200 - }, - { - "name": "feature", - "type": "FEATURE", - "link": 209 - }, - { - "name": "feature_pipe", - "type": "FEATURE_PIPE", - "link": 202 - }, - { - "name": "depth_map", - "type": "IMAGE", - "link": 203 - } - ], - "outputs": [ - { - "name": "MASK", - "type": "MASK", - "links": [ - 207, - 214 - ], - "shape": 3, - "slot_index": 0 - } - ], - "properties": { - "Node name for S&R": "FlexMaskDepthChamber" - }, - "widgets_values": [ - 1, - false, - 0, - 0, - 0, - 0.05, - 0, - "z_front", - "move_forward" - ] - }, - { - "id": 114, - "type": "Note", - "pos": [ - 71, - -1074 - ], - "size": { - "0": 484.20526123046875, - "1": 158.15316772460938 - }, - "flags": {}, - "order": 32, - "mode": 0, - "properties": { - "text": "" - }, - "widgets_values": [ - "see above for additional example configuration of this node that i left behind. You can do a lot" - ], - "color": "#432", - "bgcolor": "#653" - }, - { - "id": 25, - "type": "MaskToImage", - "pos": [ - 595, - -1044 - ], - "size": { - "0": 210, - "1": 26 - }, - "flags": {}, - "order": 89, - "mode": 0, - "inputs": [ - { - "name": "mask", - "type": "MASK", - "link": 207 - } - ], - "outputs": [ - { - "name": "IMAGE", - "type": "IMAGE", - "links": [ - 37 - ], - "shape": 3, - "slot_index": 0 - } - ], "properties": { "Node name for S&R": "MaskToImage" - } + }, + "widgets_values": [] }, { "id": 24, @@ -4659,11 +3905,11 @@ -1072 ], "size": [ - 210, - 608 + 214.7587890625, + 643.1812744140625 ], "flags": {}, - "order": 91, + "order": 88, "mode": 0, "inputs": [ { @@ -4674,17 +3920,20 @@ { "name": "audio", "type": "AUDIO", - "link": null + "link": null, + "shape": 7 }, { "name": "meta_batch", "type": "VHS_BatchManager", - "link": null + "link": null, + "shape": 7 }, { "name": "vae", "type": "VAE", - "link": null + "link": null, + "shape": 7 } ], "outputs": [ @@ -4706,17 +3955,20 @@ "pix_fmt": "yuv420p", "crf": 14, "save_metadata": true, + "trim_to_audio": false, "pingpong": false, "save_output": true, "videopreview": { "hidden": false, "paused": false, "params": { - "filename": "AnimateDiff_03258.mp4", + "filename": "AnimateDiff_02422.mp4", "subfolder": "", "type": "output", "format": "video/h264-mp4", - "frame_rate": 16 + "frame_rate": 16, + "workflow": "AnimateDiff_02422.png", + "fullpath": "/runpod-volume/ComfyUI_rv/output/AnimateDiff_02422.mp4" } } } @@ -4728,13 +3980,15 @@ 180, 232 ], - "size": { - "0": 565.3340454101562, - "1": 455.6415710449219 - }, + "size": [ + 565.3340454101562, + 455.6415710449219 + ], "flags": {}, - "order": 33, + "order": 30, "mode": 0, + "inputs": [], + "outputs": [], "properties": { "text": "" }, @@ -4751,12 +4005,12 @@ 7108, 435 ], - "size": { - "0": 210, - "1": 86 - }, + "size": [ + 210, + 86 + ], "flags": {}, - "order": 111, + "order": 108, "mode": 0, "inputs": [ { @@ -4772,29 +4026,29 @@ "links": [ 287 ], - "shape": 3, - "slot_index": 0 + "slot_index": 0, + "shape": 3 }, { - "name": "1056 width", + "name": "width", "type": "INT", "links": [ 283 ], - "shape": 3, - "slot_index": 1 + "slot_index": 1, + "shape": 3 }, { - "name": "1584 height", + "name": "height", "type": "INT", "links": [ 284 ], - "shape": 3, - "slot_index": 2 + "slot_index": 2, + "shape": 3 }, { - "name": "90 count", + "name": "count", "type": "INT", "links": null, "shape": 3 @@ -4802,7 +4056,8 @@ ], "properties": { "Node name for S&R": "GetImageSizeAndCount" - } + }, + "widgets_values": [] }, { "id": 143, @@ -4811,13 +4066,15 @@ 2004, -117 ], - "size": { - "0": 464.4046630859375, - "1": 224.58644104003906 - }, + "size": [ + 464.4046630859375, + 224.58644104003906 + ], "flags": {}, - "order": 34, + "order": 31, "mode": 0, + "inputs": [], + "outputs": [], "properties": { "text": "" }, @@ -4828,76 +4085,118 @@ "bgcolor": "#653" }, { - "id": 141, - "type": "Image Batch", + "id": 175, + "type": "Reroute", "pos": [ - 1736, - -96 + 2859.594970703125, + -35.33431625366211 + ], + "size": [ + 75, + 26 ], - "size": { - "0": 210, - "1": 86 - }, "flags": {}, - "order": 67, + "order": 70, "mode": 0, "inputs": [ { - "name": "images_a", + "name": "", + "type": "*", + "link": 302 + } + ], + "outputs": [ + { + "name": "", "type": "IMAGE", - "link": 228 - }, + "links": [ + 289 + ], + "slot_index": 0 + } + ], + "properties": { + "showOutputText": false, + "horizontal": false + } + }, + { + "id": 174, + "type": "ImageScale", + "pos": [ + 7596, + 262 + ], + "size": [ + 315, + 130 + ], + "flags": {}, + "order": 109, + "mode": 0, + "inputs": [ { - "name": "images_b", + "name": "image", "type": "IMAGE", - "link": 229 + "link": 292 }, { - "name": "images_c", - "type": "IMAGE", - "link": null + "name": "width", + "type": "INT", + "link": 283, + "widget": { + "name": "width" + } }, { - "name": "images_d", - "type": "IMAGE", - "link": null + "name": "height", + "type": "INT", + "link": 284, + "widget": { + "name": "height" + } } ], "outputs": [ { - "name": "image", + "name": "IMAGE", "type": "IMAGE", "links": [ - 230, - 288 + 285 ], - "shape": 3, - "slot_index": 0 + "slot_index": 0, + "shape": 3 } ], "properties": { - "Node name for S&R": "Image Batch" - } + "Node name for S&R": "ImageScale" + }, + "widgets_values": [ + "nearest-exact", + 512, + 512, + "disabled" + ] }, { - "id": 175, + "id": 176, "type": "Reroute", "pos": [ - 2859.5948525759013, - -35.33431721779152 + 7380, + -40 ], "size": [ 75, 26 ], "flags": {}, - "order": 75, + "order": 77, "mode": 0, "inputs": [ { "name": "", "type": "*", - "link": 288 + "link": 289 } ], "outputs": [ @@ -4905,7 +4204,7 @@ "name": "", "type": "IMAGE", "links": [ - 289 + 291 ], "slot_index": 0 } @@ -4916,168 +4215,131 @@ } }, { - "id": 150, - "type": "VHS_VideoCombine", + "id": 177, + "type": "GetImageSizeAndCount", "pos": [ - 10530.386098469018, - 294.75074584506234 + 7534.39013671875, + -57.429298400878906 ], "size": [ 210, - 609 + 86 ], "flags": {}, - "order": 122, + "order": 81, "mode": 0, "inputs": [ { - "name": "images", + "name": "image", + "type": "IMAGE", + "link": 291 + } + ], + "outputs": [ + { + "name": "image", "type": "IMAGE", - "link": 242 + "links": [ + 292 + ], + "slot_index": 0, + "shape": 3 }, { - "name": "audio", - "type": "AUDIO", - "link": null + "name": "width", + "type": "INT", + "links": null, + "shape": 3 }, { - "name": "meta_batch", - "type": "VHS_BatchManager", - "link": null + "name": "height", + "type": "INT", + "links": null, + "shape": 3 }, { - "name": "vae", - "type": "VAE", - "link": null - } - ], - "outputs": [ - { - "name": "Filenames", - "type": "VHS_FILENAMES", + "name": "count", + "type": "INT", "links": null, "shape": 3 } ], "properties": { - "Node name for S&R": "VHS_VideoCombine" + "Node name for S&R": "GetImageSizeAndCount" }, - "widgets_values": { - "frame_rate": 20, - "loop_count": 16, - "filename_prefix": "AnimateDiff", - "format": "video/h264-mp4", - "pix_fmt": "yuv420p", - "crf": 19, - "save_metadata": false, - "pingpong": false, - "save_output": true, - "videopreview": { - "hidden": false, - "paused": false, - "params": { - "filename": "AnimateDiff_03261.mp4", - "subfolder": "", - "type": "output", - "format": "video/h264-mp4", - "frame_rate": 20 - } - } - } + "widgets_values": [] }, { - "id": 153, - "type": "FeatureMixer", + "id": 170, + "type": "ImageCompositeMasked", "pos": [ - 9464, - 573 + 7981, + 278 + ], + "size": [ + 315, + 146 ], - "size": { - "0": 367.79998779296875, - "1": 342 - }, "flags": {}, - "order": 119, + "order": 110, "mode": 0, "inputs": [ { - "name": "feature", - "type": "FEATURE", - "link": 249 + "name": "destination", + "type": "IMAGE", + "link": 285 + }, + { + "name": "source", + "type": "IMAGE", + "link": 287 + }, + { + "name": "mask", + "type": "MASK", + "link": 274, + "shape": 7 } ], "outputs": [ { - "name": "FEATURE", - "type": "FEATURE", - "links": [ - 251 - ], - "shape": 3, - "slot_index": 0 - }, - { - "name": "FEATURE_VISUALIZATION", + "name": "IMAGE", "type": "IMAGE", "links": [ - 250 + 295 ], - "shape": 3, - "slot_index": 1 + "slot_index": 0, + "shape": 3 } ], "properties": { - "Node name for S&R": "FeatureMixer" + "Node name for S&R": "ImageCompositeMasked" }, "widgets_values": [ - 1, - 0, - 1, - 1, - 1, - 1, - 1, 0, 0, - 1, - 0.5, false ] }, { - "id": 145, - "type": "FlexImageParallax", + "id": 111, + "type": "ImageCASharpening+", "pos": [ - 10091, - 273 + 8503, + 537 + ], + "size": [ + 310.79998779296875, + 58 ], - "size": { - "0": 315, - "1": 238 - }, "flags": {}, - "order": 120, - "mode": 0, + "order": 111, + "mode": 4, "inputs": [ { - "name": "images", - "type": "IMAGE", - "link": 247 - }, - { - "name": "feature", - "type": "FEATURE", - "link": 251 - }, - { - "name": "feature_pipe", - "type": "FEATURE_PIPE", - "link": 241 - }, - { - "name": "depth_map", + "name": "image", "type": "IMAGE", - "link": 237 + "link": 295 } ], "outputs": [ @@ -5085,355 +4347,751 @@ "name": "IMAGE", "type": "IMAGE", "links": [ - 242 + 298 ], - "shape": 3, - "slot_index": 0 + "slot_index": 0, + "shape": 3 } ], "properties": { - "Node name for S&R": "FlexImageParallax" + "Node name for S&R": "ImageCASharpening+" }, "widgets_values": [ - 1, - 0, - "shift_x", - "relative", - 0.01, - 0 + 0.8 ] }, { - "id": 149, - "type": "TimeFeatureNode", + "id": 112, + "type": "ImageUpscaleWithModel", "pos": [ - 9472, - 377 + 8851, + 407 + ], + "size": [ + 241.79998779296875, + 46 ], - "size": { - "0": 317.4000244140625, - "1": 150 - }, "flags": {}, - "order": 118, - "mode": 0, + "order": 112, + "mode": 4, "inputs": [ { - "name": "video_frames", + "name": "upscale_model", + "type": "UPSCALE_MODEL", + "link": 175, + "slot_index": 0 + }, + { + "name": "image", "type": "IMAGE", - "link": 239 + "link": 298 } ], "outputs": [ { - "name": "FEATURE", - "type": "FEATURE", - "links": [ - 249 - ], - "shape": 3, - "slot_index": 0 - }, - { - "name": "FEATURE_PIPE", - "type": "FEATURE_PIPE", + "name": "IMAGE", + "type": "IMAGE", "links": [ - 241 + 177 ], - "shape": 3, - "slot_index": 1 + "slot_index": 0, + "shape": 3 } ], "properties": { - "Node name for S&R": "TimeFeatureNode" + "Node name for S&R": "ImageUpscaleWithModel" }, - "widgets_values": [ - 20, - "accelerate", - 0.1, - 0.3 - ] + "widgets_values": [] }, { - "id": 155, - "type": "Note", + "id": 133, + "type": "MaskToImage", "pos": [ - 9936, - 87 + 1292, + -368 + ], + "size": [ + 210, + 26 ], - "size": { - "0": 434.9312438964844, - "1": 112.82051086425781 - }, "flags": {}, - "order": 35, + "order": 89, "mode": 0, + "inputs": [ + { + "name": "mask", + "type": "MASK", + "link": 215 + } + ], + "outputs": [ + { + "name": "IMAGE", + "type": "IMAGE", + "links": [ + 213, + 304 + ], + "slot_index": 0, + "shape": 3 + } + ], "properties": { - "text": "" + "Node name for S&R": "MaskToImage" }, - "widgets_values": [ - "optionally, add parallax for additional rub. To accomplish this, we get new depth maps that include everything the AI generated" - ], - "color": "#432", - "bgcolor": "#653" + "widgets_values": [] }, { - "id": 147, - "type": "GetNode", - "pos": { - "0": 9467, - "1": 245, - "2": 0, - "3": 0, - "4": 0, - "5": 0, - "6": 0, - "7": 0, - "8": 0, - "9": 0 - }, - "size": { - "0": 210, - "1": 58 - }, + "id": 140, + "type": "RepeatImageBatch", + "pos": [ + 1288, + -153 + ], + "size": [ + 315, + 58 + ], "flags": {}, - "order": 36, + "order": 91, "mode": 0, - "inputs": [], + "inputs": [ + { + "name": "image", + "type": "IMAGE", + "link": 232 + }, + { + "name": "amount", + "type": "INT", + "link": 233, + "slot_index": 1, + "widget": { + "name": "amount" + } + } + ], "outputs": [ { - "name": "DAMODEL", - "type": "DAMODEL", + "name": "IMAGE", + "type": "IMAGE", "links": [ - 235 + 305 ], - "slot_index": 0 + "slot_index": 0, + "shape": 3 } ], - "title": "Get_DA_MODEL", - "properties": {}, + "properties": { + "Node name for S&R": "RepeatImageBatch" + }, "widgets_values": [ - "DA_MODEL" + 16 ] }, { - "id": 174, - "type": "ImageScale", + "id": 131, + "type": "ImageInterval", "pos": [ - 7596, - 262 + 1296.05419921875, + -295.1895446777344 + ], + "size": [ + 315, + 106 ], - "size": { - "0": 315, - "1": 130 - }, "flags": {}, - "order": 112, + "order": 90, "mode": 0, "inputs": [ { "name": "image", "type": "IMAGE", - "link": 292 - }, + "link": 213 + } + ], + "outputs": [ { - "name": "width", + "name": "IMAGE", + "type": "IMAGE", + "links": [ + 232 + ], + "slot_index": 0, + "shape": 3 + } + ], + "properties": { + "Node name for S&R": "ImageInterval" + }, + "widgets_values": [ + 1, + 100000, + 0 + ] + }, + { + "id": 180, + "type": "ImageBatchMulti", + "pos": [ + 1726.151611328125, + -96.15489196777344 + ], + "size": [ + 210, + 102 + ], + "flags": {}, + "order": 63, + "mode": 0, + "inputs": [ + { + "name": "image_1", + "type": "IMAGE", + "link": 300 + }, + { + "name": "image_2", + "type": "IMAGE", + "link": 301 + } + ], + "outputs": [ + { + "name": "images", + "type": "IMAGE", + "links": [ + 302, + 303 + ], + "slot_index": 0 + } + ], + "properties": {}, + "widgets_values": [ + 2, + null + ] + }, + { + "id": 179, + "type": "ImageBatchMulti", + "pos": [ + 1717.0975341796875, + -302.49951171875 + ], + "size": [ + 210, + 102 + ], + "flags": {}, + "order": 92, + "mode": 0, + "inputs": [ + { + "name": "image_1", + "type": "IMAGE", + "link": 304 + }, + { + "name": "image_2", + "type": "IMAGE", + "link": 305 + } + ], + "outputs": [ + { + "name": "images", + "type": "IMAGE", + "links": [ + 306 + ], + "slot_index": 0 + } + ], + "properties": {}, + "widgets_values": [ + 2, + null + ] + }, + { + "id": 47, + "type": "Control Net Stacker", + "pos": [ + 1373.688720703125, + 1436.598388671875 + ], + "size": [ + 315, + 146 + ], + "flags": {}, + "order": 40, + "mode": 0, + "inputs": [ + { + "name": "control_net", + "type": "CONTROL_NET", + "link": 76, + "slot_index": 0 + }, + { + "name": "image", + "type": "IMAGE", + "link": 81 + }, + { + "name": "cnet_stack", + "type": "CONTROL_NET_STACK", + "link": null, + "shape": 7 + } + ], + "outputs": [ + { + "name": "CNET_STACK", + "type": "CONTROL_NET_STACK", + "links": [ + 83 + ], + "slot_index": 0, + "shape": 3 + } + ], + "properties": { + "Node name for S&R": "Control Net Stacker" + }, + "widgets_values": [ + 0.47000000000000003, + 0, + 0.5 + ], + "color": "#223322", + "bgcolor": "#335533", + "shape": 1 + }, + { + "id": 82, + "type": "ImageResizeKJ", + "pos": [ + -3643.572998046875, + -572.7154541015625 + ], + "size": [ + 310.7047424316406, + 238 + ], + "flags": {}, + "order": 47, + "mode": 0, + "inputs": [ + { + "name": "image", + "type": "IMAGE", + "link": 122 + }, + { + "name": "get_image_size", + "type": "IMAGE", + "link": null, + "shape": 7 + }, + { + "name": "width_input", "type": "INT", - "link": 283, + "link": null, "widget": { - "name": "width" + "name": "width_input" + } + }, + { + "name": "height_input", + "type": "INT", + "link": null, + "widget": { + "name": "height_input" + } + } + ], + "outputs": [ + { + "name": "IMAGE", + "type": "IMAGE", + "links": [ + 126 + ], + "slot_index": 0, + "shape": 3 + }, + { + "name": "width", + "type": "INT", + "links": null, + "shape": 3 + }, + { + "name": "height", + "type": "INT", + "links": null, + "shape": 3 + } + ], + "properties": { + "Node name for S&R": "ImageResizeKJ" + }, + "widgets_values": [ + 960, + 960, + "lanczos", + true, + 2, + 0, + 0, + "disabled" + ] + }, + { + "id": 27, + "type": "PrimitiveNode", + "pos": [ + -4242, + -327 + ], + "size": [ + 210, + 82 + ], + "flags": {}, + "order": 32, + "mode": 0, + "inputs": [], + "outputs": [ + { + "name": "INT", + "type": "INT", + "links": [ + 41, + 42, + 90, + 162 + ], + "slot_index": 0, + "widget": { + "name": "amount" + } + } + ], + "title": "Num frames", + "properties": { + "Run widget replace on values": false + }, + "widgets_values": [ + 30, + "fixed" + ] + }, + { + "id": 137, + "type": "PrimitiveNode", + "pos": [ + -4241, + -198 + ], + "size": [ + 210, + 82 + ], + "flags": {}, + "order": 33, + "mode": 0, + "inputs": [], + "outputs": [ + { + "name": "INT", + "type": "INT", + "links": [ + 218, + 233 + ], + "slot_index": 0, + "widget": { + "name": "amount" } + } + ], + "title": "Extend last frame", + "properties": { + "Run widget replace on values": false + }, + "widgets_values": [ + 16, + "fixed" + ] + }, + { + "id": 49, + "type": "SetNode", + "pos": [ + -1970, + -676 + ], + "size": [ + 210, + 58 + ], + "flags": {}, + "order": 76, + "mode": 0, + "inputs": [ + { + "name": "IMAGE", + "type": "IMAGE", + "link": 77 + } + ], + "outputs": [ + { + "name": "IMAGE", + "type": "IMAGE", + "links": [ + 312 + ], + "slot_index": 0 + } + ], + "title": "Set_depth_maps", + "properties": { + "previousName": "depth_maps" + }, + "widgets_values": [ + "depth_maps" + ], + "color": "#2a363b", + "bgcolor": "#3f5159" + }, + { + "id": 183, + "type": "GetImageSizeAndCount", + "pos": [ + -1874.748291015625, + -838.0999755859375 + ], + "size": [ + 277.20001220703125, + 86 + ], + "flags": {}, + "order": 80, + "mode": 0, + "inputs": [ + { + "name": "image", + "type": "IMAGE", + "link": 312 + } + ], + "outputs": [ + { + "name": "image", + "type": "IMAGE", + "links": null }, { - "name": "height", + "name": "512 width", + "type": "INT", + "links": null + }, + { + "name": "769 height", + "type": "INT", + "links": null + }, + { + "name": "30 count", + "type": "INT", + "links": [ + 313 + ], + "slot_index": 3 + } + ], + "properties": { + "Node name for S&R": "GetImageSizeAndCount" + } + }, + { + "id": 184, + "type": "TimeFeatureNode", + "pos": [ + -1312.18017578125, + -784.1268310546875 + ], + "size": [ + 315, + 202 + ], + "flags": {}, + "order": 84, + "mode": 0, + "inputs": [ + { + "name": "frame_count", "type": "INT", - "link": 284, + "link": 313, "widget": { - "name": "height" + "name": "frame_count" } } ], "outputs": [ { - "name": "IMAGE", - "type": "IMAGE", + "name": "FEATURE", + "type": "FEATURE", "links": [ - 285 + 316 ], - "shape": 3, "slot_index": 0 } ], "properties": { - "Node name for S&R": "ImageScale" + "Node name for S&R": "TimeFeatureNode" }, "widgets_values": [ - "nearest-exact", + "smooth", + 30, + 30, 512, 512, - "disabled" + 30, + 0 ] }, { - "id": 176, - "type": "Reroute", + "id": 185, + "type": "FlexMaskDepthChamber", "pos": [ - 7380, - -40 + 105, + -839 ], "size": [ - 75, - 26 + 415.8000183105469, + 314 ], "flags": {}, - "order": 81, + "order": 85, "mode": 0, "inputs": [ { - "name": "", - "type": "*", - "link": 289 + "name": "masks", + "type": "MASK", + "link": 315 + }, + { + "name": "depth_map", + "type": "IMAGE", + "link": 317 + }, + { + "name": "opt_feature", + "type": "FEATURE", + "link": 316, + "shape": 7 } ], "outputs": [ { - "name": "", - "type": "IMAGE", + "name": "MASK", + "type": "MASK", "links": [ - 291 - ], - "slot_index": 0 + 318, + 319 + ] } ], "properties": { - "showOutputText": false, - "horizontal": false - } + "Node name for S&R": "FlexMaskDepthChamber" + }, + "widgets_values": [ + 1, + 0, + "z_front", + "move_forward", + false, + 0, + 0, + 1, + 0.05, + 0 + ] }, { - "id": 177, - "type": "GetImageSizeAndCount", + "id": 21, + "type": "_mfc", "pos": [ - 7534.390205834786, - -57.429299055237095 + -302.1356201171875, + -700.0270385742188 + ], + "size": [ + 315, + 150 ], - "size": { - "0": 210, - "1": 86 - }, "flags": {}, - "order": 85, + "order": 66, "mode": 0, "inputs": [ { "name": "image", "type": "IMAGE", - "link": 291 + "link": 30 } ], "outputs": [ { - "name": "image", - "type": "IMAGE", + "name": "MASK", + "type": "MASK", "links": [ - 292 + 315 ], - "shape": 3, - "slot_index": 0 - }, - { - "name": "640 width", - "type": "INT", - "links": null, - "shape": 3 - }, - { - "name": "960 height", - "type": "INT", - "links": null, - "shape": 3 - }, - { - "name": "90 count", - "type": "INT", - "links": null, + "slot_index": 0, "shape": 3 - } - ], - "properties": { - "Node name for S&R": "GetImageSizeAndCount" - } - }, - { - "id": 170, - "type": "ImageCompositeMasked", - "pos": [ - 7981, - 278 - ], - "size": { - "0": 315, - "1": 146 - }, - "flags": {}, - "order": 113, - "mode": 0, - "inputs": [ - { - "name": "destination", - "type": "IMAGE", - "link": 285 - }, - { - "name": "source", - "type": "IMAGE", - "link": 287 }, - { - "name": "mask", - "type": "MASK", - "link": 274 - } - ], - "outputs": [ { "name": "IMAGE", "type": "IMAGE", - "links": [ - 295 - ], - "shape": 3, - "slot_index": 0 + "links": null, + "shape": 3 } ], "properties": { - "Node name for S&R": "ImageCompositeMasked" + "Node name for S&R": "_mfc" }, "widgets_values": [ 0, 0, - false + 0, + 0 ] }, { - "id": 111, - "type": "ImageCASharpening+", + "id": 182, + "type": "AIO_Preprocessor", "pos": [ - 8503, - 537 + -2755.53662109375, + -673.705810546875 + ], + "size": [ + 315, + 82 ], - "size": { - "0": 310.79998779296875, - "1": 58 - }, "flags": {}, - "order": 114, - "mode": 4, + "order": 62, + "mode": 0, "inputs": [ { "name": "image", "type": "IMAGE", - "link": 295 + "link": 310 } ], "outputs": [ @@ -5441,17 +5099,17 @@ "name": "IMAGE", "type": "IMAGE", "links": [ - 298 + 311 ], - "shape": 3, "slot_index": 0 } ], "properties": { - "Node name for S&R": "ImageCASharpening+" + "Node name for S&R": "AIO_Preprocessor" }, "widgets_values": [ - 0.8 + "DepthAnythingV2Preprocessor", + 512 ] }, { @@ -5462,12 +5120,12 @@ 285 ], "size": [ - 210, - 609 + 214.7587890625, + 334 ], "flags": {}, - "order": 116, - "mode": 4, + "order": 113, + "mode": 0, "inputs": [ { "name": "images", @@ -5477,17 +5135,20 @@ { "name": "audio", "type": "AUDIO", - "link": null + "link": null, + "shape": 7 }, { "name": "meta_batch", "type": "VHS_BatchManager", - "link": null + "link": null, + "shape": 7 }, { "name": "vae", "type": "VAE", - "link": null + "link": null, + "shape": 7 } ], "outputs": [ @@ -5509,6 +5170,7 @@ "pix_fmt": "yuv420p", "crf": 19, "save_metadata": true, + "trim_to_audio": false, "pingpong": false, "save_output": true, "videopreview": { @@ -5523,50 +5185,6 @@ } } } - }, - { - "id": 112, - "type": "ImageUpscaleWithModel", - "pos": [ - 8851, - 407 - ], - "size": { - "0": 241.79998779296875, - "1": 46 - }, - "flags": {}, - "order": 115, - "mode": 4, - "inputs": [ - { - "name": "upscale_model", - "type": "UPSCALE_MODEL", - "link": 175, - "slot_index": 0 - }, - { - "name": "image", - "type": "IMAGE", - "link": 298 - } - ], - "outputs": [ - { - "name": "IMAGE", - "type": "IMAGE", - "links": [ - 177, - 247, - 248 - ], - "shape": 3, - "slot_index": 0 - } - ], - "properties": { - "Node name for S&R": "ImageUpscaleWithModel" - } } ], "links": [ @@ -5586,22 +5204,6 @@ 0, "IMAGE" ], - [ - 15, - 15, - 0, - 14, - 0, - "DAMODEL" - ], - [ - 17, - 14, - 0, - 16, - 0, - "IMAGE" - ], [ 18, 10, @@ -6042,14 +5644,6 @@ 0, "IMAGE" ], - [ - 130, - 85, - 0, - 14, - 1, - "IMAGE" - ], [ 133, 4, @@ -6277,56 +5871,16 @@ [ 196, 122, - 1, - 123, - 0, - "IMAGE" - ], - [ - 199, - 122, - 0, - 69, - 1, - "FEATURE" - ], - [ - 200, - 21, - 0, - 127, - 0, - "MASK" - ], - [ - 202, - 128, - 1, - 127, - 2, - "FEATURE_PIPE" - ], - [ - 203, - 74, - 0, - 127, - 3, - "IMAGE" - ], - [ - 207, - 127, - 0, - 25, + 1, + 123, 0, - "MASK" + "IMAGE" ], [ - 209, - 128, + 199, + 122, 0, - 127, + 69, 1, "FEATURE" ], @@ -6338,14 +5892,6 @@ 0, "IMAGE" ], - [ - 214, - 127, - 0, - 134, - 0, - "*" - ], [ 215, 134, @@ -6378,30 +5924,6 @@ 0, "IMAGE" ], - [ - 222, - 133, - 0, - 139, - 0, - "IMAGE" - ], - [ - 223, - 140, - 0, - 139, - 1, - "IMAGE" - ], - [ - 225, - 139, - 0, - 135, - 0, - "IMAGE" - ], [ 226, 138, @@ -6410,30 +5932,6 @@ 0, "IMAGE" ], - [ - 228, - 77, - 0, - 141, - 0, - "IMAGE" - ], - [ - 229, - 136, - 0, - 141, - 1, - "IMAGE" - ], - [ - 230, - 141, - 0, - 12, - 0, - "IMAGE" - ], [ 232, 131, @@ -6450,54 +5948,6 @@ 1, "INT" ], - [ - 234, - 15, - 0, - 146, - 0, - "*" - ], - [ - 235, - 147, - 0, - 148, - 0, - "DAMODEL" - ], - [ - 237, - 148, - 0, - 145, - 3, - "IMAGE" - ], - [ - 239, - 148, - 0, - 149, - 0, - "IMAGE" - ], - [ - 241, - 149, - 1, - 145, - 2, - "FEATURE_PIPE" - ], - [ - 242, - 145, - 0, - 150, - 0, - "IMAGE" - ], [ 246, 3, @@ -6506,46 +5956,6 @@ 0, "LATENT" ], - [ - 247, - 112, - 0, - 145, - 0, - "IMAGE" - ], - [ - 248, - 112, - 0, - 148, - 1, - "IMAGE" - ], - [ - 249, - 149, - 0, - 153, - 0, - "FEATURE" - ], - [ - 250, - 153, - 1, - 154, - 0, - "IMAGE" - ], - [ - 251, - 153, - 0, - 145, - 1, - "FEATURE" - ], [ 270, 135, @@ -6610,14 +6020,6 @@ 0, "IMAGE" ], - [ - 286, - 49, - 0, - 128, - 0, - "IMAGE" - ], [ 287, 173, @@ -6626,14 +6028,6 @@ 1, "IMAGE" ], - [ - 288, - 141, - 0, - 175, - 0, - "*" - ], [ 289, 175, @@ -6673,10 +6067,139 @@ 112, 1, "IMAGE" + ], + [ + 300, + 77, + 0, + 180, + 0, + "IMAGE" + ], + [ + 301, + 136, + 0, + 180, + 1, + "IMAGE" + ], + [ + 302, + 180, + 0, + 175, + 0, + "*" + ], + [ + 303, + 180, + 0, + 12, + 0, + "IMAGE" + ], + [ + 304, + 133, + 0, + 179, + 0, + "IMAGE" + ], + [ + 305, + 140, + 0, + 179, + 1, + "IMAGE" + ], + [ + 306, + 179, + 0, + 135, + 0, + "IMAGE" + ], + [ + 310, + 85, + 0, + 182, + 0, + "IMAGE" + ], + [ + 311, + 182, + 0, + 16, + 0, + "IMAGE" + ], + [ + 312, + 49, + 0, + 183, + 0, + "IMAGE" + ], + [ + 313, + 183, + 3, + 184, + 0, + "INT" + ], + [ + 315, + 21, + 0, + 185, + 0, + "MASK" + ], + [ + 316, + 184, + 0, + 185, + 2, + "FEATURE" + ], + [ + 317, + 74, + 0, + 185, + 1, + "IMAGE" + ], + [ + 318, + 185, + 0, + 25, + 0, + "MASK" + ], + [ + 319, + 185, + 0, + 134, + 0, + "*" ] ], "groups": [ { + "id": 1, "title": "Load Image", "bounding": [ -4300, @@ -6686,9 +6209,10 @@ ], "color": "#3f789e", "font_size": 24, - "locked": false + "flags": {} }, { + "id": 2, "title": "Preprocessing", "bounding": [ -2768, @@ -6698,9 +6222,10 @@ ], "color": "#3f789e", "font_size": 24, - "locked": false + "flags": {} }, { + "id": 3, "title": "Feature", "bounding": [ -1457, @@ -6710,9 +6235,10 @@ ], "color": "#3f789e", "font_size": 24, - "locked": false + "flags": {} }, { + "id": 4, "title": "Depth Chamber", "bounding": [ -621, @@ -6722,9 +6248,10 @@ ], "color": "#3f789e", "font_size": 24, - "locked": false + "flags": {} }, { + "id": 5, "title": "Control net", "bounding": [ 952, @@ -6734,9 +6261,10 @@ ], "color": "#3f789e", "font_size": 24, - "locked": false + "flags": {} }, { + "id": 6, "title": "Animate Diff", "bounding": [ 3043, @@ -6746,9 +6274,10 @@ ], "color": "#3f789e", "font_size": 24, - "locked": false + "flags": {} }, { + "id": 7, "title": "Sampler1", "bounding": [ 5166, @@ -6758,9 +6287,10 @@ ], "color": "#3f789e", "font_size": 24, - "locked": false + "flags": {} }, { + "id": 8, "title": "Load Model", "bounding": [ 949, @@ -6770,9 +6300,10 @@ ], "color": "#3f789e", "font_size": 24, - "locked": false + "flags": {} }, { + "id": 9, "title": "IPAdapter", "bounding": [ 4036, @@ -6782,9 +6313,10 @@ ], "color": "#3f789e", "font_size": 24, - "locked": false + "flags": {} }, { + "id": 10, "title": "Sampler2", "bounding": [ 6480, @@ -6794,9 +6326,10 @@ ], "color": "#3f789e", "font_size": 24, - "locked": false + "flags": {} }, { + "id": 11, "title": "Upscale", "bounding": [ 8431, @@ -6806,9 +6339,10 @@ ], "color": "#3f789e", "font_size": 24, - "locked": false + "flags": {} }, { + "id": 12, "title": "Alternate configuration", "bounding": [ -517, @@ -6818,9 +6352,10 @@ ], "color": "#3f789e", "font_size": 24, - "locked": false + "flags": {} }, { + "id": 13, "title": "Alternate configuration1", "bounding": [ 991, @@ -6830,21 +6365,10 @@ ], "color": "#3f789e", "font_size": 24, - "locked": false - }, - { - "title": "Parallax", - "bounding": [ - 9412, - 173, - 1442, - 781 - ], - "color": "#3f789e", - "font_size": 24, - "locked": false + "flags": {} }, { + "id": 15, "title": "Extend enf", "bounding": [ 1332, @@ -6854,9 +6378,10 @@ ], "color": "#3f789e", "font_size": 24, - "locked": false + "flags": {} }, { + "id": 16, "title": "Extend", "bounding": [ 956, @@ -6866,9 +6391,10 @@ ], "color": "#3f789e", "font_size": 24, - "locked": false + "flags": {} }, { + "id": 17, "title": "Paste Orig", "bounding": [ 7394, @@ -6878,18 +6404,33 @@ ], "color": "#3f789e", "font_size": 24, - "locked": false + "flags": {} } ], "config": {}, "extra": { "ds": { - "scale": 0.2143588810000008, + "scale": 0.21435888100000428, "offset": [ - 5417.992490630922, - 1945.674886206854 + 2216.8251786621577, + 1265.698423149617 ] - } + }, + "node_versions": { + "ComfyUI-AnimateDiff-Evolved": "7ec46937095048a77342aeada964e9823a2102f0", + "comfy-core": "0.3.12", + "comfyui_controlnet_aux": "5a049bde9cc117dafc327cded156459289097ea1", + "ComfyUI_Comfyroll_CustomNodes": "d78b780ae43fcf8c6b7c6505e6ffb4584281ceca", + "ComfyUI_IPAdapter_plus": "b188a6cb39b512a9c6da7235b880af42c78ccd0d", + "efficiency-nodes-comfyui": "3ead4afd120833f3bffdefeca0d6545df8051798", + "ComfyUI-KJNodes": "973ceb6ca8b7525d54873805888ad690090d6b1e", + "ComfyUI_RyanOnTheInside": "0507092b2c3f5c51b45989c6c4fd51c1add26513", + "ComfyUI-Advanced-ControlNet": "9632af9dc8f9abe28431c0027411d7a6d4f6cd3e", + "ComfyUi_NNLatentUpscale": "08105da31dbd7a54569661e135835e73bd8064b0", + "ComfyUI-VideoHelperSuite": "6953fa21443cf55f7c3b61ed3f4c87c5d3677fe1", + "ComfyUI_essentials": "33ff89fd354d8ec3ab6affb605a79a931b445d99" + }, + "ue_links": [] }, "version": 0.4 } \ No newline at end of file diff --git a/examples/depth_chamber_video.json b/examples/depth_chamber_videoVERSION22.json similarity index 76% rename from examples/depth_chamber_video.json rename to examples/depth_chamber_videoVERSION22.json index 9e1c35c..d31c1c4 100644 --- a/examples/depth_chamber_video.json +++ b/examples/depth_chamber_videoVERSION22.json @@ -1,21 +1,22 @@ { - "last_node_id": 179, - "last_link_id": 311, + "last_node_id": 183, + "last_link_id": 324, "nodes": [ { "id": 30, "type": "ADE_SigmaSchedule", "pos": [ - 3141.5897819464126, - 1118.8759046187079 + 3141.58984375, + 1118.8758544921875 + ], + "size": [ + 244.73928833007812, + 58 ], - "size": { - "0": 244.73928833007812, - "1": 58 - }, "flags": {}, "order": 0, "mode": 0, + "inputs": [], "outputs": [ { "name": "SIGMA_SCHEDULE", @@ -23,8 +24,8 @@ "links": [ 51 ], - "shape": 3, - "slot_index": 0 + "slot_index": 0, + "shape": 3 } ], "title": "Sigma Schedule 🎭🅐🅓", @@ -44,13 +45,13 @@ "id": 32, "type": "ADE_MultivalDynamic", "pos": [ - 3131.5897819464126, - 768.8759046187079 + 3131.58984375, + 768.8759155273438 + ], + "size": [ + 259.9388122558594, + 63.332008361816406 ], - "size": { - "0": 259.9388122558594, - "1": 63.332008361816406 - }, "flags": {}, "order": 1, "mode": 0, @@ -58,7 +59,8 @@ { "name": "mask_optional", "type": "MASK", - "link": null + "link": null, + "shape": 7 } ], "outputs": [ @@ -68,8 +70,8 @@ "links": [ 48 ], - "shape": 3, - "slot_index": 0 + "slot_index": 0, + "shape": 3 } ], "title": "Scale 🎭🅐🅓", @@ -82,21 +84,20 @@ } }, "widgets_values": [ - 1.1400000000000001, - "" + 1.1400000000000001 ] }, { "id": 34, "type": "ADE_MultivalDynamic", "pos": [ - 3131.5897819464126, - 658.8759046187079 + 3131.58984375, + 658.8759155273438 + ], + "size": [ + 265.1632385253906, + 58 ], - "size": { - "0": 265.1632385253906, - "1": 58 - }, "flags": {}, "order": 2, "mode": 0, @@ -104,7 +105,8 @@ { "name": "mask_optional", "type": "MASK", - "link": null + "link": null, + "shape": 7 } ], "outputs": [ @@ -127,21 +129,20 @@ } }, "widgets_values": [ - 1.1, - "" + 1.1 ] }, { "id": 35, "type": "ADE_CustomCFGSimple", "pos": [ - 3131.5897819464126, - 868.8759046187079 + 3131.58984375, + 868.8759155273438 + ], + "size": [ + 257.2469787597656, + 60.893348693847656 ], - "size": { - "0": 257.2469787597656, - "1": 60.893348693847656 - }, "flags": {}, "order": 3, "mode": 0, @@ -149,7 +150,8 @@ { "name": "cfg_extras", "type": "CFG_EXTRAS", - "link": null + "link": null, + "shape": 7 } ], "outputs": [ @@ -171,38 +173,39 @@ } }, "widgets_values": [ - 2, - "" + 2 ] }, { "id": 36, "type": "ADE_AnimateDiffSettings", "pos": [ - 3161.5897819464126, - 1218.8759046187079 + 3161.58984375, + 1218.8758544921875 + ], + "size": [ + 226.8000030517578, + 54 ], - "size": { - "0": 226.8000030517578, - "1": 54 - }, "flags": { "collapsed": true }, - "order": 37, + "order": 34, "mode": 0, "inputs": [ { "name": "pe_adjust", "type": "PE_ADJUST", "link": 53, - "slot_index": 0 + "slot_index": 0, + "shape": 7 }, { "name": "weight_adjust", "type": "WEIGHT_ADJUST", "link": 54, - "slot_index": 1 + "slot_index": 1, + "shape": 7 } ], "outputs": [ @@ -223,21 +226,19 @@ "groupcolor": "#3f789e" } }, - "widgets_values": [ - "" - ] + "widgets_values": [] }, { "id": 37, "type": "ADE_AdjustPESweetspotStretch", "pos": [ - 3131.5897819464126, - 968.8759046187079 + 3131.58984375, + 968.8759155273438 + ], + "size": [ + 253.07310485839844, + 106 ], - "size": { - "0": 253.07310485839844, - "1": 106 - }, "flags": {}, "order": 4, "mode": 0, @@ -245,7 +246,8 @@ { "name": "prev_pe_adjust", "type": "PE_ADJUST", - "link": null + "link": null, + "shape": 7 } ], "outputs": [ @@ -269,29 +271,20 @@ "widgets_values": [ 16, 18, - false, - "" + false ] }, { "id": 57, "type": "GetNode", - "pos": { - "0": 981.441162109375, - "1": 1401.961181640625, - "2": 0, - "3": 0, - "4": 0, - "5": 0, - "6": 0, - "7": 0, - "8": 0, - "9": 0 - }, - "size": { - "0": 210, - "1": 58 - }, + "pos": [ + 981.441162109375, + 1401.961181640625 + ], + "size": [ + 210, + 58 + ], "flags": {}, "order": 5, "mode": 0, @@ -310,27 +303,21 @@ "properties": {}, "widgets_values": [ "depth_maps" - ] + ], + "color": "#2a363b", + "bgcolor": "#3f5159" }, { "id": 58, "type": "GetNode", - "pos": { - "0": 961.441162109375, - "1": 1551.961181640625, - "2": 0, - "3": 0, - "4": 0, - "5": 0, - "6": 0, - "7": 0, - "8": 0, - "9": 0 - }, - "size": { - "0": 210, - "1": 58 - }, + "pos": [ + 961.441162109375, + 1551.961181640625 + ], + "size": [ + 210, + 58 + ], "flags": {}, "order": 6, "mode": 0, @@ -358,12 +345,12 @@ 1430, -4640 ], - "size": { - "0": 210, - "1": 246 - }, + "size": [ + 210, + 246 + ], "flags": {}, - "order": 54, + "order": 50, "mode": 4, "inputs": [ { @@ -372,23 +359,25 @@ "link": 95 } ], + "outputs": [], "properties": { "Node name for S&R": "PreviewImage" - } + }, + "widgets_values": [] }, { "id": 19, "type": "EmptyImage", "pos": [ - -309.8733202685141, - -894.0264396732274 + -309.8733215332031, + -894.0264282226562 + ], + "size": [ + 315, + 130 ], - "size": { - "0": 315, - "1": 130 - }, "flags": {}, - "order": 55, + "order": 51, "mode": 0, "inputs": [ { @@ -423,8 +412,8 @@ "links": [ 30 ], - "shape": 3, - "slot_index": 0 + "slot_index": 0, + "shape": 3 } ], "properties": { @@ -441,15 +430,15 @@ "id": 50, "type": "LineartStandardPreprocessor", "pos": [ - -2702.5557197546927, - -976.6574720262626 + -2702.5556640625, + -976.657470703125 + ], + "size": [ + 315, + 106 ], - "size": { - "0": 315, - "1": 106 - }, "flags": {}, - "order": 66, + "order": 64, "mode": 0, "inputs": [ { @@ -465,8 +454,8 @@ "links": [ 303 ], - "shape": 3, - "slot_index": 0 + "slot_index": 0, + "shape": 3 } ], "properties": { @@ -482,13 +471,13 @@ "id": 33, "type": "ADE_AnimateDiffUniformContextOptions", "pos": [ - 3481.5897819464126, - 658.8759046187079 + 3481.58984375, + 658.8759155273438 + ], + "size": [ + 273.269775390625, + 270 ], - "size": { - "0": 273.269775390625, - "1": 270 - }, "flags": {}, "order": 7, "mode": 0, @@ -496,12 +485,14 @@ { "name": "prev_context", "type": "CONTEXT_OPTIONS", - "link": null + "link": null, + "shape": 7 }, { "name": "view_opts", "type": "VIEW_OPTS", - "link": null + "link": null, + "shape": 7 } ], "outputs": [ @@ -511,8 +502,8 @@ "links": [ 44 ], - "shape": 3, - "slot_index": 0 + "slot_index": 0, + "shape": 3 } ], "title": "Context Options 🎭🅐🅓", @@ -541,39 +532,43 @@ "id": 29, "type": "ADE_AnimateDiffSamplingSettings", "pos": [ - 3481.5897819464126, - 968.8759046187079 + 3481.58984375, + 968.8759155273438 + ], + "size": [ + 273.3500061035156, + 274 ], - "size": { - "0": 273.3500061035156, - "1": 254 - }, "flags": {}, - "order": 36, + "order": 33, "mode": 0, "inputs": [ { "name": "noise_layers", "type": "NOISE_LAYERS", "link": null, - "slot_index": 0 + "slot_index": 0, + "shape": 7 }, { "name": "iteration_opts", "type": "ITERATION_OPTS", - "link": null + "link": null, + "shape": 7 }, { "name": "custom_cfg", "type": "CUSTOM_CFG", "link": 50, - "slot_index": 2 + "slot_index": 2, + "shape": 7 }, { "name": "sigma_schedule", "type": "SIGMA_SCHEDULE", "link": 51, - "slot_index": 3 + "slot_index": 3, + "shape": 7 }, { "name": "seed_override", @@ -590,6 +585,12 @@ "widget": { "name": "seed_override" } + }, + { + "name": "image_inject", + "type": "IMAGE_INJECT", + "link": null, + "shape": 7 } ], "outputs": [ @@ -599,8 +600,8 @@ "links": [ 47 ], - "shape": 3, - "slot_index": 0 + "slot_index": 0, + "shape": 3 } ], "properties": { @@ -617,66 +618,25 @@ "comfy", 0, 0, - false, - "" + false ] }, - { - "id": 14, - "type": "DepthAnything_V2", - "pos": [ - -2688.433746544838, - -613.3686263142703 - ], - "size": { - "0": 210, - "1": 46 - }, - "flags": {}, - "order": 67, - "mode": 0, - "inputs": [ - { - "name": "da_model", - "type": "DAMODEL", - "link": 15, - "slot_index": 0 - }, - { - "name": "images", - "type": "IMAGE", - "link": 130 - } - ], - "outputs": [ - { - "name": "image", - "type": "IMAGE", - "links": [ - 304 - ], - "shape": 3, - "slot_index": 0 - } - ], - "properties": { - "Node name for S&R": "DepthAnything_V2" - } - }, { "id": 86, "type": "Note", "pos": [ - 3160.2307942589186, - 250.7002531609014 + 3160.230712890625, + 250.70025634765625 + ], + "size": [ + 210, + 58 ], - "size": { - "0": 210, - "1": 58 - }, "flags": {}, "order": 8, "mode": 0, + "inputs": [], + "outputs": [], "properties": { "text": "" }, @@ -693,12 +653,12 @@ 1562, 458 ], - "size": { - "0": 210, - "1": 46 - }, + "size": [ + 210, + 46 + ], "flags": {}, - "order": 44, + "order": 40, "mode": 0, "inputs": [ { @@ -719,13 +679,14 @@ "links": [ 67 ], - "shape": 3, - "slot_index": 0 + "slot_index": 0, + "shape": 3 } ], "properties": { "Node name for S&R": "VAEEncode" - } + }, + "widgets_values": [] }, { "id": 43, @@ -734,12 +695,12 @@ 1524, 612 ], - "size": { - "0": 254.40000915527344, - "1": 66 - }, + "size": [ + 254.40000915527344, + 66 + ], "flags": {}, - "order": 48, + "order": 42, "mode": 0, "inputs": [ { @@ -765,8 +726,8 @@ "links": [ 65 ], - "shape": 3, - "slot_index": 0 + "slot_index": 0, + "shape": 3 }, { "name": "CLIP", @@ -775,8 +736,8 @@ 63, 64 ], - "shape": 3, - "slot_index": 1 + "slot_index": 1, + "shape": 3 }, { "name": "show_help", @@ -787,21 +748,22 @@ ], "properties": { "Node name for S&R": "CR Apply LoRA Stack" - } + }, + "widgets_values": [] }, { "id": 44, "type": "SetLatentNoiseMask", "pos": [ - 5196.2924473208695, - 361.47099519392407 + 5196.29248046875, + 361.47100830078125 + ], + "size": [ + 210, + 46 ], - "size": { - "0": 210, - "1": 46 - }, "flags": {}, - "order": 86, + "order": 83, "mode": 0, "inputs": [ { @@ -822,27 +784,28 @@ "links": [ 68 ], - "shape": 3, - "slot_index": 0 + "slot_index": 0, + "shape": 3 } ], "properties": { "Node name for S&R": "SetLatentNoiseMask" - } + }, + "widgets_values": [] }, { "id": 64, "type": "ImageScale", "pos": [ - 4420.911603734175, - 290.661003053677 + 4420.91162109375, + 290.6610107421875 + ], + "size": [ + 315, + 130 ], - "size": { - "0": 315, - "1": 130 - }, "flags": {}, - "order": 49, + "order": 43, "mode": 0, "inputs": [ { @@ -858,8 +821,8 @@ "links": [ 98 ], - "shape": 3, - "slot_index": 0 + "slot_index": 0, + "shape": 3 } ], "properties": { @@ -876,15 +839,15 @@ "id": 40, "type": "IPAdapterUnifiedLoader", "pos": [ - 4427.911603734175, - 481.6610030536765 + 4427.91162109375, + 481.6610107421875 + ], + "size": [ + 315, + 78 ], - "size": { - "0": 315, - "1": 78 - }, "flags": {}, - "order": 68, + "order": 61, "mode": 0, "inputs": [ { @@ -895,7 +858,8 @@ { "name": "ipadapter", "type": "IPADAPTER", - "link": null + "link": null, + "shape": 7 } ], "outputs": [ @@ -905,8 +869,8 @@ "links": [ 57 ], - "shape": 3, - "slot_index": 0 + "slot_index": 0, + "shape": 3 }, { "name": "ipadapter", @@ -914,8 +878,8 @@ "links": [ 58 ], - "shape": 3, - "slot_index": 1 + "slot_index": 1, + "shape": 3 } ], "properties": { @@ -932,12 +896,12 @@ 1937, 702 ], - "size": { - "0": 425.27801513671875, - "1": 180.6060791015625 - }, + "size": [ + 425.27801513671875, + 180.6060791015625 + ], "flags": {}, - "order": 61, + "order": 55, "mode": 0, "inputs": [ { @@ -970,10 +934,10 @@ 3114, 356 ], - "size": { - "0": 261.19134521484375, - "1": 82 - }, + "size": [ + 261.19134521484375, + 82 + ], "flags": {}, "order": 9, "mode": 0, @@ -981,7 +945,8 @@ { "name": "prev_motion_lora", "type": "MOTION_LORA", - "link": null + "link": null, + "shape": 7 } ], "outputs": [ @@ -991,8 +956,8 @@ "links": [ 45 ], - "shape": 3, - "slot_index": 0 + "slot_index": 0, + "shape": 3 } ], "title": "AnimateDiff LoRA", @@ -1006,8 +971,7 @@ }, "widgets_values": [ "LiquidAF-0-1.safetensors", - 0.8, - "" + 0.8 ] }, { @@ -1017,10 +981,10 @@ 3115, 498 ], - "size": { - "0": 270.3999938964844, - "1": 82 - }, + "size": [ + 270.3999938964844, + 82 + ], "flags": {}, "order": 10, "mode": 0, @@ -1028,7 +992,8 @@ { "name": "prev_weight_adjust", "type": "WEIGHT_ADJUST", - "link": null + "link": null, + "shape": 7 } ], "outputs": [ @@ -1051,8 +1016,7 @@ }, "widgets_values": [ 1.01, - false, - "" + false ] }, { @@ -1062,13 +1026,14 @@ 1094, 453 ], - "size": { - "0": 315, - "1": 98 - }, + "size": [ + 315, + 98 + ], "flags": {}, "order": 11, "mode": 0, + "inputs": [], "outputs": [ { "name": "MODEL", @@ -1110,12 +1075,12 @@ 2524, 581 ], - "size": { - "0": 304.79998779296875, - "1": 66 - }, + "size": [ + 304.79998779296875, + 66 + ], "flags": {}, - "order": 69, + "order": 62, "mode": 0, "inputs": [ { @@ -1132,7 +1097,8 @@ "name": "cnet_stack", "type": "CONTROL_NET_STACK", "link": 84, - "slot_index": 2 + "slot_index": 2, + "shape": 7 } ], "outputs": [ @@ -1142,8 +1108,8 @@ "links": [ 134 ], - "shape": 3, - "slot_index": 0 + "slot_index": 0, + "shape": 3 }, { "name": "CONDITIONING-", @@ -1151,8 +1117,8 @@ "links": [ 135 ], - "shape": 3, - "slot_index": 1 + "slot_index": 1, + "shape": 3 } ], "properties": { @@ -1163,13 +1129,14 @@ "groupcolor": "#3f789e" } }, + "widgets_values": [], "shape": 1 }, { "id": 88, "type": "Reroute", "pos": [ - 2860.8354071366402, + 2860.83544921875, 64 ], "size": [ @@ -1177,7 +1144,7 @@ 26 ], "flags": {}, - "order": 38, + "order": 35, "mode": 0, "inputs": [ { @@ -1205,7 +1172,7 @@ "id": 89, "type": "Reroute", "pos": [ - 2860.8354071366402, + 2860.83544921875, 105 ], "size": [ @@ -1213,7 +1180,7 @@ 26 ], "flags": {}, - "order": 73, + "order": 67, "mode": 0, "inputs": [ { @@ -1241,15 +1208,15 @@ "id": 90, "type": "Reroute", "pos": [ - 2860.8354071366402, - 143.3452987595907 + 2860.83544921875, + 143.3452911376953 ], "size": [ 75, 26 ], "flags": {}, - "order": 74, + "order": 68, "mode": 0, "inputs": [ { @@ -1285,7 +1252,7 @@ 26 ], "flags": {}, - "order": 84, + "order": 81, "mode": 0, "inputs": [ { @@ -1314,15 +1281,15 @@ "id": 100, "type": "SetLatentNoiseMask", "pos": [ - 6505.217366877503, - 369.41342322069596 + 6505.21728515625, + 369.4134216308594 + ], + "size": [ + 210, + 46 ], - "size": { - "0": 210, - "1": 46 - }, "flags": {}, - "order": 92, + "order": 89, "mode": 0, "inputs": [ { @@ -1343,13 +1310,14 @@ "links": [ 153 ], - "shape": 3, - "slot_index": 0 + "slot_index": 0, + "shape": 3 } ], "properties": { "Node name for S&R": "SetLatentNoiseMask" - } + }, + "widgets_values": [] }, { "id": 17, @@ -1358,12 +1326,12 @@ -3900, -866 ], - "size": { - "0": 210, - "1": 86 - }, + "size": [ + 210, + 86 + ], "flags": {}, - "order": 47, + "order": 45, "mode": 0, "inputs": [ { @@ -1380,15 +1348,15 @@ 122, 128 ], - "shape": 3, - "slot_index": 0 + "slot_index": 0, + "shape": 3 }, { "name": "2160 width", "type": "INT", "links": null, - "shape": 3, - "slot_index": 1 + "slot_index": 1, + "shape": 3 }, { "name": "4096 height", @@ -1397,7 +1365,7 @@ "shape": 3 }, { - "name": "60 count", + "name": "30 count", "type": "INT", "links": null, "shape": 3 @@ -1405,7 +1373,8 @@ ], "properties": { "Node name for S&R": "GetImageSizeAndCount" - } + }, + "widgets_values": [] }, { "id": 85, @@ -1414,12 +1383,12 @@ -3652, -898 ], - "size": { - "0": 310.7047424316406, - "1": 238 - }, + "size": [ + 310.7047424316406, + 238 + ], "flags": {}, - "order": 58, + "order": 57, "mode": 0, "inputs": [ { @@ -1430,7 +1399,8 @@ { "name": "get_image_size", "type": "IMAGE", - "link": null + "link": null, + "shape": 7 }, { "name": "width_input", @@ -1455,10 +1425,10 @@ "type": "IMAGE", "links": [ 129, - 130 + 312 ], - "shape": 3, - "slot_index": 0 + "slot_index": 0, + "shape": 3 }, { "name": "width", @@ -1490,24 +1460,16 @@ { "id": 104, "type": "SetNode", - "pos": { - "0": -3212, - "1": -997, - "2": 0, - "3": 0, - "4": 0, - "5": 0, - "6": 0, - "7": 0, - "8": 0, - "9": 0 - }, - "size": { - "0": 210, - "1": 58 - }, + "pos": [ + -3212, + -997 + ], + "size": [ + 210, + 58 + ], "flags": {}, - "order": 46, + "order": 44, "mode": 0, "inputs": [ { @@ -1529,29 +1491,23 @@ }, "widgets_values": [ "init_img" - ] + ], + "color": "#2a363b", + "bgcolor": "#3f5159" }, { "id": 52, "type": "SetNode", - "pos": { - "0": -1992, - "1": -966, - "2": 0, - "3": 0, - "4": 0, - "5": 0, - "6": 0, - "7": 0, - "8": 0, - "9": 0 - }, - "size": { - "0": 210, - "1": 58 - }, + "pos": [ + -1992, + -966 + ], + "size": [ + 210, + 58 + ], "flags": {}, - "order": 70, + "order": 69, "mode": 0, "inputs": [ { @@ -1573,7 +1529,9 @@ }, "widgets_values": [ "lineart" - ] + ], + "color": "#2a363b", + "bgcolor": "#3f5159" }, { "id": 115, @@ -1582,13 +1540,15 @@ -2340, -859 ], - "size": { - "0": 363.1609191894531, - "1": 148.97213745117188 - }, + "size": [ + 363.1609191894531, + 148.97213745117188 + ], "flags": {}, "order": 12, "mode": 0, + "inputs": [], + "outputs": [], "properties": { "text": "" }, @@ -1602,16 +1562,18 @@ "id": 72, "type": "Note", "pos": [ - -326.87332026851414, - -1087.026439673227 + -326.8733215332031, + -1087.0264892578125 + ], + "size": [ + 357.3516845703125, + 135.6949462890625 ], - "size": { - "0": 357.3516845703125, - "1": 135.6949462890625 - }, "flags": {}, "order": 13, "mode": 0, + "inputs": [], + "outputs": [], "properties": { "text": "" }, @@ -1628,13 +1590,15 @@ 1490, 809 ], - "size": { - "0": 380.91632080078125, - "1": 230.8916015625 - }, + "size": [ + 380.91632080078125, + 230.8916015625 + ], "flags": {}, "order": 14, "mode": 0, + "inputs": [], + "outputs": [], "properties": { "text": "" }, @@ -1656,7 +1620,7 @@ 26 ], "flags": {}, - "order": 76, + "order": 71, "mode": 0, "inputs": [ { @@ -1693,7 +1657,7 @@ 26 ], "flags": {}, - "order": 77, + "order": 72, "mode": 0, "inputs": [ { @@ -1722,16 +1686,18 @@ "id": 125, "type": "Note", "pos": [ - 4337.8690841450125, - 699.6818760329338 + 4337.869140625, + 699.681884765625 + ], + "size": [ + 336.1888122558594, + 206.84153747558594 ], - "size": { - "0": 336.1888122558594, - "1": 206.84153747558594 - }, "flags": {}, "order": 15, "mode": 0, + "inputs": [], + "outputs": [], "properties": { "text": "" }, @@ -1745,15 +1711,15 @@ "id": 122, "type": "FeatureMixer", "pos": [ - -72.21454028302455, - -5668.483763498456 + -72.21453857421875, + -5668.48388671875 + ], + "size": [ + 367.79998779296875, + 342 ], - "size": { - "0": 367.79998779296875, - "1": 342 - }, "flags": {}, - "order": 41, + "order": 37, "mode": 4, "inputs": [ { @@ -1769,8 +1735,8 @@ "links": [ 199 ], - "shape": 3, - "slot_index": 0 + "slot_index": 0, + "shape": 3 }, { "name": "FEATURE_VISUALIZATION", @@ -1778,8 +1744,8 @@ "links": [ 196 ], - "shape": 3, - "slot_index": 1 + "slot_index": 1, + "shape": 3 } ], "properties": { @@ -1807,13 +1773,14 @@ -4241, -198 ], - "size": { - "0": 210, - "1": 82 - }, + "size": [ + 210, + 82 + ], "flags": {}, "order": 16, "mode": 0, + "inputs": [], "outputs": [ { "name": "connect to widget input", @@ -1825,23 +1792,24 @@ "title": "Extend last frame", "properties": { "Run widget replace on values": false - }, - "widgets_values": [] + } }, { "id": 68, "type": "Note", "pos": [ - -4267.1294444297155, - -555.9201161093287 + -4267.12939453125, + -555.9201049804688 + ], + "size": [ + 372.2613220214844, + 154.43922424316406 ], - "size": { - "0": 372.2613220214844, - "1": 154.43922424316406 - }, "flags": {}, "order": 17, "mode": 0, + "inputs": [], + "outputs": [], "properties": { "text": "" }, @@ -1856,20 +1824,21 @@ "type": "ControlNetLoaderAdvanced", "pos": [ 984, - 1273.8269519976366 + 1273.826904296875 + ], + "size": [ + 327.6000061035156, + 58 ], - "size": { - "0": 327.6000061035156, - "1": 58 - }, "flags": {}, "order": 18, "mode": 0, "inputs": [ { - "name": "timestep_keyframe", + "name": "tk_optional", "type": "TIMESTEP_KEYFRAME", - "link": null + "link": null, + "shape": 7 } ], "outputs": [ @@ -1899,20 +1868,21 @@ "type": "ControlNetLoaderAdvanced", "pos": [ 1339, - 1281.8269519976366 + 1281.826904296875 + ], + "size": [ + 327.6000061035156, + 58 ], - "size": { - "0": 327.6000061035156, - "1": 58 - }, "flags": {}, "order": 19, "mode": 0, "inputs": [ { - "name": "timestep_keyframe", + "name": "tk_optional", "type": "TIMESTEP_KEYFRAME", - "link": null + "link": null, + "shape": 7 } ], "outputs": [ @@ -1949,13 +1919,13 @@ 26 ], "flags": {}, - "order": 82, + "order": 79, "mode": 0, "inputs": [ { "name": "", "type": "*", - "link": 307 + "link": 321 } ], "outputs": [ @@ -1973,39 +1943,6 @@ "horizontal": false } }, - { - "id": 15, - "type": "DownloadAndLoadDepthAnythingV2Model", - "pos": [ - -2760, - -789 - ], - "size": { - "0": 315, - "1": 58 - }, - "flags": {}, - "order": 20, - "mode": 0, - "outputs": [ - { - "name": "da_v2_model", - "type": "DAMODEL", - "links": [ - 15, - 234 - ], - "shape": 3, - "slot_index": 0 - } - ], - "properties": { - "Node name for S&R": "DownloadAndLoadDepthAnythingV2Model" - }, - "widgets_values": [ - "depth_anything_v2_vitl_fp32.safetensors" - ] - }, { "id": 8, "type": "VAEDecode", @@ -2013,12 +1950,12 @@ 5898, 437 ], - "size": { - "0": 210, - "1": 46 - }, + "size": [ + 210, + 46 + ], "flags": {}, - "order": 89, + "order": 86, "mode": 0, "inputs": [ { @@ -2044,7 +1981,8 @@ ], "properties": { "Node name for S&R": "VAEDecode" - } + }, + "widgets_values": [] }, { "id": 79, @@ -2053,12 +1991,12 @@ 5920, 273 ], - "size": { - "0": 315, - "1": 82 - }, + "size": [ + 315, + 82 + ], "flags": {}, - "order": 90, + "order": 87, "mode": 0, "inputs": [ { @@ -2074,8 +2012,8 @@ "links": [ 152 ], - "shape": 3, - "slot_index": 0 + "slot_index": 0, + "shape": 3 } ], "properties": { @@ -2093,13 +2031,14 @@ -4242, -327 ], - "size": { - "0": 210, - "1": 82 - }, + "size": [ + 210, + 82 + ], "flags": {}, - "order": 21, + "order": 20, "mode": 0, + "inputs": [], "outputs": [ { "name": "connect to widget input", @@ -2111,8 +2050,7 @@ "title": "Num frames", "properties": { "Run widget replace on values": false - }, - "widgets_values": [] + } }, { "id": 91, @@ -2126,7 +2064,7 @@ 26 ], "flags": {}, - "order": 50, + "order": 46, "mode": 0, "inputs": [ { @@ -2151,73 +2089,6 @@ "horizontal": false } }, - { - "id": 148, - "type": "DepthAnything_V2", - "pos": [ - 9728.386098469018, - 266.75074584506234 - ], - "size": { - "0": 210, - "1": 46 - }, - "flags": {}, - "order": 101, - "mode": 0, - "inputs": [ - { - "name": "da_model", - "type": "DAMODEL", - "link": 235 - }, - { - "name": "images", - "type": "IMAGE", - "link": 248 - } - ], - "outputs": [ - { - "name": "image", - "type": "IMAGE", - "links": [ - 237, - 239 - ], - "shape": 3, - "slot_index": 0 - } - ], - "properties": { - "Node name for S&R": "DepthAnything_V2" - } - }, - { - "id": 154, - "type": "PreviewImage", - "pos": [ - 9946.386098469018, - 637.7507458450624 - ], - "size": { - "0": 481.87567138671875, - "1": 246 - }, - "flags": {}, - "order": 105, - "mode": 0, - "inputs": [ - { - "name": "images", - "type": "IMAGE", - "link": 250 - } - ], - "properties": { - "Node name for S&R": "PreviewImage" - } - }, { "id": 13, "type": "VHS_VideoCombine", @@ -2226,11 +2097,11 @@ 403 ], "size": [ - 210, - 686 + 214.7587890625, + 718.9691162109375 ], "flags": {}, - "order": 91, + "order": 88, "mode": 0, "inputs": [ { @@ -2241,17 +2112,20 @@ { "name": "audio", "type": "AUDIO", - "link": null + "link": null, + "shape": 7 }, { "name": "meta_batch", "type": "VHS_BatchManager", - "link": null + "link": null, + "shape": 7 }, { "name": "vae", "type": "VAE", - "link": null + "link": null, + "shape": 7 } ], "outputs": [ @@ -2273,17 +2147,20 @@ "pix_fmt": "yuv420p", "crf": 19, "save_metadata": true, + "trim_to_audio": false, "pingpong": false, "save_output": true, "videopreview": { "hidden": false, "paused": false, "params": { - "filename": "AnimateDiff_03287.mp4", + "filename": "AnimateDiff_02425.mp4", "subfolder": "", "type": "output", "format": "video/h264-mp4", - "frame_rate": 20 + "frame_rate": 20, + "workflow": "AnimateDiff_02425.png", + "fullpath": "/runpod-volume/ComfyUI_rv/output/AnimateDiff_02425.mp4" } } } @@ -2292,16 +2169,17 @@ "id": 113, "type": "UpscaleModelLoader", "pos": [ - 8493.811170891195, - 363.5270008378391 + 8493.8115234375, + 363.5270080566406 + ], + "size": [ + 315, + 58 ], - "size": { - "0": 315, - "1": 58 - }, "flags": {}, - "order": 22, + "order": 21, "mode": 4, + "inputs": [], "outputs": [ { "name": "UPSCALE_MODEL", @@ -2326,12 +2204,12 @@ 5463, 294 ], - "size": { - "0": 315, - "1": 262 - }, + "size": [ + 315, + 262 + ], "flags": {}, - "order": 88, + "order": 85, "mode": 0, "inputs": [ { @@ -2384,14 +2262,14 @@ "type": "Control Net Stacker", "pos": [ 1346, - 1457.8269519976366 + 1457.826904296875 + ], + "size": [ + 315, + 146 ], - "size": { - "0": 315, - "1": 146 - }, "flags": {}, - "order": 39, + "order": 36, "mode": 0, "inputs": [ { @@ -2408,7 +2286,8 @@ { "name": "cnet_stack", "type": "CONTROL_NET_STACK", - "link": null + "link": null, + "shape": 7 } ], "outputs": [ @@ -2418,8 +2297,8 @@ "links": [ 83 ], - "shape": 3, - "slot_index": 0 + "slot_index": 0, + "shape": 3 } ], "properties": { @@ -2439,14 +2318,14 @@ "type": "Control Net Stacker", "pos": [ 1776, - 1381.8269519976366 + 1381.826904296875 + ], + "size": [ + 315, + 146 ], - "size": { - "0": 315, - "1": 146 - }, "flags": {}, - "order": 51, + "order": 47, "mode": 0, "inputs": [ { @@ -2463,7 +2342,8 @@ { "name": "cnet_stack", "type": "CONTROL_NET_STACK", - "link": 83 + "link": 83, + "shape": 7 } ], "outputs": [ @@ -2473,8 +2353,8 @@ "links": [ 84 ], - "shape": 3, - "slot_index": 0 + "slot_index": 0, + "shape": 3 } ], "properties": { @@ -2493,15 +2373,15 @@ "id": 28, "type": "ADE_AnimateDiffLoaderGen1", "pos": [ - 3481.5897819464126, - 358.87590461870786 + 3481.58984375, + 358.87591552734375 + ], + "size": [ + 271.7644958496094, + 242 ], - "size": { - "0": 271.7644958496094, - "1": 242 - }, "flags": {}, - "order": 59, + "order": 53, "mode": 0, "inputs": [ { @@ -2513,47 +2393,55 @@ "name": "context_options", "type": "CONTEXT_OPTIONS", "link": 44, - "slot_index": 1 + "slot_index": 1, + "shape": 7 }, { "name": "motion_lora", "type": "MOTION_LORA", "link": 45, - "slot_index": 2 + "slot_index": 2, + "shape": 7 }, { "name": "ad_settings", "type": "AD_SETTINGS", "link": 46, - "slot_index": 3 + "slot_index": 3, + "shape": 7 }, { "name": "ad_keyframes", "type": "AD_KEYFRAMES", - "link": null + "link": null, + "shape": 7 }, { "name": "sample_settings", "type": "SAMPLE_SETTINGS", "link": 47, - "slot_index": 5 + "slot_index": 5, + "shape": 7 }, { "name": "scale_multival", "type": "MULTIVAL", "link": 48, - "slot_index": 6 + "slot_index": 6, + "shape": 7 }, { "name": "effect_multival", "type": "MULTIVAL", "link": 49, - "slot_index": 7 + "slot_index": 7, + "shape": 7 }, { "name": "per_block", "type": "PER_BLOCK", - "link": null + "link": null, + "shape": 7 } ], "outputs": [ @@ -2563,8 +2451,8 @@ "links": [ 56 ], - "shape": 3, - "slot_index": 0 + "slot_index": 0, + "shape": 3 } ], "properties": { @@ -2592,7 +2480,7 @@ 26 ], "flags": {}, - "order": 62, + "order": 58, "mode": 0, "inputs": [ { @@ -2628,7 +2516,7 @@ 26 ], "flags": {}, - "order": 79, + "order": 74, "mode": 0, "inputs": [ { @@ -2664,7 +2552,7 @@ 26 ], "flags": {}, - "order": 80, + "order": 75, "mode": 0, "inputs": [ { @@ -2692,15 +2580,15 @@ "id": 78, "type": "KSampler", "pos": [ - 6735.217366877503, - 289.41342322069596 + 6735.21728515625, + 289.4134216308594 + ], + "size": [ + 315, + 262 ], - "size": { - "0": 315, - "1": 262 - }, "flags": {}, - "order": 93, + "order": 90, "mode": 0, "inputs": [ { @@ -2759,7 +2647,7 @@ 26 ], "flags": {}, - "order": 85, + "order": 82, "mode": 0, "inputs": [ { @@ -2788,15 +2676,15 @@ "id": 80, "type": "VAEDecode", "pos": [ - 7092.217366877503, - 294.41342322069596 + 7092.21728515625, + 294.4134216308594 + ], + "size": [ + 210, + 46 ], - "size": { - "0": 210, - "1": 46 - }, "flags": {}, - "order": 94, + "order": 91, "mode": 0, "inputs": [ { @@ -2822,7 +2710,8 @@ ], "properties": { "Node name for S&R": "VAEDecode" - } + }, + "widgets_values": [] }, { "id": 172, @@ -2836,7 +2725,7 @@ 26 ], "flags": {}, - "order": 87, + "order": 84, "mode": 0, "inputs": [ { @@ -2864,15 +2753,15 @@ "id": 121, "type": "TimeFeatureNode", "pos": [ - -449.21454028302617, - -5524.483763498457 + -449.21453857421875, + -5524.48388671875 + ], + "size": [ + 317.4000244140625, + 222 ], - "size": { - "0": 317.4000244140625, - "1": 150 - }, "flags": {}, - "order": 23, + "order": 22, "mode": 4, "inputs": [ { @@ -2888,8 +2777,8 @@ "links": [ 195 ], - "shape": 3, - "slot_index": 0 + "slot_index": 0, + "shape": 3 }, { "name": "FEATURE_PIPE", @@ -2897,8 +2786,8 @@ "links": [ 193 ], - "shape": 3, - "slot_index": 1 + "slot_index": 1, + "shape": 3 } ], "properties": { @@ -2908,6 +2797,9 @@ 30, "smooth", 0.4, + 0, + 512, + 30, 0 ] }, @@ -2915,15 +2807,15 @@ "id": 123, "type": "PreviewImage", "pos": [ - 446.7854597169757, - -5708.483763498455 + 446.78546142578125, + -5708.48388671875 + ], + "size": [ + 443.01776123046875, + 260.46453857421875 ], - "size": { - "0": 443.01776123046875, - "1": 260.46453857421875 - }, "flags": {}, - "order": 53, + "order": 49, "mode": 4, "inputs": [ { @@ -2932,23 +2824,25 @@ "link": 196 } ], + "outputs": [], "properties": { "Node name for S&R": "PreviewImage" - } + }, + "widgets_values": [] }, { "id": 69, "type": "FlexMaskDepthChamber", "pos": [ - 487.78545971697525, - -5416.483763498458 + 487.78546142578125, + -5416.48388671875 + ], + "size": [ + 344.3999938964844, + 334 ], - "size": { - "0": 344.3999938964844, - "1": 310 - }, "flags": {}, - "order": 52, + "order": 48, "mode": 4, "inputs": [ { @@ -2957,14 +2851,15 @@ "link": null }, { - "name": "feature", - "type": "FEATURE", + "name": "depth_map", + "type": "IMAGE", "link": 199 }, { - "name": "feature_pipe", - "type": "FEATURE_PIPE", - "link": 193 + "name": "opt_feature", + "type": "FEATURE", + "link": 193, + "shape": 7 }, { "name": "depth_map", @@ -2977,8 +2872,8 @@ "name": "MASK", "type": "MASK", "links": [], - "shape": 3, - "slot_index": 0 + "slot_index": 0, + "shape": 3 } ], "properties": { @@ -2993,7 +2888,8 @@ 1, 0.66, "both", - "move_back" + "move_back", + 0 ] }, { @@ -3003,12 +2899,12 @@ 127, -4746 ], - "size": { - "0": 344.3999938964844, - "1": 310 - }, + "size": [ + 344.3999938964844, + 334 + ], "flags": {}, - "order": 24, + "order": 23, "mode": 4, "inputs": [ { @@ -3017,14 +2913,15 @@ "link": null }, { - "name": "feature", - "type": "FEATURE", + "name": "depth_map", + "type": "IMAGE", "link": null }, { - "name": "feature_pipe", - "type": "FEATURE_PIPE", - "link": null + "name": "opt_feature", + "type": "FEATURE", + "link": null, + "shape": 7 }, { "name": "depth_map", @@ -3037,8 +2934,8 @@ "name": "MASK", "type": "MASK", "links": [], - "shape": 3, - "slot_index": 0 + "slot_index": 0, + "shape": 3 } ], "properties": { @@ -3053,7 +2950,8 @@ 0.12, 0.21, "both", - "expand" + "expand", + 0 ] }, { @@ -3063,12 +2961,12 @@ 610, -4500 ], - "size": { - "0": 317.4000244140625, - "1": 150 - }, + "size": [ + 317.4000244140625, + 222 + ], "flags": {}, - "order": 25, + "order": 24, "mode": 4, "inputs": [ { @@ -3084,15 +2982,15 @@ "links": [ 94 ], - "shape": 3, - "slot_index": 0 + "slot_index": 0, + "shape": 3 }, { "name": "FEATURE_PIPE", "type": "FEATURE_PIPE", "links": [], - "shape": 3, - "slot_index": 1 + "slot_index": 1, + "shape": 3 } ], "properties": { @@ -3102,6 +3000,9 @@ 20, "bounce", 0.5, + 0, + 512, + 30, 0 ] }, @@ -3112,12 +3013,12 @@ 1010, -4620 ], - "size": { - "0": 367.79998779296875, - "1": 342 - }, + "size": [ + 367.79998779296875, + 342 + ], "flags": {}, - "order": 42, + "order": 38, "mode": 4, "inputs": [ { @@ -3131,8 +3032,8 @@ "name": "FEATURE", "type": "FEATURE", "links": [], - "shape": 3, - "slot_index": 0 + "slot_index": 0, + "shape": 3 }, { "name": "FEATURE_VISUALIZATION", @@ -3140,8 +3041,8 @@ "links": [ 95 ], - "shape": 3, - "slot_index": 1 + "slot_index": 1, + "shape": 3 } ], "properties": { @@ -3166,16 +3067,18 @@ "id": 71, "type": "Note", "pos": [ - -1428.9870702311473, - -1013.2101283245443 + -1428.987060546875, + -1013.2101440429688 + ], + "size": [ + 344.94537353515625, + 142.8384552001953 ], - "size": { - "0": 344.94537353515625, - "1": 142.8384552001953 - }, "flags": {}, - "order": 26, + "order": 25, "mode": 0, + "inputs": [], + "outputs": [], "properties": { "text": "" }, @@ -3185,74 +3088,19 @@ "color": "#432", "bgcolor": "#653" }, - { - "id": 49, - "type": "SetNode", - "pos": { - "0": -1970, - "1": -676, - "2": 0, - "3": 0, - "4": 0, - "5": 0, - "6": 0, - "7": 0, - "8": 0, - "9": 0 - }, - "size": { - "0": 210, - "1": 58 - }, - "flags": {}, - "order": 71, - "mode": 0, - "inputs": [ - { - "name": "IMAGE", - "type": "IMAGE", - "link": 304 - } - ], - "outputs": [ - { - "name": "IMAGE", - "type": "IMAGE", - "links": [ - 286 - ], - "slot_index": 0 - } - ], - "title": "Set_depth_maps", - "properties": { - "previousName": "depth_maps" - }, - "widgets_values": [ - "depth_maps" - ] - }, { "id": 74, "type": "GetNode", - "pos": { - "0": -576, - "1": -833, - "2": 0, - "3": 0, - "4": 0, - "5": 0, - "6": 0, - "7": 0, - "8": 0, - "9": 0 - }, - "size": { - "0": 210, - "1": 58 - }, + "pos": [ + -576, + -833 + ], + "size": [ + 210, + 58 + ], "flags": {}, - "order": 27, + "order": 26, "mode": 0, "inputs": [], "outputs": [ @@ -3261,7 +3109,7 @@ "type": "IMAGE", "links": [ 108, - 203 + 319 ], "slot_index": 0 } @@ -3270,7 +3118,9 @@ "properties": {}, "widgets_values": [ "depth_maps" - ] + ], + "color": "#2a363b", + "bgcolor": "#3f5159" }, { "id": 20, @@ -3279,12 +3129,12 @@ -564, -1048 ], - "size": { - "0": 210, - "1": 86 - }, + "size": [ + 210, + 86 + ], "flags": {}, - "order": 43, + "order": 39, "mode": 0, "inputs": [ { @@ -3298,40 +3148,41 @@ "name": "image", "type": "IMAGE", "links": [], - "shape": 3, - "slot_index": 0 + "slot_index": 0, + "shape": 3 }, { - "name": "674 width", + "name": "512 width", "type": "INT", "links": [ 26 ], - "shape": 3, - "slot_index": 1 + "slot_index": 1, + "shape": 3 }, { - "name": "1280 height", + "name": "972 height", "type": "INT", "links": [ 27 ], - "shape": 3, - "slot_index": 2 + "slot_index": 2, + "shape": 3 }, { - "name": "60 count", + "name": "30 count", "type": "INT", "links": [ 103 ], - "shape": 3, - "slot_index": 3 + "slot_index": 3, + "shape": 3 } ], "properties": { "Node name for S&R": "GetImageSizeAndCount" - } + }, + "widgets_values": [] }, { "id": 21, @@ -3340,12 +3191,12 @@ -317, -703 ], - "size": { - "0": 315, - "1": 150 - }, + "size": [ + 315, + 150 + ], "flags": {}, - "order": 63, + "order": 59, "mode": 0, "inputs": [ { @@ -3359,10 +3210,10 @@ "name": "MASK", "type": "MASK", "links": [ - 200 + 317 ], - "shape": 3, - "slot_index": 0 + "slot_index": 0, + "shape": 3 }, { "name": "IMAGE", @@ -3381,69 +3232,6 @@ 0 ] }, - { - "id": 127, - "type": "FlexMaskDepthChamber", - "pos": [ - 105, - -839 - ], - "size": { - "0": 344.3999938964844, - "1": 310 - }, - "flags": {}, - "order": 78, - "mode": 0, - "inputs": [ - { - "name": "masks", - "type": "MASK", - "link": 200 - }, - { - "name": "feature", - "type": "FEATURE", - "link": 209 - }, - { - "name": "feature_pipe", - "type": "FEATURE_PIPE", - "link": 202 - }, - { - "name": "depth_map", - "type": "IMAGE", - "link": 203 - } - ], - "outputs": [ - { - "name": "MASK", - "type": "MASK", - "links": [ - 207, - 307 - ], - "shape": 3, - "slot_index": 0 - } - ], - "properties": { - "Node name for S&R": "FlexMaskDepthChamber" - }, - "widgets_values": [ - 1, - false, - 0, - 0, - 0, - 0.05, - 0, - "z_front", - "move_forward" - ] - }, { "id": 114, "type": "Note", @@ -3451,13 +3239,15 @@ 71, -1074 ], - "size": { - "0": 484.20526123046875, - "1": 158.15316772460938 - }, + "size": [ + 484.20526123046875, + 158.15316772460938 + ], "flags": {}, - "order": 28, + "order": 27, "mode": 0, + "inputs": [], + "outputs": [], "properties": { "text": "" }, @@ -3474,18 +3264,18 @@ 595, -1044 ], - "size": { - "0": 210, - "1": 26 - }, + "size": [ + 210, + 26 + ], "flags": {}, - "order": 81, + "order": 78, "mode": 0, "inputs": [ { "name": "mask", "type": "MASK", - "link": 207 + "link": 320 } ], "outputs": [ @@ -3495,13 +3285,14 @@ "links": [ 37 ], - "shape": 3, - "slot_index": 0 + "slot_index": 0, + "shape": 3 } ], "properties": { "Node name for S&R": "MaskToImage" - } + }, + "widgets_values": [] }, { "id": 24, @@ -3511,11 +3302,11 @@ -1072 ], "size": [ - 210, - 682 + 214.7587890625, + 719.2589111328125 ], "flags": {}, - "order": 83, + "order": 80, "mode": 0, "inputs": [ { @@ -3526,17 +3317,20 @@ { "name": "audio", "type": "AUDIO", - "link": null + "link": null, + "shape": 7 }, { "name": "meta_batch", "type": "VHS_BatchManager", - "link": null + "link": null, + "shape": 7 }, { "name": "vae", "type": "VAE", - "link": null + "link": null, + "shape": 7 } ], "outputs": [ @@ -3558,17 +3352,20 @@ "pix_fmt": "yuv420p", "crf": 14, "save_metadata": true, + "trim_to_audio": false, "pingpong": false, "save_output": true, "videopreview": { "hidden": false, "paused": false, "params": { - "filename": "AnimateDiff_03286.mp4", + "filename": "AnimateDiff_02424.mp4", "subfolder": "", "type": "output", "format": "video/h264-mp4", - "frame_rate": 16 + "frame_rate": 16, + "workflow": "AnimateDiff_02424.png", + "fullpath": "/runpod-volume/ComfyUI_rv/output/AnimateDiff_02424.mp4" } } } @@ -3580,13 +3377,15 @@ 180, 232 ], - "size": { - "0": 565.3340454101562, - "1": 455.6415710449219 - }, + "size": [ + 565.3340454101562, + 455.6415710449219 + ], "flags": {}, - "order": 29, + "order": 28, "mode": 0, + "inputs": [], + "outputs": [], "properties": { "text": "" }, @@ -3603,12 +3402,12 @@ 7108, 435 ], - "size": { - "0": 210, - "1": 86 - }, + "size": [ + 210, + 86 + ], "flags": {}, - "order": 95, + "order": 92, "mode": 0, "inputs": [ { @@ -3624,8 +3423,8 @@ "links": [ 287 ], - "shape": 3, - "slot_index": 0 + "slot_index": 0, + "shape": 3 }, { "name": "832 width", @@ -3633,8 +3432,8 @@ "links": [ 283 ], - "shape": 3, - "slot_index": 1 + "slot_index": 1, + "shape": 3 }, { "name": "1584 height", @@ -3642,11 +3441,11 @@ "links": [ 284 ], - "shape": 3, - "slot_index": 2 + "slot_index": 2, + "shape": 3 }, { - "name": "60 count", + "name": "30 count", "type": "INT", "links": null, "shape": 3 @@ -3654,21 +3453,22 @@ ], "properties": { "Node name for S&R": "GetImageSizeAndCount" - } + }, + "widgets_values": [] }, { "id": 175, "type": "Reroute", "pos": [ - 2859.5948525759013, - -35.33431721779152 + 2859.594970703125, + -35.33431625366211 ], "size": [ 75, 26 ], "flags": {}, - "order": 45, + "order": 41, "mode": 0, "inputs": [ { @@ -3693,323 +3493,22 @@ } }, { - "id": 150, - "type": "VHS_VideoCombine", + "id": 174, + "type": "ImageScale", "pos": [ - 10530.386098469018, - 294.75074584506234 + 7596, + 262 ], "size": [ - 210, - 686 + 315, + 130 ], "flags": {}, - "order": 106, + "order": 93, "mode": 0, "inputs": [ { - "name": "images", - "type": "IMAGE", - "link": 242 - }, - { - "name": "audio", - "type": "AUDIO", - "link": null - }, - { - "name": "meta_batch", - "type": "VHS_BatchManager", - "link": null - }, - { - "name": "vae", - "type": "VAE", - "link": null - } - ], - "outputs": [ - { - "name": "Filenames", - "type": "VHS_FILENAMES", - "links": null, - "shape": 3 - } - ], - "properties": { - "Node name for S&R": "VHS_VideoCombine" - }, - "widgets_values": { - "frame_rate": 20, - "loop_count": 16, - "filename_prefix": "AnimateDiff", - "format": "video/h264-mp4", - "pix_fmt": "yuv420p", - "crf": 19, - "save_metadata": false, - "pingpong": false, - "save_output": true, - "videopreview": { - "hidden": false, - "paused": false, - "params": { - "filename": "AnimateDiff_03289.mp4", - "subfolder": "", - "type": "output", - "format": "video/h264-mp4", - "frame_rate": 20 - } - } - } - }, - { - "id": 153, - "type": "FeatureMixer", - "pos": [ - 9464, - 573 - ], - "size": { - "0": 367.79998779296875, - "1": 342 - }, - "flags": {}, - "order": 103, - "mode": 0, - "inputs": [ - { - "name": "feature", - "type": "FEATURE", - "link": 249 - } - ], - "outputs": [ - { - "name": "FEATURE", - "type": "FEATURE", - "links": [ - 251 - ], - "shape": 3, - "slot_index": 0 - }, - { - "name": "FEATURE_VISUALIZATION", - "type": "IMAGE", - "links": [ - 250 - ], - "shape": 3, - "slot_index": 1 - } - ], - "properties": { - "Node name for S&R": "FeatureMixer" - }, - "widgets_values": [ - 1, - 0, - 1, - 1, - 1, - 1, - 1, - 0, - 0, - 1, - 0.5, - false - ] - }, - { - "id": 145, - "type": "FlexImageParallax", - "pos": [ - 10091, - 273 - ], - "size": { - "0": 315, - "1": 238 - }, - "flags": {}, - "order": 104, - "mode": 0, - "inputs": [ - { - "name": "images", - "type": "IMAGE", - "link": 247 - }, - { - "name": "feature", - "type": "FEATURE", - "link": 251 - }, - { - "name": "feature_pipe", - "type": "FEATURE_PIPE", - "link": 241 - }, - { - "name": "depth_map", - "type": "IMAGE", - "link": 237 - } - ], - "outputs": [ - { - "name": "IMAGE", - "type": "IMAGE", - "links": [ - 242 - ], - "shape": 3, - "slot_index": 0 - } - ], - "properties": { - "Node name for S&R": "FlexImageParallax" - }, - "widgets_values": [ - 1, - 0, - "shift_x", - "relative", - 0.01, - 0 - ] - }, - { - "id": 149, - "type": "TimeFeatureNode", - "pos": [ - 9472, - 377 - ], - "size": { - "0": 317.4000244140625, - "1": 150 - }, - "flags": {}, - "order": 102, - "mode": 0, - "inputs": [ - { - "name": "video_frames", - "type": "IMAGE", - "link": 239 - } - ], - "outputs": [ - { - "name": "FEATURE", - "type": "FEATURE", - "links": [ - 249 - ], - "shape": 3, - "slot_index": 0 - }, - { - "name": "FEATURE_PIPE", - "type": "FEATURE_PIPE", - "links": [ - 241 - ], - "shape": 3, - "slot_index": 1 - } - ], - "properties": { - "Node name for S&R": "TimeFeatureNode" - }, - "widgets_values": [ - 20, - "accelerate", - 0.1, - 0.3 - ] - }, - { - "id": 155, - "type": "Note", - "pos": [ - 9936, - 87 - ], - "size": { - "0": 434.9312438964844, - "1": 112.82051086425781 - }, - "flags": {}, - "order": 30, - "mode": 0, - "properties": { - "text": "" - }, - "widgets_values": [ - "optionally, add parallax for additional rub. To accomplish this, we get new depth maps that include everything the AI generated" - ], - "color": "#432", - "bgcolor": "#653" - }, - { - "id": 147, - "type": "GetNode", - "pos": { - "0": 9467, - "1": 245, - "2": 0, - "3": 0, - "4": 0, - "5": 0, - "6": 0, - "7": 0, - "8": 0, - "9": 0 - }, - "size": { - "0": 210, - "1": 58 - }, - "flags": {}, - "order": 31, - "mode": 0, - "inputs": [], - "outputs": [ - { - "name": "DAMODEL", - "type": "DAMODEL", - "links": [ - 235 - ], - "slot_index": 0 - } - ], - "title": "Get_DA_MODEL", - "properties": {}, - "widgets_values": [ - "DA_MODEL" - ] - }, - { - "id": 174, - "type": "ImageScale", - "pos": [ - 7596, - 262 - ], - "size": { - "0": 315, - "1": 130 - }, - "flags": {}, - "order": 96, - "mode": 0, - "inputs": [ - { - "name": "image", + "name": "image", "type": "IMAGE", "link": 292 }, @@ -4037,8 +3536,8 @@ "links": [ 285 ], - "shape": 3, - "slot_index": 0 + "slot_index": 0, + "shape": 3 } ], "properties": { @@ -4063,7 +3562,7 @@ 26 ], "flags": {}, - "order": 56, + "order": 52, "mode": 0, "inputs": [ { @@ -4091,15 +3590,15 @@ "id": 177, "type": "GetImageSizeAndCount", "pos": [ - 7534.390205834786, - -57.429299055237095 + 7534.39013671875, + -57.429298400878906 + ], + "size": [ + 210, + 86 ], - "size": { - "0": 210, - "1": 86 - }, "flags": {}, - "order": 64, + "order": 60, "mode": 0, "inputs": [ { @@ -4115,8 +3614,8 @@ "links": [ 292 ], - "shape": 3, - "slot_index": 0 + "slot_index": 0, + "shape": 3 }, { "name": "506 width", @@ -4131,7 +3630,7 @@ "shape": 3 }, { - "name": "60 count", + "name": "30 count", "type": "INT", "links": null, "shape": 3 @@ -4139,7 +3638,8 @@ ], "properties": { "Node name for S&R": "GetImageSizeAndCount" - } + }, + "widgets_values": [] }, { "id": 170, @@ -4148,12 +3648,12 @@ 7981, 278 ], - "size": { - "0": 315, - "1": 146 - }, + "size": [ + 315, + 146 + ], "flags": {}, - "order": 97, + "order": 94, "mode": 0, "inputs": [ { @@ -4169,7 +3669,8 @@ { "name": "mask", "type": "MASK", - "link": 274 + "link": 274, + "shape": 7 } ], "outputs": [ @@ -4179,8 +3680,8 @@ "links": [ 295 ], - "shape": 3, - "slot_index": 0 + "slot_index": 0, + "shape": 3 } ], "properties": { @@ -4199,12 +3700,12 @@ 8851, 407 ], - "size": { - "0": 241.79998779296875, - "1": 46 - }, + "size": [ + 241.79998779296875, + 46 + ], "flags": {}, - "order": 99, + "order": 96, "mode": 4, "inputs": [ { @@ -4224,17 +3725,16 @@ "name": "IMAGE", "type": "IMAGE", "links": [ - 177, - 247, - 248 + 177 ], - "shape": 3, - "slot_index": 0 + "slot_index": 0, + "shape": 3 } ], "properties": { "Node name for S&R": "ImageUpscaleWithModel" - } + }, + "widgets_values": [] }, { "id": 82, @@ -4243,12 +3743,12 @@ -3662, -585 ], - "size": { - "0": 310.7047424316406, - "1": 238 - }, + "size": [ + 310.7047424316406, + 238 + ], "flags": {}, - "order": 57, + "order": 56, "mode": 0, "inputs": [ { @@ -4259,7 +3759,8 @@ { "name": "get_image_size", "type": "IMAGE", - "link": null + "link": null, + "shape": 7 }, { "name": "width_input", @@ -4285,8 +3786,8 @@ "links": [ 302 ], - "shape": 3, - "slot_index": 0 + "slot_index": 0, + "shape": 3 }, { "name": "width", @@ -4318,24 +3819,16 @@ { "id": 76, "type": "SetNode", - "pos": { - "0": -3176, - "1": -583, - "2": 0, - "3": 0, - "4": 0, - "5": 0, - "6": 0, - "7": 0, - "8": 0, - "9": 0 - }, - "size": { - "0": 210, - "1": 58 - }, + "pos": [ + -3176, + -583 + ], + "size": [ + 210, + 58 + ], "flags": {}, - "order": 65, + "order": 63, "mode": 0, "inputs": [ { @@ -4357,29 +3850,23 @@ }, "widgets_values": [ "init_images_resize" - ] + ], + "color": "#2a363b", + "bgcolor": "#3f5159" }, { "id": 77, "type": "GetNode", - "pos": { - "0": 1038, - "1": 291, - "2": 0, - "3": 0, - "4": 0, - "5": 0, - "6": 0, - "7": 0, - "8": 0, - "9": 0 - }, - "size": { - "0": 210, - "1": 58 - }, + "pos": [ + 1038, + 291 + ], + "size": [ + 210, + 58 + ], "flags": {}, - "order": 32, + "order": 29, "mode": 0, "inputs": [], "outputs": [ @@ -4399,134 +3886,6 @@ "init_images_resize" ] }, - { - "id": 146, - "type": "SetNode", - "pos": { - "0": -2248, - "1": -579, - "2": 0, - "3": 0, - "4": 0, - "5": 0, - "6": 0, - "7": 0, - "8": 0, - "9": 0 - }, - "size": { - "0": 210, - "1": 58 - }, - "flags": {}, - "order": 40, - "mode": 0, - "inputs": [ - { - "name": "DAMODEL", - "type": "DAMODEL", - "link": 234 - } - ], - "outputs": [ - { - "name": "*", - "type": "*", - "links": null - } - ], - "title": "Set_DA_MODEL", - "properties": { - "previousName": "DA_MODEL" - }, - "widgets_values": [ - "DA_MODEL" - ] - }, - { - "id": 179, - "type": "VHS_LoadVideo", - "pos": [ - -4599, - -919 - ], - "size": [ - 235.1999969482422, - 684.3795290924782 - ], - "flags": {}, - "order": 33, - "mode": 0, - "inputs": [ - { - "name": "meta_batch", - "type": "VHS_BatchManager", - "link": null - }, - { - "name": "vae", - "type": "VAE", - "link": null - } - ], - "outputs": [ - { - "name": "IMAGE", - "type": "IMAGE", - "links": [ - 300, - 301 - ], - "shape": 3, - "slot_index": 0 - }, - { - "name": "frame_count", - "type": "INT", - "links": null, - "shape": 3 - }, - { - "name": "audio", - "type": "AUDIO", - "links": null, - "shape": 3 - }, - { - "name": "video_info", - "type": "VHS_VIDEOINFO", - "links": null, - "shape": 3 - } - ], - "properties": { - "Node name for S&R": "VHS_LoadVideo" - }, - "widgets_values": { - "video": "pexelswalkingcolumn.mp4", - "force_rate": 15, - "force_size": "Disabled", - "custom_width": 512, - "custom_height": 512, - "frame_load_cap": 60, - "skip_first_frames": 0, - "select_every_nth": 1, - "choose video to upload": "image", - "videopreview": { - "hidden": false, - "paused": false, - "params": { - "frame_load_cap": 60, - "skip_first_frames": 0, - "force_rate": 15, - "filename": "pexelswalkingcolumn.mp4", - "type": "input", - "format": "video/mp4", - "select_every_nth": 1 - } - } - } - }, { "id": 42, "type": "CR LoRA Stack", @@ -4534,18 +3893,19 @@ 1110, 683 ], - "size": { - "0": 315, - "1": 342 - }, + "size": [ + 315, + 342 + ], "flags": {}, - "order": 34, + "order": 30, "mode": 0, "inputs": [ { "name": "lora_stack", "type": "LORA_STACK", - "link": null + "link": null, + "shape": 7 } ], "outputs": [ @@ -4555,8 +3915,8 @@ "links": [ 62 ], - "shape": 3, - "slot_index": 0 + "slot_index": 0, + "shape": 3 }, { "name": "show_help", @@ -4590,12 +3950,12 @@ 1942, 483 ], - "size": { - "0": 422.84503173828125, - "1": 164.31304931640625 - }, + "size": [ + 422.84503173828125, + 164.31304931640625 + ], "flags": {}, - "order": 60, + "order": 54, "mode": 0, "inputs": [ { @@ -4625,16 +3985,17 @@ "id": 41, "type": "LoadImage", "pos": [ - 4072.911603734174, - 274.6610030536769 + 4072.91162109375, + 274.6610107421875 + ], + "size": [ + 315, + 314.0000305175781 ], - "size": { - "0": 315, - "1": 314.0000305175781 - }, "flags": {}, - "order": 35, + "order": 31, "mode": 0, + "inputs": [], "outputs": [ { "name": "IMAGE", @@ -4642,8 +4003,8 @@ "links": [ 97 ], - "shape": 3, - "slot_index": 0 + "slot_index": 0, + "shape": 3 }, { "name": "MASK", @@ -4667,12 +4028,12 @@ 4798, 303 ], - "size": { - "0": 315, - "1": 278 - }, + "size": [ + 315, + 278 + ], "flags": {}, - "order": 72, + "order": 66, "mode": 0, "inputs": [ { @@ -4694,17 +4055,20 @@ { "name": "image_negative", "type": "IMAGE", - "link": null + "link": null, + "shape": 7 }, { "name": "attn_mask", "type": "MASK", - "link": null + "link": null, + "shape": 7 }, { "name": "clip_vision", "type": "CLIP_VISION", - "link": null + "link": null, + "shape": 7 } ], "outputs": [ @@ -4715,8 +4079,8 @@ 66, 112 ], - "shape": 3, - "slot_index": 0 + "slot_index": 0, + "shape": 3 } ], "properties": { @@ -4738,12 +4102,12 @@ 8503, 537 ], - "size": { - "0": 310.79998779296875, - "1": 58 - }, + "size": [ + 310.79998779296875, + 58 + ], "flags": {}, - "order": 98, + "order": 95, "mode": 0, "inputs": [ { @@ -4759,8 +4123,8 @@ "links": [ 298 ], - "shape": 3, - "slot_index": 0 + "slot_index": 0, + "shape": 3 } ], "properties": { @@ -4771,122 +4135,398 @@ ] }, { - "id": 128, - "type": "TimeFeatureNode", + "id": 81, + "type": "VHS_VideoCombine", + "pos": [ + 9117, + 285 + ], + "size": [ + 214.7587890625, + 718.790771484375 + ], + "flags": {}, + "order": 97, + "mode": 0, + "inputs": [ + { + "name": "images", + "type": "IMAGE", + "link": 177 + }, + { + "name": "audio", + "type": "AUDIO", + "link": null, + "shape": 7 + }, + { + "name": "meta_batch", + "type": "VHS_BatchManager", + "link": null, + "shape": 7 + }, + { + "name": "vae", + "type": "VAE", + "link": null, + "shape": 7 + } + ], + "outputs": [ + { + "name": "Filenames", + "type": "VHS_FILENAMES", + "links": null, + "shape": 3 + } + ], + "properties": { + "Node name for S&R": "VHS_VideoCombine" + }, + "widgets_values": { + "frame_rate": 20, + "loop_count": 0, + "filename_prefix": "AnimateDiff", + "format": "video/h264-mp4", + "pix_fmt": "yuv420p", + "crf": 19, + "save_metadata": true, + "trim_to_audio": false, + "pingpong": false, + "save_output": true, + "videopreview": { + "hidden": false, + "paused": false, + "params": { + "filename": "AnimateDiff_02426.mp4", + "subfolder": "", + "type": "output", + "format": "video/h264-mp4", + "frame_rate": 20, + "workflow": "AnimateDiff_02426.png", + "fullpath": "/runpod-volume/ComfyUI_rv/output/AnimateDiff_02426.mp4" + } + } + } + }, + { + "id": 180, + "type": "AIO_Preprocessor", "pos": [ - -1422.9870702311473, - -715.2101283245419 + -2718.727294921875, + -656.55712890625 ], - "size": { - "0": 317.4000244140625, - "1": 150 + "size": [ + 315, + 82 + ], + "flags": {}, + "order": 65, + "mode": 0, + "inputs": [ + { + "name": "image", + "type": "IMAGE", + "link": 312 + } + ], + "outputs": [ + { + "name": "IMAGE", + "type": "IMAGE", + "links": [ + 313 + ], + "slot_index": 0 + } + ], + "properties": { + "Node name for S&R": "AIO_Preprocessor" }, + "widgets_values": [ + "DepthAnythingV2Preprocessor", + 512 + ] + }, + { + "id": 49, + "type": "SetNode", + "pos": [ + -1984.5181884765625, + -682.70068359375 + ], + "size": [ + 210, + 58 + ], "flags": {}, - "order": 75, + "order": 70, "mode": 0, "inputs": [ { - "name": "video_frames", + "name": "IMAGE", "type": "IMAGE", - "link": 286 + "link": 313 } ], "outputs": [ { - "name": "FEATURE", - "type": "FEATURE", + "name": "IMAGE", + "type": "IMAGE", "links": [ - 209 + 314 ], - "shape": 3, "slot_index": 0 + } + ], + "title": "Set_depth_maps", + "properties": { + "previousName": "depth_maps" + }, + "widgets_values": [ + "depth_maps" + ], + "color": "#2a363b", + "bgcolor": "#3f5159" + }, + { + "id": 182, + "type": "GetImageSizeAndCount", + "pos": [ + -2067.144775390625, + -543.501220703125 + ], + "size": [ + 277.20001220703125, + 86 + ], + "flags": {}, + "order": 73, + "mode": 0, + "inputs": [ + { + "name": "image", + "type": "IMAGE", + "link": 314 + } + ], + "outputs": [ + { + "name": "image", + "type": "IMAGE", + "links": null }, { - "name": "FEATURE_PIPE", - "type": "FEATURE_PIPE", + "name": "512 width", + "type": "INT", + "links": null + }, + { + "name": "972 height", + "type": "INT", + "links": null + }, + { + "name": "30 count", + "type": "INT", "links": [ - 202 + 315 ], - "shape": 3, - "slot_index": 1 + "slot_index": 3 + } + ], + "properties": { + "Node name for S&R": "GetImageSizeAndCount" + } + }, + { + "id": 181, + "type": "TimeFeatureNode", + "pos": [ + -1398.9901123046875, + -742.89892578125 + ], + "size": [ + 315, + 202 + ], + "flags": {}, + "order": 76, + "mode": 0, + "inputs": [ + { + "name": "frame_count", + "type": "INT", + "link": 315, + "widget": { + "name": "frame_count" + } + } + ], + "outputs": [ + { + "name": "FEATURE", + "type": "FEATURE", + "links": [ + 318 + ], + "slot_index": 0 } ], "properties": { "Node name for S&R": "TimeFeatureNode" }, "widgets_values": [ + "smooth", + 30, + 30, + 512, + 512, 30, - "accelerate", - 0.4, 0 ] }, { - "id": 81, - "type": "VHS_VideoCombine", + "id": 183, + "type": "FlexMaskDepthChamber", "pos": [ - 9117, - 285 + 105, + -839 ], "size": [ - 210, - 686 + 415.8000183105469, + 314 ], "flags": {}, - "order": 100, + "order": 77, "mode": 0, "inputs": [ { - "name": "images", - "type": "IMAGE", - "link": 177 + "name": "masks", + "type": "MASK", + "link": 317 }, { - "name": "audio", - "type": "AUDIO", - "link": null + "name": "depth_map", + "type": "IMAGE", + "link": 319 }, + { + "name": "opt_feature", + "type": "FEATURE", + "link": 318, + "shape": 7 + } + ], + "outputs": [ + { + "name": "MASK", + "type": "MASK", + "links": [ + 320, + 321 + ] + } + ], + "properties": { + "Node name for S&R": "FlexMaskDepthChamber" + }, + "widgets_values": [ + 1, + 0, + "z_front", + "move_forward", + false, + 0, + 0, + 1, + 0.05, + 0 + ] + }, + { + "id": 179, + "type": "VHS_LoadVideo", + "pos": [ + -4269.50439453125, + -940.2282104492188 + ], + "size": [ + 247.455078125, + 262 + ], + "flags": {}, + "order": 32, + "mode": 0, + "inputs": [ { "name": "meta_batch", "type": "VHS_BatchManager", - "link": null + "link": null, + "shape": 7 }, { "name": "vae", "type": "VAE", - "link": null + "link": null, + "shape": 7 } ], "outputs": [ { - "name": "Filenames", - "type": "VHS_FILENAMES", + "name": "IMAGE", + "type": "IMAGE", + "links": [ + 300, + 301 + ], + "slot_index": 0, + "shape": 3 + }, + { + "name": "frame_count", + "type": "INT", + "links": null, + "shape": 3 + }, + { + "name": "audio", + "type": "AUDIO", + "links": null, + "shape": 3 + }, + { + "name": "video_info", + "type": "VHS_VIDEOINFO", "links": null, "shape": 3 } ], "properties": { - "Node name for S&R": "VHS_VideoCombine" + "Node name for S&R": "VHS_LoadVideo" }, "widgets_values": { - "frame_rate": 20, - "loop_count": 0, - "filename_prefix": "AnimateDiff", - "format": "video/h264-mp4", - "pix_fmt": "yuv420p", - "crf": 19, - "save_metadata": true, - "pingpong": false, - "save_output": true, + "video": "pexelswalkingcolumn.mp4", + "force_rate": 15, + "force_size": "Disabled", + "custom_width": 512, + "custom_height": 512, + "frame_load_cap": 30, + "skip_first_frames": 0, + "select_every_nth": 1, + "choose video to upload": "image", "videopreview": { "hidden": false, "paused": false, "params": { - "filename": "AnimateDiff_03288.mp4", - "subfolder": "", - "type": "output", - "format": "video/h264-mp4", - "frame_rate": 20 + "frame_load_cap": 30, + "skip_first_frames": 0, + "force_rate": 15, + "filename": "pexelswalkingcolumn.mp4", + "type": "input", + "format": "video/mp4", + "select_every_nth": 1 } } } @@ -4909,14 +4549,6 @@ 0, "IMAGE" ], - [ - 15, - 15, - 0, - 14, - 0, - "DAMODEL" - ], [ 26, 20, @@ -5285,14 +4917,6 @@ 0, "IMAGE" ], - [ - 130, - 85, - 0, - 14, - 1, - "IMAGE" - ], [ 133, 4, @@ -5509,94 +5133,6 @@ 1, "FEATURE" ], - [ - 200, - 21, - 0, - 127, - 0, - "MASK" - ], - [ - 202, - 128, - 1, - 127, - 2, - "FEATURE_PIPE" - ], - [ - 203, - 74, - 0, - 127, - 3, - "IMAGE" - ], - [ - 207, - 127, - 0, - 25, - 0, - "MASK" - ], - [ - 209, - 128, - 0, - 127, - 1, - "FEATURE" - ], - [ - 234, - 15, - 0, - 146, - 0, - "*" - ], - [ - 235, - 147, - 0, - 148, - 0, - "DAMODEL" - ], - [ - 237, - 148, - 0, - 145, - 3, - "IMAGE" - ], - [ - 239, - 148, - 0, - 149, - 0, - "IMAGE" - ], - [ - 241, - 149, - 1, - 145, - 2, - "FEATURE_PIPE" - ], - [ - 242, - 145, - 0, - 150, - 0, - "IMAGE" - ], [ 246, 3, @@ -5605,46 +5141,6 @@ 0, "LATENT" ], - [ - 247, - 112, - 0, - 145, - 0, - "IMAGE" - ], - [ - 248, - 112, - 0, - 148, - 1, - "IMAGE" - ], - [ - 249, - 149, - 0, - 153, - 0, - "FEATURE" - ], - [ - 250, - 153, - 1, - 154, - 0, - "IMAGE" - ], - [ - 251, - 153, - 0, - 145, - 1, - "FEATURE" - ], [ 273, 99, @@ -5693,14 +5189,6 @@ 0, "IMAGE" ], - [ - 286, - 49, - 0, - 128, - 0, - "IMAGE" - ], [ 287, 173, @@ -5782,40 +5270,97 @@ "IMAGE" ], [ - 304, - 14, + 310, + 77, 0, - 49, + 12, 0, "IMAGE" ], [ - 307, - 127, + 311, + 77, 0, - 97, + 175, 0, "*" ], [ - 310, - 77, + 312, + 85, 0, - 12, + 180, 0, "IMAGE" ], [ - 311, - 77, + 313, + 180, 0, - 175, + 49, + 0, + "IMAGE" + ], + [ + 314, + 49, + 0, + 182, + 0, + "IMAGE" + ], + [ + 315, + 182, + 3, + 181, + 0, + "INT" + ], + [ + 317, + 21, + 0, + 183, + 0, + "MASK" + ], + [ + 318, + 181, + 0, + 183, + 2, + "FEATURE" + ], + [ + 319, + 74, + 0, + 183, + 1, + "IMAGE" + ], + [ + 320, + 183, + 0, + 25, + 0, + "MASK" + ], + [ + 321, + 183, + 0, + 97, 0, "*" ] ], "groups": [ { + "id": 1, "title": "Load Image", "bounding": [ -4300, @@ -5825,9 +5370,10 @@ ], "color": "#3f789e", "font_size": 24, - "locked": false + "flags": {} }, { + "id": 2, "title": "Preprocessing", "bounding": [ -2768, @@ -5837,9 +5383,10 @@ ], "color": "#3f789e", "font_size": 24, - "locked": false + "flags": {} }, { + "id": 3, "title": "Feature", "bounding": [ -1457, @@ -5849,9 +5396,10 @@ ], "color": "#3f789e", "font_size": 24, - "locked": false + "flags": {} }, { + "id": 4, "title": "Depth Chamber", "bounding": [ -621, @@ -5861,9 +5409,10 @@ ], "color": "#3f789e", "font_size": 24, - "locked": false + "flags": {} }, { + "id": 5, "title": "Control net", "bounding": [ 952, @@ -5873,9 +5422,10 @@ ], "color": "#3f789e", "font_size": 24, - "locked": false + "flags": {} }, { + "id": 6, "title": "Animate Diff", "bounding": [ 3043, @@ -5885,9 +5435,10 @@ ], "color": "#3f789e", "font_size": 24, - "locked": false + "flags": {} }, { + "id": 7, "title": "Sampler1", "bounding": [ 5166, @@ -5897,9 +5448,10 @@ ], "color": "#3f789e", "font_size": 24, - "locked": false + "flags": {} }, { + "id": 8, "title": "Load Model", "bounding": [ 949, @@ -5909,9 +5461,10 @@ ], "color": "#3f789e", "font_size": 24, - "locked": false + "flags": {} }, { + "id": 9, "title": "IPAdapter", "bounding": [ 4036, @@ -5921,9 +5474,10 @@ ], "color": "#3f789e", "font_size": 24, - "locked": false + "flags": {} }, { + "id": 10, "title": "Sampler2", "bounding": [ 6480, @@ -5933,9 +5487,10 @@ ], "color": "#3f789e", "font_size": 24, - "locked": false + "flags": {} }, { + "id": 11, "title": "Upscale", "bounding": [ 8431, @@ -5945,9 +5500,10 @@ ], "color": "#3f789e", "font_size": 24, - "locked": false + "flags": {} }, { + "id": 12, "title": "Alternate configuration", "bounding": [ -517, @@ -5957,9 +5513,10 @@ ], "color": "#3f789e", "font_size": 24, - "locked": false + "flags": {} }, { + "id": 13, "title": "Alternate configuration1", "bounding": [ 991, @@ -5969,21 +5526,10 @@ ], "color": "#3f789e", "font_size": 24, - "locked": false - }, - { - "title": "Parallax", - "bounding": [ - 9412, - 173, - 1442, - 781 - ], - "color": "#3f789e", - "font_size": 24, - "locked": false + "flags": {} }, { + "id": 15, "title": "Paste Orig", "bounding": [ 7394, @@ -5993,18 +5539,33 @@ ], "color": "#3f789e", "font_size": 24, - "locked": false + "flags": {} } ], "config": {}, "extra": { "ds": { - "scale": 0.16105100000000291, + "scale": 0.12100000000000277, "offset": [ - 4307.331041861666, - 1962.2032827226076 + -356.0934577218195, + 1893.2807557724689 ] - } + }, + "node_versions": { + "ComfyUI-AnimateDiff-Evolved": "7ec46937095048a77342aeada964e9823a2102f0", + "comfy-core": "0.3.12", + "comfyui_controlnet_aux": "5a049bde9cc117dafc327cded156459289097ea1", + "ComfyUI_Comfyroll_CustomNodes": "d78b780ae43fcf8c6b7c6505e6ffb4584281ceca", + "ComfyUI_IPAdapter_plus": "b188a6cb39b512a9c6da7235b880af42c78ccd0d", + "efficiency-nodes-comfyui": "3ead4afd120833f3bffdefeca0d6545df8051798", + "ComfyUI-KJNodes": "973ceb6ca8b7525d54873805888ad690090d6b1e", + "ComfyUI_RyanOnTheInside": "0507092b2c3f5c51b45989c6c4fd51c1add26513", + "ComfyUI-Advanced-ControlNet": "9632af9dc8f9abe28431c0027411d7a6d4f6cd3e", + "ComfyUi_NNLatentUpscale": "08105da31dbd7a54569661e135835e73bd8064b0", + "ComfyUI-VideoHelperSuite": "6953fa21443cf55f7c3b61ed3f4c87c5d3677fe1", + "ComfyUI_essentials": "33ff89fd354d8ec3ab6affb605a79a931b445d99" + }, + "ue_links": [] }, "version": 0.4 } \ No newline at end of file diff --git a/examples/face_mesh_visualizer.json b/examples/face_mesh_visualizerVERSION2.json similarity index 72% rename from examples/face_mesh_visualizer.json rename to examples/face_mesh_visualizerVERSION2.json index 9ad7376..630b4df 100644 --- a/examples/face_mesh_visualizer.json +++ b/examples/face_mesh_visualizerVERSION2.json @@ -1,28 +1,20 @@ { - "last_node_id": 446, - "last_link_id": 723, + "last_node_id": 469, + "last_link_id": 795, "nodes": [ { "id": 45, "type": "SetNode", - "pos": { - "0": 510.31048583984375, - "1": 469.7173156738281, - "2": 0, - "3": 0, - "4": 0, - "5": 0, - "6": 0, - "7": 0, - "8": 0, - "9": 0 - }, - "size": { - "0": 210, - "1": 58 - }, + "pos": [ + 510.31048583984375, + 469.7173156738281 + ], + "size": [ + 210, + 58 + ], "flags": {}, - "order": 46, + "order": 55, "mode": 0, "inputs": [ { @@ -50,21 +42,21 @@ "id": 50, "type": "PreviewAudio", "pos": [ - 1070.311144030928, - 199.71815844600061 + 1070.3111572265625, + 199.71815490722656 + ], + "size": [ + 315, + 76 ], - "size": { - "0": 315, - "1": 76 - }, "flags": {}, - "order": 68, + "order": 73, "mode": 0, "inputs": [ { "name": "audio", "type": "AUDIO", - "link": 57 + "link": 726 } ], "outputs": [], @@ -78,30 +70,22 @@ { "id": 258, "type": "SetNode", - "pos": { - "0": 1079.7158203125, - "1": 510.3684387207031, - "2": 0, - "3": 0, - "4": 0, - "5": 0, - "6": 0, - "7": 0, - "8": 0, - "9": 0 - }, - "size": { - "0": 210, - "1": 58 - }, + "pos": [ + 1079.7158203125, + 510.3684387207031 + ], + "size": [ + 210, + 58 + ], "flags": {}, - "order": 72, + "order": 79, "mode": 0, "inputs": [ { "name": "AUDIO", "type": "AUDIO", - "link": 435 + "link": 732 } ], "outputs": [ @@ -122,30 +106,22 @@ { "id": 257, "type": "SetNode", - "pos": { - "0": 1079.7158203125, - "1": 410.36859130859375, - "2": 0, - "3": 0, - "4": 0, - "5": 0, - "6": 0, - "7": 0, - "8": 0, - "9": 0 - }, - "size": { - "0": 210, - "1": 58 - }, + "pos": [ + 1079.7158203125, + 410.36859130859375 + ], + "size": [ + 210, + 58 + ], "flags": {}, - "order": 71, + "order": 77, "mode": 0, "inputs": [ { "name": "AUDIO", "type": "AUDIO", - "link": 434 + "link": 730 } ], "outputs": [ @@ -167,21 +143,21 @@ "id": 228, "type": "AudioFilter", "pos": [ - 1139.715685046552, - 930.3692814928769 + 1139.7156982421875, + 930.3692626953125 + ], + "size": [ + 252, + 46 ], - "size": { - "0": 252, - "1": 46 - }, "flags": {}, - "order": 69, + "order": 74, "mode": 0, "inputs": [ { "name": "audio", "type": "AUDIO", - "link": 373 + "link": 728 }, { "name": "filters", @@ -194,7 +170,7 @@ "name": "AUDIO", "type": "AUDIO", "links": [ - 374 + 741 ], "slot_index": 0, "shape": 3 @@ -202,137 +178,100 @@ ], "properties": { "Node name for S&R": "AudioFilter" - } + }, + "widgets_values": [] }, { - "id": 226, - "type": "AudioFeatureExtractor", + "id": 262, + "type": "SetNode", "pos": [ - 1099.715685046553, - 1030.3692814928772 + 1479.7158203125, + 1210.3692626953125 + ], + "size": [ + 210, + 58 ], - "size": { - "0": 361.20001220703125, - "1": 78 - }, "flags": {}, - "order": 87, + "order": 91, "mode": 0, "inputs": [ { - "name": "audio", - "type": "AUDIO", - "link": 374 - }, - { - "name": "feature_pipe", - "type": "FEATURE_PIPE", - "link": 371 + "name": "FEATURE", + "type": "FEATURE", + "link": 744 } ], "outputs": [ { - "name": "FEATURE", - "type": "FEATURE", - "links": [ - 437 - ], - "slot_index": 0, - "shape": 3 - }, - { - "name": "FEATURE_PIPE", - "type": "FEATURE_PIPE", - "links": [], - "slot_index": 1, - "shape": 3 + "name": "*", + "type": "*", + "links": null } ], + "title": "Set_drum_feature", "properties": { - "Node name for S&R": "AudioFeatureExtractor" + "previousName": "drum_feature" }, "widgets_values": [ - "amplitude_envelope" + "drum_feature" ] }, { - "id": 43, - "type": "AudioFeatureExtractor", + "id": 261, + "type": "SetNode", "pos": [ - 1089.715685046553, - 1200.3692814928777 + 1489.7158203125, + 1030.3690185546875 + ], + "size": [ + 210, + 58 ], - "size": { - "0": 361.20001220703125, - "1": 78 - }, "flags": {}, - "order": 74, + "order": 100, "mode": 0, "inputs": [ { - "name": "audio", - "type": "AUDIO", - "link": 41 - }, - { - "name": "feature_pipe", - "type": "FEATURE_PIPE", - "link": 42 + "name": "FEATURE", + "type": "FEATURE", + "link": 742 } ], "outputs": [ { - "name": "FEATURE", - "type": "FEATURE", - "links": [ - 438 - ], - "slot_index": 0, - "shape": 3 - }, - { - "name": "FEATURE_PIPE", - "type": "FEATURE_PIPE", - "links": [], - "slot_index": 1, - "shape": 3 + "name": "*", + "type": "*", + "links": null } ], + "title": "Set_kick_feature", "properties": { - "Node name for S&R": "AudioFeatureExtractor" + "previousName": "kick_feature" }, "widgets_values": [ - "amplitude_envelope" + "kick_feature" ] }, { - "id": 262, + "id": 264, "type": "SetNode", - "pos": { - "0": 1479.7158203125, - "1": 1210.3692626953125, - "2": 0, - "3": 0, - "4": 0, - "5": 0, - "6": 0, - "7": 0, - "8": 0, - "9": 0 - }, - "size": { - "0": 210, - "1": 58 - }, + "pos": [ + 1479.7158203125, + 1350.36962890625 + ], + "size": [ + 210, + 58 + ], "flags": {}, - "order": 88, + "order": 92, "mode": 0, "inputs": [ { "name": "FEATURE", "type": "FEATURE", - "link": 438 + "link": 748 } ], "outputs": [ @@ -342,41 +281,33 @@ "links": null } ], - "title": "Set_drum_feature", + "title": "Set_vocal_feature", "properties": { - "previousName": "drum_feature" + "previousName": "vocal_feature" }, "widgets_values": [ - "drum_feature" + "vocal_feature" ] }, { - "id": 261, + "id": 266, "type": "SetNode", - "pos": { - "0": 1489.7158203125, - "1": 1030.3690185546875, - "2": 0, - "3": 0, - "4": 0, - "5": 0, - "6": 0, - "7": 0, - "8": 0, - "9": 0 - }, - "size": { - "0": 210, - "1": 58 - }, + "pos": [ + 1499.7158203125, + 1460.36962890625 + ], + "size": [ + 210, + 58 + ], "flags": {}, - "order": 95, + "order": 93, "mode": 0, "inputs": [ { "name": "FEATURE", "type": "FEATURE", - "link": 437 + "link": 750 } ], "outputs": [ @@ -386,92 +317,69 @@ "links": null } ], - "title": "Set_kick_feature", + "title": "Set_bass_feature", "properties": { - "previousName": "kick_feature" + "previousName": "bass_feature" }, "widgets_values": [ - "kick_feature" + "bass_feature" ] }, { - "id": 263, - "type": "AudioFeatureExtractor", + "id": 268, + "type": "SetNode", "pos": [ - 1089.715685046553, - 1340.3692814928772 + 1489.7158203125, + 1600.3701171875 + ], + "size": [ + 210, + 58 ], - "size": { - "0": 361.20001220703125, - "1": 78 - }, "flags": {}, - "order": 75, + "order": 94, "mode": 0, "inputs": [ { - "name": "audio", - "type": "AUDIO", - "link": 440 - }, - { - "name": "feature_pipe", - "type": "FEATURE_PIPE", - "link": 439 + "name": "FEATURE", + "type": "FEATURE", + "link": 752 } ], "outputs": [ { - "name": "FEATURE", - "type": "FEATURE", - "links": [ - 441 - ], - "slot_index": 0, - "shape": 3 - }, - { - "name": "FEATURE_PIPE", - "type": "FEATURE_PIPE", - "links": [], - "slot_index": 1, - "shape": 3 + "name": "*", + "type": "*", + "links": null } ], + "title": "Set_other_feature", "properties": { - "Node name for S&R": "AudioFeatureExtractor" + "previousName": "other_feature" }, "widgets_values": [ - "amplitude_envelope" + "other_feature" ] }, { - "id": 264, + "id": 277, "type": "SetNode", - "pos": { - "0": 1479.7158203125, - "1": 1350.36962890625, - "2": 0, - "3": 0, - "4": 0, - "5": 0, - "6": 0, - "7": 0, - "8": 0, - "9": 0 - }, - "size": { - "0": 210, - "1": 58 - }, + "pos": [ + 647.7149658203125, + 968.3689575195312 + ], + "size": [ + 210, + 58 + ], "flags": {}, - "order": 89, + "order": 70, "mode": 0, "inputs": [ { - "name": "FEATURE", - "type": "FEATURE", - "link": 441 + "name": "MASK", + "type": "MASK", + "link": 453 } ], "outputs": [ @@ -481,92 +389,73 @@ "links": null } ], - "title": "Set_vocal_feature", + "title": "Set_empty_mask", "properties": { - "previousName": "vocal_feature" + "previousName": "empty_mask" }, "widgets_values": [ - "vocal_feature" - ] + "empty_mask" + ], + "color": "#1c5715", + "bgcolor": "#1f401b" }, { - "id": 265, - "type": "AudioFeatureExtractor", + "id": 101, + "type": "SetNode", "pos": [ - 1079.715685046553, - 1460.3692814928772 + 629.715087890625, + 854.3688354492188 + ], + "size": [ + 210, + 58 ], - "size": { - "0": 361.20001220703125, - "1": 78 - }, "flags": {}, - "order": 76, + "order": 69, "mode": 0, "inputs": [ { - "name": "audio", - "type": "AUDIO", - "link": 443 - }, - { - "name": "feature_pipe", - "type": "FEATURE_PIPE", - "link": 442 + "name": "IMAGE", + "type": "IMAGE", + "link": 162 } ], "outputs": [ { - "name": "FEATURE", - "type": "FEATURE", - "links": [ - 444 - ], - "slot_index": 0, - "shape": 3 - }, - { - "name": "FEATURE_PIPE", - "type": "FEATURE_PIPE", - "links": [], - "slot_index": 1, - "shape": 3 + "name": "*", + "type": "*", + "links": null } ], + "title": "Set_empty_img", "properties": { - "Node name for S&R": "AudioFeatureExtractor" + "previousName": "empty_img" }, "widgets_values": [ - "amplitude_envelope" - ] + "empty_img" + ], + "color": "#2a363b", + "bgcolor": "#3f5159" }, { - "id": 266, + "id": 278, "type": "SetNode", - "pos": { - "0": 1499.7158203125, - "1": 1460.36962890625, - "2": 0, - "3": 0, - "4": 0, - "5": 0, - "6": 0, - "7": 0, - "8": 0, - "9": 0 - }, - "size": { - "0": 210, - "1": 58 - }, + "pos": [ + 632.715087890625, + 1085.3690185546875 + ], + "size": [ + 210, + 58 + ], "flags": {}, - "order": 90, + "order": 71, "mode": 0, "inputs": [ { - "name": "FEATURE", - "type": "FEATURE", - "link": 444 + "name": "INT", + "type": "INT", + "link": 454 } ], "outputs": [ @@ -576,252 +465,27 @@ "links": null } ], - "title": "Set_bass_feature", - "properties": { - "previousName": "bass_feature" - }, - "widgets_values": [ - "bass_feature" - ] - }, - { - "id": 267, - "type": "AudioFeatureExtractor", - "pos": [ - 1089.715685046553, - 1610.3692814928777 - ], - "size": { - "0": 361.20001220703125, - "1": 78 - }, - "flags": {}, - "order": 77, - "mode": 0, - "inputs": [ - { - "name": "audio", - "type": "AUDIO", - "link": 445 - }, - { - "name": "feature_pipe", - "type": "FEATURE_PIPE", - "link": 446 - } - ], - "outputs": [ - { - "name": "FEATURE", - "type": "FEATURE", - "links": [ - 447 - ], - "slot_index": 0, - "shape": 3 - }, - { - "name": "FEATURE_PIPE", - "type": "FEATURE_PIPE", - "links": [], - "slot_index": 1, - "shape": 3 - } - ], - "properties": { - "Node name for S&R": "AudioFeatureExtractor" - }, - "widgets_values": [ - "amplitude_envelope" - ] - }, - { - "id": 268, - "type": "SetNode", - "pos": { - "0": 1489.7158203125, - "1": 1600.3701171875, - "2": 0, - "3": 0, - "4": 0, - "5": 0, - "6": 0, - "7": 0, - "8": 0, - "9": 0 - }, - "size": { - "0": 210, - "1": 58 - }, - "flags": {}, - "order": 91, - "mode": 0, - "inputs": [ - { - "name": "FEATURE", - "type": "FEATURE", - "link": 447 - } - ], - "outputs": [ - { - "name": "*", - "type": "*", - "links": null - } - ], - "title": "Set_other_feature", - "properties": { - "previousName": "other_feature" - }, - "widgets_values": [ - "other_feature" - ] - }, - { - "id": 277, - "type": "SetNode", - "pos": { - "0": 647.7149658203125, - "1": 968.3689575195312, - "2": 0, - "3": 0, - "4": 0, - "5": 0, - "6": 0, - "7": 0, - "8": 0, - "9": 0 - }, - "size": { - "0": 210, - "1": 58 - }, - "flags": {}, - "order": 59, - "mode": 0, - "inputs": [ - { - "name": "MASK", - "type": "MASK", - "link": 453 - } - ], - "outputs": [ - { - "name": "*", - "type": "*", - "links": null - } - ], - "title": "Set_empty_mask", - "properties": { - "previousName": "empty_mask" - }, - "widgets_values": [ - "empty_mask" - ] - }, - { - "id": 101, - "type": "SetNode", - "pos": { - "0": 629.715087890625, - "1": 854.3688354492188, - "2": 0, - "3": 0, - "4": 0, - "5": 0, - "6": 0, - "7": 0, - "8": 0, - "9": 0 - }, - "size": { - "0": 210, - "1": 58 - }, - "flags": {}, - "order": 58, - "mode": 0, - "inputs": [ - { - "name": "IMAGE", - "type": "IMAGE", - "link": 162 - } - ], - "outputs": [ - { - "name": "*", - "type": "*", - "links": null - } - ], - "title": "Set_empty_img", - "properties": { - "previousName": "empty_img" - }, - "widgets_values": [ - "empty_img" - ] - }, - { - "id": 278, - "type": "SetNode", - "pos": { - "0": 632.715087890625, - "1": 1085.3690185546875, - "2": 0, - "3": 0, - "4": 0, - "5": 0, - "6": 0, - "7": 0, - "8": 0, - "9": 0 - }, - "size": { - "0": 210, - "1": 58 - }, - "flags": {}, - "order": 60, - "mode": 0, - "inputs": [ - { - "name": "INT", - "type": "INT", - "link": 454 - } - ], - "outputs": [ - { - "name": "*", - "type": "*", - "links": null - } - ], - "title": "Set_frame_count", + "title": "Set_frame_count", "properties": { "previousName": "frame_count" }, "widgets_values": [ "frame_count" - ] + ], + "color": "#1b4669", + "bgcolor": "#29699c" }, { "id": 227, "type": "FrequencyFilterPreset", "pos": [ - 1069.715685046553, - 830.3692814928769 + 1069.7156982421875, + 830.3692626953125 + ], + "size": [ + 405.5999755859375, + 58 ], - "size": { - "0": 405.5999755859375, - "1": 58 - }, "flags": {}, "order": 0, "mode": 0, @@ -829,7 +493,8 @@ { "name": "previous_filter", "type": "FREQUENCY_FILTER", - "link": null + "link": null, + "shape": 7 } ], "outputs": [ @@ -853,22 +518,14 @@ { "id": 281, "type": "GetNode", - "pos": { - "0": 2706.944580078125, - "1": 609.09521484375, - "2": 0, - "3": 0, - "4": 0, - "5": 0, - "6": 0, - "7": 0, - "8": 0, - "9": 0 - }, - "size": { - "0": 210, - "1": 58 - }, + "pos": [ + 2706.944580078125, + 609.09521484375 + ], + "size": [ + 210, + 58 + ], "flags": {}, "order": 1, "mode": 0, @@ -892,30 +549,22 @@ { "id": 256, "type": "SetNode", - "pos": { - "0": 1079.7158203125, - "1": 320.36871337890625, - "2": 0, - "3": 0, - "4": 0, - "5": 0, - "6": 0, - "7": 0, - "8": 0, - "9": 0 - }, - "size": { - "0": 210, - "1": 58 - }, + "pos": [ + 1079.7158203125, + 320.36871337890625 + ], + "size": [ + 210, + 58 + ], "flags": {}, - "order": 70, + "order": 75, "mode": 0, "inputs": [ { "name": "AUDIO", "type": "AUDIO", - "link": 433 + "link": 729 } ], "outputs": [ @@ -934,76 +583,24 @@ ] }, { - "id": 306, + "id": 259, "type": "SetNode", - "pos": { - "0": 1082.7158203125, - "1": 713.3687133789062, - "2": 0, - "3": 0, - "4": 0, - "5": 0, - "6": 0, - "7": 0, - "8": 0, - "9": 0 - }, - "size": { - "0": 210, - "1": 58 - }, - "flags": {}, - "order": 78, - "mode": 0, - "inputs": [ - { - "name": "FEATURE_PIPE", - "type": "FEATURE_PIPE", - "link": 488 - } + "pos": [ + 1080.7158203125, + 612.3684692382812 ], - "outputs": [ - { - "name": "*", - "type": "*", - "links": null - } + "size": [ + 210, + 58 ], - "title": "Set_feature_pipe", - "properties": { - "previousName": "feature_pipe" - }, - "widgets_values": [ - "feature_pipe" - ] - }, - { - "id": 259, - "type": "SetNode", - "pos": { - "0": 1080.7158203125, - "1": 612.3684692382812, - "2": 0, - "3": 0, - "4": 0, - "5": 0, - "6": 0, - "7": 0, - "8": 0, - "9": 0 - }, - "size": { - "0": 210, - "1": 58 - }, "flags": {}, - "order": 73, + "order": 81, "mode": 0, "inputs": [ { "name": "AUDIO", "type": "AUDIO", - "link": 436 + "link": 734 } ], "outputs": [ @@ -1025,15 +622,15 @@ "id": 280, "type": "VHS_DuplicateImages", "pos": [ - 3093.9438551141884, - 442.09572528624676 + 3093.94384765625, + 442.0957336425781 + ], + "size": [ + 214.232421875, + 78 ], - "size": { - "0": 214.232421875, - "1": 78 - }, "flags": {}, - "order": 65, + "order": 83, "mode": 0, "inputs": [ { @@ -1077,22 +674,14 @@ { "id": 272, "type": "GetNode", - "pos": { - "0": 3212.943359375, - "1": 1060.095458984375, - "2": 0, - "3": 0, - "4": 0, - "5": 0, - "6": 0, - "7": 0, - "8": 0, - "9": 0 - }, - "size": { - "0": 210, - "1": 58 - }, + "pos": [ + 3212.943359375, + 1060.095458984375 + ], + "size": [ + 210, + 58 + ], "flags": {}, "order": 2, "mode": 0, @@ -1116,22 +705,14 @@ { "id": 285, "type": "GetNode", - "pos": { - "0": 3073.943359375, - "1": 1694.096435546875, - "2": 0, - "3": 0, - "4": 0, - "5": 0, - "6": 0, - "7": 0, - "8": 0, - "9": 0 - }, - "size": { - "0": 210, - "1": 58 - }, + "pos": [ + 3073.943359375, + 1694.096435546875 + ], + "size": [ + 210, + 58 + ], "flags": {}, "order": 3, "mode": 0, @@ -1157,13 +738,13 @@ "id": 274, "type": "CreateShapeMask", "pos": [ - 1936.943855114191, - 418.0957252862463 + 1936.94384765625, + 418.0957336425781 + ], + "size": [ + 315, + 270 ], - "size": { - "0": 315, - "1": 270 - }, "flags": {}, "order": 4, "mode": 0, @@ -1204,21 +785,21 @@ "id": 316, "type": "GetImageSizeAndCount", "pos": [ - 3121.943855114188, - 1965.0957252862472 + 3121.94384765625, + 1965.095703125 + ], + "size": [ + 277.20001220703125, + 86 ], - "size": { - "0": 277.20001220703125, - "1": 86 - }, "flags": {}, - "order": 62, + "order": 66, "mode": 0, "inputs": [ { "name": "image", "type": "IMAGE", - "link": 500 + "link": 757 } ], "outputs": [ @@ -1232,19 +813,19 @@ "shape": 3 }, { - "name": "768 width", + "name": "width", "type": "INT", "links": null, "shape": 3 }, { - "name": "464 height", + "name": "height", "type": "INT", "links": null, "shape": 3 }, { - "name": "225 count", + "name": "count", "type": "INT", "links": null, "shape": 3 @@ -1252,29 +833,22 @@ ], "properties": { "Node name for S&R": "GetImageSizeAndCount" - } + }, + "widgets_values": [] }, { "id": 343, "type": "SetNode", - "pos": { - "0": 3729.943603515625, - "1": 1577.09619140625, - "2": 0, - "3": 0, - "4": 0, - "5": 0, - "6": 0, - "7": 0, - "8": 0, - "9": 0 - }, - "size": { - "0": 210, - "1": 58 - }, + "pos": [ + 3729.943603515625, + 1577.09619140625 + ], + "size": [ + 210, + 58 + ], "flags": {}, - "order": 81, + "order": 88, "mode": 0, "inputs": [ { @@ -1296,29 +870,23 @@ }, "widgets_values": [ "vis_line_mask" - ] + ], + "color": "#1c5715", + "bgcolor": "#1f401b" }, { "id": 346, "type": "SetNode", - "pos": { - "0": 3701.943359375, - "1": 1471.095947265625, - "2": 0, - "3": 0, - "4": 0, - "5": 0, - "6": 0, - "7": 0, - "8": 0, - "9": 0 - }, - "size": { - "0": 210, - "1": 58 - }, + "pos": [ + 3701.943359375, + 1471.095947265625 + ], + "size": [ + 210, + 58 + ], "flags": {}, - "order": 92, + "order": 99, "mode": 0, "inputs": [ { @@ -1340,21 +908,23 @@ }, "widgets_values": [ "vis_line_img" - ] + ], + "color": "#2a363b", + "bgcolor": "#3f5159" }, { "id": 279, "type": "ImageInterval", "pos": [ - 1950.943855114191, - 265.0957252862445 + 1950.94384765625, + 265.0957336425781 ], - "size": { - "0": 268.79998779296875, - "1": 106 - }, - "flags": {}, - "order": 37, + "size": [ + 268.79998779296875, + 106 + ], + "flags": {}, + "order": 40, "mode": 0, "inputs": [ { @@ -1386,22 +956,14 @@ { "id": 276, "type": "GetNode", - "pos": { - "0": 1976.946044921875, - "1": 165.0943145751953, - "2": 0, - "3": 0, - "4": 0, - "5": 0, - "6": 0, - "7": 0, - "8": 0, - "9": 0 - }, - "size": { - "0": 210, - "1": 58 - }, + "pos": [ + 1976.946044921875, + 165.0943145751953 + ], + "size": [ + 210, + 58 + ], "flags": {}, "order": 5, "mode": 0, @@ -1426,15 +988,15 @@ "id": 365, "type": "ADE_AnimateDiffLoaderGen1", "pos": [ - 11047.056037749246, - 450.90197319525515 + 11047.0556640625, + 450.9019775390625 + ], + "size": [ + 271.7644958496094, + 242 ], - "size": { - "0": 271.7644958496094, - "1": 242 - }, "flags": {}, - "order": 93, + "order": 101, "mode": 0, "inputs": [ { @@ -1447,47 +1009,55 @@ "name": "context_options", "type": "CONTEXT_OPTIONS", "link": 572, - "slot_index": 1 + "slot_index": 1, + "shape": 7 }, { "name": "motion_lora", "type": "MOTION_LORA", "link": 573, - "slot_index": 2 + "slot_index": 2, + "shape": 7 }, { "name": "ad_settings", "type": "AD_SETTINGS", "link": 574, - "slot_index": 3 + "slot_index": 3, + "shape": 7 }, { "name": "ad_keyframes", "type": "AD_KEYFRAMES", - "link": null + "link": null, + "shape": 7 }, { "name": "sample_settings", "type": "SAMPLE_SETTINGS", "link": 575, - "slot_index": 5 + "slot_index": 5, + "shape": 7 }, { "name": "scale_multival", "type": "MULTIVAL", "link": 576, - "slot_index": 6 + "slot_index": 6, + "shape": 7 }, { "name": "effect_multival", "type": "MULTIVAL", "link": 577, - "slot_index": 7 + "slot_index": 7, + "shape": 7 }, { "name": "per_block", "type": "PER_BLOCK", - "link": null + "link": null, + "shape": 7 } ], "outputs": [ @@ -1497,8 +1067,8 @@ "links": [ 589 ], - "shape": 3, - "slot_index": 0 + "slot_index": 0, + "shape": 3 } ], "properties": { @@ -1518,39 +1088,43 @@ "id": 366, "type": "ADE_AnimateDiffSamplingSettings", "pos": [ - 11047.056037749246, - 1060.9019731952558 + 11047.0556640625, + 1060.9019775390625 + ], + "size": [ + 273.3500061035156, + 274 ], - "size": { - "0": 273.3500061035156, - "1": 254 - }, "flags": {}, - "order": 38, + "order": 41, "mode": 0, "inputs": [ { "name": "noise_layers", "type": "NOISE_LAYERS", "link": null, - "slot_index": 0 + "slot_index": 0, + "shape": 7 }, { "name": "iteration_opts", "type": "ITERATION_OPTS", - "link": null + "link": null, + "shape": 7 }, { "name": "custom_cfg", "type": "CUSTOM_CFG", "link": 578, - "slot_index": 2 + "slot_index": 2, + "shape": 7 }, { "name": "sigma_schedule", "type": "SIGMA_SCHEDULE", "link": 579, - "slot_index": 3 + "slot_index": 3, + "shape": 7 }, { "name": "seed_override", @@ -1567,6 +1141,12 @@ "widget": { "name": "seed_override" } + }, + { + "name": "image_inject", + "type": "IMAGE_INJECT", + "link": null, + "shape": 7 } ], "outputs": [ @@ -1576,8 +1156,8 @@ "links": [ 575 ], - "shape": 3, - "slot_index": 0 + "slot_index": 0, + "shape": 3 } ], "properties": { @@ -1594,24 +1174,24 @@ "comfy", 0, 0, - false, - "" + false ] }, { "id": 367, "type": "ADE_SigmaSchedule", "pos": [ - 10717.056037749246, - 1080.9019731952558 + 10717.0556640625, + 1080.9019775390625 + ], + "size": [ + 244.73928833007812, + 58 ], - "size": { - "0": 244.73928833007812, - "1": 58 - }, "flags": {}, "order": 6, "mode": 0, + "inputs": [], "outputs": [ { "name": "SIGMA_SCHEDULE", @@ -1619,8 +1199,8 @@ "links": [ 579 ], - "shape": 3, - "slot_index": 0 + "slot_index": 0, + "shape": 3 } ], "title": "Sigma Schedule 🎭🅐🅓", @@ -1640,13 +1220,13 @@ "id": 368, "type": "ADE_MultivalDynamic", "pos": [ - 10707.056037749246, - 730.9019731952556 + 10707.0556640625, + 730.9019775390625 + ], + "size": [ + 259.9388122558594, + 63.332008361816406 ], - "size": { - "0": 259.9388122558594, - "1": 63.332008361816406 - }, "flags": {}, "order": 7, "mode": 0, @@ -1654,7 +1234,8 @@ { "name": "mask_optional", "type": "MASK", - "link": null + "link": null, + "shape": 7 } ], "outputs": [ @@ -1664,8 +1245,8 @@ "links": [ 576 ], - "shape": 3, - "slot_index": 0 + "slot_index": 0, + "shape": 3 } ], "title": "Scale 🎭🅐🅓", @@ -1678,21 +1259,20 @@ } }, "widgets_values": [ - 1.1400000000000001, - "" + 1.1400000000000001 ] }, { "id": 369, "type": "ADE_AnimateDiffUniformContextOptions", "pos": [ - 11047.056037749246, - 750.9019731952556 + 11047.0556640625, + 750.9019775390625 + ], + "size": [ + 273.269775390625, + 270 ], - "size": { - "0": 273.269775390625, - "1": 270 - }, "flags": {}, "order": 8, "mode": 0, @@ -1700,12 +1280,14 @@ { "name": "prev_context", "type": "CONTEXT_OPTIONS", - "link": null + "link": null, + "shape": 7 }, { "name": "view_opts", "type": "VIEW_OPTS", - "link": null + "link": null, + "shape": 7 } ], "outputs": [ @@ -1715,8 +1297,8 @@ "links": [ 572 ], - "shape": 3, - "slot_index": 0 + "slot_index": 0, + "shape": 3 } ], "title": "Context Options 🎭🅐🅓", @@ -1745,13 +1327,13 @@ "id": 370, "type": "ADE_MultivalDynamic", "pos": [ - 10707.056037749246, - 620.9019731952552 + 10707.0556640625, + 620.9019775390625 + ], + "size": [ + 265.1632385253906, + 58 ], - "size": { - "0": 265.1632385253906, - "1": 58 - }, "flags": {}, "order": 9, "mode": 0, @@ -1759,7 +1341,8 @@ { "name": "mask_optional", "type": "MASK", - "link": null + "link": null, + "shape": 7 } ], "outputs": [ @@ -1782,21 +1365,20 @@ } }, "widgets_values": [ - 1.1, - "" + 1.1 ] }, { "id": 371, "type": "ADE_CustomCFGSimple", "pos": [ - 10707.056037749246, - 830.9019731952558 + 10707.0556640625, + 830.9019775390625 + ], + "size": [ + 257.2469787597656, + 60.893348693847656 ], - "size": { - "0": 257.2469787597656, - "1": 60.893348693847656 - }, "flags": {}, "order": 10, "mode": 0, @@ -1804,7 +1386,8 @@ { "name": "cfg_extras", "type": "CFG_EXTRAS", - "link": null + "link": null, + "shape": 7 } ], "outputs": [ @@ -1826,38 +1409,39 @@ } }, "widgets_values": [ - 2, - "" + 2 ] }, { "id": 372, "type": "ADE_AnimateDiffSettings", "pos": [ - 10737.056037749246, - 1180.9019731952558 + 10737.0556640625, + 1180.9019775390625 + ], + "size": [ + 226.8000030517578, + 54 ], - "size": { - "0": 226.8000030517578, - "1": 54 - }, "flags": { "collapsed": true }, - "order": 39, + "order": 42, "mode": 0, "inputs": [ { "name": "pe_adjust", "type": "PE_ADJUST", "link": 580, - "slot_index": 0 + "slot_index": 0, + "shape": 7 }, { "name": "weight_adjust", "type": "WEIGHT_ADJUST", "link": 581, - "slot_index": 1 + "slot_index": 1, + "shape": 7 } ], "outputs": [ @@ -1878,21 +1462,19 @@ "groupcolor": "#3f789e" } }, - "widgets_values": [ - "" - ] + "widgets_values": [] }, { "id": 373, "type": "ADE_AdjustPESweetspotStretch", "pos": [ - 10707.056037749246, - 930.9019731952561 + 10707.0556640625, + 930.9019775390625 + ], + "size": [ + 253.07310485839844, + 106 ], - "size": { - "0": 253.07310485839844, - "1": 106 - }, "flags": {}, "order": 11, "mode": 0, @@ -1900,7 +1482,8 @@ { "name": "prev_pe_adjust", "type": "PE_ADJUST", - "link": null + "link": null, + "shape": 7 } ], "outputs": [ @@ -1924,21 +1507,20 @@ "widgets_values": [ 16, 18, - false, - "" + false ] }, { "id": 374, "type": "ADE_AdjustWeightAllMult", "pos": [ - 10717.056037749246, - 470.90197319525515 + 10717.0556640625, + 470.9019775390625 + ], + "size": [ + 270.3999938964844, + 82 ], - "size": { - "0": 270.3999938964844, - "1": 82 - }, "flags": {}, "order": 12, "mode": 0, @@ -1946,7 +1528,8 @@ { "name": "prev_weight_adjust", "type": "WEIGHT_ADJUST", - "link": null + "link": null, + "shape": 7 } ], "outputs": [ @@ -1969,23 +1552,22 @@ }, "widgets_values": [ 1.01, - false, - "" + false ] }, { "id": 378, "type": "VHS_VideoCombine", "pos": [ - 13412.553827596734, + 13412.5537109375, 560 ], "size": [ 365.99755859375, - 533.300983346147 + 334 ], "flags": {}, - "order": 121, + "order": 128, "mode": 0, "inputs": [ { @@ -1995,18 +1577,21 @@ }, { "name": "audio", - "type": "*", - "link": 587 + "type": "AUDIO", + "link": 587, + "shape": 7 }, { "name": "meta_batch", "type": "VHS_BatchManager", - "link": null + "link": null, + "shape": 7 }, { "name": "vae", "type": "VAE", - "link": null + "link": null, + "shape": 7 } ], "outputs": [ @@ -2028,6 +1613,7 @@ "pix_fmt": "yuv420p", "crf": 19, "save_metadata": true, + "trim_to_audio": false, "pingpong": false, "save_output": true, "videopreview": { @@ -2048,15 +1634,15 @@ "id": 380, "type": "ModelSamplingDiscrete", "pos": [ - 11037.056037749246, - 320.9019731952551 + 11037.0556640625, + 320.9019775390625 + ], + "size": [ + 315, + 82 ], - "size": { - "0": 315, - "1": 82 - }, "flags": {}, - "order": 96, + "order": 103, "mode": 0, "inputs": [ { @@ -2073,8 +1659,8 @@ 582, 603 ], - "shape": 3, - "slot_index": 0 + "slot_index": 0, + "shape": 3 } ], "properties": { @@ -2089,15 +1675,15 @@ "id": 384, "type": "IPAdapterAdvanced", "pos": [ - 10157.753306612212, - 472.14391129293386 + 10157.7529296875, + 472.1439208984375 + ], + "size": [ + 315, + 278 ], - "size": { - "0": 315, - "1": 278 - }, "flags": {}, - "order": 66, + "order": 84, "mode": 4, "inputs": [ { @@ -2118,17 +1704,20 @@ { "name": "image_negative", "type": "IMAGE", - "link": null + "link": null, + "shape": 7 }, { "name": "attn_mask", "type": "MASK", - "link": null + "link": null, + "shape": 7 }, { "name": "clip_vision", "type": "CLIP_VISION", - "link": null + "link": null, + "shape": 7 } ], "outputs": [ @@ -2138,8 +1727,8 @@ "links": [ 597 ], - "shape": 3, - "slot_index": 0 + "slot_index": 0, + "shape": 3 } ], "properties": { @@ -2158,15 +1747,15 @@ "id": 386, "type": "DifferentialDiffusion", "pos": [ - 10217.753306612212, - 852.1439112929343 + 10217.7529296875, + 852.1439208984375 + ], + "size": [ + 184.8000030517578, + 26 ], - "size": { - "0": 184.8000030517578, - "1": 26 - }, "flags": {}, - "order": 84, + "order": 96, "mode": 4, "inputs": [ { @@ -2182,27 +1771,28 @@ "links": [ 571 ], - "shape": 3, - "slot_index": 0 + "slot_index": 0, + "shape": 3 } ], "properties": { "Node name for S&R": "DifferentialDiffusion" - } + }, + "widgets_values": [] }, { "id": 385, "type": "IPAdapterUnifiedLoader", "pos": [ - 10157.753306612212, - 342.1439112929338 + 10157.7529296875, + 342.1439208984375 + ], + "size": [ + 315, + 78 ], - "size": { - "0": 315, - "1": 78 - }, "flags": {}, - "order": 53, + "order": 61, "mode": 4, "inputs": [ { @@ -2213,7 +1803,8 @@ { "name": "ipadapter", "type": "IPADAPTER", - "link": null + "link": null, + "shape": 7 } ], "outputs": [ @@ -2223,8 +1814,8 @@ "links": [ 594 ], - "shape": 3, - "slot_index": 0 + "slot_index": 0, + "shape": 3 }, { "name": "ipadapter", @@ -2232,8 +1823,8 @@ "links": [ 595 ], - "shape": 3, - "slot_index": 1 + "slot_index": 1, + "shape": 3 } ], "properties": { @@ -2246,22 +1837,14 @@ { "id": 387, "type": "GetNode", - "pos": { - "0": 13402.5546875, - "1": 430, - "2": 0, - "3": 0, - "4": 0, - "5": 0, - "6": 0, - "7": 0, - "8": 0, - "9": 0 - }, - "size": { - "0": 210, - "1": 58 - }, + "pos": [ + 13402.5546875, + 430 + ], + "size": [ + 210, + 58 + ], "flags": {}, "order": 13, "mode": 0, @@ -2286,15 +1869,15 @@ "id": 282, "type": "VHS_VideoCombine", "pos": [ - 3510.94385511419, - 344.0957252862453 + 3510.94384765625, + 344.0957336425781 ], "size": [ 214.7587890625, - 441.15958404541016 + 334 ], "flags": {}, - "order": 83, + "order": 95, "mode": 4, "inputs": [ { @@ -2305,17 +1888,20 @@ { "name": "audio", "type": "AUDIO", - "link": null + "link": null, + "shape": 7 }, { "name": "meta_batch", "type": "VHS_BatchManager", - "link": null + "link": null, + "shape": 7 }, { "name": "vae", "type": "VAE", - "link": null + "link": null, + "shape": 7 } ], "outputs": [ @@ -2337,6 +1923,7 @@ "pix_fmt": "yuv420p", "crf": 19, "save_metadata": true, + "trim_to_audio": false, "pingpong": false, "save_output": true, "videopreview": { @@ -2357,15 +1944,15 @@ "id": 377, "type": "VAEDecode", "pos": [ - 12822.553827596734, + 12822.5537109375, 620 ], - "size": { - "0": 210, - "1": 46 - }, + "size": [ + 210, + 46 + ], "flags": {}, - "order": 117, + "order": 124, "mode": 0, "inputs": [ { @@ -2391,21 +1978,22 @@ ], "properties": { "Node name for S&R": "VAEDecode" - } + }, + "widgets_values": [] }, { "id": 379, "type": "GetImageSizeAndCount", "pos": [ - 13092.553827596734, + 13092.5537109375, 720 ], - "size": { - "0": 210, - "1": 86 - }, + "size": [ + 210, + 86 + ], "flags": {}, - "order": 119, + "order": 126, "mode": 0, "inputs": [ { @@ -2421,24 +2009,24 @@ "links": [ 586 ], - "shape": 3, - "slot_index": 0 + "slot_index": 0, + "shape": 3 }, { - "name": "768 width", + "name": "width", "type": "INT", "links": [], - "shape": 3, - "slot_index": 1 + "slot_index": 1, + "shape": 3 }, { - "name": "464 height", + "name": "height", "type": "INT", "links": null, "shape": 3 }, { - "name": "225 count", + "name": "count", "type": "INT", "links": null, "shape": 3 @@ -2446,27 +2034,20 @@ ], "properties": { "Node name for S&R": "GetImageSizeAndCount" - } + }, + "widgets_values": [] }, { "id": 393, "type": "GetNode", - "pos": { - "0": 14892.5546875, - "1": 370, - "2": 0, - "3": 0, - "4": 0, - "5": 0, - "6": 0, - "7": 0, - "8": 0, - "9": 0 - }, - "size": { - "0": 210, - "1": 58 - }, + "pos": [ + 14892.5546875, + 370 + ], + "size": [ + 210, + 58 + ], "flags": {}, "order": 14, "mode": 0, @@ -2490,24 +2071,16 @@ { "id": 399, "type": "SetNode", - "pos": { - "0": 8472.7265625, - "1": 483.11932373046875, - "2": 0, - "3": 0, - "4": 0, - "5": 0, - "6": 0, - "7": 0, - "8": 0, - "9": 0 - }, - "size": { - "0": 210, - "1": 58 - }, + "pos": [ + 8472.7265625, + 483.11932373046875 + ], + "size": [ + 210, + 58 + ], "flags": {}, - "order": 41, + "order": 44, "mode": 0, "inputs": [ { @@ -2529,29 +2102,23 @@ }, "widgets_values": [ "clip" - ] + ], + "color": "#432", + "bgcolor": "#653" }, { "id": 398, "type": "SetNode", - "pos": { - "0": 8472.7265625, - "1": 613.119140625, - "2": 0, - "3": 0, - "4": 0, - "5": 0, - "6": 0, - "7": 0, - "8": 0, - "9": 0 - }, - "size": { - "0": 210, - "1": 58 - }, + "pos": [ + 8472.7265625, + 613.119140625 + ], + "size": [ + 210, + 58 + ], "flags": {}, - "order": 42, + "order": 45, "mode": 0, "inputs": [ { @@ -2573,29 +2140,23 @@ }, "widgets_values": [ "vae" - ] + ], + "color": "#322", + "bgcolor": "#533" }, { "id": 400, "type": "SetNode", - "pos": { - "0": 8472.7265625, - "1": 373.1192321777344, - "2": 0, - "3": 0, - "4": 0, - "5": 0, - "6": 0, - "7": 0, - "8": 0, - "9": 0 - }, - "size": { - "0": 210, - "1": 58 - }, + "pos": [ + 8472.7265625, + 373.1192321777344 + ], + "size": [ + 210, + 58 + ], "flags": {}, - "order": 40, + "order": 43, "mode": 0, "inputs": [ { @@ -2617,22 +2178,25 @@ }, "widgets_values": [ "model" - ] + ], + "color": "#223", + "bgcolor": "#335" }, { "id": 362, "type": "CheckpointLoaderSimple", "pos": [ - 8012.727078548793, - 653.1193378178637 + 8012.72705078125, + 653.1193237304688 + ], + "size": [ + 315, + 98 ], - "size": { - "0": 315, - "1": 98 - }, "flags": {}, "order": 15, "mode": 0, + "inputs": [], "outputs": [ { "name": "MODEL", @@ -2670,15 +2234,15 @@ "id": 383, "type": "CR Apply LoRA Stack", "pos": [ - 9287.753306612212, - 542.1439112929338 + 9287.7529296875, + 542.1439208984375 + ], + "size": [ + 254.40000915527344, + 66 ], - "size": { - "0": 254.40000915527344, - "1": 66 - }, "flags": {}, - "order": 43, + "order": 46, "mode": 0, "inputs": [ { @@ -2704,8 +2268,8 @@ "links": [ 596 ], - "shape": 3, - "slot_index": 0 + "slot_index": 0, + "shape": 3 }, { "name": "CLIP", @@ -2714,8 +2278,8 @@ 569, 570 ], - "shape": 3, - "slot_index": 1 + "slot_index": 1, + "shape": 3 }, { "name": "show_help", @@ -2726,27 +2290,20 @@ ], "properties": { "Node name for S&R": "CR Apply LoRA Stack" - } + }, + "widgets_values": [] }, { "id": 402, "type": "GetNode", - "pos": { - "0": 9057.76171875, - "1": 392.1433410644531, - "2": 0, - "3": 0, - "4": 0, - "5": 0, - "6": 0, - "7": 0, - "8": 0, - "9": 0 - }, - "size": { - "0": 210, - "1": 58 - }, + "pos": [ + 9057.76171875, + 392.1433410644531 + ], + "size": [ + 210, + 58 + ], "flags": {}, "order": 16, "mode": 0, @@ -2770,22 +2327,14 @@ { "id": 403, "type": "GetNode", - "pos": { - "0": 9317.76171875, - "1": 672.14306640625, - "2": 0, - "3": 0, - "4": 0, - "5": 0, - "6": 0, - "7": 0, - "8": 0, - "9": 0 - }, - "size": { - "0": 210, - "1": 58 - }, + "pos": [ + 9317.76171875, + 672.14306640625 + ], + "size": [ + 210, + 58 + ], "flags": {}, "order": 17, "mode": 0, @@ -2809,22 +2358,14 @@ { "id": 401, "type": "GetNode", - "pos": { - "0": 9047.76171875, - "1": 292.14337158203125, - "2": 0, - "3": 0, - "4": 0, - "5": 0, - "6": 0, - "7": 0, - "8": 0, - "9": 0 - }, - "size": { - "0": 210, - "1": 58 - }, + "pos": [ + 9047.76171875, + 292.14337158203125 + ], + "size": [ + 210, + 58 + ], "flags": {}, "order": 18, "mode": 0, @@ -2848,22 +2389,14 @@ { "id": 404, "type": "GetNode", - "pos": { - "0": 12632.5546875, - "1": 440, - "2": 0, - "3": 0, - "4": 0, - "5": 0, - "6": 0, - "7": 0, - "8": 0, - "9": 0 - }, - "size": { - "0": 210, - "1": 58 - }, + "pos": [ + 12632.5546875, + 440 + ], + "size": [ + 210, + 58 + ], "flags": {}, "order": 19, "mode": 0, @@ -2889,15 +2422,15 @@ "id": 392, "type": "GetImageSizeAndCount", "pos": [ - 14582.553827596734, + 14582.5537109375, 660 ], - "size": { - "0": 210, - "1": 86 - }, + "size": [ + 210, + 86 + ], "flags": {}, - "order": 123, + "order": 130, "mode": 0, "inputs": [ { @@ -2914,24 +2447,24 @@ 614, 637 ], - "shape": 3, - "slot_index": 0 + "slot_index": 0, + "shape": 3 }, { - "name": "1152 width", + "name": "width", "type": "INT", "links": [], - "shape": 3, - "slot_index": 1 + "slot_index": 1, + "shape": 3 }, { - "name": "696 height", + "name": "height", "type": "INT", "links": null, "shape": 3 }, { - "name": "225 count", + "name": "count", "type": "INT", "links": null, "shape": 3 @@ -2939,19 +2472,20 @@ ], "properties": { "Node name for S&R": "GetImageSizeAndCount" - } + }, + "widgets_values": [] }, { "id": 41, "type": "DownloadOpenUnmixModel", "pos": [ - 191.41079024129368, - 681.6197663223751 + 191.41079711914062, + 681.6197509765625 + ], + "size": [ + 361.20001220703125, + 58 ], - "size": { - "0": 361.20001220703125, - "1": 58 - }, "flags": {}, "order": 20, "mode": 0, @@ -2961,7 +2495,7 @@ "name": "OPEN_UNMIX_MODEL", "type": "OPEN_UNMIX_MODEL", "links": [ - 36 + 724 ], "slot_index": 0, "shape": 3 @@ -2978,15 +2512,15 @@ "id": 412, "type": "PreviewAudio", "pos": [ - 428.28595000574694, - 331.38373738886855 + 428.28594970703125, + 331.38372802734375 + ], + "size": [ + 315, + 76 ], - "size": { - "0": 315, - "1": 76 - }, "flags": {}, - "order": 48, + "order": 57, "mode": 0, "inputs": [ { @@ -3007,15 +2541,15 @@ "id": 336, "type": "MediaPipeFaceMeshToSEGS", "pos": [ - 5718.531146480772, - 214.5410458090749 + 5718.53125, + 214.54104614257812 + ], + "size": [ + 315, + 346 ], - "size": { - "0": 315, - "1": 346 - }, "flags": {}, - "order": 97, + "order": 104, "mode": 0, "inputs": [ { @@ -3060,21 +2594,21 @@ "id": 325, "type": "ImpactImageBatchToImageList", "pos": [ - 5367.531146480773, - 216.5410458090749 + 5367.53125, + 216.54104614257812 + ], + "size": [ + 307.0949401855469, + 26 ], - "size": { - "0": 307.0949401855469, - "1": 26 - }, "flags": {}, - "order": 86, + "order": 98, "mode": 0, "inputs": [ { "name": "image", "type": "IMAGE", - "link": 665 + "link": 763 } ], "outputs": [ @@ -3091,6 +2625,7 @@ "properties": { "Node name for S&R": "ImpactImageBatchToImageList" }, + "widgets_values": [], "color": "#223", "bgcolor": "#335" }, @@ -3098,15 +2633,15 @@ "id": 337, "type": "ImpactSEGSToMaskList", "pos": [ - 6059.531146480772, - 216.5410458090749 + 6059.53125, + 216.54104614257812 + ], + "size": [ + 322.8110656738281, + 36.70903778076172 ], - "size": { - "0": 322.8110656738281, - "1": 36.70903778076172 - }, "flags": {}, - "order": 99, + "order": 106, "mode": 0, "inputs": [ { @@ -3129,30 +2664,23 @@ "properties": { "Node name for S&R": "ImpactSEGSToMaskList" }, + "widgets_values": [], "color": "#223", "bgcolor": "#335" }, { "id": 407, "type": "SetNode", - "pos": { - "0": 7217.53125, - "1": 160.541015625, - "2": 0, - "3": 0, - "4": 0, - "5": 0, - "6": 0, - "7": 0, - "8": 0, - "9": 0 - }, - "size": { - "0": 210, - "1": 58 - }, + "pos": [ + 7217.53125, + 160.541015625 + ], + "size": [ + 210, + 58 + ], "flags": {}, - "order": 113, + "order": 120, "mode": 0, "inputs": [ { @@ -3174,21 +2702,23 @@ }, "widgets_values": [ "facemask" - ] + ], + "color": "#1c5715", + "bgcolor": "#1f401b" }, { "id": 342, "type": "ImageCompositeMasked", "pos": [ - 7240.531146480775, - 277.5410458090749 + 7240.53125, + 277.5410461425781 + ], + "size": [ + 315, + 146 ], - "size": { - "0": 315, - "1": 146 - }, "flags": {}, - "order": 112, + "order": 119, "mode": 0, "inputs": [ { @@ -3204,7 +2734,8 @@ { "name": "mask", "type": "MASK", - "link": 531 + "link": 531, + "shape": 7 } ], "outputs": [ @@ -3215,8 +2746,8 @@ 541, 641 ], - "shape": 3, - "slot_index": 0 + "slot_index": 0, + "shape": 3 } ], "properties": { @@ -3232,15 +2763,15 @@ "id": 339, "type": "GrowMaskWithBlur", "pos": [ - 6065.531146480772, - 312.5410458090749 + 6065.53125, + 312.5410461425781 + ], + "size": [ + 324.2040100097656, + 246 ], - "size": { - "0": 324.2040100097656, - "1": 246 - }, "flags": {}, - "order": 101, + "order": 108, "mode": 0, "inputs": [ { @@ -3286,21 +2817,21 @@ "id": 341, "type": "ImageToMask", "pos": [ - 6838.531146480775, - 198.54104580907483 + 6838.53125, + 198.54104614257812 + ], + "size": [ + 315, + 58 ], - "size": { - "0": 315, - "1": 58 - }, "flags": {}, - "order": 111, + "order": 118, "mode": 0, "inputs": [ { "name": "image", "type": "IMAGE", - "link": 689 + "link": 769 } ], "outputs": [ @@ -3331,12 +2862,12 @@ 14604, 554 ], - "size": { - "0": 210, - "1": 46 - }, + "size": [ + 210, + 46 + ], "flags": {}, - "order": 122, + "order": 129, "mode": 0, "inputs": [ { @@ -3362,7 +2893,8 @@ ], "properties": { "Node name for S&R": "VAEDecode" - } + }, + "widgets_values": [] }, { "id": 391, @@ -3373,10 +2905,10 @@ ], "size": [ 365.99755859375, - 533.300983346147 + 334 ], "flags": {}, - "order": 126, + "order": 133, "mode": 0, "inputs": [ { @@ -3387,17 +2919,20 @@ { "name": "audio", "type": "AUDIO", - "link": 610 + "link": 610, + "shape": 7 }, { "name": "meta_batch", "type": "VHS_BatchManager", - "link": null + "link": null, + "shape": 7 }, { "name": "vae", "type": "VAE", - "link": null + "link": null, + "shape": 7 } ], "outputs": [ @@ -3419,6 +2954,7 @@ "pix_fmt": "yuv420p", "crf": 19, "save_metadata": true, + "trim_to_audio": false, "pingpong": false, "save_output": true, "videopreview": { @@ -3439,15 +2975,15 @@ "id": 49, "type": "PreviewAudio", "pos": [ - 423.28595000574694, - 161.38373738886852 + 423.28594970703125, + 161.3837432861328 + ], + "size": [ + 315, + 76.00000762939453 ], - "size": { - "0": 315, - "1": 76.00000762939453 - }, "flags": {}, - "order": 47, + "order": 56, "mode": 0, "inputs": [ { @@ -3468,21 +3004,21 @@ "id": 301, "type": "GetImageSizeAndCount", "pos": [ - 3150.6063047911475, - 897.318420641524 + 3150.606201171875, + 897.3184204101562 + ], + "size": [ + 277.20001220703125, + 86 ], - "size": { - "0": 277.20001220703125, - "1": 86 - }, "flags": {}, - "order": 61, + "order": 65, "mode": 0, "inputs": [ { "name": "image", "type": "IMAGE", - "link": 482 + "link": 754 } ], "outputs": [ @@ -3496,19 +3032,19 @@ "shape": 3 }, { - "name": "768 width", + "name": "width", "type": "INT", "links": null, "shape": 3 }, { - "name": "464 height", + "name": "height", "type": "INT", "links": null, "shape": 3 }, { - "name": "225 count", + "name": "count", "type": "INT", "links": null, "shape": 3 @@ -3516,21 +3052,22 @@ ], "properties": { "Node name for S&R": "GetImageSizeAndCount" - } + }, + "widgets_values": [] }, { "id": 338, "type": "MaskToImage", "pos": [ - 6417.396589294935, - 151.23967724004075 + 6417.396484375, + 151.2396697998047 + ], + "size": [ + 300.6851806640625, + 26 ], - "size": { - "0": 300.6851806640625, - "1": 26 - }, "flags": {}, - "order": 104, + "order": 111, "mode": 0, "inputs": [ { @@ -3553,6 +3090,7 @@ "properties": { "Node name for S&R": "MaskToImage" }, + "widgets_values": [], "color": "#223", "bgcolor": "#335" }, @@ -3560,15 +3098,15 @@ "id": 420, "type": "ImageListToImageBatch", "pos": [ - 6422.396589294935, - 232.23967724004075 + 6422.396484375, + 232.2396697998047 + ], + "size": [ + 210, + 26 ], - "size": { - "0": 210, - "1": 26 - }, "flags": {}, - "order": 106, + "order": 113, "mode": 0, "inputs": [ { @@ -3582,35 +3120,28 @@ "name": "IMAGE", "type": "IMAGE", "links": [ - 685 + 767 ], - "shape": 3, - "slot_index": 0 + "slot_index": 0, + "shape": 3 } ], "properties": { "Node name for S&R": "ImageListToImageBatch" - } + }, + "widgets_values": [] }, { "id": 347, "type": "GetNode", - "pos": { - "0": 6907.3955078125, - "1": 311.2396545410156, - "2": 0, - "3": 0, - "4": 0, - "5": 0, - "6": 0, - "7": 0, - "8": 0, - "9": 0 - }, - "size": { - "0": 210, - "1": 58 - }, + "pos": [ + 6907.3955078125, + 311.2396545410156 + ], + "size": [ + 210, + 58 + ], "flags": {}, "order": 21, "mode": 0, @@ -3635,21 +3166,21 @@ "id": 415, "type": "Reroute", "pos": [ - 6361.396589294935, - 927.2396772400408 + 6361.396484375, + 927.2396850585938 ], "size": [ 75, 26 ], "flags": {}, - "order": 103, + "order": 110, "mode": 0, "inputs": [ { "name": "", "type": "*", - "link": 710 + "link": 766 } ], "outputs": [ @@ -3671,22 +3202,14 @@ { "id": 416, "type": "GetNode", - "pos": { - "0": 5906.39599609375, - "1": 1600.23974609375, - "2": 0, - "3": 0, - "4": 0, - "5": 0, - "6": 0, - "7": 0, - "8": 0, - "9": 0 - }, - "size": { - "0": 210, - "1": 58 - }, + "pos": [ + 5906.39599609375, + 1600.23974609375 + ], + "size": [ + 210, + 58 + ], "flags": {}, "order": 22, "mode": 0, @@ -3710,22 +3233,14 @@ { "id": 436, "type": "GetNode", - "pos": { - "0": 4762.396484375, - "1": 1090.23974609375, - "2": 0, - "3": 0, - "4": 0, - "5": 0, - "6": 0, - "7": 0, - "8": 0, - "9": 0 - }, - "size": { - "0": 210, - "1": 58 - }, + "pos": [ + 4762.396484375, + 1090.23974609375 + ], + "size": [ + 210, + 58 + ], "flags": {}, "order": 23, "mode": 0, @@ -3749,22 +3264,14 @@ { "id": 408, "type": "GetNode", - "pos": { - "0": 11805.78515625, - "1": 1846.642333984375, - "2": 0, - "3": 0, - "4": 0, - "5": 0, - "6": 0, - "7": 0, - "8": 0, - "9": 0 - }, - "size": { - "0": 210, - "1": 58 - }, + "pos": [ + 11805.78515625, + 1846.642333984375 + ], + "size": [ + 210, + 58 + ], "flags": {}, "order": 24, "mode": 0, @@ -3788,22 +3295,14 @@ { "id": 430, "type": "GetNode", - "pos": { - "0": 11517.78515625, - "1": 1746.642333984375, - "2": 0, - "3": 0, - "4": 0, - "5": 0, - "6": 0, - "7": 0, - "8": 0, - "9": 0 - }, - "size": { - "0": 210, - "1": 58 - }, + "pos": [ + 11517.78515625, + 1746.642333984375 + ], + "size": [ + 210, + 58 + ], "flags": {}, "order": 25, "mode": 0, @@ -3831,12 +3330,12 @@ 2359, 295 ], - "size": { - "0": 579.5999755859375, - "1": 174 - }, + "size": [ + 579.5999755859375, + 174 + ], "flags": {}, - "order": 52, + "order": 60, "mode": 0, "inputs": [ { @@ -3879,12 +3378,12 @@ 4254, 757 ], - "size": { - "0": 315, - "1": 82 - }, + "size": [ + 315, + 82 + ], "flags": {}, - "order": 56, + "order": 64, "mode": 0, "inputs": [ { @@ -3898,10 +3397,10 @@ "name": "IMAGE", "type": "IMAGE", "links": [ - 664 + 761 ], - "shape": 3, - "slot_index": 0 + "slot_index": 0, + "shape": 3 } ], "properties": { @@ -3916,36 +3415,39 @@ "id": 353, "type": "VHS_VideoCombine", "pos": [ - 5142.396589294935, - 1014.2396772400408 + 5142.396484375, + 1014.2396850585938 ], "size": [ 214.7587890625, - 435.07337188720703 + 334 ], "flags": {}, - "order": 85, + "order": 97, "mode": 0, "inputs": [ { "name": "images", "type": "IMAGE", - "link": 548 + "link": 762 }, { "name": "audio", "type": "AUDIO", - "link": 709 + "link": 709, + "shape": 7 }, { "name": "meta_batch", "type": "VHS_BatchManager", - "link": null + "link": null, + "shape": 7 }, { "name": "vae", "type": "VAE", - "link": null + "link": null, + "shape": 7 } ], "outputs": [ @@ -3967,6 +3469,7 @@ "pix_fmt": "yuv420p", "crf": 19, "save_metadata": true, + "trim_to_audio": false, "pingpong": false, "save_output": true, "videopreview": { @@ -3983,62 +3486,6 @@ } } }, - { - "id": 425, - "type": "FlexImageTransform", - "pos": [ - 6518, - 1122 - ], - "size": { - "0": 478.8000183105469, - "1": 242 - }, - "flags": {}, - "order": 109, - "mode": 0, - "inputs": [ - { - "name": "images", - "type": "IMAGE", - "link": 685 - }, - { - "name": "feature", - "type": "FEATURE", - "link": null - }, - { - "name": "feature_pipe", - "type": "FEATURE_PIPE", - "link": null - } - ], - "outputs": [ - { - "name": "IMAGE", - "type": "IMAGE", - "links": [ - 687, - 689 - ], - "shape": 3, - "slot_index": 0 - } - ], - "properties": { - "Node name for S&R": "FlexImageTransform" - }, - "widgets_values": [ - 1, - 0, - "None", - "relative", - "scale", - 0.5, - 0.5 - ] - }, { "id": 382, "type": "CR LoRA Stack", @@ -4046,10 +3493,10 @@ 8941, 542 ], - "size": { - "0": 315, - "1": 342 - }, + "size": [ + 315, + 342 + ], "flags": {}, "order": 26, "mode": 0, @@ -4057,7 +3504,8 @@ { "name": "lora_stack", "type": "LORA_STACK", - "link": null + "link": null, + "shape": 7 } ], "outputs": [ @@ -4067,8 +3515,8 @@ "links": [ 593 ], - "shape": 3, - "slot_index": 0 + "slot_index": 0, + "shape": 3 }, { "name": "show_help", @@ -4099,15 +3547,15 @@ "id": 364, "type": "CLIPTextEncode", "pos": [ - 9587.753306612212, - 632.1439112929338 + 9587.7529296875, + 632.1439208984375 + ], + "size": [ + 425.27801513671875, + 180.6060791015625 ], - "size": { - "0": 425.27801513671875, - "1": 180.6060791015625 - }, "flags": {}, - "order": 55, + "order": 63, "mode": 0, "inputs": [ { @@ -4135,99 +3583,31 @@ ] }, { - "id": 440, - "type": "FlexAudioVisualizerCircular", + "id": 315, + "type": "VHS_LoadVideo", "pos": [ - 2450, - 2288 - ], - "size": { - "0": 403.20001220703125, - "1": 558 - }, - "flags": {}, - "order": 51, - "mode": 0, - "inputs": [ - { - "name": "audio", - "type": "AUDIO", - "link": 715 - }, - { - "name": "opt_feature", - "type": "FEATURE", - "link": null - } - ], - "outputs": [ - { - "name": "IMAGE", - "type": "IMAGE", - "links": [ - 718 - ], - "shape": 3, - "slot_index": 0 - }, - { - "name": "MASK", - "type": "MASK", - "links": null, - "shape": 3 - } - ], - "properties": { - "Node name for S&R": "FlexAudioVisualizerCircular" - }, - "widgets_values": [ - 30, - 800, - 600, - 1, - "visualization_method", - "relative", - "None", - 0.5, - 0.5, - "bar", - "frequency", - 0.5, - 0, - 360, - 2048, - 20, - 8000, - 200, - 2, - 100, - 200 - ] - }, - { - "id": 315, - "type": "VHS_LoadVideo", - "pos": [ - 4264, - 289 + 4264, + 289 ], "size": [ 247.455078125, - 379.9434814453125 + 262 ], "flags": {}, - "order": 44, + "order": 47, "mode": 0, "inputs": [ { "name": "meta_batch", "type": "VHS_BatchManager", - "link": null + "link": null, + "shape": 7 }, { "name": "vae", "type": "VAE", - "link": null + "link": null, + "shape": 7 }, { "name": "frame_load_cap", @@ -4299,22 +3679,14 @@ { "id": 348, "type": "GetNode", - "pos": { - "0": 4163, - "1": 161, - "2": 0, - "3": 0, - "4": 0, - "5": 0, - "6": 0, - "7": 0, - "8": 0, - "9": 0 - }, - "size": { - "0": 210, - "1": 58 - }, + "pos": [ + 4163, + 161 + ], + "size": [ + 210, + 58 + ], "flags": {}, "order": 27, "mode": 0, @@ -4336,828 +3708,879 @@ ] }, { - "id": 39, - "type": "VHS_LoadAudioUpload", + "id": 269, + "type": "GetNode", "pos": [ - -76, - 471 + 1968, + 1014 + ], + "size": [ + 210, + 58 ], - "size": { - "0": 243.818359375, - "1": 130 - }, "flags": {}, "order": 28, "mode": 0, "inputs": [], "outputs": [ { - "name": "audio", + "name": "AUDIO", "type": "AUDIO", "links": [ - 37, - 38, - 48, - 56, - 639 + 753, + 756, + 759 ], - "slot_index": 0, - "shape": 3 + "slot_index": 0 } ], - "properties": { - "Node name for S&R": "VHS_LoadAudioUpload" - }, - "widgets_values": { - "audio": "Delta Deez - Songfinch - Out the Mud.mp3", - "start_time": 105, - "duration": 7.5, - "choose audio to upload": "image" - } + "title": "Get_audio__vocals", + "properties": {}, + "widgets_values": [ + "audio__vocals" + ] }, { - "id": 42, - "type": "EmptyImageAndMaskFromAudio", + "id": 443, + "type": "MotionFeatureNode", "pos": [ - -63, - 833 + 1958, + 761 + ], + "size": [ + 317.4000244140625, + 222 ], - "size": { - "0": 411.6000061035156, - "1": 146 - }, "flags": {}, - "order": 45, + "order": 29, "mode": 0, "inputs": [ { - "name": "audio", - "type": "AUDIO", - "link": 38 + "name": "images", + "type": "IMAGE", + "link": null } ], "outputs": [ { - "name": "empty_image", - "type": "IMAGE", - "links": [ - 39, - 162 - ], - "slot_index": 0, - "shape": 3 - }, - { - "name": "empty_mask", - "type": "MASK", - "links": [ - 453 - ], - "slot_index": 1, + "name": "FEATURE", + "type": "FEATURE", + "links": null, "shape": 3 }, { - "name": "frame_count", - "type": "INT", - "links": [ - 454 - ], - "slot_index": 2, + "name": "FEATURE_PIPE", + "type": "FEATURE_PIPE", + "links": null, "shape": 3 } ], "properties": { - "Node name for S&R": "EmptyImageAndMaskFromAudio" + "Node name for S&R": "MotionFeatureNode" }, "widgets_values": [ + "mean_motion", 30, - 768, - 464 + "Farneback", + 0, + 0, + 0, + 0 ] }, { - "id": 40, - "type": "AudioSeparator", + "id": 345, + "type": "MaskToImage", "pos": [ - 605, - 588 + 3639, + 1390 + ], + "size": [ + 264.5999755859375, + 26 ], - "size": { - "0": 317.4000244140625, - "1": 158 - }, "flags": {}, - "order": 57, + "order": 89, "mode": 0, "inputs": [ { - "name": "model", - "type": "OPEN_UNMIX_MODEL", - "link": 36, - "slot_index": 0 - }, - { - "name": "audio", - "type": "AUDIO", - "link": 37 - }, - { - "name": "video_frames", - "type": "IMAGE", - "link": 39 + "name": "mask", + "type": "MASK", + "link": 532 } ], "outputs": [ { - "name": "audio", - "type": "AUDIO", + "name": "IMAGE", + "type": "IMAGE", "links": [ - 57 + 533 ], "slot_index": 0, "shape": 3 - }, - { - "name": "drums_audio", - "type": "AUDIO", - "links": [ - 41, - 373, - 433 - ], - "slot_index": 1, - "shape": 3 - }, - { - "name": "vocals_audio", - "type": "AUDIO", - "links": [ - 434, - 440 - ], - "slot_index": 2, - "shape": 3 - }, + } + ], + "properties": { + "Node name for S&R": "MaskToImage" + }, + "widgets_values": [] + }, + { + "id": 290, + "type": "MaskComposite", + "pos": [ + 3225, + 1389 + ], + "size": [ + 315, + 126 + ], + "flags": {}, + "order": 67, + "mode": 0, + "inputs": [ { - "name": "bass_audio", - "type": "AUDIO", - "links": [ - 435, - 443 - ], - "slot_index": 3, - "shape": 3 + "name": "destination", + "type": "MASK", + "link": 755 }, { - "name": "other_audio", - "type": "AUDIO", - "links": [ - 436, - 445 - ], - "slot_index": 4, - "shape": 3 - }, + "name": "source", + "type": "MASK", + "link": 758 + } + ], + "outputs": [ { - "name": "feature_pipe", - "type": "FEATURE_PIPE", + "name": "MASK", + "type": "MASK", "links": [ - 42, - 371, - 439, - 442, - 446, - 488 + 529, + 532 ], - "slot_index": 5, + "slot_index": 0, "shape": 3 } ], "properties": { - "Node name for S&R": "AudioSeparator" + "Node name for S&R": "MaskComposite" }, "widgets_values": [ - 30 + 0, + 0, + "add" ] }, { - "id": 269, - "type": "GetNode", - "pos": { - "0": 1968, - "1": 1014, - "2": 0, - "3": 0, - "4": 0, - "5": 0, - "6": 0, - "7": 0, - "8": 0, - "9": 0 - }, - "size": { - "0": 210, - "1": 58 - }, - "flags": {}, - "order": 29, - "mode": 0, - "inputs": [], - "outputs": [ - { - "name": "AUDIO", - "type": "AUDIO", - "links": [ - 448, - 460, - 715 - ], - "slot_index": 0 - } - ], - "title": "Get_audio__vocals", - "properties": {}, - "widgets_values": [ - "audio__vocals" - ] - }, - { - "id": 443, - "type": "MotionFeatureNode", + "id": 354, + "type": "VHS_VideoCombine", "pos": [ - 1958, - 761 + 7121, + 1379 + ], + "size": [ + 214.7587890625, + 334 ], - "size": { - "0": 317.4000244140625, - "1": 174 - }, "flags": {}, - "order": 30, - "mode": 0, + "order": 117, + "mode": 4, "inputs": [ { - "name": "video_frames", + "name": "images", "type": "IMAGE", - "link": null + "link": 768 + }, + { + "name": "audio", + "type": "AUDIO", + "link": null, + "shape": 7 + }, + { + "name": "meta_batch", + "type": "VHS_BatchManager", + "link": null, + "shape": 7 + }, + { + "name": "vae", + "type": "VAE", + "link": null, + "shape": 7 } ], "outputs": [ { - "name": "FEATURE", - "type": "FEATURE", - "links": null, - "shape": 3 - }, - { - "name": "FEATURE_PIPE", - "type": "FEATURE_PIPE", + "name": "Filenames", + "type": "VHS_FILENAMES", "links": null, "shape": 3 } ], "properties": { - "Node name for S&R": "MotionFeatureNode" + "Node name for S&R": "VHS_VideoCombine" }, - "widgets_values": [ - "mean_motion", - 30, - "Farneback", - 0, - 0 - ] + "widgets_values": { + "frame_rate": 30, + "loop_count": 0, + "filename_prefix": "AnimateDiff", + "format": "video/h264-mp4", + "pix_fmt": "yuv420p", + "crf": 19, + "save_metadata": true, + "trim_to_audio": false, + "pingpong": false, + "save_output": true, + "videopreview": { + "hidden": false, + "paused": false, + "params": { + "filename": "AnimateDiff_07387.mp4", + "subfolder": "", + "type": "output", + "format": "video/h264-mp4", + "frame_rate": 30 + }, + "muted": false + } + } }, { - "id": 260, - "type": "FlexAudioVisualizerLine", + "id": 363, + "type": "CLIPTextEncode", "pos": [ - 2431, - 877 + 9597, + 372 + ], + "size": [ + 422.84503173828125, + 164.31304931640625 ], - "size": { - "0": 369.6000061035156, - "1": 606 - }, "flags": {}, - "order": 49, + "order": 62, "mode": 0, "inputs": [ { - "name": "audio", - "type": "AUDIO", - "link": 448 - }, - { - "name": "opt_feature", - "type": "FEATURE", - "link": null, - "slot_index": 1 + "name": "clip", + "type": "CLIP", + "link": 569 } ], "outputs": [ { - "name": "IMAGE", - "type": "IMAGE", - "links": [ - 482 - ], - "slot_index": 0, - "shape": 3 - }, - { - "name": "MASK", - "type": "MASK", + "name": "CONDITIONING", + "type": "CONDITIONING", "links": [ - 485 + 711, + 713 ], - "slot_index": 1, - "shape": 3 + "slot_index": 0 } ], "properties": { - "Node name for S&R": "FlexAudioVisualizerLine" + "Node name for S&R": "CLIPTextEncode" }, "widgets_values": [ - 30, - 768, - 464, - 1, - "num_bars", - "relative", - "None", - 0.5, - 0.5, - "line", - "frequency", - 0.5, - 0, - 64, - 200, - 10, - 5, - 0, - true, - 0, - 2048, - 20, - 8000 + "acidzlime, dripping slime, disembodied face singing" ] }, { - "id": 284, - "type": "FlexAudioVisualizerLine", + "id": 388, + "type": "VAEEncode", "pos": [ - 2443, - 1545 + 9726, + 939 + ], + "size": [ + 210, + 46 ], - "size": { - "0": 369.6000061035156, - "1": 611.5924682617188 - }, "flags": {}, - "order": 50, + "order": 122, "mode": 0, "inputs": [ { - "name": "audio", - "type": "AUDIO", - "link": 460 + "name": "pixels", + "type": "IMAGE", + "link": 641 }, { - "name": "opt_feature", - "type": "FEATURE", - "link": null + "name": "vae", + "type": "VAE", + "link": 623 } ], "outputs": [ { - "name": "IMAGE", - "type": "IMAGE", + "name": "LATENT", + "type": "LATENT", "links": [ - 500 + 600 ], "slot_index": 0, "shape": 3 - }, - { - "name": "MASK", - "type": "MASK", - "links": [ - 486 - ], - "slot_index": 1, - "shape": 3 } ], "properties": { - "Node name for S&R": "FlexAudioVisualizerLine" + "Node name for S&R": "VAEEncode" }, - "widgets_values": [ - 30, - 768, - 464, - 1, - "num_bars", - "relative", - "None", - 0.5, - 0.5, - "line", - "frequency", - 0.5, - 180, - 214, - 200, - 10, - 5, - 0, - true, - 0, - 2048, - 20, - 8000 - ] + "widgets_values": [] }, { - "id": 345, - "type": "MaskToImage", + "id": 334, + "type": "VHS_VideoCombine", "pos": [ - 3639, - 1390 + 7390, + 498 + ], + "size": [ + 214.7587890625, + 334 ], - "size": { - "0": 264.5999755859375, - "1": 26 - }, "flags": {}, - "order": 82, - "mode": 0, + "order": 121, + "mode": 4, "inputs": [ { - "name": "mask", - "type": "MASK", - "link": 532 + "name": "images", + "type": "IMAGE", + "link": 541 + }, + { + "name": "audio", + "type": "AUDIO", + "link": null, + "shape": 7 + }, + { + "name": "meta_batch", + "type": "VHS_BatchManager", + "link": null, + "shape": 7 + }, + { + "name": "vae", + "type": "VAE", + "link": null, + "shape": 7 } ], "outputs": [ { - "name": "IMAGE", - "type": "IMAGE", - "links": [ - 533 - ], - "shape": 3, - "slot_index": 0 + "name": "Filenames", + "type": "VHS_FILENAMES", + "links": null, + "shape": 3 } ], "properties": { - "Node name for S&R": "MaskToImage" + "Node name for S&R": "VHS_VideoCombine" + }, + "widgets_values": { + "frame_rate": 30, + "loop_count": 0, + "filename_prefix": "AnimateDiff", + "format": "video/h264-mp4", + "pix_fmt": "yuv420p", + "crf": 19, + "save_metadata": true, + "trim_to_audio": false, + "pingpong": false, + "save_output": true, + "videopreview": { + "hidden": false, + "paused": false, + "params": { + "filename": "AnimateDiff_07388.mp4", + "subfolder": "", + "type": "output", + "format": "video/h264-mp4", + "frame_rate": 30 + }, + "muted": false + } } }, { - "id": 290, - "type": "MaskComposite", + "id": 428, + "type": "CannyEdgePreprocessor", "pos": [ - 3225, - 1389 + 11539, + 1573 + ], + "size": [ + 315, + 106 ], - "size": { - "0": 315, - "1": 126 - }, "flags": {}, - "order": 63, + "order": 112, "mode": 0, "inputs": [ { - "name": "destination", - "type": "MASK", - "link": 485 - }, - { - "name": "source", - "type": "MASK", - "link": 486 + "name": "image", + "type": "IMAGE", + "link": 692 } ], "outputs": [ { - "name": "MASK", - "type": "MASK", + "name": "IMAGE", + "type": "IMAGE", "links": [ - 529, - 532 + 693, + 695 ], "slot_index": 0, "shape": 3 } ], "properties": { - "Node name for S&R": "MaskComposite" + "Node name for S&R": "CannyEdgePreprocessor" }, "widgets_values": [ - 0, - 0, - "add" + 100, + 200, + 512 ] }, { - "id": 349, - "type": "FlexImageTransform", + "id": 406, + "type": "ControlNetLoader", "pos": [ - 4641, - 500 + 12113, + 1516 + ], + "size": [ + 315, + 58 ], - "size": { - "0": 478.8000183105469, - "1": 242 - }, "flags": {}, - "order": 67, + "order": 30, "mode": 0, - "inputs": [ - { - "name": "images", - "type": "IMAGE", - "link": 664 - }, - { - "name": "feature", - "type": "FEATURE", - "link": null - }, - { - "name": "feature_pipe", - "type": "FEATURE_PIPE", - "link": null - } - ], + "inputs": [], "outputs": [ { - "name": "IMAGE", - "type": "IMAGE", + "name": "CONTROL_NET", + "type": "CONTROL_NET", "links": [ - 548, - 665 + 628 ], - "shape": 3, - "slot_index": 0 + "shape": 3 } ], "properties": { - "Node name for S&R": "FlexImageTransform" + "Node name for S&R": "ControlNetLoader" }, "widgets_values": [ - 1, - 0, - "None", - "relative", - "translate", - -28.1, - -27.1 + "control_v11p_sd15_canny_fp16.safetensors" ] }, { - "id": 426, - "type": "FlexImageTransform", + "id": 405, + "type": "ACN_AdvancedControlNetApply", "pos": [ - 5784, - 1095 + 12546, + 1545 + ], + "size": [ + 285.6000061035156, + 286 ], - "size": { - "0": 478.8000183105469, - "1": 242 - }, "flags": {}, - "order": 100, + "order": 114, "mode": 0, "inputs": [ { - "name": "images", + "name": "positive", + "type": "CONDITIONING", + "link": 713 + }, + { + "name": "negative", + "type": "CONDITIONING", + "link": 714 + }, + { + "name": "control_net", + "type": "CONTROL_NET", + "link": 628, + "slot_index": 2 + }, + { + "name": "image", "type": "IMAGE", - "link": 723 + "link": 693 }, { - "name": "feature", - "type": "FEATURE", - "link": null + "name": "mask_optional", + "type": "MASK", + "link": 630, + "shape": 7 }, { - "name": "feature_pipe", - "type": "FEATURE_PIPE", - "link": null + "name": "timestep_kf", + "type": "TIMESTEP_KEYFRAME", + "link": null, + "shape": 7 + }, + { + "name": "latent_kf_override", + "type": "LATENT_KEYFRAME", + "link": null, + "shape": 7 + }, + { + "name": "weights_override", + "type": "CONTROL_NET_WEIGHTS", + "link": null, + "shape": 7 + }, + { + "name": "model_optional", + "type": "MODEL", + "link": null, + "shape": 7 + }, + { + "name": "vae_optional", + "type": "VAE", + "link": null, + "shape": 7 } ], "outputs": [ { - "name": "IMAGE", - "type": "IMAGE", + "name": "positive", + "type": "CONDITIONING", "links": [ - 686, - 710 + 633 ], - "shape": 3, - "slot_index": 0 + "slot_index": 0, + "shape": 3 + }, + { + "name": "negative", + "type": "CONDITIONING", + "links": [ + 634 + ], + "slot_index": 1, + "shape": 3 + }, + { + "name": "model_opt", + "type": "MODEL", + "links": null, + "shape": 3 } ], "properties": { - "Node name for S&R": "FlexImageTransform" + "Node name for S&R": "ACN_AdvancedControlNetApply" }, "widgets_values": [ - 1, + 0.85, 0, - "None", - "relative", - "scale", - 0.5, - 0.5 + 0.85 ] }, { - "id": 354, - "type": "VHS_VideoCombine", + "id": 394, + "type": "NNLatentUpscale", "pos": [ - 7121, - 1379 + 13908, + 461 ], "size": [ - 214.7587890625, - 433.55181884765625 + 315, + 82 ], "flags": {}, - "order": 110, - "mode": 4, + "order": 125, + "mode": 0, "inputs": [ { - "name": "images", - "type": "IMAGE", - "link": 687 - }, - { - "name": "audio", - "type": "AUDIO", - "link": null - }, - { - "name": "meta_batch", - "type": "VHS_BatchManager", - "link": null - }, - { - "name": "vae", - "type": "VAE", - "link": null + "name": "latent", + "type": "LATENT", + "link": 612 } ], "outputs": [ { - "name": "Filenames", - "type": "VHS_FILENAMES", - "links": null, + "name": "LATENT", + "type": "LATENT", + "links": [ + 613 + ], + "slot_index": 0, "shape": 3 } ], "properties": { - "Node name for S&R": "VHS_VideoCombine" + "Node name for S&R": "NNLatentUpscale" }, - "widgets_values": { - "frame_rate": 30, - "loop_count": 0, - "filename_prefix": "AnimateDiff", - "format": "video/h264-mp4", - "pix_fmt": "yuv420p", - "crf": 19, - "save_metadata": true, - "pingpong": false, - "save_output": true, - "videopreview": { - "hidden": false, - "paused": false, - "params": { - "filename": "AnimateDiff_07387.mp4", - "subfolder": "", - "type": "output", - "format": "video/h264-mp4", - "frame_rate": 30 - }, - "muted": false - } - } + "widgets_values": [ + "SD 1.x", + 1.5 + ] }, { - "id": 363, - "type": "CLIPTextEncode", + "id": 389, + "type": "KSampler", "pos": [ - 9597, - 372 + 14219, + 655 + ], + "size": [ + 303.4075622558594, + 262 ], - "size": { - "0": 422.84503173828125, - "1": 164.31304931640625 - }, "flags": {}, - "order": 54, + "order": 127, "mode": 0, "inputs": [ { - "name": "clip", - "type": "CLIP", - "link": 569 + "name": "model", + "type": "MODEL", + "link": 603 + }, + { + "name": "positive", + "type": "CONDITIONING", + "link": 711 + }, + { + "name": "negative", + "type": "CONDITIONING", + "link": 712 + }, + { + "name": "latent_image", + "type": "LATENT", + "link": 613 } ], "outputs": [ { - "name": "CONDITIONING", - "type": "CONDITIONING", + "name": "LATENT", + "type": "LATENT", "links": [ - 711, - 713 + 607 ], "slot_index": 0 } ], "properties": { - "Node name for S&R": "CLIPTextEncode" + "Node name for S&R": "KSampler" }, "widgets_values": [ - "acidzlime, dripping slime, disembodied face singing" + 156680208700286, + "fixed", + 4, + 1, + "lcm", + "sgm_uniform", + 0.4 ] }, { - "id": 388, - "type": "VAEEncode", + "id": 395, + "type": "FlexImageHueShift", "pos": [ - 9726, - 939 + 15018, + 869 + ], + "size": [ + 319.20001220703125, + 214 ], - "size": { - "0": 210, - "1": 46 - }, "flags": {}, - "order": 115, - "mode": 0, + "order": 131, + "mode": 4, "inputs": [ { - "name": "pixels", + "name": "images", "type": "IMAGE", - "link": 641 + "link": 614 }, { - "name": "vae", - "type": "VAE", - "link": 623 + "name": "opt_feature", + "type": "FEATURE", + "link": 615, + "shape": 7 + }, + { + "name": "opt_mask", + "type": "MASK", + "link": 616, + "shape": 7 + }, + { + "name": "opt_mask", + "type": "MASK", + "link": null } ], "outputs": [ { - "name": "LATENT", - "type": "LATENT", + "name": "IMAGE", + "type": "IMAGE", + "links": [], + "slot_index": 0, + "shape": 3 + } + ], + "properties": { + "Node name for S&R": "FlexImageHueShift" + }, + "widgets_values": [ + 1, + 0, + "None", + "relative", + 96 + ] + }, + { + "id": 396, + "type": "GetNode", + "pos": [ + 14588, + 926 + ], + "size": [ + 210, + 58 + ], + "flags": {}, + "order": 31, + "mode": 0, + "inputs": [], + "outputs": [ + { + "name": "FEATURE", + "type": "FEATURE", "links": [ - 600 + 615 + ], + "slot_index": 0 + } + ], + "title": "Get_drum_feature", + "properties": {}, + "widgets_values": [ + "drum_feature" + ] + }, + { + "id": 397, + "type": "GetNode", + "pos": [ + 14545, + 1092 + ], + "size": [ + 210, + 58 + ], + "flags": {}, + "order": 32, + "mode": 0, + "inputs": [], + "outputs": [ + { + "name": "FEATURE_PIPE", + "type": "FEATURE_PIPE", + "links": [ + 616 ], - "shape": 3, "slot_index": 0 } ], + "title": "Get_feature_pipe", + "properties": {}, + "widgets_values": [ + "feature_pipe" + ] + }, + { + "id": 411, + "type": "ImageCASBatch", + "pos": [ + 15015, + 612 + ], + "size": [ + 462, + 82 + ], + "flags": {}, + "order": 132, + "mode": 0, + "inputs": [ + { + "name": "image", + "type": "IMAGE", + "link": 637 + } + ], + "outputs": [ + { + "name": "IMAGE", + "type": "IMAGE", + "links": [ + 638 + ], + "slot_index": 0, + "shape": 3 + } + ], "properties": { - "Node name for S&R": "VAEEncode" - } + "Node name for S&R": "ImageCASBatch" + }, + "widgets_values": [ + 0.8, + 4 + ] }, { - "id": 334, + "id": 441, "type": "VHS_VideoCombine", "pos": [ - 7390, - 498 + 3328, + 2373 ], "size": [ 214.7587890625, - 441.15958404541016 + 334 ], "flags": {}, - "order": 114, + "order": 68, "mode": 4, "inputs": [ { "name": "images", "type": "IMAGE", - "link": 541 + "link": 760 }, { "name": "audio", "type": "AUDIO", - "link": null + "link": 717, + "shape": 7 }, { "name": "meta_batch", "type": "VHS_BatchManager", - "link": null + "link": null, + "shape": 7 }, { "name": "vae", "type": "VAE", - "link": null + "link": null, + "shape": 7 } ], "outputs": [ @@ -5179,13 +4602,14 @@ "pix_fmt": "yuv420p", "crf": 19, "save_metadata": true, + "trim_to_audio": false, "pingpong": false, "save_output": true, "videopreview": { "hidden": false, - "paused": false, + "paused": true, "params": { - "filename": "AnimateDiff_07388.mp4", + "filename": "AnimateDiff_07383-audio.mp4", "subfolder": "", "type": "output", "format": "video/h264-mp4", @@ -5196,730 +4620,1443 @@ } }, { - "id": 428, - "type": "CannyEdgePreprocessor", + "id": 286, + "type": "VHS_VideoCombine", "pos": [ - 11539, - 1573 + 3481, + 1673 + ], + "size": [ + 214.7587890625, + 334 ], - "size": { - "0": 315, - "1": 106 - }, "flags": {}, - "order": 105, - "mode": 0, + "order": 87, + "mode": 4, "inputs": [ { - "name": "image", + "name": "images", "type": "IMAGE", - "link": 692 - } - ], - "outputs": [ + "link": 501 + }, { - "name": "IMAGE", - "type": "IMAGE", - "links": [ - 693, - 695 + "name": "audio", + "type": "AUDIO", + "link": 461, + "shape": 7 + }, + { + "name": "meta_batch", + "type": "VHS_BatchManager", + "link": null, + "shape": 7 + }, + { + "name": "vae", + "type": "VAE", + "link": null, + "shape": 7 + } + ], + "outputs": [ + { + "name": "Filenames", + "type": "VHS_FILENAMES", + "links": null, + "shape": 3 + } + ], + "properties": { + "Node name for S&R": "VHS_VideoCombine" + }, + "widgets_values": { + "frame_rate": 30, + "loop_count": 0, + "filename_prefix": "AnimateDiff", + "format": "video/h264-mp4", + "pix_fmt": "yuv420p", + "crf": 19, + "save_metadata": true, + "trim_to_audio": false, + "pingpong": false, + "save_output": true, + "videopreview": { + "hidden": false, + "paused": false, + "params": { + "filename": "AnimateDiff_07384-audio.mp4", + "subfolder": "", + "type": "output", + "format": "video/h264-mp4", + "frame_rate": 30 + }, + "muted": false + } + } + }, + { + "id": 273, + "type": "VHS_VideoCombine", + "pos": [ + 3539, + 912 + ], + "size": [ + 214.7587890625, + 334 + ], + "flags": {}, + "order": 86, + "mode": 4, + "inputs": [ + { + "name": "images", + "type": "IMAGE", + "link": 483 + }, + { + "name": "audio", + "type": "AUDIO", + "link": 449, + "shape": 7 + }, + { + "name": "meta_batch", + "type": "VHS_BatchManager", + "link": null, + "shape": 7 + }, + { + "name": "vae", + "type": "VAE", + "link": null, + "shape": 7 + } + ], + "outputs": [ + { + "name": "Filenames", + "type": "VHS_FILENAMES", + "links": null, + "shape": 3 + } + ], + "properties": { + "Node name for S&R": "VHS_VideoCombine" + }, + "widgets_values": { + "frame_rate": 30, + "loop_count": 0, + "filename_prefix": "AnimateDiff", + "format": "video/h264-mp4", + "pix_fmt": "yuv420p", + "crf": 19, + "save_metadata": true, + "trim_to_audio": false, + "pingpong": false, + "save_output": true, + "videopreview": { + "hidden": false, + "paused": false, + "params": { + "filename": "AnimateDiff_07382-audio.mp4", + "subfolder": "", + "type": "output", + "format": "video/h264-mp4", + "frame_rate": 30 + }, + "muted": false + } + } + }, + { + "id": 324, + "type": "MediaPipe-FaceMeshPreprocessor", + "pos": [ + 5353.53125, + 317.5410461425781 + ], + "size": [ + 315, + 106 + ], + "flags": {}, + "order": 102, + "mode": 0, + "inputs": [ + { + "name": "image", + "type": "IMAGE", + "link": 546 + } + ], + "outputs": [ + { + "name": "IMAGE", + "type": "IMAGE", + "links": [ + 552, + 722 ], - "shape": 3, - "slot_index": 0 + "slot_index": 0, + "shape": 3 + } + ], + "properties": { + "Node name for S&R": "MediaPipe-FaceMeshPreprocessor" + }, + "widgets_values": [ + 1, + 0.1, + 512 + ], + "color": "#223", + "bgcolor": "#335" + }, + { + "id": 444, + "type": "ImageListToImageBatch", + "pos": [ + 5587, + 755 + ], + "size": [ + 210, + 26 + ], + "flags": {}, + "order": 105, + "mode": 0, + "inputs": [ + { + "name": "images", + "type": "IMAGE", + "link": 722 + } + ], + "outputs": [ + { + "name": "IMAGE", + "type": "IMAGE", + "links": [ + 764 + ], + "slot_index": 0, + "shape": 3 + } + ], + "properties": { + "Node name for S&R": "ImageListToImageBatch" + }, + "widgets_values": [] + }, + { + "id": 360, + "type": "VHS_VideoCombine", + "pos": [ + 6248, + 1448 + ], + "size": [ + 214.7587890625, + 334 + ], + "flags": {}, + "order": 109, + "mode": 4, + "inputs": [ + { + "name": "images", + "type": "IMAGE", + "link": 765 + }, + { + "name": "audio", + "type": "AUDIO", + "link": 656, + "shape": 7 + }, + { + "name": "meta_batch", + "type": "VHS_BatchManager", + "link": null, + "shape": 7 + }, + { + "name": "vae", + "type": "VAE", + "link": null, + "shape": 7 + } + ], + "outputs": [ + { + "name": "Filenames", + "type": "VHS_FILENAMES", + "links": null, + "shape": 3 + } + ], + "properties": { + "Node name for S&R": "VHS_VideoCombine" + }, + "widgets_values": { + "frame_rate": 30, + "loop_count": 0, + "filename_prefix": "AnimateDiff", + "format": "video/h264-mp4", + "pix_fmt": "yuv420p", + "crf": 19, + "save_metadata": true, + "trim_to_audio": false, + "pingpong": false, + "save_output": true, + "videopreview": { + "hidden": false, + "paused": false, + "params": { + "filename": "AnimateDiff_07385-audio.mp4", + "subfolder": "", + "type": "output", + "format": "video/h264-mp4", + "frame_rate": 30 + }, + "muted": false + } + } + }, + { + "id": 429, + "type": "VHS_VideoCombine", + "pos": [ + 12132, + 1649 + ], + "size": [ + 365.99755859375, + 334 + ], + "flags": {}, + "order": 115, + "mode": 4, + "inputs": [ + { + "name": "images", + "type": "IMAGE", + "link": 695 + }, + { + "name": "audio", + "type": "AUDIO", + "link": 696, + "shape": 7 + }, + { + "name": "meta_batch", + "type": "VHS_BatchManager", + "link": null, + "shape": 7 + }, + { + "name": "vae", + "type": "VAE", + "link": null, + "shape": 7 + } + ], + "outputs": [ + { + "name": "Filenames", + "type": "VHS_FILENAMES", + "links": null, + "shape": 3 } ], "properties": { - "Node name for S&R": "CannyEdgePreprocessor" + "Node name for S&R": "VHS_VideoCombine" }, - "widgets_values": [ - 100, - 200, - 512 - ] + "widgets_values": { + "frame_rate": 30, + "loop_count": 0, + "filename_prefix": "AnimateDiff", + "format": "video/h264-mp4", + "pix_fmt": "yuv420p", + "crf": 19, + "save_metadata": true, + "trim_to_audio": false, + "pingpong": false, + "save_output": true, + "videopreview": { + "hidden": false, + "paused": false, + "params": { + "filename": "AnimateDiff_07386-audio.mp4", + "subfolder": "", + "type": "output", + "format": "video/h264-mp4", + "frame_rate": 30 + }, + "muted": false + } + } }, { - "id": 406, - "type": "ControlNetLoader", + "id": 375, + "type": "ADE_AnimateDiffLoRALoader", "pos": [ - 12113, - 1516 + 10741.302734375, + 337.758056640625 + ], + "size": [ + 261.19134521484375, + 82 ], - "size": { - "0": 315, - "1": 58 - }, "flags": {}, - "order": 31, + "order": 33, "mode": 0, + "inputs": [ + { + "name": "prev_motion_lora", + "type": "MOTION_LORA", + "link": null, + "shape": 7 + } + ], "outputs": [ { - "name": "CONTROL_NET", - "type": "CONTROL_NET", + "name": "MOTION_LORA", + "type": "MOTION_LORA", "links": [ - 628 + 573 ], + "slot_index": 0, "shape": 3 } ], + "title": "AnimateDiff LoRA", "properties": { - "Node name for S&R": "ControlNetLoader" + "Node name for S&R": "ADE_AnimateDiffLoRALoader", + "ttNbgOverride": { + "color": "#2a363b", + "bgcolor": "#3f5159", + "groupcolor": "#3f789e" + } }, "widgets_values": [ - "control_v11p_sd15_canny_fp16.safetensors" + "LiquidAF-0-1.safetensors", + 0.8 ] }, { - "id": 405, - "type": "ACN_AdvancedControlNetApply", + "id": 376, + "type": "KSampler", "pos": [ - 12546, - 1545 + 12659, + 780 + ], + "size": [ + 303.4075622558594, + 262 ], - "size": { - "0": 285.6000061035156, - "1": 286 - }, "flags": {}, - "order": 107, + "order": 123, "mode": 0, "inputs": [ + { + "name": "model", + "type": "MODEL", + "link": 582 + }, { "name": "positive", "type": "CONDITIONING", - "link": 713 + "link": 633 }, { "name": "negative", "type": "CONDITIONING", - "link": 714 + "link": 634 }, { - "name": "control_net", - "type": "CONTROL_NET", - "link": 628, - "slot_index": 2 - }, + "name": "latent_image", + "type": "LATENT", + "link": 600 + } + ], + "outputs": [ { - "name": "image", - "type": "IMAGE", - "link": 693 - }, + "name": "LATENT", + "type": "LATENT", + "links": [ + 584, + 612 + ], + "slot_index": 0 + } + ], + "properties": { + "Node name for S&R": "KSampler" + }, + "widgets_values": [ + 156680208700286, + "fixed", + 4, + 1, + "lcm", + "sgm_uniform", + 0.52 + ] + }, + { + "id": 445, + "type": "Note", + "pos": [ + 4690.48681640625, + 331.3853759765625 + ], + "size": [ + 210, + 58 + ], + "flags": {}, + "order": 34, + "mode": 0, + "inputs": [], + "outputs": [], + "properties": { + "text": "" + }, + "widgets_values": [ + "adjust x and y values to center your face" + ], + "color": "#432", + "bgcolor": "#653" + }, + { + "id": 446, + "type": "Note", + "pos": [ + 6182, + 961 + ], + "size": [ + 440.62109375, + 65.99163818359375 + ], + "flags": {}, + "order": 35, + "mode": 0, + "inputs": [], + "outputs": [], + "properties": { + "text": "" + }, + "widgets_values": [ + "adjust x and y values in each to scale your face to desired size" + ], + "color": "#432", + "bgcolor": "#653" + }, + { + "id": 447, + "type": "AudioSeparatorSimple", + "pos": [ + 594.46484375, + 678.0962524414062 + ], + "size": [ + 315, + 106 + ], + "flags": {}, + "order": 58, + "mode": 0, + "inputs": [ { - "name": "mask_optional", - "type": "MASK", - "link": 630 + "name": "model", + "type": "OPEN_UNMIX_MODEL", + "link": 724 }, { - "name": "timestep_kf", - "type": "TIMESTEP_KEYFRAME", - "link": null + "name": "audio", + "type": "AUDIO", + "link": 725 + } + ], + "outputs": [ + { + "name": "audio", + "type": "AUDIO", + "links": [ + 726 + ] }, { - "name": "latent_kf_override", - "type": "LATENT_KEYFRAME", - "link": null + "name": "drums_audio", + "type": "AUDIO", + "links": [ + 728, + 729, + 743 + ] }, { - "name": "weights_override", - "type": "CONTROL_NET_WEIGHTS", - "link": null + "name": "vocals_audio", + "type": "AUDIO", + "links": [ + 730, + 747 + ] }, { - "name": "model_optional", - "type": "MODEL", - "link": null + "name": "bass_audio", + "type": "AUDIO", + "links": [ + 732, + 749 + ] }, { - "name": "vae_optional", - "type": "VAE", - "link": null + "name": "other_audio", + "type": "AUDIO", + "links": [ + 734, + 751 + ] + } + ], + "properties": { + "Node name for S&R": "AudioSeparatorSimple" + }, + "widgets_values": [] + }, + { + "id": 448, + "type": "Anything Everywhere?", + "pos": [ + -710.2601318359375, + 1143.957763671875 + ], + "size": [ + 315, + 106 + ], + "flags": {}, + "order": 53, + "mode": 0, + "inputs": [ + { + "name": "FLOAT", + "type": "*", + "link": 736, + "shape": 7, + "color_on": "" } ], + "outputs": [], + "properties": { + "Node name for S&R": "Anything Everywhere?", + "group_restricted": 0, + "color_restricted": 0 + }, + "widgets_values": [ + ".*", + "frame_rate", + ".*" + ] + }, + { + "id": 449, + "type": "INTConstant", + "pos": [ + -980.2600708007812, + 683.9575805664062 + ], + "size": [ + 210, + 58 + ], + "flags": {}, + "order": 36, + "mode": 0, + "inputs": [], "outputs": [ { - "name": "positive", - "type": "CONDITIONING", + "name": "value", + "type": "INT", "links": [ - 633 + 738 ], - "shape": 3, "slot_index": 0 - }, - { - "name": "negative", - "type": "CONDITIONING", - "links": [ - 634 - ], - "shape": 3, - "slot_index": 1 - }, - { - "name": "model_opt", - "type": "MODEL", - "links": null, - "shape": 3 } ], "properties": { - "Node name for S&R": "ACN_AdvancedControlNetApply" + "Node name for S&R": "INTConstant" }, "widgets_values": [ - 0.85, - 0, - 0.85, - "" - ] + 768 + ], + "color": "#1b4669", + "bgcolor": "#29699c" }, { - "id": 394, - "type": "NNLatentUpscale", + "id": 450, + "type": "INTConstant", "pos": [ - 13908, - 461 + -950.2600708007812, + 913.9575805664062 + ], + "size": [ + 210, + 58 ], - "size": { - "0": 315, - "1": 82 - }, "flags": {}, - "order": 118, + "order": 37, "mode": 0, - "inputs": [ - { - "name": "latent", - "type": "LATENT", - "link": 612 - } - ], + "inputs": [], "outputs": [ { - "name": "LATENT", - "type": "LATENT", + "name": "value", + "type": "INT", "links": [ - 613 + 737 ], - "shape": 3, "slot_index": 0 } ], "properties": { - "Node name for S&R": "NNLatentUpscale" + "Node name for S&R": "INTConstant" }, "widgets_values": [ - "SD 1.x", - 1.5 - ] + 468 + ], + "color": "#1b4669", + "bgcolor": "#29699c" }, { - "id": 389, - "type": "KSampler", + "id": 451, + "type": "FloatConstant", "pos": [ - 14219, - 655 + -940.2600708007812, + 1153.957763671875 + ], + "size": [ + 210, + 58 ], - "size": { - "0": 303.4075622558594, - "1": 262 - }, "flags": {}, - "order": 120, + "order": 38, "mode": 0, - "inputs": [ - { - "name": "model", - "type": "MODEL", - "link": 603 - }, - { - "name": "positive", - "type": "CONDITIONING", - "link": 711 - }, - { - "name": "negative", - "type": "CONDITIONING", - "link": 712 - }, - { - "name": "latent_image", - "type": "LATENT", - "link": 613 - } - ], + "inputs": [], "outputs": [ { - "name": "LATENT", - "type": "LATENT", + "name": "value", + "type": "FLOAT", "links": [ - 607 + 736 ], "slot_index": 0 } ], "properties": { - "Node name for S&R": "KSampler" + "Node name for S&R": "FloatConstant" }, "widgets_values": [ - 156680208700286, - "fixed", - 4, - 1, - "lcm", - "sgm_uniform", - 0.4 - ] + 30.000000000000004 + ], + "color": "#232", + "bgcolor": "#353" }, { - "id": 395, - "type": "FlexImageHueShift", + "id": 452, + "type": "Anything Everywhere?", "pos": [ - 15018, - 869 + -720.2601318359375, + 913.9575805664062 + ], + "size": [ + 315, + 106 ], - "size": { - "0": 319.20001220703125, - "1": 214 - }, "flags": {}, - "order": 124, - "mode": 4, + "order": 52, + "mode": 0, "inputs": [ { - "name": "images", - "type": "IMAGE", - "link": 614 - }, - { - "name": "feature", - "type": "FEATURE", - "link": 615 - }, - { - "name": "feature_pipe", - "type": "FEATURE_PIPE", - "link": 616 - }, - { - "name": "opt_mask", - "type": "MASK", - "link": null + "name": "INT", + "type": "*", + "link": 737, + "shape": 7, + "color_on": "" } ], - "outputs": [ + "outputs": [], + "properties": { + "Node name for S&R": "Anything Everywhere?", + "group_restricted": 0, + "color_restricted": 0 + }, + "widgets_values": [ + ".*", + "height", + ".*" + ] + }, + { + "id": 453, + "type": "Anything Everywhere?", + "pos": [ + -750.2601318359375, + 673.9575805664062 + ], + "size": [ + 315, + 106 + ], + "flags": {}, + "order": 51, + "mode": 0, + "inputs": [ { - "name": "IMAGE", - "type": "IMAGE", - "links": [], - "shape": 3, - "slot_index": 0 + "name": "INT", + "type": "*", + "link": 738, + "shape": 7, + "color_on": "" } ], + "outputs": [], "properties": { - "Node name for S&R": "FlexImageHueShift" + "Node name for S&R": "Anything Everywhere?", + "group_restricted": 0, + "color_restricted": 0 }, "widgets_values": [ - 1, - 0, - "None", - "relative", - 96 + ".*", + "width", + ".*" ] }, { - "id": 396, - "type": "GetNode", - "pos": { - "0": 14588, - "1": 926, - "2": 0, - "3": 0, - "4": 0, - "5": 0, - "6": 0, - "7": 0, - "8": 0, - "9": 0 - }, - "size": { - "0": 210, - "1": 58 - }, + "id": 39, + "type": "VHS_LoadAudioUpload", + "pos": [ + -76, + 471 + ], + "size": [ + 243.818359375, + 130 + ], "flags": {}, - "order": 32, + "order": 39, "mode": 0, "inputs": [], "outputs": [ { - "name": "FEATURE", - "type": "FEATURE", + "name": "audio", + "type": "AUDIO", "links": [ - 615 + 38, + 48, + 56, + 639, + 725, + 739 ], - "slot_index": 0 + "slot_index": 0, + "shape": 3 } ], - "title": "Get_drum_feature", - "properties": {}, + "properties": { + "Node name for S&R": "VHS_LoadAudioUpload" + }, + "widgets_values": { + "audio": "Delta Deez - Songfinch - Out the Mud.mp3", + "start_time": 105, + "duration": 7.5, + "choose audio to upload": "image" + } + }, + { + "id": 454, + "type": "Anything Everywhere?", + "pos": [ + 650.71337890625, + 193.2701416015625 + ], + "size": [ + 315, + 106 + ], + "flags": {}, + "order": 59, + "mode": 0, + "inputs": [ + { + "name": "AUDIO", + "type": "*", + "link": 739, + "shape": 7, + "color_on": "" + } + ], + "outputs": [], + "properties": { + "Node name for S&R": "Anything Everywhere?", + "group_restricted": 0, + "color_restricted": 0 + }, "widgets_values": [ - "drum_feature" + ".*", + "audio", + ".*" ] }, { - "id": 397, - "type": "GetNode", - "pos": { - "0": 14545, - "1": 1092, - "2": 0, - "3": 0, - "4": 0, - "5": 0, - "6": 0, - "7": 0, - "8": 0, - "9": 0 - }, - "size": { - "0": 210, - "1": 58 + "id": 455, + "type": "Anything Everywhere?", + "pos": [ + 215.5220947265625, + 1164.0767822265625 + ], + "size": [ + 315, + 106 + ], + "flags": {}, + "order": 72, + "mode": 0, + "inputs": [ + { + "name": "INT", + "type": "*", + "link": 740, + "shape": 7, + "color_on": "" + } + ], + "outputs": [], + "properties": { + "Node name for S&R": "Anything Everywhere?", + "group_restricted": 0, + "color_restricted": 0 }, + "widgets_values": [ + ".*", + "frame_count", + ".*" + ] + }, + { + "id": 42, + "type": "EmptyImageAndMaskFromAudio", + "pos": [ + 136.47975158691406, + 909.8488159179688 + ], + "size": [ + 411.6000061035156, + 146 + ], "flags": {}, - "order": 33, + "order": 54, "mode": 0, - "inputs": [], + "inputs": [ + { + "name": "audio", + "type": "AUDIO", + "link": 38 + } + ], "outputs": [ { - "name": "FEATURE_PIPE", - "type": "FEATURE_PIPE", + "name": "empty_image", + "type": "IMAGE", + "links": [ + 162 + ], + "slot_index": 0, + "shape": 3 + }, + { + "name": "empty_mask", + "type": "MASK", "links": [ - 616 + 453 ], - "slot_index": 0 + "slot_index": 1, + "shape": 3 + }, + { + "name": "frame_count", + "type": "INT", + "links": [ + 454, + 740 + ], + "slot_index": 2, + "shape": 3 } ], - "title": "Get_feature_pipe", - "properties": {}, + "properties": { + "Node name for S&R": "EmptyImageAndMaskFromAudio" + }, "widgets_values": [ - "feature_pipe" + 30, + 768, + 464 ] }, { - "id": 411, - "type": "ImageCASBatch", + "id": 457, + "type": "AudioFeatureExtractor", "pos": [ - 15015, - 612 + 1031.88037109375, + 1225.6329345703125 ], - "size": { - "0": 462, - "1": 82 + "size": [ + 415.8000183105469, + 174 + ], + "flags": { + "collapsed": true }, - "flags": {}, - "order": 125, + "order": 76, "mode": 0, "inputs": [ { - "name": "image", - "type": "IMAGE", - "link": 637 + "name": "audio", + "type": "AUDIO", + "link": 743 + }, + { + "name": "frame_rate", + "type": "FLOAT", + "link": null, + "widget": { + "name": "frame_rate" + } + }, + { + "name": "frame_count", + "type": "INT", + "link": null, + "widget": { + "name": "frame_count" + } + }, + { + "name": "width", + "type": "INT", + "link": null, + "widget": { + "name": "width" + } + }, + { + "name": "height", + "type": "INT", + "link": null, + "widget": { + "name": "height" + } } ], "outputs": [ { - "name": "IMAGE", - "type": "IMAGE", + "name": "feature", + "type": "FEATURE", "links": [ - 638 - ], - "shape": 3, - "slot_index": 0 + 744 + ] + }, + { + "name": "frame_count", + "type": "INT", + "links": null } ], "properties": { - "Node name for S&R": "ImageCASBatch" + "Node name for S&R": "AudioFeatureExtractor" }, "widgets_values": [ - 0.8, - 4 + "amplitude_envelope", + 30, + 0, + 512, + 512 ] }, { - "id": 441, - "type": "VHS_VideoCombine", + "id": 456, + "type": "AudioFeatureExtractor", "pos": [ - 3328, - 2373 + 1031.3394775390625, + 1022.9371337890625 ], "size": [ - 214.7587890625, - 470.069091796875 + 415.8000183105469, + 174 ], - "flags": {}, - "order": 64, - "mode": 4, + "flags": { + "collapsed": true + }, + "order": 90, + "mode": 0, "inputs": [ - { - "name": "images", - "type": "IMAGE", - "link": 718 - }, { "name": "audio", "type": "AUDIO", - "link": 717 + "link": 741 }, { - "name": "meta_batch", - "type": "VHS_BatchManager", - "link": null + "name": "frame_rate", + "type": "FLOAT", + "link": null, + "widget": { + "name": "frame_rate" + } }, { - "name": "vae", - "type": "VAE", - "link": null + "name": "frame_count", + "type": "INT", + "link": null, + "widget": { + "name": "frame_count" + } + }, + { + "name": "width", + "type": "INT", + "link": null, + "widget": { + "name": "width" + } + }, + { + "name": "height", + "type": "INT", + "link": null, + "widget": { + "name": "height" + } } ], "outputs": [ { - "name": "Filenames", - "type": "VHS_FILENAMES", - "links": null, - "shape": 3 + "name": "feature", + "type": "FEATURE", + "links": [ + 742 + ] + }, + { + "name": "frame_count", + "type": "INT", + "links": null } ], "properties": { - "Node name for S&R": "VHS_VideoCombine" + "Node name for S&R": "AudioFeatureExtractor" }, - "widgets_values": { - "frame_rate": 30, - "loop_count": 0, - "filename_prefix": "AnimateDiff", - "format": "video/h264-mp4", - "pix_fmt": "yuv420p", - "crf": 19, - "save_metadata": true, - "pingpong": false, - "save_output": true, - "videopreview": { - "hidden": false, - "paused": true, - "params": { - "filename": "AnimateDiff_07383-audio.mp4", - "subfolder": "", - "type": "output", - "format": "video/h264-mp4", - "frame_rate": 30 - }, - "muted": false - } - } + "widgets_values": [ + "amplitude_envelope", + 30, + 0, + 512, + 512 + ] }, { - "id": 286, - "type": "VHS_VideoCombine", + "id": 459, + "type": "AudioFeatureExtractor", "pos": [ - 3481, - 1673 + 1140.3900146484375, + 1411.43798828125 ], "size": [ - 214.7587890625, - 441.15958404541016 + 415.8000183105469, + 174 ], - "flags": {}, - "order": 80, - "mode": 4, + "flags": { + "collapsed": true + }, + "order": 78, + "mode": 0, "inputs": [ - { - "name": "images", - "type": "IMAGE", - "link": 501 - }, { "name": "audio", "type": "AUDIO", - "link": 461 + "link": 747 }, { - "name": "meta_batch", - "type": "VHS_BatchManager", - "link": null + "name": "frame_rate", + "type": "FLOAT", + "link": null, + "widget": { + "name": "frame_rate" + } }, { - "name": "vae", - "type": "VAE", - "link": null + "name": "frame_count", + "type": "INT", + "link": null, + "widget": { + "name": "frame_count" + } + }, + { + "name": "width", + "type": "INT", + "link": null, + "widget": { + "name": "width" + } + }, + { + "name": "height", + "type": "INT", + "link": null, + "widget": { + "name": "height" + } } ], "outputs": [ { - "name": "Filenames", - "type": "VHS_FILENAMES", - "links": null, - "shape": 3 + "name": "feature", + "type": "FEATURE", + "links": [ + 748 + ] + }, + { + "name": "frame_count", + "type": "INT", + "links": null } ], - "properties": { - "Node name for S&R": "VHS_VideoCombine" - }, - "widgets_values": { - "frame_rate": 30, - "loop_count": 0, - "filename_prefix": "AnimateDiff", - "format": "video/h264-mp4", - "pix_fmt": "yuv420p", - "crf": 19, - "save_metadata": true, - "pingpong": false, - "save_output": true, - "videopreview": { - "hidden": false, - "paused": false, - "params": { - "filename": "AnimateDiff_07384-audio.mp4", - "subfolder": "", - "type": "output", - "format": "video/h264-mp4", - "frame_rate": 30 - }, - "muted": false - } - } + "properties": { + "Node name for S&R": "AudioFeatureExtractor" + }, + "widgets_values": [ + "amplitude_envelope", + 30, + 0, + 512, + 512 + ] }, { - "id": 273, - "type": "VHS_VideoCombine", + "id": 460, + "type": "AudioFeatureExtractor", "pos": [ - 3539, - 912 + 1133.4984130859375, + 1513.0565185546875 ], "size": [ - 210, - 438.296875 + 415.8000183105469, + 174 ], - "flags": {}, - "order": 79, - "mode": 4, + "flags": { + "collapsed": true + }, + "order": 80, + "mode": 0, "inputs": [ - { - "name": "images", - "type": "IMAGE", - "link": 483 - }, { "name": "audio", "type": "AUDIO", - "link": 449 + "link": 749 }, { - "name": "meta_batch", - "type": "VHS_BatchManager", - "link": null + "name": "frame_rate", + "type": "FLOAT", + "link": null, + "widget": { + "name": "frame_rate" + } }, { - "name": "vae", - "type": "VAE", - "link": null + "name": "frame_count", + "type": "INT", + "link": null, + "widget": { + "name": "frame_count" + } + }, + { + "name": "width", + "type": "INT", + "link": null, + "widget": { + "name": "width" + } + }, + { + "name": "height", + "type": "INT", + "link": null, + "widget": { + "name": "height" + } } ], "outputs": [ { - "name": "Filenames", - "type": "VHS_FILENAMES", - "links": null, - "shape": 3 + "name": "feature", + "type": "FEATURE", + "links": [ + 750 + ] + }, + { + "name": "frame_count", + "type": "INT", + "links": null } ], "properties": { - "Node name for S&R": "VHS_VideoCombine" + "Node name for S&R": "AudioFeatureExtractor" }, - "widgets_values": { - "frame_rate": 30, - "loop_count": 0, - "filename_prefix": "AnimateDiff", - "format": "video/h264-mp4", - "pix_fmt": "yuv420p", - "crf": 19, - "save_metadata": true, - "pingpong": false, - "save_output": true, - "videopreview": { - "hidden": false, - "paused": false, - "params": { - "filename": "AnimateDiff_07382-audio.mp4", - "subfolder": "", - "type": "output", - "format": "video/h264-mp4", - "frame_rate": 30 - }, - "muted": false - } - } + "widgets_values": [ + "amplitude_envelope", + 30, + 0, + 512, + 512 + ] }, { - "id": 324, - "type": "MediaPipe-FaceMeshPreprocessor", + "id": 461, + "type": "AudioFeatureExtractor", "pos": [ - 5353.531146480773, - 317.5410458090749 + 1150.3897705078125, + 1590.8916015625 + ], + "size": [ + 415.8000183105469, + 174 ], - "size": { - "0": 315, - "1": 106 + "flags": { + "collapsed": true }, - "flags": {}, - "order": 94, + "order": 82, "mode": 0, "inputs": [ { - "name": "image", - "type": "IMAGE", - "link": 546 + "name": "audio", + "type": "AUDIO", + "link": 751 + }, + { + "name": "frame_rate", + "type": "FLOAT", + "link": null, + "widget": { + "name": "frame_rate" + } + }, + { + "name": "frame_count", + "type": "INT", + "link": null, + "widget": { + "name": "frame_count" + } + }, + { + "name": "width", + "type": "INT", + "link": null, + "widget": { + "name": "width" + } + }, + { + "name": "height", + "type": "INT", + "link": null, + "widget": { + "name": "height" + } } ], "outputs": [ { - "name": "IMAGE", - "type": "IMAGE", + "name": "feature", + "type": "FEATURE", "links": [ - 552, - 722 - ], - "slot_index": 0, - "shape": 3 + 752 + ] + }, + { + "name": "frame_count", + "type": "INT", + "links": null } ], "properties": { - "Node name for S&R": "MediaPipe-FaceMeshPreprocessor" + "Node name for S&R": "AudioFeatureExtractor" }, "widgets_values": [ - 1, - 0.1, + "amplitude_envelope", + 30, + 0, + 512, 512 - ], - "color": "#223", - "bgcolor": "#335" + ] }, { - "id": 444, - "type": "ImageListToImageBatch", + "id": 462, + "type": "FlexAudioVisualizerLine", "pos": [ - 5587, - 755 + 2417.581298828125, + 784.0247192382812 + ], + "size": [ + 453.5999755859375, + 630 ], - "size": { - "0": 210, - "1": 26 - }, "flags": {}, - "order": 98, + "order": 48, "mode": 0, "inputs": [ { - "name": "images", - "type": "IMAGE", - "link": 722 + "name": "audio", + "type": "AUDIO", + "link": 753 + }, + { + "name": "opt_feature", + "type": "FEATURE", + "link": null, + "shape": 7 + }, + { + "name": "screen_width", + "type": "INT", + "link": null, + "widget": { + "name": "screen_width" + } + }, + { + "name": "screen_height", + "type": "INT", + "link": null, + "widget": { + "name": "screen_height" + } + }, + { + "name": "frame_rate", + "type": "FLOAT", + "link": null, + "widget": { + "name": "frame_rate" + } } ], "outputs": [ @@ -5927,1412 +6064,1656 @@ "name": "IMAGE", "type": "IMAGE", "links": [ - 723 - ], - "shape": 3, - "slot_index": 0 + 754 + ] + }, + { + "name": "MASK", + "type": "MASK", + "links": [ + 755 + ] } ], "properties": { - "Node name for S&R": "ImageListToImageBatch" - } + "Node name for S&R": "FlexAudioVisualizerLine" + }, + "widgets_values": [ + 1, + 0, + "smoothing", + "relative", + 30, + 768, + 464, + 0.5, + 0.5, + "line", + "frequency", + 0.5, + 0, + 0, + 64, + 200, + 10, + 5, + 0, + 0, + 2048, + 20, + 8000, + true + ] }, { - "id": 360, - "type": "VHS_VideoCombine", + "id": 463, + "type": "FlexAudioVisualizerLine", "pos": [ - 6248, - 1448 + 2402.00732421875, + 1495.84228515625 ], "size": [ - 214.7587890625, - 433.55181884765625 + 453.5999755859375, + 630 ], "flags": {}, - "order": 102, - "mode": 4, + "order": 49, + "mode": 0, "inputs": [ - { - "name": "images", - "type": "IMAGE", - "link": 686 - }, { "name": "audio", "type": "AUDIO", - "link": 656 + "link": 756 + }, + { + "name": "opt_feature", + "type": "FEATURE", + "link": null, + "shape": 7 + }, + { + "name": "screen_width", + "type": "INT", + "link": null, + "widget": { + "name": "screen_width" + } }, { - "name": "meta_batch", - "type": "VHS_BatchManager", - "link": null + "name": "screen_height", + "type": "INT", + "link": null, + "widget": { + "name": "screen_height" + } }, { - "name": "vae", - "type": "VAE", - "link": null + "name": "frame_rate", + "type": "FLOAT", + "link": null, + "widget": { + "name": "frame_rate" + } } ], "outputs": [ { - "name": "Filenames", - "type": "VHS_FILENAMES", - "links": null, - "shape": 3 + "name": "IMAGE", + "type": "IMAGE", + "links": [ + 757 + ] + }, + { + "name": "MASK", + "type": "MASK", + "links": [ + 758 + ] } ], "properties": { - "Node name for S&R": "VHS_VideoCombine" + "Node name for S&R": "FlexAudioVisualizerLine" }, - "widgets_values": { - "frame_rate": 30, - "loop_count": 0, - "filename_prefix": "AnimateDiff", - "format": "video/h264-mp4", - "pix_fmt": "yuv420p", - "crf": 19, - "save_metadata": true, - "pingpong": false, - "save_output": true, - "videopreview": { - "hidden": false, - "paused": false, - "params": { - "filename": "AnimateDiff_07385-audio.mp4", - "subfolder": "", - "type": "output", - "format": "video/h264-mp4", - "frame_rate": 30 - }, - "muted": false - } - } + "widgets_values": [ + 1, + 0, + "smoothing", + "relative", + 30, + 768, + 464, + 0.5, + 0.5, + "line", + "frequency", + 0.5, + 180, + 0, + 64, + 200, + 10, + 5, + 0, + 0, + 2048, + 20, + 8000, + true + ] }, { - "id": 429, - "type": "VHS_VideoCombine", + "id": 464, + "type": "FlexAudioVisualizerCircular", "pos": [ - 12132, - 1649 + 2370.41259765625, + 2251.70703125 ], "size": [ - 365.99755859375, - 518.2793816705862 + 504, + 558 ], "flags": {}, - "order": 108, - "mode": 4, + "order": 50, + "mode": 0, "inputs": [ - { - "name": "images", - "type": "IMAGE", - "link": 695 - }, { "name": "audio", "type": "AUDIO", - "link": 696 - }, - { - "name": "meta_batch", - "type": "VHS_BatchManager", - "link": null + "link": 759 }, { - "name": "vae", - "type": "VAE", - "link": null + "name": "opt_feature", + "type": "FEATURE", + "link": null, + "shape": 7 } ], "outputs": [ { - "name": "Filenames", - "type": "VHS_FILENAMES", - "links": null, - "shape": 3 + "name": "IMAGE", + "type": "IMAGE", + "links": [ + 760 + ] + }, + { + "name": "MASK", + "type": "MASK", + "links": [] } ], "properties": { - "Node name for S&R": "VHS_VideoCombine" + "Node name for S&R": "FlexAudioVisualizerCircular" }, - "widgets_values": { - "frame_rate": 30, - "loop_count": 0, - "filename_prefix": "AnimateDiff", - "format": "video/h264-mp4", - "pix_fmt": "yuv420p", - "crf": 19, - "save_metadata": true, - "pingpong": false, - "save_output": true, - "videopreview": { - "hidden": false, - "paused": false, - "params": { - "filename": "AnimateDiff_07386-audio.mp4", - "subfolder": "", - "type": "output", - "format": "video/h264-mp4", - "frame_rate": 30 - }, - "muted": false - } - } + "widgets_values": [ + 1, + 0, + "smoothing", + "relative", + 30, + 768, + 464, + 0.5, + 0.5, + "bar", + "frequency", + 0.5, + 90, + 495, + 2048, + 20, + 8000, + 150, + 2, + 100, + 150 + ] }, { - "id": 375, - "type": "ADE_AnimateDiffLoRALoader", + "id": 466, + "type": "FlexImageTransform", "pos": [ - 10741.302731137033, - 337.7580619023213 + 4641, + 500 + ], + "size": [ + 378, + 222 ], - "size": { - "0": 261.19134521484375, - "1": 82 - }, "flags": {}, - "order": 34, + "order": 85, "mode": 0, "inputs": [ { - "name": "prev_motion_lora", - "type": "MOTION_LORA", - "link": null + "name": "images", + "type": "IMAGE", + "link": 761 + }, + { + "name": "opt_feature", + "type": "FEATURE", + "link": null, + "shape": 7 } ], "outputs": [ { - "name": "MOTION_LORA", - "type": "MOTION_LORA", + "name": "IMAGE", + "type": "IMAGE", "links": [ - 573 - ], - "shape": 3, - "slot_index": 0 + 762, + 763 + ] } ], - "title": "AnimateDiff LoRA", "properties": { - "Node name for S&R": "ADE_AnimateDiffLoRALoader", - "ttNbgOverride": { - "color": "#2a363b", - "bgcolor": "#3f5159", - "groupcolor": "#3f789e" - } + "Node name for S&R": "FlexImageTransform" }, "widgets_values": [ - "LiquidAF-0-1.safetensors", - 0.8, - "" + 1, + 0, + "x_value", + "relative", + "translate", + -28, + -27 ] }, { - "id": 376, - "type": "KSampler", + "id": 468, + "type": "FlexImageTransform", "pos": [ - 12659, - 780 + 5784, + 1095 + ], + "size": [ + 378, + 222 ], - "size": { - "0": 303.4075622558594, - "1": 262 - }, "flags": {}, - "order": 116, + "order": 107, "mode": 0, "inputs": [ { - "name": "model", - "type": "MODEL", - "link": 582 - }, - { - "name": "positive", - "type": "CONDITIONING", - "link": 633 - }, - { - "name": "negative", - "type": "CONDITIONING", - "link": 634 + "name": "images", + "type": "IMAGE", + "link": 764 }, { - "name": "latent_image", - "type": "LATENT", - "link": 600 + "name": "opt_feature", + "type": "FEATURE", + "link": null, + "shape": 7 } ], "outputs": [ { - "name": "LATENT", - "type": "LATENT", + "name": "IMAGE", + "type": "IMAGE", "links": [ - 584, - 612 - ], - "slot_index": 0 + 765, + 766 + ] } ], "properties": { - "Node name for S&R": "KSampler" - }, - "widgets_values": [ - 156680208700286, - "fixed", - 4, - 1, - "lcm", - "sgm_uniform", - 0.52 - ] - }, - { - "id": 445, - "type": "Note", - "pos": [ - 4690.486662226939, - 331.3853761741141 - ], - "size": { - "0": 210, - "1": 58 - }, - "flags": {}, - "order": 35, - "mode": 0, - "properties": { - "text": "" + "Node name for S&R": "FlexImageTransform" }, "widgets_values": [ - "adjust x and y values to center your face" - ], - "color": "#432", - "bgcolor": "#653" + 1, + 0, + "x_value", + "relative", + "scale", + 0.5, + 0.5 + ] }, { - "id": 446, - "type": "Note", + "id": 469, + "type": "FlexImageTransform", "pos": [ - 6182, - 961 + 6510.6162109375, + 1098.0030517578125 + ], + "size": [ + 378, + 222 ], - "size": { - "0": 440.62109375, - "1": 65.99163818359375 - }, "flags": {}, - "order": 36, + "order": 116, "mode": 0, + "inputs": [ + { + "name": "images", + "type": "IMAGE", + "link": 767 + }, + { + "name": "opt_feature", + "type": "FEATURE", + "link": null, + "shape": 7 + } + ], + "outputs": [ + { + "name": "IMAGE", + "type": "IMAGE", + "links": [ + 768, + 769 + ] + } + ], "properties": { - "text": "" + "Node name for S&R": "FlexImageTransform" }, "widgets_values": [ - "adjust x and y values in each to scale your face to desired size" - ], - "color": "#432", - "bgcolor": "#653" + 1, + 0, + "x_value", + "relative", + "scale", + 0.5, + 0.5 + ] } ], "links": [ [ - 36, - 41, + 38, + 39, 0, - 40, + 42, 0, - "OPEN_UNMIX_MODEL" + "AUDIO" ], [ - 37, + 48, 39, 0, - 40, - 1, - "AUDIO" + 45, + 0, + "*" ], [ - 38, + 56, 39, 0, - 42, + 49, 0, "AUDIO" ], [ - 39, + 162, 42, 0, - 40, - 2, - "IMAGE" + 101, + 0, + "*" ], [ - 41, - 40, + 372, + 227, + 0, + 228, 1, - 43, + "FREQUENCY_FILTER" + ], + [ + 449, + 272, 0, + 273, + 1, "AUDIO" ], [ + 451, + 274, + 0, + 275, + 1, + "MASK" + ], + [ + 453, 42, - 40, - 5, - 43, 1, - "FEATURE_PIPE" + 277, + 0, + "*" ], [ - 48, - 39, + 454, + 42, + 2, + 278, 0, - 45, + "*" + ], + [ + 455, + 276, + 0, + 279, + 0, + "IMAGE" + ], + [ + 456, + 279, + 0, + 275, + 0, + "IMAGE" + ], + [ + 457, + 281, + 0, + 280, + 1, + "INT" + ], + [ + 458, + 275, + 0, + 280, + 0, + "IMAGE" + ], + [ + 459, + 280, + 0, + 282, + 0, + "IMAGE" + ], + [ + 461, + 285, 0, + 286, + 1, "*" ], [ - 56, - 39, + 483, + 301, 0, - 49, + 273, 0, - "AUDIO" + "IMAGE" ], [ - 57, - 40, + 501, + 316, 0, - 50, + 286, 0, - "AUDIO" + "IMAGE" ], [ - 162, - 42, + 522, + 336, 0, - 101, + 337, + 0, + "SEGS" + ], + [ + 523, + 339, + 0, + 338, + 0, + "MASK" + ], + [ + 529, + 290, + 0, + 343, 0, "*" ], [ - 371, - 40, - 5, - 226, - 1, - "FEATURE_PIPE" + 531, + 341, + 0, + 342, + 2, + "MASK" ], [ - 372, - 227, + 532, + 290, 0, - 228, - 1, - "FREQUENCY_FILTER" + 345, + 0, + "MASK" ], [ - 373, - 40, - 1, - 228, + 533, + 345, 0, - "AUDIO" + 346, + 0, + "*" ], [ - 374, - 228, + 536, + 348, + 0, + 315, + 2, + "INT" + ], + [ + 541, + 342, 0, - 226, + 334, 0, - "AUDIO" + "IMAGE" + ], + [ + 546, + 325, + 0, + 324, + 0, + "IMAGE" + ], + [ + 552, + 324, + 0, + 336, + 0, + "IMAGE" ], [ - 433, - 40, + 569, + 383, 1, - 256, + 363, 0, - "*" + "CLIP" ], [ - 434, - 40, - 2, - 257, + 570, + 383, + 1, + 364, 0, - "*" + "CLIP" ], [ - 435, - 40, - 3, - 258, + 571, + 386, 0, - "*" + 365, + 0, + "MODEL" ], [ - 436, - 40, - 4, - 259, + 572, + 369, 0, - "*" + 365, + 1, + "CONTEXT_OPTIONS" ], [ - 437, - 226, - 0, - 261, + 573, + 375, 0, - "*" + 365, + 2, + "MOTION_LORA" ], [ - 438, - 43, - 0, - 262, + 574, + 372, 0, - "*" + 365, + 3, + "AD_SETTINGS" ], [ - 439, - 40, + 575, + 366, + 0, + 365, 5, - 263, - 1, - "FEATURE_PIPE" + "SAMPLE_SETTINGS" ], [ - 440, - 40, - 2, - 263, + 576, + 368, 0, - "AUDIO" + 365, + 6, + "MULTIVAL" ], [ - 441, - 263, - 0, - 264, + 577, + 370, 0, - "*" + 365, + 7, + "MULTIVAL" ], [ - 442, - 40, - 5, - 265, - 1, - "FEATURE_PIPE" + 578, + 371, + 0, + 366, + 2, + "CUSTOM_CFG" ], [ - 443, - 40, - 3, - 265, + 579, + 367, 0, - "AUDIO" + 366, + 3, + "SIGMA_SCHEDULE" ], [ - 444, - 265, + 580, + 373, 0, - 266, + 372, 0, - "*" + "PE_ADJUST" ], [ - 445, - 40, - 4, - 267, + 581, + 374, 0, - "AUDIO" + 372, + 1, + "WEIGHT_ADJUST" ], [ - 446, - 40, - 5, - 267, - 1, - "FEATURE_PIPE" + 582, + 380, + 0, + 376, + 0, + "MODEL" ], [ - 447, - 267, + 584, + 376, 0, - 268, + 377, 0, - "*" + "LATENT" ], [ - 448, - 269, + 586, + 379, 0, - 260, + 378, 0, - "AUDIO" + "IMAGE" ], [ - 449, - 272, + 587, + 387, 0, - 273, + 378, 1, - "AUDIO" + "*" ], [ - 451, - 274, + 588, + 377, 0, - 275, - 1, - "MASK" + 379, + 0, + "IMAGE" ], [ - 453, - 42, - 1, - 277, + 589, + 365, 0, - "*" + 380, + 0, + "MODEL" ], [ - 454, - 42, - 2, - 278, + 593, + 382, 0, - "*" + 383, + 2, + "LORA_STACK" ], [ - 455, - 276, + 594, + 385, 0, - 279, + 384, 0, - "IMAGE" + "MODEL" ], [ - 456, - 279, + 595, + 385, + 1, + 384, + 1, + "IPADAPTER" + ], + [ + 596, + 383, 0, - 275, + 385, 0, - "IMAGE" + "MODEL" ], [ - 457, - 281, + 597, + 384, 0, - 280, - 1, - "INT" + 386, + 0, + "MODEL" ], [ - 458, - 275, - 0, - 280, + 600, + 388, 0, - "IMAGE" + 376, + 3, + "LATENT" ], [ - 459, - 280, + 603, + 380, 0, - 282, + 389, 0, - "IMAGE" + "MODEL" ], [ - 460, - 269, + 607, + 389, 0, - 284, + 390, 0, - "AUDIO" + "LATENT" ], [ - 461, - 285, + 610, + 393, 0, - 286, + 391, 1, "*" ], [ - 482, - 260, + 611, + 390, 0, - 301, + 392, 0, "IMAGE" ], [ - 483, - 301, - 0, - 273, + 612, + 376, 0, - "IMAGE" - ], - [ - 485, - 260, - 1, - 290, + 394, 0, - "MASK" - ], - [ - 486, - 284, - 1, - 290, - 1, - "MASK" + "LATENT" ], [ - 488, - 40, - 5, - 306, + 613, + 394, 0, - "*" + 389, + 3, + "LATENT" ], [ - 500, - 284, + 614, + 392, 0, - 316, + 395, 0, "IMAGE" ], [ - 501, - 316, - 0, - 286, + 615, + 396, 0, - "IMAGE" + 395, + 1, + "FEATURE" ], [ - 522, - 336, - 0, - 337, + 616, + 397, 0, - "SEGS" + 395, + 2, + "FEATURE_PIPE" ], [ - 523, - 339, + 618, + 362, 0, - 338, + 400, 0, - "MASK" + "*" ], [ - 529, - 290, - 0, - 343, + 619, + 362, + 1, + 399, 0, "*" ], [ - 531, - 341, - 0, - 342, + 620, + 362, 2, - "MASK" + 398, + 0, + "*" ], [ - 532, - 290, - 0, - 345, + 621, + 401, 0, - "MASK" + 383, + 1, + "CLIP" ], [ - 533, - 345, + 622, + 402, 0, - 346, + 383, 0, - "*" + "MODEL" ], [ - 536, - 348, + 623, + 403, 0, - 315, - 2, - "INT" + 388, + 1, + "VAE" ], [ - 541, - 342, - 0, - 334, + 624, + 404, 0, - "IMAGE" + 377, + 1, + "VAE" ], [ - 546, - 325, + 625, + 404, 0, - 324, + 390, + 1, + "VAE" + ], + [ + 628, + 406, 0, - "IMAGE" + 405, + 2, + "CONTROL_NET" ], [ - 548, - 349, + 629, + 341, 0, - 353, + 407, 0, - "IMAGE" + "*" ], [ - 552, - 324, - 0, - 336, + 630, + 408, 0, - "IMAGE" + 405, + 4, + "MASK" ], [ - 569, - 383, - 1, - 363, + 633, + 405, 0, - "CLIP" + 376, + 1, + "CONDITIONING" ], [ - 570, - 383, + 634, + 405, 1, - 364, - 0, - "CLIP" + 376, + 2, + "CONDITIONING" ], [ - 571, - 386, + 637, + 392, 0, - 365, + 411, 0, - "MODEL" + "IMAGE" ], [ - 572, - 369, + 638, + 411, 0, - 365, - 1, - "CONTEXT_OPTIONS" - ], - [ - 573, - 375, + 391, 0, - 365, - 2, - "MOTION_LORA" + "IMAGE" ], [ - 574, - 372, + 639, + 39, 0, - 365, - 3, - "AD_SETTINGS" + 412, + 0, + "AUDIO" ], [ - 575, - 366, + 641, + 342, 0, - 365, - 5, - "SAMPLE_SETTINGS" + 388, + 0, + "IMAGE" ], [ - 576, - 368, + 642, + 315, 0, - 365, - 6, - "MULTIVAL" + 413, + 0, + "IMAGE" ], [ - 577, - 370, + 655, + 337, 0, - 365, - 7, - "MULTIVAL" + 339, + 0, + "MASK" ], [ - 578, - 371, + 656, + 416, 0, - 366, - 2, - "CUSTOM_CFG" + 360, + 1, + "AUDIO" ], [ - 579, - 367, + 660, + 338, 0, - 366, - 3, - "SIGMA_SCHEDULE" + 420, + 0, + "IMAGE" ], [ - 580, - 373, + 668, + 347, 0, - 372, + 342, 0, - "PE_ADJUST" + "IMAGE" ], [ - 581, - 374, + 677, + 415, 0, - 372, + 342, 1, - "WEIGHT_ADJUST" + "IMAGE" ], [ - 582, - 380, + 692, + 415, 0, - 376, + 428, 0, - "MODEL" + "IMAGE" ], [ - 584, - 376, - 0, - 377, + 693, + 428, 0, - "LATENT" + 405, + 3, + "IMAGE" ], [ - 586, - 379, + 695, + 428, 0, - 378, + 429, 0, "IMAGE" ], [ - 587, - 387, + 696, + 430, 0, - 378, + 429, 1, "*" ], [ - 588, - 377, - 0, - 379, + 709, + 436, 0, - "IMAGE" + 353, + 1, + "AUDIO" ], [ - 589, - 365, - 0, - 380, + 711, + 363, 0, - "MODEL" + 389, + 1, + "CONDITIONING" ], [ - 593, - 382, + 712, + 364, 0, - 383, + 389, 2, - "LORA_STACK" + "CONDITIONING" ], [ - 594, - 385, + 713, + 363, 0, - 384, + 405, 0, - "MODEL" + "CONDITIONING" ], [ - 595, - 385, + 714, + 364, + 0, + 405, 1, - 384, + "CONDITIONING" + ], + [ + 717, + 285, + 0, + 441, 1, - "IPADAPTER" + "AUDIO" ], [ - 596, - 383, + 722, + 324, 0, - 385, + 444, 0, - "MODEL" + "IMAGE" ], [ - 597, - 384, + 724, + 41, 0, - 386, + 447, 0, - "MODEL" + "OPEN_UNMIX_MODEL" ], [ - 600, - 388, + 725, + 39, 0, - 376, - 3, - "LATENT" + 447, + 1, + "AUDIO" ], [ - 603, - 380, + 726, + 447, 0, - 389, + 50, 0, - "MODEL" + "AUDIO" ], [ - 607, - 389, - 0, - 390, + 728, + 447, + 1, + 228, 0, - "LATENT" + "AUDIO" ], [ - 610, - 393, - 0, - 391, + 729, + 447, 1, - "*" + 256, + 0, + "AUDIO" ], [ - 611, - 390, - 0, - 392, + 730, + 447, + 2, + 257, 0, - "IMAGE" + "AUDIO" ], [ - 612, - 376, - 0, - 394, + 732, + 447, + 3, + 258, 0, - "LATENT" + "AUDIO" ], [ - 613, - 394, + 734, + 447, + 4, + 259, 0, - 389, - 3, - "LATENT" + "AUDIO" ], [ - 614, - 392, + 736, + 451, 0, - 395, + 448, 0, - "IMAGE" + "FLOAT" ], [ - 615, - 396, + 737, + 450, 0, - 395, - 1, - "FEATURE" - ], - [ - 616, - 397, + 452, 0, - 395, - 2, - "FEATURE_PIPE" + "INT" ], [ - 618, - 362, + 738, + 449, 0, - 400, + 453, 0, - "*" + "INT" ], [ - 619, - 362, - 1, - 399, + 739, + 39, 0, - "*" + 454, + 0, + "AUDIO" ], [ - 620, - 362, + 740, + 42, 2, - 398, + 455, 0, - "*" + "INT" ], [ - 621, - 401, + 741, + 228, 0, - 383, - 1, - "CLIP" + 456, + 0, + "AUDIO" ], [ - 622, - 402, + 742, + 456, 0, - 383, + 261, 0, - "MODEL" + "FEATURE" ], [ - 623, - 403, - 0, - 388, + 743, + 447, 1, - "VAE" + 457, + 0, + "AUDIO" ], [ - 624, - 404, + 744, + 457, 0, - 377, - 1, - "VAE" + 262, + 0, + "FEATURE" ], [ - 625, - 404, + 747, + 447, + 2, + 459, 0, - 390, - 1, - "VAE" + "AUDIO" ], [ - 628, - 406, + 748, + 459, 0, - 405, - 2, - "CONTROL_NET" + 264, + 0, + "FEATURE" ], [ - 629, - 341, - 0, - 407, + 749, + 447, + 3, + 460, 0, - "*" + "AUDIO" ], [ - 630, - 408, + 750, + 460, 0, - 405, - 4, - "MASK" + 266, + 0, + "FEATURE" ], [ - 633, - 405, + 751, + 447, + 4, + 461, 0, - 376, - 1, - "CONDITIONING" + "AUDIO" ], [ - 634, - 405, - 1, - 376, - 2, - "CONDITIONING" + 752, + 461, + 0, + 268, + 0, + "FEATURE" ], [ - 637, - 392, + 753, + 269, 0, - 411, + 462, 0, - "IMAGE" + "AUDIO" ], [ - 638, - 411, + 754, + 462, 0, - 391, + 301, 0, "IMAGE" ], [ - 639, - 39, - 0, - 412, + 755, + 462, + 1, + 290, 0, - "AUDIO" + "MASK" ], [ - 641, - 342, + 756, + 269, 0, - 388, + 463, 0, - "IMAGE" + "AUDIO" ], [ - 642, - 315, + 757, + 463, 0, - 413, + 316, 0, "IMAGE" ], [ - 655, - 337, - 0, - 339, - 0, + 758, + 463, + 1, + 290, + 1, "MASK" ], [ - 656, - 416, + 759, + 269, + 0, + 464, 0, - 360, - 1, "AUDIO" ], [ - 660, - 338, + 760, + 464, 0, - 420, + 441, 0, "IMAGE" ], [ - 664, + 761, 413, 0, - 349, + 466, 0, "IMAGE" ], [ - 665, - 349, + 762, + 466, 0, - 325, + 353, 0, "IMAGE" ], [ - 668, - 347, + 763, + 466, 0, - 342, + 325, 0, "IMAGE" ], [ - 677, - 415, + 764, + 444, + 0, + 468, 0, - 342, - 1, "IMAGE" ], [ - 685, - 420, + 765, + 468, 0, - 425, + 360, 0, "IMAGE" ], [ - 686, - 426, + 766, + 468, 0, - 360, + 415, + 0, + "*" + ], + [ + 767, + 420, + 0, + 469, 0, "IMAGE" ], [ - 687, - 425, + 768, + 469, 0, 354, 0, "IMAGE" ], [ - 689, - 425, + 769, + 469, 0, 341, 0, "IMAGE" ], [ - 692, - 415, - 0, - 428, + 770, + 451, 0, - "IMAGE" + 457, + 1, + "FLOAT" ], [ - 693, - 428, + 771, + 42, + 2, + 457, + 2, + "INT" + ], + [ + 772, + 449, 0, - 405, + 457, 3, - "IMAGE" + "INT" ], [ - 695, - 428, + 773, + 450, 0, - 429, - 0, - "IMAGE" + 457, + 4, + "INT" ], [ - 696, - 430, + 774, + 451, 0, - 429, + 456, 1, - "*" + "FLOAT" ], [ - 709, - 436, - 0, - 353, - 1, - "AUDIO" + 775, + 42, + 2, + 456, + 2, + "INT" ], [ - 710, - 426, + 776, + 449, 0, - 415, + 456, + 3, + "INT" + ], + [ + 777, + 450, 0, - "*" + 456, + 4, + "INT" ], [ - 711, - 363, + 778, + 451, 0, - 389, + 459, 1, - "CONDITIONING" + "FLOAT" ], [ - 712, - 364, - 0, - 389, + 779, + 42, 2, - "CONDITIONING" + 459, + 2, + "INT" ], [ - 713, - 363, + 780, + 449, 0, - 405, + 459, + 3, + "INT" + ], + [ + 781, + 450, 0, - "CONDITIONING" + 459, + 4, + "INT" ], [ - 714, - 364, + 782, + 451, 0, - 405, + 460, 1, - "CONDITIONING" + "FLOAT" ], [ - 715, - 269, + 783, + 42, + 2, + 460, + 2, + "INT" + ], + [ + 784, + 449, 0, - 440, + 460, + 3, + "INT" + ], + [ + 785, + 450, 0, - "AUDIO" + 460, + 4, + "INT" ], [ - 717, - 285, + 786, + 451, 0, - 441, + 461, 1, - "AUDIO" + "FLOAT" + ], + [ + 787, + 42, + 2, + 461, + 2, + "INT" ], [ - 718, - 440, + 788, + 449, 0, - 441, + 461, + 3, + "INT" + ], + [ + 789, + 450, 0, - "IMAGE" + 461, + 4, + "INT" ], [ - 722, - 324, + 790, + 449, 0, - 444, + 462, + 2, + "INT" + ], + [ + 791, + 450, 0, - "IMAGE" + 462, + 3, + "INT" ], [ - 723, - 444, + 792, + 451, 0, - 426, + 462, + 4, + "FLOAT" + ], + [ + 793, + 449, 0, - "IMAGE" + 463, + 2, + "INT" + ], + [ + 794, + 450, + 0, + 463, + 3, + "INT" + ], + [ + 795, + 451, + 0, + 463, + 4, + "FLOAT" ] ], "groups": [ { + "id": 1, "title": "Group", "bounding": [ 1841, @@ -7342,9 +7723,10 @@ ], "color": "#3f789e", "font_size": 24, - "locked": false + "flags": {} }, { + "id": 2, "title": "Group", "bounding": [ -29, @@ -7354,9 +7736,10 @@ ], "color": "#3f789e", "font_size": 24, - "locked": false + "flags": {} }, { + "id": 3, "title": "samp", "bounding": [ 7962, @@ -7366,9 +7749,10 @@ ], "color": "#3f789e", "font_size": 24, - "locked": false + "flags": {} }, { + "id": 4, "title": "samp22", "bounding": [ 8867, @@ -7378,9 +7762,10 @@ ], "color": "#3f789e", "font_size": 24, - "locked": false + "flags": {} }, { + "id": 5, "title": "model", "bounding": [ 4102, @@ -7390,9 +7775,10 @@ ], "color": "#3f789e", "font_size": 24, - "locked": false + "flags": {} }, { + "id": 6, "title": "Canny]", "bounding": [ 11431, @@ -7402,9 +7788,10 @@ ], "color": "#3f789e", "font_size": 24, - "locked": false + "flags": {} }, { + "id": 7, "title": "Adiff", "bounding": [ 10668, @@ -7414,9 +7801,10 @@ ], "color": "#3f789e", "font_size": 24, - "locked": false + "flags": {} }, { + "id": 8, "title": "Samp1", "bounding": [ 12609, @@ -7426,9 +7814,10 @@ ], "color": "#3f789e", "font_size": 24, - "locked": false + "flags": {} }, { + "id": 9, "title": "Samp2", "bounding": [ 13883, @@ -7438,18 +7827,242 @@ ], "color": "#3f789e", "font_size": 24, - "locked": false + "flags": {} } ], "config": {}, "extra": { "ds": { - "scale": 0.41772481694156693, + "scale": 0.12100000000000047, "offset": [ - -3857.857373160723, - 97.383590266257 + 941.7118247261874, + 2737.4298187855707 ] - } + }, + "node_versions": { + "comfy-core": "0.3.12", + "ComfyUI_RyanOnTheInside": "0507092b2c3f5c51b45989c6c4fd51c1add26513", + "ComfyUI-VideoHelperSuite": "6953fa21443cf55f7c3b61ed3f4c87c5d3677fe1", + "ComfyUI-KJNodes": "973ceb6ca8b7525d54873805888ad690090d6b1e", + "ComfyUI-AnimateDiff-Evolved": "7ec46937095048a77342aeada964e9823a2102f0", + "ComfyUI_IPAdapter_plus": "b188a6cb39b512a9c6da7235b880af42c78ccd0d", + "ComfyUI_Comfyroll_CustomNodes": "d78b780ae43fcf8c6b7c6505e6ffb4584281ceca", + "comfyui-impact-pack": "cdb7b4d3b08994a983c26c9c6f1b905e1759f2cd", + "comfyui_controlnet_aux": "5a049bde9cc117dafc327cded156459289097ea1", + "ComfyUI-Advanced-ControlNet": "9632af9dc8f9abe28431c0027411d7a6d4f6cd3e", + "ComfyUi_NNLatentUpscale": "08105da31dbd7a54569661e135835e73bd8064b0", + "cg-use-everywhere": "cd06259166a6af4c054c62f540871ca09a359b50" + }, + "ue_links": [ + { + "downstream": 457, + "downstream_slot": 1, + "upstream": "451", + "upstream_slot": 0, + "controller": 448, + "type": "FLOAT" + }, + { + "downstream": 457, + "downstream_slot": 2, + "upstream": "42", + "upstream_slot": 2, + "controller": 455, + "type": "INT" + }, + { + "downstream": 457, + "downstream_slot": 3, + "upstream": "449", + "upstream_slot": 0, + "controller": 453, + "type": "INT" + }, + { + "downstream": 457, + "downstream_slot": 4, + "upstream": "450", + "upstream_slot": 0, + "controller": 452, + "type": "INT" + }, + { + "downstream": 456, + "downstream_slot": 1, + "upstream": "451", + "upstream_slot": 0, + "controller": 448, + "type": "FLOAT" + }, + { + "downstream": 456, + "downstream_slot": 2, + "upstream": "42", + "upstream_slot": 2, + "controller": 455, + "type": "INT" + }, + { + "downstream": 456, + "downstream_slot": 3, + "upstream": "449", + "upstream_slot": 0, + "controller": 453, + "type": "INT" + }, + { + "downstream": 456, + "downstream_slot": 4, + "upstream": "450", + "upstream_slot": 0, + "controller": 452, + "type": "INT" + }, + { + "downstream": 459, + "downstream_slot": 1, + "upstream": "451", + "upstream_slot": 0, + "controller": 448, + "type": "FLOAT" + }, + { + "downstream": 459, + "downstream_slot": 2, + "upstream": "42", + "upstream_slot": 2, + "controller": 455, + "type": "INT" + }, + { + "downstream": 459, + "downstream_slot": 3, + "upstream": "449", + "upstream_slot": 0, + "controller": 453, + "type": "INT" + }, + { + "downstream": 459, + "downstream_slot": 4, + "upstream": "450", + "upstream_slot": 0, + "controller": 452, + "type": "INT" + }, + { + "downstream": 460, + "downstream_slot": 1, + "upstream": "451", + "upstream_slot": 0, + "controller": 448, + "type": "FLOAT" + }, + { + "downstream": 460, + "downstream_slot": 2, + "upstream": "42", + "upstream_slot": 2, + "controller": 455, + "type": "INT" + }, + { + "downstream": 460, + "downstream_slot": 3, + "upstream": "449", + "upstream_slot": 0, + "controller": 453, + "type": "INT" + }, + { + "downstream": 460, + "downstream_slot": 4, + "upstream": "450", + "upstream_slot": 0, + "controller": 452, + "type": "INT" + }, + { + "downstream": 461, + "downstream_slot": 1, + "upstream": "451", + "upstream_slot": 0, + "controller": 448, + "type": "FLOAT" + }, + { + "downstream": 461, + "downstream_slot": 2, + "upstream": "42", + "upstream_slot": 2, + "controller": 455, + "type": "INT" + }, + { + "downstream": 461, + "downstream_slot": 3, + "upstream": "449", + "upstream_slot": 0, + "controller": 453, + "type": "INT" + }, + { + "downstream": 461, + "downstream_slot": 4, + "upstream": "450", + "upstream_slot": 0, + "controller": 452, + "type": "INT" + }, + { + "downstream": 462, + "downstream_slot": 2, + "upstream": "449", + "upstream_slot": 0, + "controller": 453, + "type": "INT" + }, + { + "downstream": 462, + "downstream_slot": 3, + "upstream": "450", + "upstream_slot": 0, + "controller": 452, + "type": "INT" + }, + { + "downstream": 462, + "downstream_slot": 4, + "upstream": "451", + "upstream_slot": 0, + "controller": 448, + "type": "FLOAT" + }, + { + "downstream": 463, + "downstream_slot": 2, + "upstream": "449", + "upstream_slot": 0, + "controller": 453, + "type": "INT" + }, + { + "downstream": 463, + "downstream_slot": 3, + "upstream": "450", + "upstream_slot": 0, + "controller": 452, + "type": "INT" + }, + { + "downstream": 463, + "downstream_slot": 4, + "upstream": "451", + "upstream_slot": 0, + "controller": 448, + "type": "FLOAT" + } + ] }, "version": 0.4 } \ No newline at end of file diff --git a/examples/flex_tutorial.json b/examples/flex_tutorial.json deleted file mode 100644 index 3c333dd..0000000 --- a/examples/flex_tutorial.json +++ /dev/null @@ -1,2841 +0,0 @@ -{ - "last_node_id": 209, - "last_link_id": 332, - "nodes": [ - { - "id": 153, - "type": "AudioFeatureExtractor", - "pos": [ - -1647, - 1398 - ], - "size": { - "0": 361.20001220703125, - "1": 78 - }, - "flags": {}, - "order": 33, - "mode": 0, - "inputs": [ - { - "name": "audio", - "type": "AUDIO", - "link": 289 - }, - { - "name": "feature_pipe", - "type": "FEATURE_PIPE", - "link": 290 - } - ], - "outputs": [ - { - "name": "FEATURE", - "type": "FEATURE", - "links": null, - "shape": 3 - }, - { - "name": "FEATURE_PIPE", - "type": "FEATURE_PIPE", - "links": null, - "shape": 3 - } - ], - "properties": { - "Node name for S&R": "AudioFeatureExtractor" - }, - "widgets_values": [ - "amplitude_envelope" - ] - }, - { - "id": 156, - "type": "AudioSeparator", - "pos": [ - -2047, - 1371 - ], - "size": { - "0": 317.4000244140625, - "1": 158 - }, - "flags": {}, - "order": 0, - "mode": 0, - "inputs": [ - { - "name": "model", - "type": "OPEN_UNMIX_MODEL", - "link": null - }, - { - "name": "audio", - "type": "AUDIO", - "link": null - }, - { - "name": "video_frames", - "type": "IMAGE", - "link": null - } - ], - "outputs": [ - { - "name": "audio", - "type": "AUDIO", - "links": [ - 289 - ], - "shape": 3, - "slot_index": 0 - }, - { - "name": "drums_audio", - "type": "AUDIO", - "links": null, - "shape": 3 - }, - { - "name": "vocals_audio", - "type": "AUDIO", - "links": null, - "shape": 3 - }, - { - "name": "bass_audio", - "type": "AUDIO", - "links": null, - "shape": 3 - }, - { - "name": "other_audio", - "type": "AUDIO", - "links": null, - "shape": 3 - }, - { - "name": "feature_pipe", - "type": "FEATURE_PIPE", - "links": [ - 290 - ], - "shape": 3, - "slot_index": 5 - } - ], - "properties": { - "Node name for S&R": "AudioSeparator" - }, - "widgets_values": [ - 30 - ] - }, - { - "id": 160, - "type": "PreviewImage", - "pos": [ - 233.92900067078028, - 398.9078675628634 - ], - "size": { - "0": 210, - "1": 246 - }, - "flags": {}, - "order": 47, - "mode": 0, - "inputs": [ - { - "name": "images", - "type": "IMAGE", - "link": 294 - } - ], - "properties": { - "Node name for S&R": "PreviewImage" - } - }, - { - "id": 151, - "type": "BrightnessFeatureNode", - "pos": [ - -2040, - 494 - ], - "size": { - "0": 317.4000244140625, - "1": 102 - }, - "flags": {}, - "order": 1, - "mode": 0, - "inputs": [ - { - "name": "video_frames", - "type": "IMAGE", - "link": null - } - ], - "outputs": [ - { - "name": "FEATURE", - "type": "FEATURE", - "links": null, - "shape": 3 - }, - { - "name": "FEATURE_PIPE", - "type": "FEATURE_PIPE", - "links": null, - "shape": 3 - } - ], - "properties": { - "Node name for S&R": "BrightnessFeatureNode" - }, - "widgets_values": [ - 30, - "mean_brightness" - ] - }, - { - "id": 150, - "type": "DepthFeatureNode", - "pos": [ - -2041, - 314 - ], - "size": { - "0": 317.4000244140625, - "1": 102 - }, - "flags": {}, - "order": 2, - "mode": 0, - "inputs": [ - { - "name": "video_frames", - "type": "IMAGE", - "link": null - }, - { - "name": "depth_maps", - "type": "IMAGE", - "link": null - } - ], - "outputs": [ - { - "name": "FEATURE", - "type": "FEATURE", - "links": null, - "shape": 3 - }, - { - "name": "FEATURE_PIPE", - "type": "FEATURE_PIPE", - "links": null, - "shape": 3 - } - ], - "properties": { - "Node name for S&R": "DepthFeatureNode" - }, - "widgets_values": [ - 30, - "mean_depth" - ] - }, - { - "id": 171, - "type": "FlexMaskMath", - "pos": [ - 1010, - 790 - ], - "size": { - "0": 315, - "1": 238 - }, - "flags": {}, - "order": 3, - "mode": 0, - "inputs": [ - { - "name": "masks", - "type": "MASK", - "link": null - }, - { - "name": "feature", - "type": "FEATURE", - "link": null - }, - { - "name": "feature_pipe", - "type": "FEATURE_PIPE", - "link": null - }, - { - "name": "mask_b", - "type": "MASK", - "link": null - } - ], - "outputs": [ - { - "name": "MASK", - "type": "MASK", - "links": null, - "shape": 3 - } - ], - "properties": { - "Node name for S&R": "FlexMaskMath" - }, - "widgets_values": [ - 1, - false, - 0, - 0, - 0, - "add" - ] - }, - { - "id": 170, - "type": "FlexMaskTransform", - "pos": [ - 1010, - 1100 - ], - "size": { - "0": 315, - "1": 266 - }, - "flags": {}, - "order": 4, - "mode": 0, - "inputs": [ - { - "name": "masks", - "type": "MASK", - "link": null - }, - { - "name": "feature", - "type": "FEATURE", - "link": null - }, - { - "name": "feature_pipe", - "type": "FEATURE_PIPE", - "link": null - } - ], - "outputs": [ - { - "name": "MASK", - "type": "MASK", - "links": null, - "shape": 3 - } - ], - "properties": { - "Node name for S&R": "FlexMaskTransform" - }, - "widgets_values": [ - 1, - false, - 0, - 0, - 0, - "translate", - 10, - 10 - ] - }, - { - "id": 173, - "type": "FlexMaskOpacity", - "pos": [ - 1010, - 1480 - ], - "size": { - "0": 315, - "1": 218 - }, - "flags": {}, - "order": 5, - "mode": 0, - "inputs": [ - { - "name": "masks", - "type": "MASK", - "link": null - }, - { - "name": "feature", - "type": "FEATURE", - "link": null - }, - { - "name": "feature_pipe", - "type": "FEATURE_PIPE", - "link": null - } - ], - "outputs": [ - { - "name": "MASK", - "type": "MASK", - "links": null, - "shape": 3 - } - ], - "properties": { - "Node name for S&R": "FlexMaskOpacity" - }, - "widgets_values": [ - 1, - false, - 0, - 0, - 0, - 1 - ] - }, - { - "id": 172, - "type": "FlexMaskBinary", - "pos": [ - 1010, - 1800 - ], - "size": { - "0": 315, - "1": 338 - }, - "flags": {}, - "order": 6, - "mode": 0, - "inputs": [ - { - "name": "masks", - "type": "MASK", - "link": null - }, - { - "name": "feature", - "type": "FEATURE", - "link": null - }, - { - "name": "feature_pipe", - "type": "FEATURE_PIPE", - "link": null - } - ], - "outputs": [ - { - "name": "MASK", - "type": "MASK", - "links": null, - "shape": 3 - } - ], - "properties": { - "Node name for S&R": "FlexMaskBinary" - }, - "widgets_values": [ - 1, - false, - 0, - 0, - 0, - 0.5, - "simple", - 21, - 2, - "threshold", - false - ] - }, - { - "id": 174, - "type": "FlexMaskVoronoiScheduled", - "pos": [ - 1010, - 2240 - ], - "size": { - "0": 378, - "1": 482 - }, - "flags": {}, - "order": 7, - "mode": 0, - "inputs": [ - { - "name": "masks", - "type": "MASK", - "link": null - }, - { - "name": "feature", - "type": "FEATURE", - "link": null - }, - { - "name": "feature_pipe", - "type": "FEATURE_PIPE", - "link": null - } - ], - "outputs": [ - { - "name": "MASK", - "type": "MASK", - "links": null, - "shape": 3 - } - ], - "properties": { - "Node name for S&R": "FlexMaskVoronoiScheduled" - }, - "widgets_values": [ - 1, - false, - 0, - 0, - 0, - "euclidean", - 1, - 100, - 1, - 852404739440643, - "randomize", - 0, - 0, - "scale", - "Linear", - 1, - 1 - ] - }, - { - "id": 178, - "type": "_mfc", - "pos": [ - 420, - 1040 - ], - "size": { - "0": 315, - "1": 130 - }, - "flags": { - "collapsed": true - }, - "order": 35, - "mode": 0, - "inputs": [ - { - "name": "image", - "type": "IMAGE", - "link": 305 - } - ], - "outputs": [ - { - "name": "MASK", - "type": "MASK", - "links": [ - 306 - ], - "shape": 3, - "slot_index": 0 - } - ], - "properties": { - "Node name for S&R": "_mfc" - }, - "widgets_values": [ - 255, - 255, - 255, - 0 - ] - }, - { - "id": 164, - "type": "VHS_LoadVideo", - "pos": [ - -2902.2586183090575, - 644.9993637117644 - ], - "size": [ - 235.1999969482422, - 658.5777723524305 - ], - "flags": {}, - "order": 8, - "mode": 0, - "inputs": [ - { - "name": "meta_batch", - "type": "VHS_BatchManager", - "link": null - }, - { - "name": "vae", - "type": "VAE", - "link": null - } - ], - "outputs": [ - { - "name": "IMAGE", - "type": "IMAGE", - "links": [ - 297 - ], - "shape": 3, - "slot_index": 0 - }, - { - "name": "frame_count", - "type": "INT", - "links": null, - "shape": 3 - }, - { - "name": "audio", - "type": "AUDIO", - "links": null, - "shape": 3 - }, - { - "name": "video_info", - "type": "VHS_VIDEOINFO", - "links": null, - "shape": 3 - } - ], - "properties": { - "Node name for S&R": "VHS_LoadVideo" - }, - "widgets_values": { - "video": "pexels-polina-tankilevitch-5385809 (1080p).mp4", - "force_rate": 0, - "force_size": "Disabled", - "custom_width": 512, - "custom_height": 512, - "frame_load_cap": 16, - "skip_first_frames": 0, - "select_every_nth": 1, - "choose video to upload": "image", - "videopreview": { - "hidden": false, - "paused": false, - "params": { - "frame_load_cap": 16, - "skip_first_frames": 0, - "force_rate": 0, - "filename": "pexels-polina-tankilevitch-5385809 (1080p).mp4", - "type": "input", - "format": "video/mp4", - "select_every_nth": 1 - }, - "muted": false - } - } - }, - { - "id": 183, - "type": "FlexImagePosterize", - "pos": [ - 2556, - 420 - ], - "size": { - "0": 319.20001220703125, - "1": 266 - }, - "flags": {}, - "order": 9, - "mode": 0, - "inputs": [ - { - "name": "images", - "type": "IMAGE", - "link": null - }, - { - "name": "feature", - "type": "FEATURE", - "link": null - }, - { - "name": "feature_pipe", - "type": "FEATURE_PIPE", - "link": null - } - ], - "outputs": [ - { - "name": "IMAGE", - "type": "IMAGE", - "links": null, - "shape": 3 - } - ], - "properties": { - "Node name for S&R": "FlexImagePosterize" - }, - "widgets_values": [ - 1, - 0, - "max_levels", - "relative", - 8, - 0.3, - 0.2, - 1.2 - ] - }, - { - "id": 184, - "type": "FlexImageKaleidoscope", - "pos": [ - 2556, - 770 - ], - "size": { - "0": 344.3999938964844, - "1": 338 - }, - "flags": {}, - "order": 10, - "mode": 0, - "inputs": [ - { - "name": "images", - "type": "IMAGE", - "link": null - }, - { - "name": "feature", - "type": "FEATURE", - "link": null - }, - { - "name": "feature_pipe", - "type": "FEATURE_PIPE", - "link": null - } - ], - "outputs": [ - { - "name": "IMAGE", - "type": "IMAGE", - "links": null, - "shape": 3 - } - ], - "properties": { - "Node name for S&R": "FlexImageKaleidoscope" - }, - "widgets_values": [ - 1, - 0, - "segments", - "relative", - 8, - 0.5, - 0.5, - 1, - 0, - 0, - 1 - ] - }, - { - "id": 168, - "type": "FlexMaskWarp", - "pos": [ - 1010, - 450 - ], - "size": { - "0": 315, - "1": 290 - }, - "flags": {}, - "order": 11, - "mode": 0, - "inputs": [ - { - "name": "masks", - "type": "MASK", - "link": null - }, - { - "name": "feature", - "type": "FEATURE", - "link": null - }, - { - "name": "feature_pipe", - "type": "FEATURE_PIPE", - "link": null - } - ], - "outputs": [ - { - "name": "MASK", - "type": "MASK", - "links": null, - "shape": 3 - } - ], - "properties": { - "Node name for S&R": "FlexMaskWarp" - }, - "widgets_values": [ - 1, - false, - 0, - 0, - 0, - "perlin", - 0.1, - 30, - 3 - ] - }, - { - "id": 167, - "type": "FlexMaskMorph", - "pos": [ - 1010, - 110 - ], - "size": { - "0": 315, - "1": 266 - }, - "flags": {}, - "order": 50, - "mode": 0, - "inputs": [ - { - "name": "masks", - "type": "MASK", - "link": 307 - }, - { - "name": "feature", - "type": "FEATURE", - "link": 300 - }, - { - "name": "feature_pipe", - "type": "FEATURE_PIPE", - "link": 301 - } - ], - "outputs": [ - { - "name": "MASK", - "type": "MASK", - "links": [ - 308 - ], - "shape": 3, - "slot_index": 0 - } - ], - "properties": { - "Node name for S&R": "FlexMaskMorph" - }, - "widgets_values": [ - 1, - false, - 0.5700000000000001, - 0, - 0, - "dilate", - 5, - 10 - ] - }, - { - "id": 159, - "type": "Reroute", - "pos": [ - -645, - 810 - ], - "size": [ - 75, - 26 - ], - "flags": {}, - "order": 41, - "mode": 0, - "inputs": [ - { - "name": "", - "type": "*", - "link": 325 - } - ], - "outputs": [ - { - "name": "", - "type": "FEATURE_PIPE", - "links": [ - 296 - ], - "slot_index": 0 - } - ], - "properties": { - "showOutputText": false, - "horizontal": false - } - }, - { - "id": 162, - "type": "Reroute", - "pos": [ - 470, - 1170 - ], - "size": [ - 75, - 26 - ], - "flags": {}, - "order": 45, - "mode": 0, - "inputs": [ - { - "name": "", - "type": "*", - "link": 296 - } - ], - "outputs": [ - { - "name": "", - "type": "FEATURE_PIPE", - "links": [ - 301, - 313 - ], - "slot_index": 0 - } - ], - "properties": { - "showOutputText": false, - "horizontal": false - } - }, - { - "id": 192, - "type": "Reroute", - "pos": [ - 470, - 1200 - ], - "size": [ - 75, - 26 - ], - "flags": {}, - "order": 39, - "mode": 0, - "inputs": [ - { - "name": "", - "type": "*", - "link": 311 - } - ], - "outputs": [ - { - "name": "", - "type": "IMAGE", - "links": [ - 314 - ], - "slot_index": 0 - } - ], - "properties": { - "showOutputText": false, - "horizontal": false - } - }, - { - "id": 180, - "type": "MaskToImage", - "pos": [ - 1460, - 630 - ], - "size": { - "0": 210, - "1": 26 - }, - "flags": {}, - "order": 52, - "mode": 0, - "inputs": [ - { - "name": "mask", - "type": "MASK", - "link": 308 - } - ], - "outputs": [ - { - "name": "IMAGE", - "type": "IMAGE", - "links": [ - 309 - ], - "shape": 3, - "slot_index": 0 - } - ], - "properties": { - "Node name for S&R": "MaskToImage" - } - }, - { - "id": 176, - "type": "VHS_LoadVideo", - "pos": [ - 400, - 980 - ], - "size": [ - 235.1999969482422, - 598.7999954223633 - ], - "flags": { - "collapsed": true - }, - "order": 12, - "mode": 0, - "inputs": [ - { - "name": "meta_batch", - "type": "VHS_BatchManager", - "link": null - }, - { - "name": "vae", - "type": "VAE", - "link": null - } - ], - "outputs": [ - { - "name": "IMAGE", - "type": "IMAGE", - "links": [ - 305 - ], - "shape": 3, - "slot_index": 0 - }, - { - "name": "frame_count", - "type": "INT", - "links": null, - "shape": 3 - }, - { - "name": "audio", - "type": "AUDIO", - "links": null, - "shape": 3 - }, - { - "name": "video_info", - "type": "VHS_VIDEOINFO", - "links": null, - "shape": 3 - } - ], - "properties": { - "Node name for S&R": "VHS_LoadVideo" - }, - "widgets_values": { - "video": "polina809MaskFull_00001.mp4", - "force_rate": 0, - "force_size": "Disabled", - "custom_width": 512, - "custom_height": 512, - "frame_load_cap": 0, - "skip_first_frames": 0, - "select_every_nth": 1, - "choose video to upload": "image", - "videopreview": { - "hidden": false, - "paused": false, - "params": { - "frame_load_cap": 0, - "skip_first_frames": 0, - "force_rate": 0, - "filename": "polina809MaskFull_00001.mp4", - "type": "input", - "format": "video/mp4", - "select_every_nth": 1 - }, - "muted": false - } - } - }, - { - "id": 179, - "type": "Reroute", - "pos": [ - 470, - 1105 - ], - "size": [ - 75, - 26 - ], - "flags": {}, - "order": 38, - "mode": 0, - "inputs": [ - { - "name": "", - "type": "*", - "link": 306 - } - ], - "outputs": [ - { - "name": "", - "type": "MASK", - "links": [ - 307 - ], - "slot_index": 0 - } - ], - "properties": { - "showOutputText": false, - "horizontal": false - } - }, - { - "id": 195, - "type": "Reroute", - "pos": [ - 2280, - 1150 - ], - "size": [ - 75, - 26 - ], - "flags": {}, - "order": 42, - "mode": 0, - "inputs": [ - { - "name": "", - "type": "*", - "link": 314 - } - ], - "outputs": [ - { - "name": "", - "type": "IMAGE", - "links": [ - 315 - ], - "slot_index": 0 - } - ], - "properties": { - "showOutputText": false, - "horizontal": false - } - }, - { - "id": 193, - "type": "Reroute", - "pos": [ - 2280, - 1190 - ], - "size": [ - 75, - 26 - ], - "flags": {}, - "order": 51, - "mode": 0, - "inputs": [ - { - "name": "", - "type": "*", - "link": 312 - } - ], - "outputs": [ - { - "name": "", - "type": "FEATURE", - "links": [ - 316 - ], - "slot_index": 0 - } - ], - "properties": { - "showOutputText": false, - "horizontal": false - } - }, - { - "id": 194, - "type": "Reroute", - "pos": [ - 2280, - 1210 - ], - "size": [ - 75, - 26 - ], - "flags": {}, - "order": 49, - "mode": 0, - "inputs": [ - { - "name": "", - "type": "*", - "link": 313 - } - ], - "outputs": [ - { - "name": "", - "type": "FEATURE_PIPE", - "links": [ - 317 - ], - "slot_index": 0 - } - ], - "properties": { - "showOutputText": false, - "horizontal": false - } - }, - { - "id": 182, - "type": "FlexImageEdgeDetect", - "pos": [ - 2556, - 1148 - ], - "size": { - "0": 336, - "1": 218 - }, - "flags": {}, - "order": 13, - "mode": 0, - "inputs": [ - { - "name": "images", - "type": "IMAGE", - "link": null - }, - { - "name": "feature", - "type": "FEATURE", - "link": null - }, - { - "name": "feature_pipe", - "type": "FEATURE_PIPE", - "link": null - } - ], - "outputs": [ - { - "name": "IMAGE", - "type": "IMAGE", - "links": null, - "shape": 3 - } - ], - "properties": { - "Node name for S&R": "FlexImageEdgeDetect" - }, - "widgets_values": [ - 1, - 0, - "low_threshold", - "relative", - 100, - 200 - ] - }, - { - "id": 186, - "type": "FlexImageChromaticAberration", - "pos": [ - 2556, - 1419 - ], - "size": { - "0": 411.6000061035156, - "1": 218 - }, - "flags": {}, - "order": 14, - "mode": 0, - "inputs": [ - { - "name": "images", - "type": "IMAGE", - "link": null - }, - { - "name": "feature", - "type": "FEATURE", - "link": null - }, - { - "name": "feature_pipe", - "type": "FEATURE_PIPE", - "link": null - } - ], - "outputs": [ - { - "name": "IMAGE", - "type": "IMAGE", - "links": null, - "shape": 3 - } - ], - "properties": { - "Node name for S&R": "FlexImageChromaticAberration" - }, - "widgets_values": [ - 1, - 0, - "shift_amount", - "relative", - 0.01, - 0 - ] - }, - { - "id": 185, - "type": "FlexImageBloom", - "pos": [ - 2556, - 122 - ], - "size": { - "0": 315, - "1": 242 - }, - "flags": {}, - "order": 53, - "mode": 0, - "inputs": [ - { - "name": "images", - "type": "IMAGE", - "link": 315 - }, - { - "name": "feature", - "type": "FEATURE", - "link": 316 - }, - { - "name": "feature_pipe", - "type": "FEATURE_PIPE", - "link": 317 - } - ], - "outputs": [ - { - "name": "IMAGE", - "type": "IMAGE", - "links": [ - 318 - ], - "shape": 3, - "slot_index": 0 - } - ], - "properties": { - "Node name for S&R": "FlexImageBloom" - }, - "widgets_values": [ - 1, - 0, - "threshold", - "relative", - 0.7, - 10, - 0.5 - ] - }, - { - "id": 190, - "type": "FlexImageTiltShift", - "pos": [ - 2556, - 2506 - ], - "size": { - "0": 327.6000061035156, - "1": 314 - }, - "flags": {}, - "order": 15, - "mode": 0, - "inputs": [ - { - "name": "images", - "type": "IMAGE", - "link": null - }, - { - "name": "feature", - "type": "FEATURE", - "link": null - }, - { - "name": "feature_pipe", - "type": "FEATURE_PIPE", - "link": null - } - ], - "outputs": [ - { - "name": "IMAGE", - "type": "IMAGE", - "links": null, - "shape": 3 - } - ], - "properties": { - "Node name for S&R": "FlexImageTiltShift" - }, - "widgets_values": [ - 1, - 0, - "blur_amount", - "relative", - 10, - 0.5, - 0.5, - 0.2, - 0.2, - "rectangle" - ] - }, - { - "id": 188, - "type": "FlexImagePixelate", - "pos": [ - 2556, - 1970 - ], - "size": { - "0": 315, - "1": 194 - }, - "flags": {}, - "order": 16, - "mode": 0, - "inputs": [ - { - "name": "images", - "type": "IMAGE", - "link": null - }, - { - "name": "feature", - "type": "FEATURE", - "link": null - }, - { - "name": "feature_pipe", - "type": "FEATURE_PIPE", - "link": null - } - ], - "outputs": [ - { - "name": "IMAGE", - "type": "IMAGE", - "links": null, - "shape": 3 - } - ], - "properties": { - "Node name for S&R": "FlexImagePixelate" - }, - "widgets_values": [ - 1, - 0, - "pixel_size", - "relative", - 10 - ] - }, - { - "id": 187, - "type": "FlexImageGlitch", - "pos": [ - 2552, - 1681 - ], - "size": { - "0": 315, - "1": 242 - }, - "flags": {}, - "order": 17, - "mode": 0, - "inputs": [ - { - "name": "images", - "type": "IMAGE", - "link": null - }, - { - "name": "feature", - "type": "FEATURE", - "link": null - }, - { - "name": "feature_pipe", - "type": "FEATURE_PIPE", - "link": null - } - ], - "outputs": [ - { - "name": "IMAGE", - "type": "IMAGE", - "links": null, - "shape": 3 - } - ], - "properties": { - "Node name for S&R": "FlexImageGlitch" - }, - "widgets_values": [ - 1, - 0, - "shift_amount", - "relative", - 0.1, - 10, - 0.1 - ] - }, - { - "id": 198, - "type": "FeatureToWeightsStrategy", - "pos": [ - 3905, - 553 - ], - "size": { - "0": 378, - "1": 30.92705535888672 - }, - "flags": {}, - "order": 18, - "mode": 0, - "inputs": [ - { - "name": "feature", - "type": "FEATURE", - "link": null - } - ], - "outputs": [ - { - "name": "WEIGHTS_STRATEGY", - "type": "WEIGHTS_STRATEGY", - "links": null, - "shape": 3 - } - ], - "properties": { - "Node name for S&R": "FeatureToWeightsStrategy" - } - }, - { - "id": 200, - "type": "Note", - "pos": [ - 3910, - 429 - ], - "size": { - "0": 533.3134155273438, - "1": 70.13786315917969 - }, - "flags": {}, - "order": 19, - "mode": 0, - "properties": { - "text": "" - }, - "widgets_values": [ - "simply plug this into the \"IPAdapter weights from strategy\" node and rock on\n\nSee this tutorial for more info\nhttps://civitai.com/models/688888/audio-reactive-ipadapter-weights" - ], - "color": "#432", - "bgcolor": "#653" - }, - { - "id": 191, - "type": "Reroute", - "pos": [ - -643, - 833 - ], - "size": [ - 75, - 26 - ], - "flags": {}, - "order": 36, - "mode": 0, - "inputs": [ - { - "name": "", - "type": "*", - "link": 310 - } - ], - "outputs": [ - { - "name": "", - "type": "IMAGE", - "links": [ - 311 - ], - "slot_index": 0 - } - ], - "properties": { - "showOutputText": false, - "horizontal": false - } - }, - { - "id": 154, - "type": "MIDILoadAndExtract", - "pos": [ - -2063, - 919 - ], - "size": { - "0": 1020, - "1": 346 - }, - "flags": {}, - "order": 20, - "mode": 0, - "inputs": [ - { - "name": "video_frames", - "type": "IMAGE", - "link": null - } - ], - "outputs": [ - { - "name": "MIDI", - "type": "MIDI", - "links": null, - "shape": 3 - }, - { - "name": "FEATURE", - "type": "FEATURE", - "links": null, - "shape": 3 - }, - { - "name": "FEATURE_PIPE", - "type": "FEATURE_PIPE", - "links": null, - "shape": 3 - } - ], - "properties": { - "selectedNotes": [ - 36, - 38, - 49 - ] - }, - "widgets_values": [ - "sample_midi.mid", - "all", - "Note On/Off", - 30, - false, - "36, 38, 49", - "upload", - "refresh" - ] - }, - { - "id": 199, - "type": "Note", - "pos": [ - 3824.9416156458465, - 130.69202687058203 - ], - "size": { - "0": 229.98106384277344, - "1": 72.82836151123047 - }, - "flags": {}, - "order": 21, - "mode": 0, - "properties": { - "text": "" - }, - "widgets_values": [ - "Thus far the only external target is the IPAdapter, but when more are added, they will go here\n" - ], - "color": "#432", - "bgcolor": "#653" - }, - { - "id": 155, - "type": "Note", - "pos": [ - -2953, - 274 - ], - "size": { - "0": 515.2716674804688, - "1": 250.9127655029297 - }, - "flags": {}, - "order": 22, - "mode": 0, - "title": "Click the ? icons!", - "properties": { - "text": "" - }, - "widgets_values": [ - "This workflow is a tutorial explaining the Flex Feature system introduced by this node pack. At a high level, it works as follows:\n\n1 We get information from a source (the feature)\n2 We use that information to control a target\n\nSimple as that! \n\nThere are many sources for features, and many more targets to control, and they are all interchangeable.\n\nClick the ? icons!!\n\n\n\n\n\nhttps://github.com/ryanontheinside/ComfyUI_RyanOnTheInside" - ], - "color": "#432", - "bgcolor": "#653" - }, - { - "id": 163, - "type": "Note", - "pos": [ - -307, - -79 - ], - "size": { - "0": 510.7935485839844, - "1": 120.26620483398438 - }, - "flags": {}, - "order": 23, - "mode": 0, - "properties": { - "text": "" - }, - "widgets_values": [ - "Step 2, optionally, you can shape your feature output all nice-like\n\n\nClick the ? icons!!" - ], - "color": "#432", - "bgcolor": "#653" - }, - { - "id": 202, - "type": "Note", - "pos": [ - 945, - -214 - ], - "size": { - "0": 510.7935485839844, - "1": 120.26620483398438 - }, - "flags": {}, - "order": 24, - "mode": 0, - "properties": { - "text": "" - }, - "widgets_values": [ - "Step 3, you pick a target. Thus far, there are three categories of targets as shown below. If the category is Mask, you feed it a mask. If the category is Image, you feed it images. Otherwise, just give it the feature data\n\nThere are lots of settings, and lots of cool things, so don't forget...\nCLICK THE ? ICONS!!\n\nLove you\nRyan" - ], - "color": "#432", - "bgcolor": "#653" - }, - { - "id": 166, - "type": "Note", - "pos": [ - -1839, - -267 - ], - "size": { - "0": 460.7952575683594, - "1": 181.07496643066406 - }, - "flags": {}, - "order": 25, - "mode": 0, - "properties": { - "text": "" - }, - "widgets_values": [ - "Step 1 is to pick a feature.\n\n\nClick the ? icons!!" - ], - "color": "#432", - "bgcolor": "#653" - }, - { - "id": 203, - "type": "Note", - "pos": [ - -1214, - 1346 - ], - "size": { - "0": 455.38995361328125, - "1": 171.6157989501953 - }, - "flags": {}, - "order": 26, - "mode": 0, - "properties": { - "text": "" - }, - "widgets_values": [ - "\nAudio and MIDI will have their own separate tutorials as they're a touch more complicated. Check at my civit profile.\n\nAudio:\nhttps://civitai.com/models/692203?modelVersionId=774669\n\nMIDI\nCheck here https://civitai.com/user/ryanontheinside\n\n\nClick the ? icons!!" - ], - "color": "#432", - "bgcolor": "#653" - }, - { - "id": 196, - "type": "Note", - "pos": [ - 407, - 858 - ], - "size": { - "0": 210, - "1": 58 - }, - "flags": {}, - "order": 27, - "mode": 0, - "properties": { - "text": "" - }, - "widgets_values": [ - "obtain masks to work with for mask targets" - ], - "color": "#432", - "bgcolor": "#653" - }, - { - "id": 161, - "type": "Reroute", - "pos": [ - 470, - 1140 - ], - "size": [ - 75, - 26 - ], - "flags": {}, - "order": 46, - "mode": 0, - "inputs": [ - { - "name": "", - "type": "*", - "link": 322 - } - ], - "outputs": [ - { - "name": "", - "type": "FEATURE", - "links": [ - 300, - 312 - ], - "slot_index": 0 - } - ], - "properties": { - "showOutputText": false, - "horizontal": false - } - }, - { - "id": 165, - "type": "Reroute", - "pos": [ - -2378, - 813 - ], - "size": [ - 75, - 26 - ], - "flags": {}, - "order": 34, - "mode": 0, - "inputs": [ - { - "name": "", - "type": "*", - "link": 297 - } - ], - "outputs": [ - { - "name": "", - "type": "IMAGE", - "links": [ - 310, - 323 - ], - "slot_index": 0 - } - ], - "properties": { - "showOutputText": false, - "horizontal": false - } - }, - { - "id": 152, - "type": "MotionFeatureNode", - "pos": [ - -2044, - 691 - ], - "size": { - "0": 317.4000244140625, - "1": 174 - }, - "flags": {}, - "order": 37, - "mode": 0, - "inputs": [ - { - "name": "video_frames", - "type": "IMAGE", - "link": 323 - } - ], - "outputs": [ - { - "name": "FEATURE", - "type": "FEATURE", - "links": [ - 324 - ], - "shape": 3, - "slot_index": 0 - }, - { - "name": "FEATURE_PIPE", - "type": "FEATURE_PIPE", - "links": [ - 325 - ], - "shape": 3, - "slot_index": 1 - } - ], - "properties": { - "Node name for S&R": "MotionFeatureNode" - }, - "widgets_values": [ - 30, - "mean_motion", - "Farneback", - 0, - 0 - ] - }, - { - "id": 181, - "type": "VHS_VideoCombine", - "pos": [ - 1840, - 220 - ], - "size": [ - 315, - 766.5 - ], - "flags": {}, - "order": 54, - "mode": 4, - "inputs": [ - { - "name": "images", - "type": "IMAGE", - "link": 309 - }, - { - "name": "audio", - "type": "AUDIO", - "link": null - }, - { - "name": "meta_batch", - "type": "VHS_BatchManager", - "link": null - }, - { - "name": "vae", - "type": "VAE", - "link": null - } - ], - "outputs": [ - { - "name": "Filenames", - "type": "VHS_FILENAMES", - "links": null, - "shape": 3 - } - ], - "properties": { - "Node name for S&R": "VHS_VideoCombine" - }, - "widgets_values": { - "frame_rate": 15, - "loop_count": 0, - "filename_prefix": "AnimateDiff", - "format": "video/h264-mp4", - "pix_fmt": "yuv420p", - "crf": 19, - "save_metadata": true, - "pingpong": false, - "save_output": true, - "videopreview": { - "hidden": false, - "paused": false, - "params": { - "filename": "AnimateDiff_00776.mp4", - "subfolder": "", - "type": "output", - "format": "video/h264-mp4", - "frame_rate": 15 - }, - "muted": false - } - } - }, - { - "id": 197, - "type": "VHS_VideoCombine", - "pos": [ - 3118, - 124 - ], - "size": [ - 315, - 848.4444444444445 - ], - "flags": {}, - "order": 55, - "mode": 4, - "inputs": [ - { - "name": "images", - "type": "IMAGE", - "link": 318 - }, - { - "name": "audio", - "type": "AUDIO", - "link": null - }, - { - "name": "meta_batch", - "type": "VHS_BatchManager", - "link": null - }, - { - "name": "vae", - "type": "VAE", - "link": null - } - ], - "outputs": [ - { - "name": "Filenames", - "type": "VHS_FILENAMES", - "links": null, - "shape": 3 - } - ], - "properties": { - "Node name for S&R": "VHS_VideoCombine" - }, - "widgets_values": { - "frame_rate": 15, - "loop_count": 0, - "filename_prefix": "AnimateDiff", - "format": "video/h264-mp4", - "pix_fmt": "yuv420p", - "crf": 19, - "save_metadata": true, - "pingpong": false, - "save_output": true, - "videopreview": { - "hidden": false, - "paused": false, - "params": { - "filename": "AnimateDiff_00777.mp4", - "subfolder": "", - "type": "output", - "format": "video/h264-mp4", - "frame_rate": 15 - }, - "muted": false - } - } - }, - { - "id": 149, - "type": "TimeFeatureNode", - "pos": [ - -2038, - 96 - ], - "size": { - "0": 317.4000244140625, - "1": 150 - }, - "flags": {}, - "order": 28, - "mode": 0, - "inputs": [ - { - "name": "video_frames", - "type": "IMAGE", - "link": null - } - ], - "outputs": [ - { - "name": "FEATURE", - "type": "FEATURE", - "links": [], - "shape": 3, - "slot_index": 0 - }, - { - "name": "FEATURE_PIPE", - "type": "FEATURE_PIPE", - "links": [], - "shape": 3, - "slot_index": 1 - } - ], - "properties": { - "Node name for S&R": "TimeFeatureNode" - }, - "widgets_values": [ - 30, - "smooth", - 1, - 0 - ] - }, - { - "id": 157, - "type": "FeatureMixer", - "pos": [ - -336, - 449 - ], - "size": { - "0": 367.79998779296875, - "1": 318 - }, - "flags": {}, - "order": 43, - "mode": 0, - "inputs": [ - { - "name": "feature", - "type": "FEATURE", - "link": 291, - "slot_index": 0 - } - ], - "outputs": [ - { - "name": "FEATURE", - "type": "FEATURE", - "links": [ - 322 - ], - "shape": 3, - "slot_index": 0 - }, - { - "name": "FEATURE_VISUALIZATION", - "type": "IMAGE", - "links": [ - 294 - ], - "shape": 3, - "slot_index": 1 - } - ], - "properties": { - "Node name for S&R": "FeatureMixer" - }, - "widgets_values": [ - 1, - 0, - 1, - 1, - 1, - 1, - 1, - 0, - 0, - 1, - 0.5 - ] - }, - { - "id": 204, - "type": "FeatureOscillator", - "pos": [ - -304, - 1277 - ], - "size": { - "0": 367.79998779296875, - "1": 174 - }, - "flags": {}, - "order": 29, - "mode": 0, - "inputs": [ - { - "name": "feature", - "type": "FEATURE", - "link": null - } - ], - "outputs": [ - { - "name": "FEATURE", - "type": "FEATURE", - "links": [], - "shape": 3, - "slot_index": 0 - }, - { - "name": "FEATURE_VISUALIZATION", - "type": "IMAGE", - "links": [], - "shape": 3, - "slot_index": 1 - } - ], - "properties": { - "Node name for S&R": "FeatureOscillator" - }, - "widgets_values": [ - "sine", - 1, - 0.5, - 0, - 0.79 - ] - }, - { - "id": 206, - "type": "FeatureMath", - "pos": [ - -292, - 1765 - ], - "size": { - "0": 380.4000244140625, - "1": 126 - }, - "flags": {}, - "order": 30, - "mode": 0, - "inputs": [ - { - "name": "feature1", - "type": "FEATURE", - "link": null - }, - { - "name": "feature2", - "type": "FEATURE", - "link": null - } - ], - "outputs": [ - { - "name": "FEATURE", - "type": "FEATURE", - "links": null, - "shape": 3, - "slot_index": 0 - }, - { - "name": "FEATURE_VISUALIZATION", - "type": "IMAGE", - "links": [], - "shape": 3, - "slot_index": 1 - } - ], - "properties": { - "Node name for S&R": "FeatureMath" - }, - "widgets_values": [ - "subtract", - 1, - 1 - ] - }, - { - "id": 158, - "type": "Reroute", - "pos": [ - -650, - 790 - ], - "size": [ - 75, - 26 - ], - "flags": {}, - "order": 40, - "mode": 0, - "inputs": [ - { - "name": "", - "type": "*", - "link": 324 - } - ], - "outputs": [ - { - "name": "", - "type": "FEATURE", - "links": [ - 291, - 331 - ], - "slot_index": 0 - } - ], - "properties": { - "showOutputText": false, - "horizontal": false - } - }, - { - "id": 208, - "type": "PreviewImage", - "pos": [ - 266.6696832298651, - 1493.614956995918 - ], - "size": { - "0": 210, - "1": 246 - }, - "flags": {}, - "order": 48, - "mode": 0, - "inputs": [ - { - "name": "images", - "type": "IMAGE", - "link": 332 - } - ], - "properties": { - "Node name for S&R": "PreviewImage" - } - }, - { - "id": 205, - "type": "FeatureSmoothing", - "pos": [ - -297, - 1529 - ], - "size": { - "0": 367.79998779296875, - "1": 150 - }, - "flags": {}, - "order": 44, - "mode": 0, - "inputs": [ - { - "name": "feature", - "type": "FEATURE", - "link": 331 - } - ], - "outputs": [ - { - "name": "FEATURE", - "type": "FEATURE", - "links": null, - "shape": 3 - }, - { - "name": "FEATURE_VISUALIZATION", - "type": "IMAGE", - "links": [ - 332 - ], - "shape": 3, - "slot_index": 1 - } - ], - "properties": { - "Node name for S&R": "FeatureSmoothing" - }, - "widgets_values": [ - "gaussian", - 5, - 0.3, - 1 - ] - }, - { - "id": 189, - "type": "FlexImageColorGrade", - "pos": [ - 2556, - 2222 - ], - "size": { - "0": 336, - "1": 242 - }, - "flags": {}, - "order": 31, - "mode": 4, - "inputs": [ - { - "name": "images", - "type": "IMAGE", - "link": null - }, - { - "name": "feature", - "type": "FEATURE", - "link": null - }, - { - "name": "feature_pipe", - "type": "FEATURE_PIPE", - "link": null - } - ], - "outputs": [ - { - "name": "IMAGE", - "type": "IMAGE", - "links": null, - "shape": 3 - } - ], - "properties": { - "Node name for S&R": "FlexImageColorGrade" - }, - "widgets_values": [ - 1, - 0, - "intensity", - "relative", - 1, - 1, - "" - ] - }, - { - "id": 209, - "type": "Note", - "pos": [ - 2919, - 2257 - ], - "size": [ - 346.86633399882703, - 89.45454758908863 - ], - "flags": {}, - "order": 32, - "mode": 0, - "properties": { - "text": "" - }, - "widgets_values": [ - "<----if this is red for you... its coming soon! Just disable it" - ], - "color": "#432", - "bgcolor": "#653" - } - ], - "links": [ - [ - 289, - 156, - 0, - 153, - 0, - "AUDIO" - ], - [ - 290, - 156, - 5, - 153, - 1, - "FEATURE_PIPE" - ], - [ - 291, - 158, - 0, - 157, - 0, - "FEATURE" - ], - [ - 294, - 157, - 1, - 160, - 0, - "IMAGE" - ], - [ - 296, - 159, - 0, - 162, - 0, - "*" - ], - [ - 297, - 164, - 0, - 165, - 0, - "*" - ], - [ - 300, - 161, - 0, - 167, - 1, - "FEATURE" - ], - [ - 301, - 162, - 0, - 167, - 2, - "FEATURE_PIPE" - ], - [ - 305, - 176, - 0, - 178, - 0, - "IMAGE" - ], - [ - 306, - 178, - 0, - 179, - 0, - "*" - ], - [ - 307, - 179, - 0, - 167, - 0, - "MASK" - ], - [ - 308, - 167, - 0, - 180, - 0, - "MASK" - ], - [ - 309, - 180, - 0, - 181, - 0, - "IMAGE" - ], - [ - 310, - 165, - 0, - 191, - 0, - "*" - ], - [ - 311, - 191, - 0, - 192, - 0, - "*" - ], - [ - 312, - 161, - 0, - 193, - 0, - "*" - ], - [ - 313, - 162, - 0, - 194, - 0, - "*" - ], - [ - 314, - 192, - 0, - 195, - 0, - "*" - ], - [ - 315, - 195, - 0, - 185, - 0, - "IMAGE" - ], - [ - 316, - 193, - 0, - 185, - 1, - "FEATURE" - ], - [ - 317, - 194, - 0, - 185, - 2, - "FEATURE_PIPE" - ], - [ - 318, - 185, - 0, - 197, - 0, - "IMAGE" - ], - [ - 322, - 157, - 0, - 161, - 0, - "*" - ], - [ - 323, - 165, - 0, - 152, - 0, - "IMAGE" - ], - [ - 324, - 152, - 0, - 158, - 0, - "*" - ], - [ - 325, - 152, - 1, - 159, - 0, - "*" - ], - [ - 331, - 158, - 0, - 205, - 0, - "FEATURE" - ], - [ - 332, - 205, - 1, - 208, - 0, - "IMAGE" - ] - ], - "groups": [ - { - "title": "Feature", - "bounding": [ - -2110, - -80, - 1122, - 1949 - ], - "color": "#3f789e", - "font_size": 24 - }, - { - "title": "Mixer", - "bounding": [ - -419, - 45, - 836, - 1982 - ], - "color": "#3f789e", - "font_size": 24 - }, - { - "title": "Target", - "bounding": [ - 760, - -80, - 4084, - 3026 - ], - "color": "#444", - "font_size": 24 - }, - { - "title": "Masks", - "bounding": [ - 818, - 10, - 1392, - 2830 - ], - "color": "#8A8", - "font_size": 24 - }, - { - "title": "Images", - "bounding": [ - 2367, - 9, - 1227, - 2830 - ], - "color": "#3f789e", - "font_size": 24 - }, - { - "title": "External / IPAdapter", - "bounding": [ - 3730, - 13, - 1003, - 2817 - ], - "color": "#a1309b", - "font_size": 24 - } - ], - "config": {}, - "extra": { - "ds": { - "scale": 1.1918176537728016, - "offset": [ - -2356.8422592316056, - -1927.5621604220344 - ] - } - }, - "version": 0.4 -} \ No newline at end of file diff --git a/examples/headbang_bear.json b/examples/headbang_bear.json deleted file mode 100644 index fa7f6f8..0000000 --- a/examples/headbang_bear.json +++ /dev/null @@ -1,3548 +0,0 @@ -{ - "last_node_id": 158, - "last_link_id": 327, - "nodes": [ - { - "id": 83, - "type": "DownloadAndLoadCogVideoModel", - "pos": { - "0": 2159, - "1": -516 - }, - "size": { - "0": 315.49652099609375, - "1": 194 - }, - "flags": {}, - "order": 0, - "mode": 0, - "inputs": [ - { - "name": "pab_config", - "type": "PAB_CONFIG", - "link": null - }, - { - "name": "block_edit", - "type": "TRANSFORMERBLOCKS", - "link": null - }, - { - "name": "lora", - "type": "COGLORA", - "link": null - } - ], - "outputs": [ - { - "name": "cogvideo_pipe", - "type": "COGVIDEOPIPE", - "links": [ - 198, - 199 - ], - "slot_index": 0, - "shape": 3 - } - ], - "properties": { - "Node name for S&R": "DownloadAndLoadCogVideoModel" - }, - "widgets_values": [ - "kijai/CogVideoX-5b-Tora", - "bf16", - "disabled", - "disabled", - false - ] - }, - { - "id": 31, - "type": "CogVideoTextEncode", - "pos": { - "0": 2013, - "1": -57 - }, - "size": { - "0": 463.01251220703125, - "1": 124 - }, - "flags": {}, - "order": 16, - "mode": 0, - "inputs": [ - { - "name": "clip", - "type": "CLIP", - "link": 56 - } - ], - "outputs": [ - { - "name": "conditioning", - "type": "CONDITIONING", - "links": [ - 123 - ], - "slot_index": 0, - "shape": 3 - } - ], - "properties": { - "Node name for S&R": "CogVideoTextEncode" - }, - "widgets_values": [ - "The video is not of a high quality, it has a low resolution. Watermark present in each frame. Strange motion trajectory. ", - 1, - true - ] - }, - { - "id": 84, - "type": "DownloadAndLoadToraModel", - "pos": { - "0": 2161, - "1": 116 - }, - "size": { - "0": 315, - "1": 58 - }, - "flags": {}, - "order": 1, - "mode": 0, - "inputs": [], - "outputs": [ - { - "name": "tora_model", - "type": "TORAMODEL", - "links": [ - 200 - ], - "slot_index": 0, - "shape": 3 - } - ], - "properties": { - "Node name for S&R": "DownloadAndLoadToraModel" - }, - "widgets_values": [ - "kijai/CogVideoX-5b-Tora" - ] - }, - { - "id": 65, - "type": "CreateShapeImageOnPath", - "pos": { - "0": 2729, - "1": 410 - }, - "size": { - "0": 313.4619445800781, - "1": 270 - }, - "flags": {}, - "order": 42, - "mode": 0, - "inputs": [ - { - "name": "coordinates", - "type": "STRING", - "link": 202, - "widget": { - "name": "coordinates" - } - }, - { - "name": "size_multiplier", - "type": "FLOAT", - "link": null, - "widget": { - "name": "size_multiplier" - }, - "shape": 7 - }, - { - "name": "frame_width", - "type": "INT", - "link": 182, - "widget": { - "name": "frame_width" - } - }, - { - "name": "frame_height", - "type": "INT", - "link": 183, - "widget": { - "name": "frame_height" - } - } - ], - "outputs": [ - { - "name": "image", - "type": "IMAGE", - "links": [ - 142, - 153 - ], - "slot_index": 0 - }, - { - "name": "mask", - "type": "MASK", - "links": [ - 154 - ], - "slot_index": 1 - } - ], - "properties": { - "Node name for S&R": "CreateShapeImageOnPath" - }, - "widgets_values": [ - "circle", - "", - 512, - 512, - 12, - 12, - "red", - "black", - 0, - 1, - [ - 1 - ] - ] - }, - { - "id": 72, - "type": "AudioSeparator", - "pos": { - "0": -1566.5263671875, - "1": -264.8908386230469 - }, - "size": { - "0": 317.4000244140625, - "1": 158 - }, - "flags": {}, - "order": 21, - "mode": 0, - "inputs": [ - { - "name": "model", - "type": "OPEN_UNMIX_MODEL", - "link": 159 - }, - { - "name": "audio", - "type": "AUDIO", - "link": 232 - }, - { - "name": "video_frames", - "type": "IMAGE", - "link": 162 - } - ], - "outputs": [ - { - "name": "audio", - "type": "AUDIO", - "links": [], - "slot_index": 0, - "shape": 3 - }, - { - "name": "drums_audio", - "type": "AUDIO", - "links": [ - 211, - 214 - ], - "slot_index": 1, - "shape": 3 - }, - { - "name": "vocals_audio", - "type": "AUDIO", - "links": null, - "shape": 3 - }, - { - "name": "bass_audio", - "type": "AUDIO", - "links": null, - "shape": 3 - }, - { - "name": "other_audio", - "type": "AUDIO", - "links": null, - "shape": 3 - }, - { - "name": "feature_pipe", - "type": "FEATURE_PIPE", - "links": [ - 164 - ], - "slot_index": 5, - "shape": 3 - } - ], - "properties": { - "Node name for S&R": "AudioSeparator" - }, - "widgets_values": [ - 8 - ] - }, - { - "id": 88, - "type": "PreviewAudio", - "pos": { - "0": -1126.5263671875, - "1": -244.89083862304688 - }, - "size": { - "0": 315, - "1": 76 - }, - "flags": {}, - "order": 23, - "mode": 0, - "inputs": [ - { - "name": "audio", - "type": "AUDIO", - "link": 214 - } - ], - "outputs": [], - "properties": { - "Node name for S&R": "PreviewAudio" - }, - "widgets_values": [ - null - ] - }, - { - "id": 105, - "type": "GetImageSizeAndCount", - "pos": { - "0": 1021.5052490234375, - "1": 1504.89453125 - }, - "size": { - "0": 210, - "1": 86 - }, - "flags": {}, - "order": 50, - "mode": 4, - "inputs": [ - { - "name": "image", - "type": "IMAGE", - "link": 243 - } - ], - "outputs": [ - { - "name": "image", - "type": "IMAGE", - "links": [ - 241 - ], - "slot_index": 0, - "shape": 3 - }, - { - "name": "720 width", - "type": "INT", - "links": null, - "shape": 3 - }, - { - "name": "480 height", - "type": "INT", - "links": null, - "shape": 3 - }, - { - "name": "43 count", - "type": "INT", - "links": null, - "shape": 3 - } - ], - "properties": { - "Node name for S&R": "GetImageSizeAndCount" - }, - "widgets_values": [] - }, - { - "id": 106, - "type": "GetNode", - "pos": { - "0": 1041.5052490234375, - "1": 1674.89453125 - }, - "size": { - "0": 210, - "1": 58 - }, - "flags": {}, - "order": 2, - "mode": 4, - "inputs": [], - "outputs": [ - { - "name": "AUDIO", - "type": "AUDIO", - "links": [ - 242 - ], - "slot_index": 0 - } - ], - "title": "Get_audio", - "properties": {}, - "widgets_values": [ - "audio" - ] - }, - { - "id": 20, - "type": "CLIPLoader", - "pos": { - "0": 1394, - "1": -156 - }, - "size": { - "0": 574.2658081054688, - "1": 95.4034652709961 - }, - "flags": {}, - "order": 3, - "mode": 0, - "inputs": [], - "outputs": [ - { - "name": "CLIP", - "type": "CLIP", - "links": [ - 54, - 56 - ], - "slot_index": 0, - "shape": 3 - } - ], - "properties": { - "Node name for S&R": "CLIPLoader" - }, - "widgets_values": [ - "t5/t5xxl_fp8_e4m3fn.safetensors", - "sd3" - ] - }, - { - "id": 66, - "type": "VHS_VideoCombine", - "pos": { - "0": 3455, - "1": 181 - }, - "size": [ - 605.3909912109375, - 714.2606608072917 - ], - "flags": {}, - "order": 46, - "mode": 0, - "inputs": [ - { - "name": "images", - "type": "IMAGE", - "link": 142 - }, - { - "name": "audio", - "type": "*", - "link": 235, - "shape": 7 - }, - { - "name": "meta_batch", - "type": "VHS_BatchManager", - "link": null, - "shape": 7 - }, - { - "name": "vae", - "type": "VAE", - "link": null, - "shape": 7 - } - ], - "outputs": [ - { - "name": "Filenames", - "type": "VHS_FILENAMES", - "links": null, - "shape": 3 - } - ], - "properties": { - "Node name for S&R": "VHS_VideoCombine" - }, - "widgets_values": { - "frame_rate": 8, - "loop_count": 0, - "filename_prefix": "CogVideoX-Tora-trajectory", - "format": "video/h264-mp4", - "pix_fmt": "yuv420p", - "crf": 19, - "save_metadata": true, - "pingpong": false, - "save_output": false, - "videopreview": { - "hidden": false, - "paused": false, - "params": { - "filename": "CogVideoX-Tora-trajectory_00001-audio.mp4", - "subfolder": "", - "type": "temp", - "format": "video/h264-mp4", - "frame_rate": 8 - }, - "muted": false - } - } - }, - { - "id": 99, - "type": "GetNode", - "pos": { - "0": 3213, - "1": 384 - }, - "size": { - "0": 210, - "1": 58 - }, - "flags": {}, - "order": 4, - "mode": 0, - "inputs": [], - "outputs": [ - { - "name": "AUDIO", - "type": "AUDIO", - "links": [ - 235 - ], - "slot_index": 0 - } - ], - "title": "Get_audio", - "properties": {}, - "widgets_values": [ - "audio" - ] - }, - { - "id": 103, - "type": "CreateShapeImageOnPath", - "pos": { - "0": 621.5052490234375, - "1": 1364.89453125 - }, - "size": { - "0": 313.4619445800781, - "1": 270 - }, - "flags": {}, - "order": 48, - "mode": 4, - "inputs": [ - { - "name": "coordinates", - "type": "STRING", - "link": 262, - "widget": { - "name": "coordinates" - } - }, - { - "name": "size_multiplier", - "type": "FLOAT", - "link": null, - "widget": { - "name": "size_multiplier" - }, - "shape": 7 - }, - { - "name": "frame_width", - "type": "INT", - "link": 239, - "widget": { - "name": "frame_width" - } - }, - { - "name": "frame_height", - "type": "INT", - "link": 240, - "widget": { - "name": "frame_height" - } - } - ], - "outputs": [ - { - "name": "image", - "type": "IMAGE", - "links": [ - 243 - ], - "slot_index": 0 - }, - { - "name": "mask", - "type": "MASK", - "links": [], - "slot_index": 1 - } - ], - "properties": { - "Node name for S&R": "CreateShapeImageOnPath" - }, - "widgets_values": [ - "circle", - "", - 512, - 512, - 12, - 12, - "red", - "black", - 0, - 1, - [ - 1 - ] - ] - }, - { - "id": 102, - "type": "GetMaskSizeAndCount", - "pos": { - "0": 261.5052795410156, - "1": 1424.89453125 - }, - "size": { - "0": 264.5999755859375, - "1": 86 - }, - "flags": { - "collapsed": false - }, - "order": 44, - "mode": 4, - "inputs": [ - { - "name": "mask", - "type": "MASK", - "link": 258 - } - ], - "outputs": [ - { - "name": "mask", - "type": "MASK", - "links": null, - "slot_index": 0 - }, - { - "name": "720 width", - "type": "INT", - "links": [ - 239 - ], - "slot_index": 1 - }, - { - "name": "480 height", - "type": "INT", - "links": [ - 240 - ], - "slot_index": 2 - }, - { - "name": "43 count", - "type": "INT", - "links": [], - "slot_index": 3 - } - ], - "properties": { - "Node name for S&R": "GetMaskSizeAndCount" - }, - "widgets_values": [] - }, - { - "id": 57, - "type": "CogVideoSampler", - "pos": { - "0": 2730, - "1": -350 - }, - "size": { - "0": 399.8780822753906, - "1": 390 - }, - "flags": {}, - "order": 47, - "mode": 0, - "inputs": [ - { - "name": "pipeline", - "type": "COGVIDEOPIPE", - "link": 198 - }, - { - "name": "positive", - "type": "CONDITIONING", - "link": 122 - }, - { - "name": "negative", - "type": "CONDITIONING", - "link": 123 - }, - { - "name": "samples", - "type": "LATENT", - "link": null, - "shape": 7 - }, - { - "name": "image_cond_latents", - "type": "LATENT", - "link": null, - "shape": 7 - }, - { - "name": "context_options", - "type": "COGCONTEXT", - "link": null, - "shape": 7 - }, - { - "name": "controlnet", - "type": "COGVIDECONTROLNET", - "link": null, - "shape": 7 - }, - { - "name": "tora_trajectory", - "type": "TORAFEATURES", - "link": 197, - "shape": 7 - }, - { - "name": "num_frames", - "type": "INT", - "link": 189, - "widget": { - "name": "num_frames" - } - }, - { - "name": "height", - "type": "INT", - "link": 188, - "widget": { - "name": "height" - } - }, - { - "name": "width", - "type": "INT", - "link": 187, - "widget": { - "name": "width" - } - } - ], - "outputs": [ - { - "name": "cogvideo_pipe", - "type": "COGVIDEOPIPE", - "links": [ - 128 - ], - "slot_index": 0, - "shape": 3 - }, - { - "name": "samples", - "type": "LATENT", - "links": [ - 127 - ], - "shape": 3 - } - ], - "properties": { - "Node name for S&R": "CogVideoSampler" - }, - "widgets_values": [ - 480, - 720, - 49, - 37, - 6, - 65334758276105, - "fixed", - "CogVideoXDPMScheduler", - 1 - ] - }, - { - "id": 30, - "type": "CogVideoTextEncode", - "pos": { - "0": 2014, - "1": -266 - }, - "size": { - "0": 471.90142822265625, - "1": 168.08047485351562 - }, - "flags": {}, - "order": 15, - "mode": 0, - "inputs": [ - { - "name": "clip", - "type": "CLIP", - "link": 54 - } - ], - "outputs": [ - { - "name": "conditioning", - "type": "CONDITIONING", - "links": [ - 122 - ], - "slot_index": 0, - "shape": 3 - } - ], - "properties": { - "Node name for S&R": "CogVideoTextEncode" - }, - "widgets_values": [ - "video of a brown bear in front of a waterfall", - 1, - true - ] - }, - { - "id": 82, - "type": "ToraEncodeTrajectory", - "pos": { - "0": 2731, - "1": 103 - }, - "size": { - "0": 280.8954162597656, - "1": 233.9559783935547 - }, - "flags": {}, - "order": 43, - "mode": 0, - "inputs": [ - { - "name": "pipeline", - "type": "COGVIDEOPIPE", - "link": 199 - }, - { - "name": "tora_model", - "type": "TORAMODEL", - "link": 200, - "slot_index": 1 - }, - { - "name": "coordinates", - "type": "STRING", - "link": 203, - "widget": { - "name": "coordinates" - } - }, - { - "name": "num_frames", - "type": "INT", - "link": 194, - "widget": { - "name": "num_frames" - } - }, - { - "name": "width", - "type": "INT", - "link": 195, - "widget": { - "name": "width" - } - }, - { - "name": "height", - "type": "INT", - "link": 196, - "widget": { - "name": "height" - } - } - ], - "outputs": [ - { - "name": "tora_trajectory", - "type": "TORAFEATURES", - "links": [ - 197 - ], - "shape": 3 - }, - { - "name": "video_flow_images", - "type": "IMAGE", - "links": null, - "shape": 3 - } - ], - "properties": { - "Node name for S&R": "ToraEncodeTrajectory" - }, - "widgets_values": [ - "", - 720, - 480, - 49, - 2, - 0, - 1, - false - ] - }, - { - "id": 111, - "type": "SplineFeatureModulator", - "pos": { - "0": -148.49472045898438, - "1": 1204.89453125 - }, - "size": { - "0": 352.79998779296875, - "1": 306 - }, - "flags": {}, - "order": 39, - "mode": 4, - "inputs": [ - { - "name": "feature", - "type": "FEATURE", - "link": 263 - }, - { - "name": "coordinates", - "type": "STRING", - "link": 261, - "widget": { - "name": "coordinates" - } - } - ], - "outputs": [ - { - "name": "mask", - "type": "MASK", - "links": [ - 258 - ], - "slot_index": 0, - "shape": 3 - }, - { - "name": "coord_str", - "type": "STRING", - "links": [ - 262 - ], - "slot_index": 1, - "shape": 3 - }, - { - "name": "float", - "type": "FLOAT", - "links": null, - "shape": 3 - }, - { - "name": "count", - "type": "INT", - "links": null, - "shape": 3 - }, - { - "name": "normalized_str", - "type": "STRING", - "links": null, - "shape": 3 - } - ], - "properties": { - "Node name for S&R": "SplineFeatureModulator" - }, - "widgets_values": [ - "", - 720, - 480, - 0, - 1, - "list", - 0, - 1 - ] - }, - { - "id": 108, - "type": "PreviewImage", - "pos": { - "0": -588.4947509765625, - "1": 1284.89453125 - }, - "size": { - "0": 210, - "1": 246 - }, - "flags": {}, - "order": 40, - "mode": 4, - "inputs": [ - { - "name": "images", - "type": "IMAGE", - "link": 251 - } - ], - "outputs": [], - "properties": { - "Node name for S&R": "PreviewImage" - }, - "widgets_values": [] - }, - { - "id": 71, - "type": "DownloadOpenUnmixModel", - "pos": { - "0": -1576.5263671875, - "1": -384.8908386230469 - }, - "size": { - "0": 361.20001220703125, - "1": 58 - }, - "flags": {}, - "order": 5, - "mode": 0, - "inputs": [], - "outputs": [ - { - "name": "OPEN_UNMIX_MODEL", - "type": "OPEN_UNMIX_MODEL", - "links": [ - 159 - ], - "slot_index": 0, - "shape": 3 - } - ], - "properties": { - "Node name for S&R": "DownloadOpenUnmixModel" - }, - "widgets_values": [ - "umxl" - ] - }, - { - "id": 90, - "type": "PreviewAudio", - "pos": { - "0": -1941.1341552734375, - "1": -193.65582275390625 - }, - "size": { - "0": 315, - "1": 76 - }, - "flags": {}, - "order": 17, - "mode": 0, - "inputs": [ - { - "name": "audio", - "type": "AUDIO", - "link": 230 - } - ], - "outputs": [], - "properties": { - "Node name for S&R": "PreviewAudio" - }, - "widgets_values": [ - null - ] - }, - { - "id": 74, - "type": "AudioFeatureExtractor", - "pos": { - "0": -1112.1341552734375, - "1": -58.65582275390625 - }, - "size": { - "0": 361.20001220703125, - "1": 78 - }, - "flags": {}, - "order": 24, - "mode": 0, - "inputs": [ - { - "name": "audio", - "type": "AUDIO", - "link": 211 - }, - { - "name": "feature_pipe", - "type": "FEATURE_PIPE", - "link": 164 - } - ], - "outputs": [ - { - "name": "FEATURE", - "type": "FEATURE", - "links": [ - 212, - 219, - 249 - ], - "slot_index": 0, - "shape": 3 - }, - { - "name": "FEATURE_PIPE", - "type": "FEATURE_PIPE", - "links": null, - "shape": 3 - } - ], - "properties": { - "Node name for S&R": "AudioFeatureExtractor" - }, - "widgets_values": [ - "amplitude_envelope" - ] - }, - { - "id": 75, - "type": "GetMaskSizeAndCount", - "pos": { - "0": 790.7343139648438, - "1": 99.7914810180664 - }, - "size": { - "0": 264.5999755859375, - "1": 86 - }, - "flags": { - "collapsed": false - }, - "order": 37, - "mode": 0, - "inputs": [ - { - "name": "mask", - "type": "MASK", - "link": 264 - } - ], - "outputs": [ - { - "name": "mask", - "type": "MASK", - "links": null, - "slot_index": 0 - }, - { - "name": "720 width", - "type": "INT", - "links": [ - 182, - 187, - 195 - ], - "slot_index": 1 - }, - { - "name": "480 height", - "type": "INT", - "links": [ - 183, - 188, - 196 - ], - "slot_index": 2 - }, - { - "name": "43 count", - "type": "INT", - "links": [ - 189, - 194 - ], - "slot_index": 3 - } - ], - "properties": { - "Node name for S&R": "GetMaskSizeAndCount" - }, - "widgets_values": [] - }, - { - "id": 81, - "type": "FeatureToSplineData", - "pos": { - "0": 84.73432159423828, - "1": -66.2085189819336 - }, - "size": { - "0": 336, - "1": 354 - }, - "flags": {}, - "order": 33, - "mode": 0, - "inputs": [ - { - "name": "feature", - "type": "FEATURE", - "link": 221 - } - ], - "outputs": [ - { - "name": "mask", - "type": "MASK", - "links": [ - 264 - ], - "slot_index": 0, - "shape": 3 - }, - { - "name": "coord_str", - "type": "STRING", - "links": [ - 265 - ], - "slot_index": 1, - "shape": 3 - }, - { - "name": "float", - "type": "FLOAT", - "links": null, - "shape": 3 - }, - { - "name": "count", - "type": "INT", - "links": null, - "shape": 3 - }, - { - "name": "normalized_str", - "type": "STRING", - "links": null, - "shape": 3 - } - ], - "properties": { - "Node name for S&R": "FeatureToSplineData" - }, - "widgets_values": [ - 720, - 480, - "time", - "cardinal", - 0.5, - 1, - "list", - 0, - 1 - ] - }, - { - "id": 85, - "type": "Reroute", - "pos": { - "0": 886.7343139648438, - "1": -119.2085189819336 - }, - "size": [ - 75, - 26 - ], - "flags": {}, - "order": 38, - "mode": 0, - "inputs": [ - { - "name": "", - "type": "*", - "link": 265, - "widget": { - "name": "value" - } - } - ], - "outputs": [ - { - "name": "", - "type": "STRING", - "links": [ - 202, - 203 - ], - "slot_index": 0 - } - ], - "properties": { - "showOutputText": false, - "horizontal": false - } - }, - { - "id": 89, - "type": "FeatureRenormalize", - "pos": { - "0": -509.26568603515625, - "1": -70.2085189819336 - }, - "size": { - "0": 367.79998779296875, - "1": 126 - }, - "flags": {}, - "order": 28, - "mode": 0, - "inputs": [ - { - "name": "feature", - "type": "FEATURE", - "link": 219 - } - ], - "outputs": [ - { - "name": "FEATURE", - "type": "FEATURE", - "links": [ - 221 - ], - "slot_index": 0, - "shape": 3 - }, - { - "name": "FEATURE_VISUALIZATION", - "type": "IMAGE", - "links": [ - 220 - ], - "slot_index": 1, - "shape": 3 - } - ], - "properties": { - "Node name for S&R": "FeatureRenormalize" - }, - "widgets_values": [ - 0.3, - 0.7000000000000001, - false - ] - }, - { - "id": 87, - "type": "PreviewImage", - "pos": { - "0": -231.2656707763672, - "1": 162.79147338867188 - }, - "size": { - "0": 210, - "1": 246 - }, - "flags": {}, - "order": 34, - "mode": 0, - "inputs": [ - { - "name": "images", - "type": "IMAGE", - "link": 220 - } - ], - "outputs": [], - "properties": { - "Node name for S&R": "PreviewImage" - }, - "widgets_values": [] - }, - { - "id": 139, - "type": "PreviewImage", - "pos": { - "0": -588.1315307617188, - "1": 162.44729614257812 - }, - "size": { - "0": 210, - "1": 246 - }, - "flags": {}, - "order": 32, - "mode": 0, - "inputs": [ - { - "name": "images", - "type": "IMAGE", - "link": 296 - } - ], - "outputs": [], - "properties": { - "Node name for S&R": "PreviewImage" - }, - "widgets_values": [] - }, - { - "id": 107, - "type": "FeatureMixer", - "pos": { - "0": -1968.4947509765625, - "1": 1224.89453125 - }, - "size": { - "0": 367.79998779296875, - "1": 342 - }, - "flags": {}, - "order": 29, - "mode": 4, - "inputs": [ - { - "name": "feature", - "type": "FEATURE", - "link": 249 - } - ], - "outputs": [ - { - "name": "FEATURE", - "type": "FEATURE", - "links": [ - 250 - ], - "slot_index": 0, - "shape": 3 - }, - { - "name": "FEATURE_VISUALIZATION", - "type": "IMAGE", - "links": [], - "slot_index": 1, - "shape": 3 - } - ], - "properties": { - "Node name for S&R": "FeatureMixer" - }, - "widgets_values": [ - 1, - 0.3, - 0.8, - 1, - 1, - 1, - 1, - 0, - 0, - 1, - 0.5, - false - ] - }, - { - "id": 109, - "type": "FeatureRenormalize", - "pos": { - "0": -1566.4947509765625, - "1": 1299.89453125 - }, - "size": { - "0": 367.79998779296875, - "1": 126 - }, - "flags": {}, - "order": 35, - "mode": 4, - "inputs": [ - { - "name": "feature", - "type": "FEATURE", - "link": 250 - } - ], - "outputs": [ - { - "name": "FEATURE", - "type": "FEATURE", - "links": [ - 263 - ], - "slot_index": 0, - "shape": 3 - }, - { - "name": "FEATURE_VISUALIZATION", - "type": "IMAGE", - "links": [ - 251 - ], - "slot_index": 1, - "shape": 3 - } - ], - "properties": { - "Node name for S&R": "FeatureRenormalize" - }, - "widgets_values": [ - 0, - 0.39, - false - ] - }, - { - "id": 73, - "type": "EmptyImageAndMaskFromAudio", - "pos": { - "0": -1589, - "1": -50 - }, - "size": { - "0": 411.6000061035156, - "1": 146 - }, - "flags": {}, - "order": 18, - "mode": 0, - "inputs": [ - { - "name": "audio", - "type": "AUDIO", - "link": 231 - } - ], - "outputs": [ - { - "name": "empty_image", - "type": "IMAGE", - "links": [ - 162, - 299 - ], - "slot_index": 0, - "shape": 3 - }, - { - "name": "empty_mask", - "type": "MASK", - "links": null, - "slot_index": 1, - "shape": 3 - }, - { - "name": "frame_count", - "type": "INT", - "links": [], - "slot_index": 2, - "shape": 3 - } - ], - "properties": { - "Node name for S&R": "EmptyImageAndMaskFromAudio" - }, - "widgets_values": [ - 8, - 720, - 480 - ] - }, - { - "id": 92, - "type": "VHS_LoadAudioUpload", - "pos": { - "0": -1966.5263671875, - "1": -44.890830993652344 - }, - "size": { - "0": 243.818359375, - "1": 130 - }, - "flags": {}, - "order": 6, - "mode": 0, - "inputs": [], - "outputs": [ - { - "name": "audio", - "type": "AUDIO", - "links": [ - 230, - 231, - 232, - 233, - 300 - ], - "slot_index": 0, - "shape": 3 - } - ], - "properties": { - "Node name for S&R": "VHS_LoadAudioUpload" - }, - "widgets_values": { - "audio": "Matthew Magenta - Wait a Minute.mp3", - "start_time": 35, - "duration": 5.41, - "choose audio to upload": "image" - } - }, - { - "id": 146, - "type": "GetImageSizeAndCount", - "pos": { - "0": 633.28125, - "1": 3073.278076171875 - }, - "size": { - "0": 210, - "1": 86 - }, - "flags": {}, - "order": 41, - "mode": 4, - "inputs": [ - { - "name": "image", - "type": "IMAGE", - "link": 307 - } - ], - "outputs": [ - { - "name": "image", - "type": "IMAGE", - "links": [ - 305 - ], - "slot_index": 0, - "shape": 3 - }, - { - "name": "720 width", - "type": "INT", - "links": null, - "shape": 3 - }, - { - "name": "480 height", - "type": "INT", - "links": null, - "shape": 3 - }, - { - "name": "43 count", - "type": "INT", - "links": null, - "shape": 3 - } - ], - "properties": { - "Node name for S&R": "GetImageSizeAndCount" - }, - "widgets_values": [] - }, - { - "id": 147, - "type": "GetNode", - "pos": { - "0": 653.28125, - "1": 3243.278076171875 - }, - "size": { - "0": 210, - "1": 58 - }, - "flags": {}, - "order": 7, - "mode": 4, - "inputs": [], - "outputs": [ - { - "name": "AUDIO", - "type": "AUDIO", - "links": [ - 306 - ], - "slot_index": 0 - } - ], - "title": "Get_audio", - "properties": {}, - "widgets_values": [ - "audio" - ] - }, - { - "id": 68, - "type": "ImageCompositeMasked", - "pos": { - "0": 3239, - "1": -95 - }, - "size": { - "0": 315, - "1": 146 - }, - "flags": {}, - "order": 51, - "mode": 0, - "inputs": [ - { - "name": "destination", - "type": "IMAGE", - "link": 155 - }, - { - "name": "source", - "type": "IMAGE", - "link": 153 - }, - { - "name": "mask", - "type": "MASK", - "link": 154, - "shape": 7 - } - ], - "outputs": [ - { - "name": "IMAGE", - "type": "IMAGE", - "links": [ - 314 - ], - "slot_index": 0 - } - ], - "properties": { - "Node name for S&R": "ImageCompositeMasked" - }, - "widgets_values": [ - 0, - 0, - false - ] - }, - { - "id": 151, - "type": "ImageConcatMulti", - "pos": { - "0": 4556, - "1": -398 - }, - "size": { - "0": 210, - "1": 150 - }, - "flags": {}, - "order": 53, - "mode": 0, - "inputs": [ - { - "name": "image_1", - "type": "IMAGE", - "link": 313 - }, - { - "name": "image_2", - "type": "IMAGE", - "link": 314 - } - ], - "outputs": [ - { - "name": "images", - "type": "IMAGE", - "links": [ - 322 - ], - "slot_index": 0, - "shape": 3 - } - ], - "properties": {}, - "widgets_values": [ - 2, - "right", - false, - null - ] - }, - { - "id": 44, - "type": "VHS_VideoCombine", - "pos": { - "0": 5441, - "1": -473 - }, - "size": [ - 531.3980712890625, - 310 - ], - "flags": {}, - "order": 55, - "mode": 0, - "inputs": [ - { - "name": "images", - "type": "IMAGE", - "link": 323 - }, - { - "name": "audio", - "type": "*", - "link": 236, - "shape": 7 - }, - { - "name": "meta_batch", - "type": "VHS_BatchManager", - "link": null, - "shape": 7 - }, - { - "name": "vae", - "type": "VAE", - "link": null, - "shape": 7 - } - ], - "outputs": [ - { - "name": "Filenames", - "type": "VHS_FILENAMES", - "links": null, - "shape": 3 - } - ], - "properties": { - "Node name for S&R": "VHS_VideoCombine" - }, - "widgets_values": { - "frame_rate": 8, - "loop_count": 0, - "filename_prefix": "CogVideoX-Tora", - "format": "video/h264-mp4", - "pix_fmt": "yuv420p", - "crf": 19, - "save_metadata": true, - "pingpong": false, - "save_output": false, - "videopreview": { - "hidden": false, - "paused": false, - "params": { - "filename": "CogVideoX-Tora_00007-audio.mp4", - "subfolder": "", - "type": "temp", - "format": "video/h264-mp4", - "frame_rate": 8 - }, - "muted": false - } - } - }, - { - "id": 145, - "type": "VHS_VideoCombine", - "pos": { - "0": 979, - "1": 2878 - }, - "size": [ - 605.3909912109375, - 310 - ], - "flags": {}, - "order": 45, - "mode": 4, - "inputs": [ - { - "name": "images", - "type": "IMAGE", - "link": 305 - }, - { - "name": "audio", - "type": "AUDIO", - "link": 306, - "shape": 7 - }, - { - "name": "meta_batch", - "type": "VHS_BatchManager", - "link": null, - "shape": 7 - }, - { - "name": "vae", - "type": "VAE", - "link": null, - "shape": 7 - } - ], - "outputs": [ - { - "name": "Filenames", - "type": "VHS_FILENAMES", - "links": null, - "shape": 3 - } - ], - "properties": { - "Node name for S&R": "VHS_VideoCombine" - }, - "widgets_values": { - "frame_rate": 8, - "loop_count": 0, - "filename_prefix": "CogVideoX-Tora-trajectory", - "format": "video/h264-mp4", - "pix_fmt": "yuv420p", - "crf": 19, - "save_metadata": true, - "pingpong": false, - "save_output": false, - "videopreview": { - "hidden": false, - "paused": false, - "params": { - "filename": "CogVideoX-Tora-trajectory_00007-audio.mp4", - "subfolder": "", - "type": "temp", - "format": "video/h264-mp4", - "frame_rate": 8 - }, - "muted": false - } - } - }, - { - "id": 152, - "type": "ImageUpscaleWithModel", - "pos": { - "0": 4837, - "1": -117 - }, - "size": { - "0": 241.79998779296875, - "1": 46 - }, - "flags": {}, - "order": 54, - "mode": 0, - "inputs": [ - { - "name": "upscale_model", - "type": "UPSCALE_MODEL", - "link": 316, - "slot_index": 0 - }, - { - "name": "image", - "type": "IMAGE", - "link": 322 - } - ], - "outputs": [ - { - "name": "IMAGE", - "type": "IMAGE", - "links": [ - 323 - ], - "slot_index": 0, - "shape": 3 - } - ], - "properties": { - "Node name for S&R": "ImageUpscaleWithModel" - }, - "widgets_values": [] - }, - { - "id": 155, - "type": "ImageUpscaleWithModel", - "pos": { - "0": 4860, - "1": 114 - }, - "size": { - "0": 241.79998779296875, - "1": 46 - }, - "flags": {}, - "order": 20, - "mode": 0, - "inputs": [ - { - "name": "upscale_model", - "type": "UPSCALE_MODEL", - "link": 324, - "slot_index": 0 - }, - { - "name": "image", - "type": "IMAGE", - "link": null - } - ], - "outputs": [ - { - "name": "IMAGE", - "type": "IMAGE", - "links": [], - "slot_index": 0, - "shape": 3 - } - ], - "properties": { - "Node name for S&R": "ImageUpscaleWithModel" - }, - "widgets_values": [] - }, - { - "id": 153, - "type": "UpscaleModelLoader", - "pos": { - "0": 4837, - "1": -215 - }, - "size": { - "0": 315, - "1": 58 - }, - "flags": {}, - "order": 8, - "mode": 0, - "inputs": [], - "outputs": [ - { - "name": "UPSCALE_MODEL", - "type": "UPSCALE_MODEL", - "links": [ - 316, - 324 - ], - "slot_index": 0, - "shape": 3 - } - ], - "properties": { - "Node name for S&R": "UpscaleModelLoader" - }, - "widgets_values": [ - "RealESRGAN_x2.pth" - ] - }, - { - "id": 56, - "type": "CogVideoDecode", - "pos": { - "0": 3246, - "1": -350 - }, - "size": { - "0": 300.396484375, - "1": 198 - }, - "flags": {}, - "order": 49, - "mode": 0, - "inputs": [ - { - "name": "pipeline", - "type": "COGVIDEOPIPE", - "link": 128 - }, - { - "name": "samples", - "type": "LATENT", - "link": 127 - } - ], - "outputs": [ - { - "name": "images", - "type": "IMAGE", - "links": [ - 155, - 313 - ], - "slot_index": 0, - "shape": 3 - } - ], - "properties": { - "Node name for S&R": "CogVideoDecode" - }, - "widgets_values": [ - false, - 240, - 360, - 0.2, - 0.2, - true - ] - }, - { - "id": 100, - "type": "GetNode", - "pos": { - "0": 5122, - "1": -492 - }, - "size": { - "0": 210, - "1": 58 - }, - "flags": {}, - "order": 9, - "mode": 0, - "inputs": [], - "outputs": [ - { - "name": "AUDIO", - "type": "AUDIO", - "links": [ - 236 - ], - "slot_index": 0 - } - ], - "title": "Get_audio", - "properties": {}, - "widgets_values": [ - "audio" - ] - }, - { - "id": 141, - "type": "Note", - "pos": { - "0": -194, - "1": -310 - }, - "size": { - "0": 210, - "1": 58 - }, - "flags": {}, - "order": 10, - "mode": 0, - "inputs": [], - "outputs": [], - "properties": { - "text": "" - }, - "widgets_values": [ - "method 1 is we just create spline data out of thin air" - ], - "color": "#432", - "bgcolor": "#653" - }, - { - "id": 104, - "type": "VHS_VideoCombine", - "pos": { - "0": 1832, - "1": 1314 - }, - "size": [ - 605.3909912109375, - 714.2606608072917 - ], - "flags": {}, - "order": 52, - "mode": 4, - "inputs": [ - { - "name": "images", - "type": "IMAGE", - "link": 241 - }, - { - "name": "audio", - "type": "AUDIO", - "link": 242, - "shape": 7 - }, - { - "name": "meta_batch", - "type": "VHS_BatchManager", - "link": null, - "shape": 7 - }, - { - "name": "vae", - "type": "VAE", - "link": null, - "shape": 7 - } - ], - "outputs": [ - { - "name": "Filenames", - "type": "VHS_FILENAMES", - "links": null, - "shape": 3 - } - ], - "properties": { - "Node name for S&R": "VHS_VideoCombine" - }, - "widgets_values": { - "frame_rate": 8, - "loop_count": 0, - "filename_prefix": "CogVideoX-Tora-trajectory", - "format": "video/h264-mp4", - "pix_fmt": "yuv420p", - "crf": 19, - "save_metadata": true, - "pingpong": false, - "save_output": false, - "videopreview": { - "hidden": false, - "paused": false, - "params": { - "filename": "CogVideoX-Tora-trajectory_00003-audio.mp4", - "subfolder": "", - "type": "temp", - "format": "video/h264-mp4", - "frame_rate": 8 - }, - "muted": false - } - } - }, - { - "id": 143, - "type": "GetMaskSizeAndCount", - "pos": { - "0": -302, - "1": 3013 - }, - "size": { - "0": 264.5999755859375, - "1": 86 - }, - "flags": { - "collapsed": false - }, - "order": 30, - "mode": 4, - "inputs": [ - { - "name": "mask", - "type": "MASK", - "link": 308 - } - ], - "outputs": [ - { - "name": "mask", - "type": "MASK", - "links": null, - "slot_index": 0 - }, - { - "name": "720 width", - "type": "INT", - "links": [ - 303 - ], - "slot_index": 1 - }, - { - "name": "480 height", - "type": "INT", - "links": [ - 304 - ], - "slot_index": 2 - }, - { - "name": "43 count", - "type": "INT", - "links": [], - "slot_index": 3 - } - ], - "properties": { - "Node name for S&R": "GetMaskSizeAndCount" - }, - "widgets_values": [] - }, - { - "id": 60, - "type": "SplineEditor", - "pos": { - "0": -1603, - "1": 1504 - }, - "size": { - "0": 765, - "1": 910 - }, - "flags": {}, - "order": 11, - "mode": 4, - "inputs": [], - "outputs": [ - { - "name": "mask", - "type": "MASK", - "links": [], - "slot_index": 0 - }, - { - "name": "coord_str", - "type": "STRING", - "links": [ - 261 - ], - "slot_index": 1 - }, - { - "name": "float", - "type": "FLOAT", - "links": null - }, - { - "name": "count", - "type": "INT", - "links": null - }, - { - "name": "normalized_str", - "type": "STRING", - "links": null - } - ], - "properties": { - "Node name for S&R": "SplineEditor", - "points": "SplineEditor" - }, - "widgets_values": [ - "[{\"x\":0,\"y\":0},{\"x\":263.32734333042947,\"y\":353.74697326919136},{\"x\":412.4404172645281,\"y\":258.5684154389157},{\"x\":234.77377598134674,\"y\":190.35711566055141},{\"x\":416.1710463256701,\"y\":129.2143974478895},{\"x\":720,\"y\":480}]", - "[{\"x\":0,\"y\":0},{\"x\":41.775726318359375,\"y\":65.8663558959961},{\"x\":84.4534683227539,\"y\":131.15138244628906},{\"x\":128.4003143310547,\"y\":195.58773803710938},{\"x\":174.32730102539062,\"y\":258.6236572265625},{\"x\":224.04251098632812,\"y\":318.68707275390625},{\"x\":285.690673828125,\"y\":365.3074645996094},{\"x\":360.54327392578125,\"y\":361.12701416015625},{\"x\":406.5906066894531,\"y\":299.9382629394531},{\"x\":385.8952941894531,\"y\":236.77943420410156},{\"x\":309.9677429199219,\"y\":219.35707092285156},{\"x\":236.64279174804688,\"y\":196.15463256835938},{\"x\":269.2276306152344,\"y\":129.1408233642578},{\"x\":340.8720703125,\"y\":103.78235626220703},{\"x\":414.20391845703125,\"y\":128.05242919921875},{\"x\":474.11431884765625,\"y\":177.6868896484375},{\"x\":527.1646118164062,\"y\":234.8441619873047},{\"x\":577.380126953125,\"y\":294.5220642089844},{\"x\":625.9403686523438,\"y\":355.55743408203125},{\"x\":673.380859375,\"y\":417.4681701660156},{\"x\":720,\"y\":480}]", - 720, - 480, - 21, - "path", - "cardinal", - 0.5, - 1, - "list", - 0, - 1, - null, - null - ] - }, - { - "id": 144, - "type": "CreateShapeImageOnPath", - "pos": { - "0": 156, - "1": 2901 - }, - "size": { - "0": 313.4619445800781, - "1": 270 - }, - "flags": {}, - "order": 36, - "mode": 4, - "inputs": [ - { - "name": "coordinates", - "type": "STRING", - "link": 309, - "widget": { - "name": "coordinates" - } - }, - { - "name": "size_multiplier", - "type": "FLOAT", - "link": null, - "widget": { - "name": "size_multiplier" - }, - "shape": 7 - }, - { - "name": "frame_width", - "type": "INT", - "link": 303, - "widget": { - "name": "frame_width" - } - }, - { - "name": "frame_height", - "type": "INT", - "link": 304, - "widget": { - "name": "frame_height" - } - } - ], - "outputs": [ - { - "name": "image", - "type": "IMAGE", - "links": [ - 307 - ], - "slot_index": 0 - }, - { - "name": "mask", - "type": "MASK", - "links": [], - "slot_index": 1 - } - ], - "properties": { - "Node name for S&R": "CreateShapeImageOnPath" - }, - "widgets_values": [ - "circle", - "", - 512, - 512, - 12, - 12, - "red", - "black", - 0, - 1, - [ - 1 - ] - ] - }, - { - "id": 142, - "type": "SplineRhythmModulator", - "pos": { - "0": -989.4947509765625, - "1": 2845.89453125 - }, - "size": { - "0": 344.3999938964844, - "1": 306 - }, - "flags": {}, - "order": 25, - "mode": 4, - "inputs": [ - { - "name": "feature", - "type": "FEATURE", - "link": 301 - }, - { - "name": "coordinates", - "type": "STRING", - "link": 325, - "widget": { - "name": "coordinates" - } - } - ], - "outputs": [ - { - "name": "mask", - "type": "MASK", - "links": [ - 308 - ], - "slot_index": 0, - "shape": 3 - }, - { - "name": "coord_str", - "type": "STRING", - "links": [ - 309 - ], - "slot_index": 1, - "shape": 3 - }, - { - "name": "float", - "type": "FLOAT", - "links": null, - "shape": 3 - }, - { - "name": "count", - "type": "INT", - "links": null, - "shape": 3 - }, - { - "name": "normalized_str", - "type": "STRING", - "links": null, - "shape": 3 - } - ], - "properties": { - "Node name for S&R": "SplineRhythmModulator" - }, - "widgets_values": [ - "", - 720, - 480, - 0.5, - "bounce", - "list", - 0, - 1 - ] - }, - { - "id": 156, - "type": "SplineEditor", - "pos": { - "0": -1950, - "1": 3027 - }, - "size": { - "0": 765, - "1": 910 - }, - "flags": {}, - "order": 12, - "mode": 4, - "inputs": [], - "outputs": [ - { - "name": "mask", - "type": "MASK", - "links": [], - "slot_index": 0 - }, - { - "name": "coord_str", - "type": "STRING", - "links": [ - 325 - ], - "slot_index": 1 - }, - { - "name": "float", - "type": "FLOAT", - "links": null - }, - { - "name": "count", - "type": "INT", - "links": null - }, - { - "name": "normalized_str", - "type": "STRING", - "links": null - } - ], - "properties": { - "Node name for S&R": "SplineEditor", - "points": "SplineEditor" - }, - "widgets_values": [ - "[{\"x\":106.83612120606712,\"y\":320.5083636182014},{\"x\":329.98885421358,\"y\":199.1824615523411},{\"x\":563.3593502114721,\"y\":310.6651825704424}]", - "[{\"x\":106.83612060546875,\"y\":320.50836181640625},{\"x\":127.13419342041016,\"y\":304.2864074707031},{\"x\":147.74716186523438,\"y\":288.46673583984375},{\"x\":168.7193603515625,\"y\":273.1268615722656},{\"x\":190.10723876953125,\"y\":258.3725891113281},{\"x\":211.98204040527344,\"y\":244.35137939453125},{\"x\":234.433837890625,\"y\":231.27587890625},{\"x\":257.5760498046875,\"y\":219.4696502685547},{\"x\":281.543212890625,\"y\":209.45449829101562},{\"x\":306.45501708984375,\"y\":202.13507080078125},{\"x\":332.2182312011719,\"y\":199.15936279296875},{\"x\":358.01605224609375,\"y\":201.9041748046875},{\"x\":383.1117248535156,\"y\":208.58013916015625},{\"x\":407.4300537109375,\"y\":217.71414184570312},{\"x\":431.0644226074219,\"y\":228.5033721923828},{\"x\":454.1207580566406,\"y\":240.48147583007812},{\"x\":476.69091796875,\"y\":253.35397338867188},{\"x\":498.84722900390625,\"y\":266.9272766113281},{\"x\":520.6480102539062,\"y\":281.0649719238281},{\"x\":542.1392211914062,\"y\":295.66937255859375},{\"x\":563.359375,\"y\":310.6651916503906}]", - 720, - 480, - 21, - "path", - "cardinal", - 0.5, - 1, - "list", - 0, - 1, - null, - null - ] - }, - { - "id": 97, - "type": "SetNode", - "pos": { - "0": -1806, - "1": 228 - }, - "size": { - "0": 210, - "1": 58 - }, - "flags": {}, - "order": 19, - "mode": 0, - "inputs": [ - { - "name": "AUDIO", - "type": "AUDIO", - "link": 233 - } - ], - "outputs": [ - { - "name": "*", - "type": "*", - "links": null - } - ], - "title": "Set_audio", - "properties": { - "previousName": "audio" - }, - "widgets_values": [ - "audio" - ] - }, - { - "id": 86, - "type": "PreviewFeature", - "pos": { - "0": -1093, - "1": 99 - }, - "size": { - "0": 315, - "1": 58 - }, - "flags": {}, - "order": 27, - "mode": 0, - "inputs": [ - { - "name": "feature", - "type": "FEATURE", - "link": 212 - } - ], - "outputs": [ - { - "name": "FEATURE_PREVIEW", - "type": "IMAGE", - "links": [ - 296 - ], - "slot_index": 0, - "shape": 3 - } - ], - "properties": { - "Node name for S&R": "PreviewFeature" - }, - "widgets_values": [ - false - ] - }, - { - "id": 157, - "type": "PreviewFeature", - "pos": { - "0": -919.3485717773438, - "1": 3340.039794921875 - }, - "size": { - "0": 315, - "1": 58 - }, - "flags": {}, - "order": 26, - "mode": 4, - "inputs": [ - { - "name": "feature", - "type": "FEATURE", - "link": 327 - } - ], - "outputs": [ - { - "name": "FEATURE_PREVIEW", - "type": "IMAGE", - "links": [ - 326 - ], - "slot_index": 0, - "shape": 3 - } - ], - "properties": { - "Node name for S&R": "PreviewFeature" - }, - "widgets_values": [ - false - ] - }, - { - "id": 158, - "type": "PreviewImage", - "pos": { - "0": -414.4800720214844, - "1": 3403.487060546875 - }, - "size": { - "0": 210, - "1": 246 - }, - "flags": {}, - "order": 31, - "mode": 4, - "inputs": [ - { - "name": "images", - "type": "IMAGE", - "link": 326 - } - ], - "outputs": [], - "properties": { - "Node name for S&R": "PreviewImage" - }, - "widgets_values": [] - }, - { - "id": 113, - "type": "RhythmFeatureExtractor", - "pos": { - "0": -1779, - "1": 2808 - }, - "size": { - "0": 352.79998779296875, - "1": 126 - }, - "flags": {}, - "order": 22, - "mode": 4, - "inputs": [ - { - "name": "video_frames", - "type": "IMAGE", - "link": 299 - }, - { - "name": "audio", - "type": "AUDIO", - "link": 300 - } - ], - "outputs": [ - { - "name": "FEATURE", - "type": "FEATURE", - "links": [ - 301, - 327 - ], - "slot_index": 0, - "shape": 3 - }, - { - "name": "FEATURE_PIPE", - "type": "FEATURE_PIPE", - "links": null, - "slot_index": 1, - "shape": 3 - } - ], - "properties": { - "Node name for S&R": "RhythmFeatureExtractor" - }, - "widgets_values": [ - "beat_locations", - 30, - 4 - ] - }, - { - "id": 138, - "type": "Note", - "pos": { - "0": -1726, - "1": -751 - }, - "size": [ - 545.3321325309748, - 130.01349166001637 - ], - "flags": {}, - "order": 13, - "mode": 0, - "inputs": [], - "outputs": [], - "properties": { - "text": "" - }, - "widgets_values": [ - "Thus far, I have given 2 ways to modulate spline data with feature. \n\nPlease note: the only thing that I have tested less than method 1, is method 2. If people are interested, I can make it more robust or to better specifications.\n\n\nyoutube.com/@ryanontheinside\nhttps://github.com/ryanontheinside/ComfyUI_RyanOnTheInside" - ], - "color": "#432", - "bgcolor": "#653" - }, - { - "id": 148, - "type": "Note", - "pos": { - "0": -524, - "1": 991 - }, - "size": { - "0": 336.7846984863281, - "1": 159.12716674804688 - }, - "flags": {}, - "order": 14, - "mode": 0, - "inputs": [], - "outputs": [], - "properties": { - "text": "" - }, - "widgets_values": [ - "method 2, we modulate an existing spline. Ive been messing with two ways to do this and they behave distinctly" - ], - "color": "#432", - "bgcolor": "#653" - } - ], - "links": [ - [ - 54, - 20, - 0, - 30, - 0, - "CLIP" - ], - [ - 56, - 20, - 0, - 31, - 0, - "CLIP" - ], - [ - 122, - 30, - 0, - 57, - 1, - "CONDITIONING" - ], - [ - 123, - 31, - 0, - 57, - 2, - "CONDITIONING" - ], - [ - 127, - 57, - 1, - 56, - 1, - "LATENT" - ], - [ - 128, - 57, - 0, - 56, - 0, - "COGVIDEOPIPE" - ], - [ - 142, - 65, - 0, - 66, - 0, - "IMAGE" - ], - [ - 153, - 65, - 0, - 68, - 1, - "IMAGE" - ], - [ - 154, - 65, - 1, - 68, - 2, - "MASK" - ], - [ - 155, - 56, - 0, - 68, - 0, - "IMAGE" - ], - [ - 159, - 71, - 0, - 72, - 0, - "OPEN_UNMIX_MODEL" - ], - [ - 162, - 73, - 0, - 72, - 2, - "IMAGE" - ], - [ - 164, - 72, - 5, - 74, - 1, - "FEATURE_PIPE" - ], - [ - 182, - 75, - 1, - 65, - 2, - "INT" - ], - [ - 183, - 75, - 2, - 65, - 3, - "INT" - ], - [ - 187, - 75, - 1, - 57, - 10, - "INT" - ], - [ - 188, - 75, - 2, - 57, - 9, - "INT" - ], - [ - 189, - 75, - 3, - 57, - 8, - "INT" - ], - [ - 194, - 75, - 3, - 82, - 3, - "INT" - ], - [ - 195, - 75, - 1, - 82, - 4, - "INT" - ], - [ - 196, - 75, - 2, - 82, - 5, - "INT" - ], - [ - 197, - 82, - 0, - 57, - 7, - "TORAFEATURES" - ], - [ - 198, - 83, - 0, - 57, - 0, - "COGVIDEOPIPE" - ], - [ - 199, - 83, - 0, - 82, - 0, - "COGVIDEOPIPE" - ], - [ - 200, - 84, - 0, - 82, - 1, - "TORAMODEL" - ], - [ - 202, - 85, - 0, - 65, - 0, - "STRING" - ], - [ - 203, - 85, - 0, - 82, - 2, - "STRING" - ], - [ - 211, - 72, - 1, - 74, - 0, - "AUDIO" - ], - [ - 212, - 74, - 0, - 86, - 0, - "FEATURE" - ], - [ - 214, - 72, - 1, - 88, - 0, - "AUDIO" - ], - [ - 219, - 74, - 0, - 89, - 0, - "FEATURE" - ], - [ - 220, - 89, - 1, - 87, - 0, - "IMAGE" - ], - [ - 221, - 89, - 0, - 81, - 0, - "FEATURE" - ], - [ - 230, - 92, - 0, - 90, - 0, - "AUDIO" - ], - [ - 231, - 92, - 0, - 73, - 0, - "AUDIO" - ], - [ - 232, - 92, - 0, - 72, - 1, - "AUDIO" - ], - [ - 233, - 92, - 0, - 97, - 0, - "*" - ], - [ - 235, - 99, - 0, - 66, - 1, - "AUDIO" - ], - [ - 236, - 100, - 0, - 44, - 1, - "AUDIO" - ], - [ - 239, - 102, - 1, - 103, - 2, - "INT" - ], - [ - 240, - 102, - 2, - 103, - 3, - "INT" - ], - [ - 241, - 105, - 0, - 104, - 0, - "IMAGE" - ], - [ - 242, - 106, - 0, - 104, - 1, - "AUDIO" - ], - [ - 243, - 103, - 0, - 105, - 0, - "IMAGE" - ], - [ - 249, - 74, - 0, - 107, - 0, - "FEATURE" - ], - [ - 250, - 107, - 0, - 109, - 0, - "FEATURE" - ], - [ - 251, - 109, - 1, - 108, - 0, - "IMAGE" - ], - [ - 258, - 111, - 0, - 102, - 0, - "MASK" - ], - [ - 261, - 60, - 1, - 111, - 1, - "STRING" - ], - [ - 262, - 111, - 1, - 103, - 0, - "STRING" - ], - [ - 263, - 109, - 0, - 111, - 0, - "FEATURE" - ], - [ - 264, - 81, - 0, - 75, - 0, - "MASK" - ], - [ - 265, - 81, - 1, - 85, - 0, - "*" - ], - [ - 296, - 86, - 0, - 139, - 0, - "IMAGE" - ], - [ - 299, - 73, - 0, - 113, - 0, - "IMAGE" - ], - [ - 300, - 92, - 0, - 113, - 1, - "AUDIO" - ], - [ - 301, - 113, - 0, - 142, - 0, - "FEATURE" - ], - [ - 303, - 143, - 1, - 144, - 2, - "INT" - ], - [ - 304, - 143, - 2, - 144, - 3, - "INT" - ], - [ - 305, - 146, - 0, - 145, - 0, - "IMAGE" - ], - [ - 306, - 147, - 0, - 145, - 1, - "AUDIO" - ], - [ - 307, - 144, - 0, - 146, - 0, - "IMAGE" - ], - [ - 308, - 142, - 0, - 143, - 0, - "MASK" - ], - [ - 309, - 142, - 1, - 144, - 0, - "STRING" - ], - [ - 313, - 56, - 0, - 151, - 0, - "IMAGE" - ], - [ - 314, - 68, - 0, - 151, - 1, - "IMAGE" - ], - [ - 316, - 153, - 0, - 152, - 0, - "UPSCALE_MODEL" - ], - [ - 322, - 151, - 0, - 152, - 1, - "IMAGE" - ], - [ - 323, - 152, - 0, - 44, - 0, - "IMAGE" - ], - [ - 324, - 153, - 0, - 155, - 0, - "UPSCALE_MODEL" - ], - [ - 325, - 156, - 1, - 142, - 1, - "STRING" - ], - [ - 326, - 157, - 0, - 158, - 0, - "IMAGE" - ], - [ - 327, - 113, - 0, - 157, - 0, - "FEATURE" - ] - ], - "groups": [ - { - "title": "Cog Tora Kijai", - "bounding": [ - 1433, - -723, - 2749, - 1658 - ], - "color": "#3f789e", - "font_size": 24, - "flags": {} - }, - { - "title": "Load Audio, get feature", - "bounding": [ - -1984, - -477, - 1313, - 1026 - ], - "color": "#3f789e", - "font_size": 24, - "flags": {} - }, - { - "title": "Method 1", - "bounding": [ - -562, - -434, - 1600, - 979 - ], - "color": "#3f789e", - "font_size": 24, - "flags": {} - }, - { - "title": "Method 2", - "bounding": [ - -2012, - 1088, - 4739, - 2863 - ], - "color": "#3f789e", - "font_size": 24, - "flags": {} - }, - { - "title": "Upscale", - "bounding": [ - 4448, - -696, - 1582, - 1095 - ], - "color": "#3f789e", - "font_size": 24, - "flags": {} - } - ], - "config": {}, - "extra": { - "ds": { - "scale": 0.12100000000000037, - "offset": [ - 4419.535366817648, - 2099.733789815913 - ] - } - }, - "version": 0.4 -} \ No newline at end of file diff --git a/examples/lip_sync_visualizerVERSION2.json b/examples/lip_sync_visualizerVERSION2.json new file mode 100644 index 0000000..dd0c962 --- /dev/null +++ b/examples/lip_sync_visualizerVERSION2.json @@ -0,0 +1,6773 @@ +{ + "last_node_id": 439, + "last_link_id": 717, + "nodes": [ + { + "id": 45, + "type": "SetNode", + "pos": [ + -1674.9754638671875, + 879.3338623046875 + ], + "size": [ + 210, + 58 + ], + "flags": {}, + "order": 39, + "mode": 0, + "inputs": [ + { + "name": "AUDIO", + "type": "AUDIO", + "link": 48 + } + ], + "outputs": [ + { + "name": "*", + "type": "*", + "links": null + } + ], + "title": "Set_audio", + "properties": { + "previousName": "audio" + }, + "widgets_values": [ + "audio" + ] + }, + { + "id": 50, + "type": "PreviewAudio", + "pos": [ + -1114.974853515625, + 609.3344116210938 + ], + "size": [ + 315, + 76 + ], + "flags": {}, + "order": 55, + "mode": 0, + "inputs": [ + { + "name": "audio", + "type": "AUDIO", + "link": 652 + } + ], + "outputs": [], + "properties": { + "Node name for S&R": "PreviewAudio" + }, + "widgets_values": [ + null + ] + }, + { + "id": 258, + "type": "SetNode", + "pos": [ + -1105.5703125, + 919.9849853515625 + ], + "size": [ + 210, + 58 + ], + "flags": {}, + "order": 61, + "mode": 0, + "inputs": [ + { + "name": "AUDIO", + "type": "AUDIO", + "link": 658 + } + ], + "outputs": [ + { + "name": "*", + "type": "*", + "links": null + } + ], + "title": "Set_audio_bass", + "properties": { + "previousName": "audio_bass" + }, + "widgets_values": [ + "audio_bass" + ] + }, + { + "id": 257, + "type": "SetNode", + "pos": [ + -1105.5703125, + 819.985107421875 + ], + "size": [ + 210, + 58 + ], + "flags": {}, + "order": 60, + "mode": 0, + "inputs": [ + { + "name": "AUDIO", + "type": "AUDIO", + "link": 656 + } + ], + "outputs": [ + { + "name": "*", + "type": "*", + "links": null + } + ], + "title": "Set_audio__vocals", + "properties": { + "previousName": "audio__vocals" + }, + "widgets_values": [ + "audio__vocals" + ] + }, + { + "id": 262, + "type": "SetNode", + "pos": [ + -705.5696411132812, + 1619.9849853515625 + ], + "size": [ + 210, + 58 + ], + "flags": {}, + "order": 73, + "mode": 0, + "inputs": [ + { + "name": "FEATURE", + "type": "FEATURE", + "link": 670 + } + ], + "outputs": [ + { + "name": "*", + "type": "*", + "links": null + } + ], + "title": "Set_drum_feature", + "properties": { + "previousName": "drum_feature" + }, + "widgets_values": [ + "drum_feature" + ] + }, + { + "id": 261, + "type": "SetNode", + "pos": [ + -695.5696411132812, + 1439.9847412109375 + ], + "size": [ + 210, + 58 + ], + "flags": {}, + "order": 80, + "mode": 0, + "inputs": [ + { + "name": "FEATURE", + "type": "FEATURE", + "link": 663 + } + ], + "outputs": [ + { + "name": "*", + "type": "*", + "links": null + } + ], + "title": "Set_kick_feature", + "properties": { + "previousName": "kick_feature" + }, + "widgets_values": [ + "kick_feature" + ] + }, + { + "id": 264, + "type": "SetNode", + "pos": [ + -705.5696411132812, + 1759.9853515625 + ], + "size": [ + 210, + 58 + ], + "flags": {}, + "order": 74, + "mode": 0, + "inputs": [ + { + "name": "FEATURE", + "type": "FEATURE", + "link": 671 + } + ], + "outputs": [ + { + "name": "*", + "type": "*", + "links": null + } + ], + "title": "Set_vocal_feature", + "properties": { + "previousName": "vocal_feature" + }, + "widgets_values": [ + "vocal_feature" + ] + }, + { + "id": 266, + "type": "SetNode", + "pos": [ + -685.5696411132812, + 1869.9853515625 + ], + "size": [ + 210, + 58 + ], + "flags": {}, + "order": 75, + "mode": 0, + "inputs": [ + { + "name": "FEATURE", + "type": "FEATURE", + "link": 673 + } + ], + "outputs": [ + { + "name": "*", + "type": "*", + "links": null + } + ], + "title": "Set_bass_feature", + "properties": { + "previousName": "bass_feature" + }, + "widgets_values": [ + "bass_feature" + ] + }, + { + "id": 268, + "type": "SetNode", + "pos": [ + -695.5696411132812, + 2009.98583984375 + ], + "size": [ + 210, + 58 + ], + "flags": {}, + "order": 76, + "mode": 0, + "inputs": [ + { + "name": "FEATURE", + "type": "FEATURE", + "link": 675 + } + ], + "outputs": [ + { + "name": "*", + "type": "*", + "links": null + } + ], + "title": "Set_other_feature", + "properties": { + "previousName": "other_feature" + }, + "widgets_values": [ + "other_feature" + ] + }, + { + "id": 277, + "type": "SetNode", + "pos": [ + -1537.571044921875, + 1377.9847412109375 + ], + "size": [ + 210, + 58 + ], + "flags": {}, + "order": 52, + "mode": 0, + "inputs": [ + { + "name": "MASK", + "type": "MASK", + "link": 453 + } + ], + "outputs": [ + { + "name": "*", + "type": "*", + "links": null + } + ], + "title": "Set_empty_mask", + "properties": { + "previousName": "empty_mask" + }, + "widgets_values": [ + "empty_mask" + ], + "color": "#1c5715", + "bgcolor": "#1f401b" + }, + { + "id": 101, + "type": "SetNode", + "pos": [ + -1555.5709228515625, + 1263.98486328125 + ], + "size": [ + 210, + 58 + ], + "flags": {}, + "order": 51, + "mode": 0, + "inputs": [ + { + "name": "IMAGE", + "type": "IMAGE", + "link": 162 + } + ], + "outputs": [ + { + "name": "*", + "type": "*", + "links": null + } + ], + "title": "Set_empty_img", + "properties": { + "previousName": "empty_img" + }, + "widgets_values": [ + "empty_img" + ], + "color": "#2a363b", + "bgcolor": "#3f5159" + }, + { + "id": 278, + "type": "SetNode", + "pos": [ + -1552.5709228515625, + 1494.9847412109375 + ], + "size": [ + 210, + 58 + ], + "flags": {}, + "order": 53, + "mode": 0, + "inputs": [ + { + "name": "INT", + "type": "INT", + "link": 454 + } + ], + "outputs": [ + { + "name": "*", + "type": "*", + "links": null + } + ], + "title": "Set_frame_count", + "properties": { + "previousName": "frame_count" + }, + "widgets_values": [ + "frame_count" + ], + "color": "#1b4669", + "bgcolor": "#29699c" + }, + { + "id": 256, + "type": "SetNode", + "pos": [ + -1105.5703125, + 729.9852294921875 + ], + "size": [ + 210, + 58 + ], + "flags": {}, + "order": 57, + "mode": 0, + "inputs": [ + { + "name": "AUDIO", + "type": "AUDIO", + "link": 655 + } + ], + "outputs": [ + { + "name": "*", + "type": "*", + "links": null + } + ], + "title": "Set_audio_drums", + "properties": { + "previousName": "audio_drums" + }, + "widgets_values": [ + "audio_drums" + ] + }, + { + "id": 259, + "type": "SetNode", + "pos": [ + -1104.5703125, + 1021.9849853515625 + ], + "size": [ + 210, + 58 + ], + "flags": {}, + "order": 63, + "mode": 0, + "inputs": [ + { + "name": "AUDIO", + "type": "AUDIO", + "link": 660 + } + ], + "outputs": [ + { + "name": "*", + "type": "*", + "links": null + } + ], + "title": "Set_audio_other", + "properties": { + "previousName": "audio_other" + }, + "widgets_values": [ + "audio_other" + ] + }, + { + "id": 301, + "type": "GetImageSizeAndCount", + "pos": [ + 950, + 400 + ], + "size": [ + 277.20001220703125, + 86 + ], + "flags": {}, + "order": 45, + "mode": 0, + "inputs": [ + { + "name": "image", + "type": "IMAGE", + "link": 677 + } + ], + "outputs": [ + { + "name": "image", + "type": "IMAGE", + "links": [ + 483 + ], + "slot_index": 0, + "shape": 3 + }, + { + "name": "width", + "type": "INT", + "links": null, + "shape": 3 + }, + { + "name": "height", + "type": "INT", + "links": null, + "shape": 3 + }, + { + "name": "count", + "type": "INT", + "links": null, + "shape": 3 + } + ], + "properties": { + "Node name for S&R": "GetImageSizeAndCount" + }, + "widgets_values": [] + }, + { + "id": 316, + "type": "GetImageSizeAndCount", + "pos": [ + 880, + 1450 + ], + "size": [ + 277.20001220703125, + 86 + ], + "flags": {}, + "order": 46, + "mode": 0, + "inputs": [ + { + "name": "image", + "type": "IMAGE", + "link": 680 + } + ], + "outputs": [ + { + "name": "image", + "type": "IMAGE", + "links": [ + 501 + ], + "slot_index": 0, + "shape": 3 + }, + { + "name": "width", + "type": "INT", + "links": null, + "shape": 3 + }, + { + "name": "height", + "type": "INT", + "links": null, + "shape": 3 + }, + { + "name": "count", + "type": "INT", + "links": null, + "shape": 3 + } + ], + "properties": { + "Node name for S&R": "GetImageSizeAndCount" + }, + "widgets_values": [] + }, + { + "id": 343, + "type": "SetNode", + "pos": [ + 1490, + 1060 + ], + "size": [ + 210, + 58 + ], + "flags": {}, + "order": 69, + "mode": 0, + "inputs": [ + { + "name": "MASK", + "type": "MASK", + "link": 529 + } + ], + "outputs": [ + { + "name": "*", + "type": "*", + "links": null + } + ], + "title": "Set_vis_line_mask", + "properties": { + "previousName": "vis_line_mask" + }, + "widgets_values": [ + "vis_line_mask" + ], + "color": "#1c5715", + "bgcolor": "#1f401b" + }, + { + "id": 345, + "type": "MaskToImage", + "pos": [ + 1410, + 890 + ], + "size": [ + 264.5999755859375, + 26 + ], + "flags": {}, + "order": 70, + "mode": 0, + "inputs": [ + { + "name": "mask", + "type": "MASK", + "link": 532 + } + ], + "outputs": [ + { + "name": "IMAGE", + "type": "IMAGE", + "links": [ + 533 + ], + "slot_index": 0, + "shape": 3 + } + ], + "properties": { + "Node name for S&R": "MaskToImage" + }, + "widgets_values": [] + }, + { + "id": 346, + "type": "SetNode", + "pos": [ + 1460, + 960 + ], + "size": [ + 210, + 58 + ], + "flags": {}, + "order": 78, + "mode": 0, + "inputs": [ + { + "name": "IMAGE", + "type": "IMAGE", + "link": 533 + } + ], + "outputs": [ + { + "name": "*", + "type": "*", + "links": null + } + ], + "title": "Set_vis_line_img", + "properties": { + "previousName": "vis_line_img" + }, + "widgets_values": [ + "vis_line_img" + ], + "color": "#2a363b", + "bgcolor": "#3f5159" + }, + { + "id": 347, + "type": "GetNode", + "pos": [ + 7737, + 465 + ], + "size": [ + 210, + 58 + ], + "flags": {}, + "order": 0, + "mode": 0, + "inputs": [], + "outputs": [ + { + "name": "IMAGE", + "type": "IMAGE", + "links": [ + 558 + ], + "slot_index": 0 + } + ], + "title": "Get_vis_line_img", + "properties": {}, + "widgets_values": [ + "vis_line_img" + ] + }, + { + "id": 365, + "type": "ADE_AnimateDiffLoaderGen1", + "pos": [ + 10977.7529296875, + 522.1439208984375 + ], + "size": [ + 271.7644958496094, + 242 + ], + "flags": {}, + "order": 83, + "mode": 0, + "inputs": [ + { + "name": "model", + "type": "MODEL", + "link": 571, + "slot_index": 0 + }, + { + "name": "context_options", + "type": "CONTEXT_OPTIONS", + "link": 572, + "slot_index": 1, + "shape": 7 + }, + { + "name": "motion_lora", + "type": "MOTION_LORA", + "link": 573, + "slot_index": 2, + "shape": 7 + }, + { + "name": "ad_settings", + "type": "AD_SETTINGS", + "link": 574, + "slot_index": 3, + "shape": 7 + }, + { + "name": "ad_keyframes", + "type": "AD_KEYFRAMES", + "link": null, + "shape": 7 + }, + { + "name": "sample_settings", + "type": "SAMPLE_SETTINGS", + "link": 575, + "slot_index": 5, + "shape": 7 + }, + { + "name": "scale_multival", + "type": "MULTIVAL", + "link": 576, + "slot_index": 6, + "shape": 7 + }, + { + "name": "effect_multival", + "type": "MULTIVAL", + "link": 577, + "slot_index": 7, + "shape": 7 + }, + { + "name": "per_block", + "type": "PER_BLOCK", + "link": null, + "shape": 7 + } + ], + "outputs": [ + { + "name": "MODEL", + "type": "MODEL", + "links": [ + 589 + ], + "slot_index": 0, + "shape": 3 + } + ], + "properties": { + "Node name for S&R": "ADE_AnimateDiffLoaderGen1", + "ttNbgOverride": { + "color": "#2a363b", + "bgcolor": "#3f5159", + "groupcolor": "#3f789e" + } + }, + "widgets_values": [ + "ALCM_sd15_t2v_beta.ckpt", + "lcm avg(sqrt_linear,linear)" + ] + }, + { + "id": 366, + "type": "ADE_AnimateDiffSamplingSettings", + "pos": [ + 10977.7529296875, + 1132.1439208984375 + ], + "size": [ + 273.3500061035156, + 274 + ], + "flags": {}, + "order": 26, + "mode": 0, + "inputs": [ + { + "name": "noise_layers", + "type": "NOISE_LAYERS", + "link": null, + "slot_index": 0, + "shape": 7 + }, + { + "name": "iteration_opts", + "type": "ITERATION_OPTS", + "link": null, + "shape": 7 + }, + { + "name": "custom_cfg", + "type": "CUSTOM_CFG", + "link": 578, + "slot_index": 2, + "shape": 7 + }, + { + "name": "sigma_schedule", + "type": "SIGMA_SCHEDULE", + "link": 579, + "slot_index": 3, + "shape": 7 + }, + { + "name": "seed_override", + "type": "INT", + "link": null, + "widget": { + "name": "seed_override" + } + }, + { + "name": "seed_override", + "type": "INT", + "link": null, + "widget": { + "name": "seed_override" + } + }, + { + "name": "image_inject", + "type": "IMAGE_INJECT", + "link": null, + "shape": 7 + } + ], + "outputs": [ + { + "name": "settings", + "type": "SAMPLE_SETTINGS", + "links": [ + 575 + ], + "slot_index": 0, + "shape": 3 + } + ], + "properties": { + "Node name for S&R": "ADE_AnimateDiffSamplingSettings", + "ttNbgOverride": { + "color": "#2a363b", + "bgcolor": "#3f5159", + "groupcolor": "#3f789e" + } + }, + "widgets_values": [ + 0, + "FreeNoise", + "comfy", + 0, + 0, + false + ] + }, + { + "id": 367, + "type": "ADE_SigmaSchedule", + "pos": [ + 10647.7529296875, + 1152.1439208984375 + ], + "size": [ + 244.73928833007812, + 58 + ], + "flags": {}, + "order": 1, + "mode": 0, + "inputs": [], + "outputs": [ + { + "name": "SIGMA_SCHEDULE", + "type": "SIGMA_SCHEDULE", + "links": [ + 579 + ], + "slot_index": 0, + "shape": 3 + } + ], + "title": "Sigma Schedule 🎭🅐🅓", + "properties": { + "Node name for S&R": "ADE_SigmaSchedule", + "ttNbgOverride": { + "color": "#2a363b", + "bgcolor": "#3f5159", + "groupcolor": "#3f789e" + } + }, + "widgets_values": [ + "lcm avg(sqrt_linear,linear)" + ] + }, + { + "id": 368, + "type": "ADE_MultivalDynamic", + "pos": [ + 10637.7529296875, + 802.1439208984375 + ], + "size": [ + 259.9388122558594, + 63.332008361816406 + ], + "flags": {}, + "order": 2, + "mode": 0, + "inputs": [ + { + "name": "mask_optional", + "type": "MASK", + "link": null, + "shape": 7 + } + ], + "outputs": [ + { + "name": "MULTIVAL", + "type": "MULTIVAL", + "links": [ + 576 + ], + "slot_index": 0, + "shape": 3 + } + ], + "title": "Scale 🎭🅐🅓", + "properties": { + "Node name for S&R": "ADE_MultivalDynamic", + "ttNbgOverride": { + "color": "#2a363b", + "bgcolor": "#3f5159", + "groupcolor": "#3f789e" + } + }, + "widgets_values": [ + 1.1400000000000001 + ] + }, + { + "id": 369, + "type": "ADE_AnimateDiffUniformContextOptions", + "pos": [ + 10977.7529296875, + 822.1439208984375 + ], + "size": [ + 273.269775390625, + 270 + ], + "flags": {}, + "order": 3, + "mode": 0, + "inputs": [ + { + "name": "prev_context", + "type": "CONTEXT_OPTIONS", + "link": null, + "shape": 7 + }, + { + "name": "view_opts", + "type": "VIEW_OPTS", + "link": null, + "shape": 7 + } + ], + "outputs": [ + { + "name": "CONTEXT_OPTS", + "type": "CONTEXT_OPTIONS", + "links": [ + 572 + ], + "slot_index": 0, + "shape": 3 + } + ], + "title": "Context Options 🎭🅐🅓", + "properties": { + "Node name for S&R": "ADE_AnimateDiffUniformContextOptions", + "ttNbgOverride": { + "color": "#2a363b", + "bgcolor": "#3f5159", + "groupcolor": "#3f789e" + } + }, + "widgets_values": [ + 16, + 1, + 4, + "uniform", + false, + "pyramid", + false, + 0, + 1, + "" + ] + }, + { + "id": 370, + "type": "ADE_MultivalDynamic", + "pos": [ + 10637.7529296875, + 692.1439208984375 + ], + "size": [ + 265.1632385253906, + 58 + ], + "flags": {}, + "order": 4, + "mode": 0, + "inputs": [ + { + "name": "mask_optional", + "type": "MASK", + "link": null, + "shape": 7 + } + ], + "outputs": [ + { + "name": "MULTIVAL", + "type": "MULTIVAL", + "links": [ + 577 + ], + "shape": 3 + } + ], + "title": "Effect 🎭🅐🅓", + "properties": { + "Node name for S&R": "ADE_MultivalDynamic", + "ttNbgOverride": { + "color": "#2a363b", + "bgcolor": "#3f5159", + "groupcolor": "#3f789e" + } + }, + "widgets_values": [ + 1.1 + ] + }, + { + "id": 371, + "type": "ADE_CustomCFGSimple", + "pos": [ + 10637.7529296875, + 902.1439208984375 + ], + "size": [ + 257.2469787597656, + 60.893348693847656 + ], + "flags": {}, + "order": 5, + "mode": 0, + "inputs": [ + { + "name": "cfg_extras", + "type": "CFG_EXTRAS", + "link": null, + "shape": 7 + } + ], + "outputs": [ + { + "name": "CUSTOM_CFG", + "type": "CUSTOM_CFG", + "links": [ + 578 + ], + "shape": 3 + } + ], + "properties": { + "Node name for S&R": "ADE_CustomCFGSimple", + "ttNbgOverride": { + "color": "#2a363b", + "bgcolor": "#3f5159", + "groupcolor": "#3f789e" + } + }, + "widgets_values": [ + 2 + ] + }, + { + "id": 372, + "type": "ADE_AnimateDiffSettings", + "pos": [ + 10667.7529296875, + 1252.1439208984375 + ], + "size": [ + 226.8000030517578, + 54 + ], + "flags": { + "collapsed": true + }, + "order": 27, + "mode": 0, + "inputs": [ + { + "name": "pe_adjust", + "type": "PE_ADJUST", + "link": 580, + "slot_index": 0, + "shape": 7 + }, + { + "name": "weight_adjust", + "type": "WEIGHT_ADJUST", + "link": 581, + "slot_index": 1, + "shape": 7 + } + ], + "outputs": [ + { + "name": "AD_SETTINGS", + "type": "AD_SETTINGS", + "links": [ + 574 + ], + "shape": 3 + } + ], + "properties": { + "Node name for S&R": "ADE_AnimateDiffSettings", + "ttNbgOverride": { + "color": "#2a363b", + "bgcolor": "#3f5159", + "groupcolor": "#3f789e" + } + }, + "widgets_values": [] + }, + { + "id": 373, + "type": "ADE_AdjustPESweetspotStretch", + "pos": [ + 10637.7529296875, + 1002.1439208984375 + ], + "size": [ + 253.07310485839844, + 106 + ], + "flags": {}, + "order": 6, + "mode": 0, + "inputs": [ + { + "name": "prev_pe_adjust", + "type": "PE_ADJUST", + "link": null, + "shape": 7 + } + ], + "outputs": [ + { + "name": "PE_ADJUST", + "type": "PE_ADJUST", + "links": [ + 580 + ], + "shape": 3 + } + ], + "properties": { + "Node name for S&R": "ADE_AdjustPESweetspotStretch", + "ttNbgOverride": { + "color": "#2a363b", + "bgcolor": "#3f5159", + "groupcolor": "#3f789e" + } + }, + "widgets_values": [ + 16, + 18, + false + ] + }, + { + "id": 374, + "type": "ADE_AdjustWeightAllMult", + "pos": [ + 10647.7529296875, + 542.1439208984375 + ], + "size": [ + 270.3999938964844, + 82 + ], + "flags": {}, + "order": 7, + "mode": 0, + "inputs": [ + { + "name": "prev_weight_adjust", + "type": "WEIGHT_ADJUST", + "link": null, + "shape": 7 + } + ], + "outputs": [ + { + "name": "WEIGHT_ADJUST", + "type": "WEIGHT_ADJUST", + "links": [ + 581 + ], + "shape": 3 + } + ], + "properties": { + "Node name for S&R": "ADE_AdjustWeightAllMult", + "ttNbgOverride": { + "color": "#2a363b", + "bgcolor": "#3f5159", + "groupcolor": "#3f789e" + } + }, + "widgets_values": [ + 1.01, + false + ] + }, + { + "id": 375, + "type": "ADE_AnimateDiffLoRALoader", + "pos": [ + 10657.7529296875, + 402.1439208984375 + ], + "size": [ + 261.19134521484375, + 82 + ], + "flags": {}, + "order": 8, + "mode": 0, + "inputs": [ + { + "name": "prev_motion_lora", + "type": "MOTION_LORA", + "link": null, + "shape": 7 + } + ], + "outputs": [ + { + "name": "MOTION_LORA", + "type": "MOTION_LORA", + "links": [ + 573 + ], + "slot_index": 0, + "shape": 3 + } + ], + "title": "AnimateDiff LoRA", + "properties": { + "Node name for S&R": "ADE_AnimateDiffLoRALoader", + "ttNbgOverride": { + "color": "#2a363b", + "bgcolor": "#3f5159", + "groupcolor": "#3f789e" + } + }, + "widgets_values": [ + "LiquidAF-0-1.safetensors", + 0.8 + ] + }, + { + "id": 380, + "type": "ModelSamplingDiscrete", + "pos": [ + 10967.7529296875, + 392.1439208984375 + ], + "size": [ + 315, + 82 + ], + "flags": {}, + "order": 86, + "mode": 0, + "inputs": [ + { + "name": "model", + "type": "MODEL", + "link": 589 + } + ], + "outputs": [ + { + "name": "MODEL", + "type": "MODEL", + "links": [ + 582, + 603 + ], + "slot_index": 0, + "shape": 3 + } + ], + "properties": { + "Node name for S&R": "ModelSamplingDiscrete" + }, + "widgets_values": [ + "lcm", + false + ] + }, + { + "id": 384, + "type": "IPAdapterAdvanced", + "pos": [ + 10107.7529296875, + 512.1439208984375 + ], + "size": [ + 315, + 278 + ], + "flags": {}, + "order": 71, + "mode": 4, + "inputs": [ + { + "name": "model", + "type": "MODEL", + "link": 594 + }, + { + "name": "ipadapter", + "type": "IPADAPTER", + "link": 595 + }, + { + "name": "image", + "type": "IMAGE", + "link": null + }, + { + "name": "image_negative", + "type": "IMAGE", + "link": null, + "shape": 7 + }, + { + "name": "attn_mask", + "type": "MASK", + "link": null, + "shape": 7 + }, + { + "name": "clip_vision", + "type": "CLIP_VISION", + "link": null, + "shape": 7 + } + ], + "outputs": [ + { + "name": "MODEL", + "type": "MODEL", + "links": [ + 597 + ], + "slot_index": 0, + "shape": 3 + } + ], + "properties": { + "Node name for S&R": "IPAdapterAdvanced" + }, + "widgets_values": [ + 1, + "linear", + "concat", + 0, + 1, + "V only" + ] + }, + { + "id": 386, + "type": "DifferentialDiffusion", + "pos": [ + 10167.7529296875, + 892.1439208984375 + ], + "size": [ + 184.8000030517578, + 26 + ], + "flags": {}, + "order": 79, + "mode": 4, + "inputs": [ + { + "name": "model", + "type": "MODEL", + "link": 597 + } + ], + "outputs": [ + { + "name": "MODEL", + "type": "MODEL", + "links": [ + 571 + ], + "slot_index": 0, + "shape": 3 + } + ], + "properties": { + "Node name for S&R": "DifferentialDiffusion" + }, + "widgets_values": [] + }, + { + "id": 385, + "type": "IPAdapterUnifiedLoader", + "pos": [ + 10107.7529296875, + 382.1439208984375 + ], + "size": [ + 315, + 78 + ], + "flags": {}, + "order": 48, + "mode": 4, + "inputs": [ + { + "name": "model", + "type": "MODEL", + "link": 596 + }, + { + "name": "ipadapter", + "type": "IPADAPTER", + "link": null, + "shape": 7 + } + ], + "outputs": [ + { + "name": "model", + "type": "MODEL", + "links": [ + 594 + ], + "slot_index": 0, + "shape": 3 + }, + { + "name": "ipadapter", + "type": "IPADAPTER", + "links": [ + 595 + ], + "slot_index": 1, + "shape": 3 + } + ], + "properties": { + "Node name for S&R": "IPAdapterUnifiedLoader" + }, + "widgets_values": [ + "PLUS (high strength)" + ] + }, + { + "id": 387, + "type": "GetNode", + "pos": [ + 13352.5546875, + 470 + ], + "size": [ + 210, + 58 + ], + "flags": {}, + "order": 9, + "mode": 0, + "inputs": [], + "outputs": [ + { + "name": "AUDIO", + "type": "AUDIO", + "links": [ + 587 + ], + "slot_index": 0 + } + ], + "title": "Get_audio", + "properties": {}, + "widgets_values": [ + "audio" + ] + }, + { + "id": 273, + "type": "VHS_VideoCombine", + "pos": [ + 1300, + 400 + ], + "size": [ + 214.7587890625, + 334 + ], + "flags": {}, + "order": 67, + "mode": 4, + "inputs": [ + { + "name": "images", + "type": "IMAGE", + "link": 483 + }, + { + "name": "audio", + "type": "AUDIO", + "link": null, + "shape": 7 + }, + { + "name": "meta_batch", + "type": "VHS_BatchManager", + "link": null, + "shape": 7 + }, + { + "name": "vae", + "type": "VAE", + "link": null, + "shape": 7 + } + ], + "outputs": [ + { + "name": "Filenames", + "type": "VHS_FILENAMES", + "links": null, + "shape": 3 + } + ], + "properties": { + "Node name for S&R": "VHS_VideoCombine" + }, + "widgets_values": { + "frame_rate": 30, + "loop_count": 0, + "filename_prefix": "AnimateDiff", + "format": "video/h264-mp4", + "pix_fmt": "yuv420p", + "crf": 19, + "save_metadata": true, + "trim_to_audio": false, + "pingpong": false, + "save_output": true, + "videopreview": { + "hidden": false, + "paused": false, + "params": { + "filename": "AnimateDiff_07006-audio.mp4", + "subfolder": "", + "type": "output", + "format": "video/h264-mp4", + "frame_rate": 30 + }, + "muted": false + } + } + }, + { + "id": 286, + "type": "VHS_VideoCombine", + "pos": [ + 1240, + 1160 + ], + "size": [ + 214.7587890625, + 334 + ], + "flags": {}, + "order": 68, + "mode": 4, + "inputs": [ + { + "name": "images", + "type": "IMAGE", + "link": 501 + }, + { + "name": "audio", + "type": "AUDIO", + "link": null, + "shape": 7 + }, + { + "name": "meta_batch", + "type": "VHS_BatchManager", + "link": null, + "shape": 7 + }, + { + "name": "vae", + "type": "VAE", + "link": null, + "shape": 7 + } + ], + "outputs": [ + { + "name": "Filenames", + "type": "VHS_FILENAMES", + "links": null, + "shape": 3 + } + ], + "properties": { + "Node name for S&R": "VHS_VideoCombine" + }, + "widgets_values": { + "frame_rate": 30, + "loop_count": 0, + "filename_prefix": "AnimateDiff", + "format": "video/h264-mp4", + "pix_fmt": "yuv420p", + "crf": 19, + "save_metadata": true, + "trim_to_audio": false, + "pingpong": false, + "save_output": true, + "videopreview": { + "hidden": false, + "paused": false, + "params": { + "filename": "AnimateDiff_07008-audio.mp4", + "subfolder": "", + "type": "output", + "format": "video/h264-mp4", + "frame_rate": 30 + }, + "muted": false + } + } + }, + { + "id": 377, + "type": "VAEDecode", + "pos": [ + 12772.5537109375, + 660 + ], + "size": [ + 210, + 46 + ], + "flags": {}, + "order": 101, + "mode": 0, + "inputs": [ + { + "name": "samples", + "type": "LATENT", + "link": 584 + }, + { + "name": "vae", + "type": "VAE", + "link": 624 + } + ], + "outputs": [ + { + "name": "IMAGE", + "type": "IMAGE", + "links": [ + 588 + ], + "slot_index": 0 + } + ], + "properties": { + "Node name for S&R": "VAEDecode" + }, + "widgets_values": [] + }, + { + "id": 379, + "type": "GetImageSizeAndCount", + "pos": [ + 13042.5537109375, + 760 + ], + "size": [ + 210, + 86 + ], + "flags": {}, + "order": 103, + "mode": 0, + "inputs": [ + { + "name": "image", + "type": "IMAGE", + "link": 588 + } + ], + "outputs": [ + { + "name": "image", + "type": "IMAGE", + "links": [ + 586 + ], + "slot_index": 0, + "shape": 3 + }, + { + "name": "width", + "type": "INT", + "links": [], + "slot_index": 1, + "shape": 3 + }, + { + "name": "height", + "type": "INT", + "links": null, + "shape": 3 + }, + { + "name": "count", + "type": "INT", + "links": null, + "shape": 3 + } + ], + "properties": { + "Node name for S&R": "GetImageSizeAndCount" + }, + "widgets_values": [] + }, + { + "id": 393, + "type": "GetNode", + "pos": [ + 14842.5546875, + 410 + ], + "size": [ + 210, + 58 + ], + "flags": {}, + "order": 10, + "mode": 0, + "inputs": [], + "outputs": [ + { + "name": "AUDIO", + "type": "AUDIO", + "links": [ + 610 + ], + "slot_index": 0 + } + ], + "title": "Get_audio", + "properties": {}, + "widgets_values": [ + "audio" + ] + }, + { + "id": 399, + "type": "SetNode", + "pos": [ + 9401.212890625, + -274.5577697753906 + ], + "size": [ + 210, + 58 + ], + "flags": {}, + "order": 29, + "mode": 0, + "inputs": [ + { + "name": "CLIP", + "type": "CLIP", + "link": 619 + } + ], + "outputs": [ + { + "name": "*", + "type": "*", + "links": null + } + ], + "title": "Set_clip", + "properties": { + "previousName": "clip" + }, + "widgets_values": [ + "clip" + ], + "color": "#432", + "bgcolor": "#653" + }, + { + "id": 398, + "type": "SetNode", + "pos": [ + 9401.212890625, + -144.55787658691406 + ], + "size": [ + 210, + 58 + ], + "flags": {}, + "order": 30, + "mode": 0, + "inputs": [ + { + "name": "VAE", + "type": "VAE", + "link": 620 + } + ], + "outputs": [ + { + "name": "*", + "type": "*", + "links": null + } + ], + "title": "Set_vae", + "properties": { + "previousName": "vae" + }, + "widgets_values": [ + "vae" + ], + "color": "#322", + "bgcolor": "#533" + }, + { + "id": 400, + "type": "SetNode", + "pos": [ + 9401.212890625, + -384.55780029296875 + ], + "size": [ + 210, + 58 + ], + "flags": {}, + "order": 28, + "mode": 0, + "inputs": [ + { + "name": "MODEL", + "type": "MODEL", + "link": 618 + } + ], + "outputs": [ + { + "name": "*", + "type": "*", + "links": null + } + ], + "title": "Set_model", + "properties": { + "previousName": "model" + }, + "widgets_values": [ + "model" + ], + "color": "#223", + "bgcolor": "#335" + }, + { + "id": 362, + "type": "CheckpointLoaderSimple", + "pos": [ + 8941.2099609375, + -104.5577621459961 + ], + "size": [ + 315, + 98 + ], + "flags": {}, + "order": 11, + "mode": 0, + "inputs": [], + "outputs": [ + { + "name": "MODEL", + "type": "MODEL", + "links": [ + 618 + ], + "slot_index": 0 + }, + { + "name": "CLIP", + "type": "CLIP", + "links": [ + 619 + ], + "slot_index": 1 + }, + { + "name": "VAE", + "type": "VAE", + "links": [ + 620 + ], + "slot_index": 2 + } + ], + "properties": { + "Node name for S&R": "CheckpointLoaderSimple" + }, + "widgets_values": [ + "photonLCM_v10.safetensors" + ] + }, + { + "id": 383, + "type": "CR Apply LoRA Stack", + "pos": [ + 9237.7529296875, + 582.1439208984375 + ], + "size": [ + 254.40000915527344, + 66 + ], + "flags": {}, + "order": 34, + "mode": 0, + "inputs": [ + { + "name": "model", + "type": "MODEL", + "link": 622 + }, + { + "name": "clip", + "type": "CLIP", + "link": 621 + }, + { + "name": "lora_stack", + "type": "LORA_STACK", + "link": 593 + } + ], + "outputs": [ + { + "name": "MODEL", + "type": "MODEL", + "links": [ + 596 + ], + "slot_index": 0, + "shape": 3 + }, + { + "name": "CLIP", + "type": "CLIP", + "links": [ + 569, + 570 + ], + "slot_index": 1, + "shape": 3 + }, + { + "name": "show_help", + "type": "STRING", + "links": null, + "shape": 3 + } + ], + "properties": { + "Node name for S&R": "CR Apply LoRA Stack" + }, + "widgets_values": [] + }, + { + "id": 402, + "type": "GetNode", + "pos": [ + 9007.76171875, + 432.143310546875 + ], + "size": [ + 210, + 58 + ], + "flags": {}, + "order": 12, + "mode": 0, + "inputs": [], + "outputs": [ + { + "name": "MODEL", + "type": "MODEL", + "links": [ + 622 + ], + "slot_index": 0 + } + ], + "title": "Get_model", + "properties": {}, + "widgets_values": [ + "model" + ] + }, + { + "id": 403, + "type": "GetNode", + "pos": [ + 9267.76171875, + 712.14306640625 + ], + "size": [ + 210, + 58 + ], + "flags": {}, + "order": 13, + "mode": 0, + "inputs": [], + "outputs": [ + { + "name": "VAE", + "type": "VAE", + "links": [ + 623 + ], + "slot_index": 0 + } + ], + "title": "Get_vae", + "properties": {}, + "widgets_values": [ + "vae" + ] + }, + { + "id": 401, + "type": "GetNode", + "pos": [ + 8997.76171875, + 332.143310546875 + ], + "size": [ + 210, + 58 + ], + "flags": {}, + "order": 14, + "mode": 0, + "inputs": [], + "outputs": [ + { + "name": "CLIP", + "type": "CLIP", + "links": [ + 621 + ], + "slot_index": 0 + } + ], + "title": "Get_clip", + "properties": {}, + "widgets_values": [ + "clip" + ] + }, + { + "id": 407, + "type": "SetNode", + "pos": [ + 7206, + 334 + ], + "size": [ + 210, + 58 + ], + "flags": {}, + "order": 97, + "mode": 0, + "inputs": [ + { + "name": "MASK", + "type": "MASK", + "link": 629 + } + ], + "outputs": [ + { + "name": "*", + "type": "*", + "links": null + } + ], + "title": "Set_mouth_mask", + "properties": { + "previousName": "mouth_mask" + }, + "widgets_values": [ + "mouth_mask" + ], + "color": "#1c5715", + "bgcolor": "#1f401b" + }, + { + "id": 409, + "type": "SetNode", + "pos": [ + 7146.2333984375, + 1010.7202758789062 + ], + "size": [ + 210, + 58 + ], + "flags": {}, + "order": 89, + "mode": 0, + "inputs": [ + { + "name": "IMAGE", + "type": "IMAGE", + "link": 688 + } + ], + "outputs": [ + { + "name": "*", + "type": "*", + "links": null + } + ], + "title": "Set_mouth_img", + "properties": { + "previousName": "mouth_img" + }, + "widgets_values": [ + "mouth_img" + ], + "color": "#2a363b", + "bgcolor": "#3f5159" + }, + { + "id": 392, + "type": "GetImageSizeAndCount", + "pos": [ + 14532.5537109375, + 700 + ], + "size": [ + 210, + 86 + ], + "flags": {}, + "order": 107, + "mode": 0, + "inputs": [ + { + "name": "image", + "type": "IMAGE", + "link": 611 + } + ], + "outputs": [ + { + "name": "image", + "type": "IMAGE", + "links": [ + 637 + ], + "slot_index": 0, + "shape": 3 + }, + { + "name": "width", + "type": "INT", + "links": [], + "slot_index": 1, + "shape": 3 + }, + { + "name": "height", + "type": "INT", + "links": null, + "shape": 3 + }, + { + "name": "count", + "type": "INT", + "links": null, + "shape": 3 + } + ], + "properties": { + "Node name for S&R": "GetImageSizeAndCount" + }, + "widgets_values": [] + }, + { + "id": 315, + "type": "VHS_LoadVideo", + "pos": [ + 2313, + 342 + ], + "size": [ + 247.455078125, + 262 + ], + "flags": {}, + "order": 31, + "mode": 0, + "inputs": [ + { + "name": "meta_batch", + "type": "VHS_BatchManager", + "link": null, + "shape": 7 + }, + { + "name": "vae", + "type": "VAE", + "link": null, + "shape": 7 + }, + { + "name": "frame_load_cap", + "type": "*", + "link": 536, + "widget": { + "name": "frame_load_cap" + } + } + ], + "outputs": [ + { + "name": "IMAGE", + "type": "IMAGE", + "links": [ + 682 + ], + "slot_index": 0, + "shape": 3 + }, + { + "name": "frame_count", + "type": "INT", + "links": null, + "shape": 3 + }, + { + "name": "audio", + "type": "AUDIO", + "links": null, + "shape": 3 + }, + { + "name": "video_info", + "type": "VHS_VIDEOINFO", + "links": null, + "shape": 3 + } + ], + "properties": { + "Node name for S&R": "VHS_LoadVideo" + }, + "widgets_values": { + "video": "deexlipsynbc.mp4", + "force_rate": 30, + "force_size": "Disabled", + "custom_width": 512, + "custom_height": 512, + "frame_load_cap": 450, + "skip_first_frames": 200, + "select_every_nth": 1, + "choose video to upload": "image", + "videopreview": { + "hidden": false, + "paused": false, + "params": { + "frame_load_cap": 450, + "skip_first_frames": 200, + "force_rate": 30, + "filename": "deexlipsynbc.mp4", + "type": "input", + "format": "video/mp4", + "select_every_nth": 1 + }, + "muted": false + } + } + }, + { + "id": 348, + "type": "GetNode", + "pos": [ + 2331, + 230 + ], + "size": [ + 210, + 58 + ], + "flags": {}, + "order": 15, + "mode": 0, + "inputs": [], + "outputs": [ + { + "name": "INT", + "type": "INT", + "links": [ + 536 + ], + "slot_index": 0 + } + ], + "title": "Get_frame_count", + "properties": {}, + "widgets_values": [ + "frame_count" + ] + }, + { + "id": 353, + "type": "VHS_VideoCombine", + "pos": [ + 3179, + 323 + ], + "size": [ + 214.7587890625, + 334 + ], + "flags": {}, + "order": 65, + "mode": 4, + "inputs": [ + { + "name": "images", + "type": "IMAGE", + "link": 683 + }, + { + "name": "audio", + "type": "AUDIO", + "link": null, + "shape": 7 + }, + { + "name": "meta_batch", + "type": "VHS_BatchManager", + "link": null, + "shape": 7 + }, + { + "name": "vae", + "type": "VAE", + "link": null, + "shape": 7 + } + ], + "outputs": [ + { + "name": "Filenames", + "type": "VHS_FILENAMES", + "links": null, + "shape": 3 + } + ], + "properties": { + "Node name for S&R": "VHS_VideoCombine" + }, + "widgets_values": { + "frame_rate": 30, + "loop_count": 0, + "filename_prefix": "AnimateDiff", + "format": "video/h264-mp4", + "pix_fmt": "yuv420p", + "crf": 19, + "save_metadata": true, + "trim_to_audio": false, + "pingpong": false, + "save_output": true, + "videopreview": { + "hidden": false, + "paused": false, + "params": { + "filename": "AnimateDiff_07010.mp4", + "subfolder": "", + "type": "output", + "format": "video/h264-mp4", + "frame_rate": 30 + }, + "muted": false + } + } + }, + { + "id": 324, + "type": "MediaPipe-FaceMeshPreprocessor", + "pos": [ + 3444, + 496 + ], + "size": [ + 315, + 106 + ], + "flags": {}, + "order": 77, + "mode": 0, + "inputs": [ + { + "name": "image", + "type": "IMAGE", + "link": 546 + } + ], + "outputs": [ + { + "name": "IMAGE", + "type": "IMAGE", + "links": [ + 552, + 555 + ], + "slot_index": 0, + "shape": 3 + } + ], + "properties": { + "Node name for S&R": "MediaPipe-FaceMeshPreprocessor" + }, + "widgets_values": [ + 1, + 0.1, + 512 + ], + "color": "#223", + "bgcolor": "#335" + }, + { + "id": 355, + "type": "ImageListToImageBatch", + "pos": [ + 3453, + 800 + ], + "size": [ + 210, + 26 + ], + "flags": {}, + "order": 82, + "mode": 0, + "inputs": [ + { + "name": "images", + "type": "IMAGE", + "link": 555 + } + ], + "outputs": [ + { + "name": "IMAGE", + "type": "IMAGE", + "links": [ + 685 + ], + "slot_index": 0, + "shape": 3 + } + ], + "properties": { + "Node name for S&R": "ImageListToImageBatch" + }, + "widgets_values": [] + }, + { + "id": 337, + "type": "ImpactSEGSToMaskList", + "pos": [ + 4208, + 293 + ], + "size": [ + 322.8110656738281, + 36.70903778076172 + ], + "flags": {}, + "order": 84, + "mode": 0, + "inputs": [ + { + "name": "segs", + "type": "SEGS", + "link": 522 + } + ], + "outputs": [ + { + "name": "MASK", + "type": "MASK", + "links": [ + 524 + ], + "slot_index": 0, + "shape": 6 + } + ], + "properties": { + "Node name for S&R": "ImpactSEGSToMaskList" + }, + "widgets_values": [], + "color": "#223", + "bgcolor": "#335" + }, + { + "id": 339, + "type": "GrowMaskWithBlur", + "pos": [ + 4212, + 383 + ], + "size": [ + 324.2040100097656, + 246 + ], + "flags": {}, + "order": 87, + "mode": 0, + "inputs": [ + { + "name": "mask", + "type": "MASK", + "link": 524 + } + ], + "outputs": [ + { + "name": "mask", + "type": "MASK", + "links": [ + 523 + ], + "slot_index": 0, + "shape": 3 + }, + { + "name": "mask_inverted", + "type": "MASK", + "links": null, + "shape": 3 + } + ], + "properties": { + "Node name for S&R": "GrowMaskWithBlur" + }, + "widgets_values": [ + 7, + 0, + true, + false, + 12, + 1, + 1, + false + ], + "color": "#223", + "bgcolor": "#335" + }, + { + "id": 338, + "type": "MaskToImage", + "pos": [ + 4585, + 381 + ], + "size": [ + 300.6851806640625, + 26 + ], + "flags": {}, + "order": 90, + "mode": 0, + "inputs": [ + { + "name": "mask", + "type": "MASK", + "link": 523 + } + ], + "outputs": [ + { + "name": "IMAGE", + "type": "IMAGE", + "links": [ + 525 + ], + "slot_index": 0, + "shape": 3 + } + ], + "properties": { + "Node name for S&R": "MaskToImage" + }, + "widgets_values": [], + "color": "#223", + "bgcolor": "#335" + }, + { + "id": 340, + "type": "ImageListToImageBatch", + "pos": [ + 4601, + 478 + ], + "size": [ + 210, + 26 + ], + "flags": {}, + "order": 91, + "mode": 0, + "inputs": [ + { + "name": "images", + "type": "IMAGE", + "link": 525 + } + ], + "outputs": [ + { + "name": "IMAGE", + "type": "IMAGE", + "links": [ + 551, + 689 + ], + "slot_index": 0, + "shape": 3 + } + ], + "properties": { + "Node name for S&R": "ImageListToImageBatch" + }, + "widgets_values": [], + "color": "#223", + "bgcolor": "#335" + }, + { + "id": 360, + "type": "VHS_VideoCombine", + "pos": [ + 5985, + 256 + ], + "size": [ + 214.7587890625, + 334 + ], + "flags": {}, + "order": 94, + "mode": 4, + "inputs": [ + { + "name": "images", + "type": "IMAGE", + "link": 690 + }, + { + "name": "audio", + "type": "AUDIO", + "link": null, + "shape": 7 + }, + { + "name": "meta_batch", + "type": "VHS_BatchManager", + "link": null, + "shape": 7 + }, + { + "name": "vae", + "type": "VAE", + "link": null, + "shape": 7 + } + ], + "outputs": [ + { + "name": "Filenames", + "type": "VHS_FILENAMES", + "links": null, + "shape": 3 + } + ], + "properties": { + "Node name for S&R": "VHS_VideoCombine" + }, + "widgets_values": { + "frame_rate": 30, + "loop_count": 0, + "filename_prefix": "AnimateDiff", + "format": "video/h264-mp4", + "pix_fmt": "yuv420p", + "crf": 19, + "save_metadata": true, + "trim_to_audio": false, + "pingpong": false, + "save_output": true, + "videopreview": { + "hidden": false, + "paused": false, + "params": { + "filename": "AnimateDiff_07014.mp4", + "subfolder": "", + "type": "output", + "format": "video/h264-mp4", + "frame_rate": 30 + }, + "muted": false + } + } + }, + { + "id": 361, + "type": "VHS_VideoCombine", + "pos": [ + 5956, + 754 + ], + "size": [ + 214.7587890625, + 334 + ], + "flags": {}, + "order": 88, + "mode": 4, + "inputs": [ + { + "name": "images", + "type": "IMAGE", + "link": 686 + }, + { + "name": "audio", + "type": "AUDIO", + "link": null, + "shape": 7 + }, + { + "name": "meta_batch", + "type": "VHS_BatchManager", + "link": null, + "shape": 7 + }, + { + "name": "vae", + "type": "VAE", + "link": null, + "shape": 7 + } + ], + "outputs": [ + { + "name": "Filenames", + "type": "VHS_FILENAMES", + "links": null, + "shape": 3 + } + ], + "properties": { + "Node name for S&R": "VHS_VideoCombine" + }, + "widgets_values": { + "frame_rate": 30, + "loop_count": 0, + "filename_prefix": "AnimateDiff", + "format": "video/h264-mp4", + "pix_fmt": "yuv420p", + "crf": 19, + "save_metadata": true, + "trim_to_audio": false, + "pingpong": false, + "save_output": true, + "videopreview": { + "hidden": false, + "paused": false, + "params": { + "filename": "AnimateDiff_07012.mp4", + "subfolder": "", + "type": "output", + "format": "video/h264-mp4", + "frame_rate": 30 + }, + "muted": false + } + } + }, + { + "id": 341, + "type": "ImageToMask", + "pos": [ + 6281, + 318 + ], + "size": [ + 315, + 58 + ], + "flags": {}, + "order": 95, + "mode": 0, + "inputs": [ + { + "name": "image", + "type": "IMAGE", + "link": 691 + } + ], + "outputs": [ + { + "name": "MASK", + "type": "MASK", + "links": [ + 531, + 629 + ], + "slot_index": 0, + "shape": 3 + } + ], + "properties": { + "Node name for S&R": "ImageToMask" + }, + "widgets_values": [ + "blue" + ], + "color": "#223", + "bgcolor": "#335" + }, + { + "id": 49, + "type": "PreviewAudio", + "pos": [ + -1762, + 571 + ], + "size": [ + 315, + 76 + ], + "flags": {}, + "order": 40, + "mode": 0, + "inputs": [ + { + "name": "audio", + "type": "AUDIO", + "link": 56 + } + ], + "outputs": [], + "properties": { + "Node name for S&R": "PreviewAudio" + }, + "widgets_values": [ + null + ] + }, + { + "id": 412, + "type": "PreviewAudio", + "pos": [ + -1757, + 741 + ], + "size": [ + 315, + 76 + ], + "flags": {}, + "order": 41, + "mode": 0, + "inputs": [ + { + "name": "audio", + "type": "AUDIO", + "link": 639 + } + ], + "outputs": [], + "properties": { + "Node name for S&R": "PreviewAudio" + }, + "widgets_values": [ + null + ] + }, + { + "id": 293, + "type": "GetNode", + "pos": [ + 7298, + 672 + ], + "size": [ + 210, + 58 + ], + "flags": {}, + "order": 16, + "mode": 0, + "inputs": [], + "outputs": [ + { + "name": "AUDIO", + "type": "AUDIO", + "links": [ + 516 + ], + "slot_index": 0 + } + ], + "title": "Get_audio", + "properties": {}, + "widgets_values": [ + "audio" + ] + }, + { + "id": 41, + "type": "DownloadOpenUnmixModel", + "pos": [ + -2059, + 1059 + ], + "size": [ + 361.20001220703125, + 58 + ], + "flags": {}, + "order": 17, + "mode": 0, + "inputs": [], + "outputs": [ + { + "name": "OPEN_UNMIX_MODEL", + "type": "OPEN_UNMIX_MODEL", + "links": [ + 650 + ], + "slot_index": 0, + "shape": 3 + } + ], + "properties": { + "Node name for S&R": "DownloadOpenUnmixModel" + }, + "widgets_values": [ + "umxl" + ] + }, + { + "id": 269, + "type": "GetNode", + "pos": [ + -230, + 930 + ], + "size": [ + 210, + 58 + ], + "flags": {}, + "order": 18, + "mode": 0, + "inputs": [], + "outputs": [ + { + "name": "AUDIO", + "type": "AUDIO", + "links": [ + 676, + 679 + ], + "slot_index": 0 + } + ], + "title": "Get_audio__vocals", + "properties": {}, + "widgets_values": [ + "audio__vocals" + ] + }, + { + "id": 290, + "type": "MaskComposite", + "pos": [ + 920, + 890 + ], + "size": [ + 315, + 126 + ], + "flags": {}, + "order": 47, + "mode": 0, + "inputs": [ + { + "name": "destination", + "type": "MASK", + "link": 678 + }, + { + "name": "source", + "type": "MASK", + "link": 681 + } + ], + "outputs": [ + { + "name": "MASK", + "type": "MASK", + "links": [ + 529, + 532 + ], + "slot_index": 0, + "shape": 3 + } + ], + "properties": { + "Node name for S&R": "MaskComposite" + }, + "widgets_values": [ + 0, + 0, + "add" + ] + }, + { + "id": 336, + "type": "MediaPipeFaceMeshToSEGS", + "pos": [ + 3852, + 281 + ], + "size": [ + 315, + 346 + ], + "flags": {}, + "order": 81, + "mode": 0, + "inputs": [ + { + "name": "image", + "type": "IMAGE", + "link": 552 + } + ], + "outputs": [ + { + "name": "SEGS", + "type": "SEGS", + "links": [ + 522 + ], + "slot_index": 0, + "shape": 3 + } + ], + "properties": { + "Node name for S&R": "MediaPipeFaceMeshToSEGS" + }, + "widgets_values": [ + 2.4000000000000004, + false, + 10, + 1, + 0, + false, + true, + false, + false, + false, + false, + false, + false + ], + "color": "#223", + "bgcolor": "#335" + }, + { + "id": 342, + "type": "ImageCompositeMasked", + "pos": [ + 6785, + 548 + ], + "size": [ + 315, + 146 + ], + "flags": {}, + "order": 96, + "mode": 0, + "inputs": [ + { + "name": "destination", + "type": "IMAGE", + "link": 558 + }, + { + "name": "source", + "type": "IMAGE", + "link": 687 + }, + { + "name": "mask", + "type": "MASK", + "link": 531, + "shape": 7 + } + ], + "outputs": [ + { + "name": "IMAGE", + "type": "IMAGE", + "links": [ + 541, + 599 + ], + "slot_index": 0, + "shape": 3 + } + ], + "properties": { + "Node name for S&R": "ImageCompositeMasked" + }, + "widgets_values": [ + 0, + 0, + true + ] + }, + { + "id": 382, + "type": "CR LoRA Stack", + "pos": [ + 8837, + 637 + ], + "size": [ + 315, + 342 + ], + "flags": {}, + "order": 19, + "mode": 0, + "inputs": [ + { + "name": "lora_stack", + "type": "LORA_STACK", + "link": null, + "shape": 7 + } + ], + "outputs": [ + { + "name": "LORA_STACK", + "type": "LORA_STACK", + "links": [ + 593 + ], + "slot_index": 0, + "shape": 3 + }, + { + "name": "show_help", + "type": "STRING", + "links": null, + "shape": 3 + } + ], + "properties": { + "Node name for S&R": "CR LoRA Stack" + }, + "widgets_values": [ + "On", + "add_detail.safetensors", + 0.4, + 0.4, + "On", + "ral-acidzlime-sd15.safetensors", + 1, + 1, + "Off", + "halloweenTech-202.safetensors", + 0.3, + 0.3 + ] + }, + { + "id": 388, + "type": "VAEEncode", + "pos": [ + 9838, + 992 + ], + "size": [ + 210, + 46 + ], + "flags": {}, + "order": 99, + "mode": 0, + "inputs": [ + { + "name": "pixels", + "type": "IMAGE", + "link": 599 + }, + { + "name": "vae", + "type": "VAE", + "link": 623 + } + ], + "outputs": [ + { + "name": "LATENT", + "type": "LATENT", + "links": [ + 600 + ], + "slot_index": 0, + "shape": 3 + } + ], + "properties": { + "Node name for S&R": "VAEEncode" + }, + "widgets_values": [] + }, + { + "id": 363, + "type": "CLIPTextEncode", + "pos": [ + 9560, + 387 + ], + "size": [ + 422.84503173828125, + 164.31304931640625 + ], + "flags": {}, + "order": 49, + "mode": 0, + "inputs": [ + { + "name": "clip", + "type": "CLIP", + "link": 569 + } + ], + "outputs": [ + { + "name": "CONDITIONING", + "type": "CONDITIONING", + "links": [ + 641, + 643 + ], + "slot_index": 0 + } + ], + "properties": { + "Node name for S&R": "CLIPTextEncode" + }, + "widgets_values": [ + "acidzlime, dripping slime, disembodied mouth singing" + ] + }, + { + "id": 364, + "type": "CLIPTextEncode", + "pos": [ + 9537.7529296875, + 672.1439208984375 + ], + "size": [ + 425.27801513671875, + 180.6060791015625 + ], + "flags": {}, + "order": 50, + "mode": 0, + "inputs": [ + { + "name": "clip", + "type": "CLIP", + "link": 570 + } + ], + "outputs": [ + { + "name": "CONDITIONING", + "type": "CONDITIONING", + "links": [ + 642, + 644 + ], + "slot_index": 0 + } + ], + "properties": { + "Node name for S&R": "CLIPTextEncode" + }, + "widgets_values": [ + "text, watermark" + ] + }, + { + "id": 404, + "type": "GetNode", + "pos": [ + 12450, + 463 + ], + "size": [ + 210, + 58 + ], + "flags": {}, + "order": 20, + "mode": 0, + "inputs": [], + "outputs": [ + { + "name": "VAE", + "type": "VAE", + "links": [ + 624, + 625 + ], + "slot_index": 0 + } + ], + "title": "Get_vae", + "properties": {}, + "widgets_values": [ + "vae" + ] + }, + { + "id": 376, + "type": "KSampler", + "pos": [ + 12419, + 631 + ], + "size": [ + 303.4075622558594, + 262 + ], + "flags": {}, + "order": 100, + "mode": 0, + "inputs": [ + { + "name": "model", + "type": "MODEL", + "link": 582 + }, + { + "name": "positive", + "type": "CONDITIONING", + "link": 641 + }, + { + "name": "negative", + "type": "CONDITIONING", + "link": 642 + }, + { + "name": "latent_image", + "type": "LATENT", + "link": 600 + } + ], + "outputs": [ + { + "name": "LATENT", + "type": "LATENT", + "links": [ + 584, + 612 + ], + "slot_index": 0 + } + ], + "properties": { + "Node name for S&R": "KSampler" + }, + "widgets_values": [ + 156680208700286, + "fixed", + 4, + 1, + "lcm", + "sgm_uniform", + 0.56 + ] + }, + { + "id": 334, + "type": "VHS_VideoCombine", + "pos": [ + 8445, + 389 + ], + "size": [ + 214.7587890625, + 334 + ], + "flags": {}, + "order": 98, + "mode": 0, + "inputs": [ + { + "name": "images", + "type": "IMAGE", + "link": 541 + }, + { + "name": "audio", + "type": "AUDIO", + "link": 516, + "shape": 7 + }, + { + "name": "meta_batch", + "type": "VHS_BatchManager", + "link": null, + "shape": 7 + }, + { + "name": "vae", + "type": "VAE", + "link": null, + "shape": 7 + } + ], + "outputs": [ + { + "name": "Filenames", + "type": "VHS_FILENAMES", + "links": null, + "shape": 3 + } + ], + "properties": { + "Node name for S&R": "VHS_VideoCombine" + }, + "widgets_values": { + "frame_rate": 30, + "loop_count": 0, + "filename_prefix": "AnimateDiff", + "format": "video/h264-mp4", + "pix_fmt": "yuv420p", + "crf": 19, + "save_metadata": true, + "trim_to_audio": false, + "pingpong": false, + "save_output": true, + "videopreview": { + "hidden": false, + "paused": false, + "params": { + "filename": "AnimateDiff_07391-audio.mp4", + "subfolder": "", + "type": "output", + "format": "video/h264-mp4", + "frame_rate": 30 + }, + "muted": false + } + } + }, + { + "id": 378, + "type": "VHS_VideoCombine", + "pos": [ + 13344, + 514 + ], + "size": [ + 365.99755859375, + 334 + ], + "flags": {}, + "order": 105, + "mode": 0, + "inputs": [ + { + "name": "images", + "type": "IMAGE", + "link": 586 + }, + { + "name": "audio", + "type": "AUDIO", + "link": 587, + "shape": 7 + }, + { + "name": "meta_batch", + "type": "VHS_BatchManager", + "link": null, + "shape": 7 + }, + { + "name": "vae", + "type": "VAE", + "link": null, + "shape": 7 + } + ], + "outputs": [ + { + "name": "Filenames", + "type": "VHS_FILENAMES", + "links": null, + "shape": 3 + } + ], + "properties": { + "Node name for S&R": "VHS_VideoCombine" + }, + "widgets_values": { + "frame_rate": 30, + "loop_count": 0, + "filename_prefix": "AnimateDiff", + "format": "video/h264-mp4", + "pix_fmt": "yuv420p", + "crf": 19, + "save_metadata": true, + "trim_to_audio": false, + "pingpong": false, + "save_output": true, + "videopreview": { + "hidden": false, + "paused": false, + "params": { + "filename": "AnimateDiff_07392-audio.mp4", + "subfolder": "", + "type": "output", + "format": "video/h264-mp4", + "frame_rate": 30 + }, + "muted": false + } + } + }, + { + "id": 394, + "type": "NNLatentUpscale", + "pos": [ + 13788, + 601 + ], + "size": [ + 315, + 82 + ], + "flags": {}, + "order": 102, + "mode": 0, + "inputs": [ + { + "name": "latent", + "type": "LATENT", + "link": 612 + } + ], + "outputs": [ + { + "name": "LATENT", + "type": "LATENT", + "links": [ + 613 + ], + "slot_index": 0, + "shape": 3 + } + ], + "properties": { + "Node name for S&R": "NNLatentUpscale" + }, + "widgets_values": [ + "SD 1.x", + 1.5 + ] + }, + { + "id": 389, + "type": "KSampler", + "pos": [ + 14156, + 732 + ], + "size": [ + 303.4075622558594, + 262 + ], + "flags": {}, + "order": 104, + "mode": 0, + "inputs": [ + { + "name": "model", + "type": "MODEL", + "link": 603 + }, + { + "name": "positive", + "type": "CONDITIONING", + "link": 643 + }, + { + "name": "negative", + "type": "CONDITIONING", + "link": 644 + }, + { + "name": "latent_image", + "type": "LATENT", + "link": 613 + } + ], + "outputs": [ + { + "name": "LATENT", + "type": "LATENT", + "links": [ + 607 + ], + "slot_index": 0 + } + ], + "properties": { + "Node name for S&R": "KSampler" + }, + "widgets_values": [ + 156680208700286, + "fixed", + 4, + 1, + "lcm", + "sgm_uniform", + 0.4 + ] + }, + { + "id": 390, + "type": "VAEDecode", + "pos": [ + 14518, + 571 + ], + "size": [ + 210, + 46 + ], + "flags": {}, + "order": 106, + "mode": 0, + "inputs": [ + { + "name": "samples", + "type": "LATENT", + "link": 607 + }, + { + "name": "vae", + "type": "VAE", + "link": 625 + } + ], + "outputs": [ + { + "name": "IMAGE", + "type": "IMAGE", + "links": [ + 611 + ], + "slot_index": 0 + } + ], + "properties": { + "Node name for S&R": "VAEDecode" + }, + "widgets_values": [] + }, + { + "id": 411, + "type": "ImageCASBatch", + "pos": [ + 14563, + 810 + ], + "size": [ + 462, + 103.51498413085938 + ], + "flags": {}, + "order": 108, + "mode": 0, + "inputs": [ + { + "name": "image", + "type": "IMAGE", + "link": 637 + } + ], + "outputs": [ + { + "name": "IMAGE", + "type": "IMAGE", + "links": [ + 638 + ], + "slot_index": 0, + "shape": 3 + } + ], + "properties": { + "Node name for S&R": "ImageCASBatch" + }, + "widgets_values": [ + 0.8, + 4 + ] + }, + { + "id": 391, + "type": "VHS_VideoCombine", + "pos": [ + 15233, + 556 + ], + "size": [ + 365.99755859375, + 334 + ], + "flags": {}, + "order": 109, + "mode": 0, + "inputs": [ + { + "name": "images", + "type": "IMAGE", + "link": 638 + }, + { + "name": "audio", + "type": "AUDIO", + "link": 610, + "shape": 7 + }, + { + "name": "meta_batch", + "type": "VHS_BatchManager", + "link": null, + "shape": 7 + }, + { + "name": "vae", + "type": "VAE", + "link": null, + "shape": 7 + } + ], + "outputs": [ + { + "name": "Filenames", + "type": "VHS_FILENAMES", + "links": null, + "shape": 3 + } + ], + "properties": { + "Node name for S&R": "VHS_VideoCombine" + }, + "widgets_values": { + "frame_rate": 30, + "loop_count": 0, + "filename_prefix": "AnimateDiff", + "format": "video/h264-mp4", + "pix_fmt": "yuv420p", + "crf": 19, + "save_metadata": true, + "trim_to_audio": false, + "pingpong": false, + "save_output": true, + "videopreview": { + "hidden": false, + "paused": false, + "params": { + "filename": "AnimateDiff_07393-audio.mp4", + "subfolder": "", + "type": "output", + "format": "video/h264-mp4", + "frame_rate": 30 + }, + "muted": false + } + } + }, + { + "id": 354, + "type": "VHS_VideoCombine", + "pos": [ + 4569, + 648 + ], + "size": [ + 214.7587890625, + 334 + ], + "flags": {}, + "order": 92, + "mode": 4, + "inputs": [ + { + "name": "images", + "type": "IMAGE", + "link": 551 + }, + { + "name": "audio", + "type": "AUDIO", + "link": null, + "shape": 7 + }, + { + "name": "meta_batch", + "type": "VHS_BatchManager", + "link": null, + "shape": 7 + }, + { + "name": "vae", + "type": "VAE", + "link": null, + "shape": 7 + } + ], + "outputs": [ + { + "name": "Filenames", + "type": "VHS_FILENAMES", + "links": null, + "shape": 3 + } + ], + "properties": { + "Node name for S&R": "VHS_VideoCombine" + }, + "widgets_values": { + "frame_rate": 30, + "loop_count": 0, + "filename_prefix": "AnimateDiff", + "format": "video/h264-mp4", + "pix_fmt": "yuv420p", + "crf": 19, + "save_metadata": true, + "trim_to_audio": false, + "pingpong": false, + "save_output": true, + "videopreview": { + "hidden": false, + "paused": false, + "params": { + "filename": "AnimateDiff_07011.mp4", + "subfolder": "", + "type": "output", + "format": "video/h264-mp4", + "frame_rate": 30 + }, + "muted": false + } + } + }, + { + "id": 417, + "type": "FloatConstant", + "pos": [ + -2826.76025390625, + 844.32177734375 + ], + "size": [ + 210, + 58 + ], + "flags": {}, + "order": 21, + "mode": 0, + "inputs": [], + "outputs": [ + { + "name": "value", + "type": "FLOAT", + "links": [ + 645 + ], + "slot_index": 0 + } + ], + "properties": { + "Node name for S&R": "FloatConstant" + }, + "widgets_values": [ + 30.000000000000004 + ], + "color": "#232", + "bgcolor": "#353" + }, + { + "id": 418, + "type": "Anything Everywhere?", + "pos": [ + -2606.76025390625, + 604.3217163085938 + ], + "size": [ + 315, + 106 + ], + "flags": {}, + "order": 37, + "mode": 0, + "inputs": [ + { + "name": "INT", + "type": "*", + "link": 649, + "shape": 7, + "color_on": "" + } + ], + "outputs": [], + "properties": { + "Node name for S&R": "Anything Everywhere?", + "group_restricted": 0, + "color_restricted": 0 + }, + "widgets_values": [ + ".*", + "height", + ".*" + ] + }, + { + "id": 419, + "type": "Anything Everywhere?", + "pos": [ + -2636.76025390625, + 364.32183837890625 + ], + "size": [ + 315, + 106 + ], + "flags": {}, + "order": 36, + "mode": 0, + "inputs": [ + { + "name": "INT", + "type": "*", + "link": 648, + "shape": 7, + "color_on": "" + } + ], + "outputs": [], + "properties": { + "Node name for S&R": "Anything Everywhere?", + "group_restricted": 0, + "color_restricted": 0 + }, + "widgets_values": [ + ".*", + "width", + ".*" + ] + }, + { + "id": 420, + "type": "INTConstant", + "pos": [ + -2923.78662109375, + 613.5147705078125 + ], + "size": [ + 210, + 58 + ], + "flags": {}, + "order": 22, + "mode": 0, + "inputs": [], + "outputs": [ + { + "name": "value", + "type": "INT", + "links": [ + 648 + ], + "slot_index": 0 + } + ], + "properties": { + "Node name for S&R": "INTConstant" + }, + "widgets_values": [ + 768 + ], + "color": "#1b4669", + "bgcolor": "#29699c" + }, + { + "id": 421, + "type": "INTConstant", + "pos": [ + -2926.76025390625, + 404.3218078613281 + ], + "size": [ + 210, + 58 + ], + "flags": {}, + "order": 23, + "mode": 0, + "inputs": [], + "outputs": [ + { + "name": "value", + "type": "INT", + "links": [ + 649 + ], + "slot_index": 0 + } + ], + "properties": { + "Node name for S&R": "INTConstant" + }, + "widgets_values": [ + 464 + ], + "color": "#1b4669", + "bgcolor": "#29699c" + }, + { + "id": 424, + "type": "AudioSeparatorSimple", + "pos": [ + -1588.1632080078125, + 1049.7010498046875 + ], + "size": [ + 315, + 106 + ], + "flags": {}, + "order": 42, + "mode": 0, + "inputs": [ + { + "name": "model", + "type": "OPEN_UNMIX_MODEL", + "link": 650 + }, + { + "name": "audio", + "type": "AUDIO", + "link": 651 + } + ], + "outputs": [ + { + "name": "audio", + "type": "AUDIO", + "links": [ + 652 + ] + }, + { + "name": "drums_audio", + "type": "AUDIO", + "links": [ + 654, + 655, + 666, + 668 + ] + }, + { + "name": "vocals_audio", + "type": "AUDIO", + "links": [ + 656 + ] + }, + { + "name": "bass_audio", + "type": "AUDIO", + "links": [ + 658, + 672 + ] + }, + { + "name": "other_audio", + "type": "AUDIO", + "links": [ + 660, + 674 + ] + } + ], + "properties": { + "Node name for S&R": "AudioSeparatorSimple" + }, + "widgets_values": [] + }, + { + "id": 39, + "type": "VHS_LoadAudioUpload", + "pos": [ + -2168, + 869 + ], + "size": [ + 243.818359375, + 130 + ], + "flags": {}, + "order": 24, + "mode": 0, + "inputs": [], + "outputs": [ + { + "name": "audio", + "type": "AUDIO", + "links": [ + 38, + 48, + 56, + 639, + 651, + 664 + ], + "slot_index": 0, + "shape": 3 + } + ], + "properties": { + "Node name for S&R": "VHS_LoadAudioUpload" + }, + "widgets_values": { + "audio": "Delta Deez - Songfinch - Out the Mud.mp3", + "start_time": 75, + "duration": 7.5, + "choose audio to upload": "image" + } + }, + { + "id": 42, + "type": "EmptyImageAndMaskFromAudio", + "pos": [ + -2063, + 1249 + ], + "size": [ + 411.6000061035156, + 146 + ], + "flags": {}, + "order": 38, + "mode": 0, + "inputs": [ + { + "name": "audio", + "type": "AUDIO", + "link": 38 + } + ], + "outputs": [ + { + "name": "empty_image", + "type": "IMAGE", + "links": [ + 162 + ], + "slot_index": 0, + "shape": 3 + }, + { + "name": "empty_mask", + "type": "MASK", + "links": [ + 453 + ], + "slot_index": 1, + "shape": 3 + }, + { + "name": "frame_count", + "type": "INT", + "links": [ + 454, + 665 + ], + "slot_index": 2, + "shape": 3 + } + ], + "properties": { + "Node name for S&R": "EmptyImageAndMaskFromAudio" + }, + "widgets_values": [ + 30, + 768, + 464 + ] + }, + { + "id": 428, + "type": "AudioFeatureExtractor", + "pos": [ + -998.3270263671875, + 1554.645751953125 + ], + "size": [ + 415.8000183105469, + 174 + ], + "flags": { + "collapsed": true + }, + "order": 58, + "mode": 0, + "inputs": [ + { + "name": "audio", + "type": "AUDIO", + "link": 666 + }, + { + "name": "frame_rate", + "type": "FLOAT", + "link": null, + "widget": { + "name": "frame_rate" + } + }, + { + "name": "frame_count", + "type": "INT", + "link": null, + "widget": { + "name": "frame_count" + } + }, + { + "name": "width", + "type": "INT", + "link": null, + "widget": { + "name": "width" + } + }, + { + "name": "height", + "type": "INT", + "link": null, + "widget": { + "name": "height" + } + } + ], + "outputs": [ + { + "name": "feature", + "type": "FEATURE", + "links": [ + 670 + ], + "slot_index": 0 + }, + { + "name": "frame_count", + "type": "INT", + "links": null + } + ], + "properties": { + "Node name for S&R": "AudioFeatureExtractor" + }, + "widgets_values": [ + "amplitude_envelope", + 30, + 0, + 512, + 512 + ] + }, + { + "id": 429, + "type": "AudioFeatureExtractor", + "pos": [ + -1063.594970703125, + 1643.42626953125 + ], + "size": [ + 415.8000183105469, + 174 + ], + "flags": { + "collapsed": true + }, + "order": 59, + "mode": 0, + "inputs": [ + { + "name": "audio", + "type": "AUDIO", + "link": 668 + }, + { + "name": "frame_rate", + "type": "FLOAT", + "link": null, + "widget": { + "name": "frame_rate" + } + }, + { + "name": "frame_count", + "type": "INT", + "link": null, + "widget": { + "name": "frame_count" + } + }, + { + "name": "width", + "type": "INT", + "link": null, + "widget": { + "name": "width" + } + }, + { + "name": "height", + "type": "INT", + "link": null, + "widget": { + "name": "height" + } + } + ], + "outputs": [ + { + "name": "feature", + "type": "FEATURE", + "links": [ + 671 + ], + "slot_index": 0 + }, + { + "name": "frame_count", + "type": "INT", + "links": null + } + ], + "properties": { + "Node name for S&R": "AudioFeatureExtractor" + }, + "widgets_values": [ + "amplitude_envelope", + 30, + 0, + 512, + 512 + ] + }, + { + "id": 435, + "type": "FlexAudioVisualizerLine", + "pos": [ + 221.93997192382812, + 1085.797607421875 + ], + "size": [ + 453.5999755859375, + 630 + ], + "flags": {}, + "order": 33, + "mode": 0, + "inputs": [ + { + "name": "audio", + "type": "AUDIO", + "link": 679 + }, + { + "name": "opt_feature", + "type": "FEATURE", + "link": null, + "shape": 7 + }, + { + "name": "frame_rate", + "type": "FLOAT", + "link": null, + "widget": { + "name": "frame_rate" + } + }, + { + "name": "screen_width", + "type": "INT", + "link": null, + "widget": { + "name": "screen_width" + } + }, + { + "name": "screen_height", + "type": "INT", + "link": null, + "widget": { + "name": "screen_height" + } + } + ], + "outputs": [ + { + "name": "IMAGE", + "type": "IMAGE", + "links": [ + 680 + ] + }, + { + "name": "MASK", + "type": "MASK", + "links": [ + 681 + ] + } + ], + "properties": { + "Node name for S&R": "FlexAudioVisualizerLine" + }, + "widgets_values": [ + 1, + 0, + "smoothing", + "relative", + 30, + 768, + 464, + 0.5, + 0.5, + "line", + "frequency", + 0.5, + 0, + 0, + 64, + 200, + 10, + 5, + 0, + 0, + 2048, + 20, + 8000, + false + ] + }, + { + "id": 434, + "type": "FlexAudioVisualizerLine", + "pos": [ + 210, + 400 + ], + "size": [ + 453.5999755859375, + 630 + ], + "flags": {}, + "order": 32, + "mode": 0, + "inputs": [ + { + "name": "audio", + "type": "AUDIO", + "link": 676 + }, + { + "name": "opt_feature", + "type": "FEATURE", + "link": null, + "shape": 7 + }, + { + "name": "screen_width", + "type": "INT", + "link": null, + "widget": { + "name": "screen_width" + } + }, + { + "name": "frame_rate", + "type": "FLOAT", + "link": null, + "widget": { + "name": "frame_rate" + } + }, + { + "name": "screen_height", + "type": "INT", + "link": null, + "widget": { + "name": "screen_height" + } + } + ], + "outputs": [ + { + "name": "IMAGE", + "type": "IMAGE", + "links": [ + 677 + ] + }, + { + "name": "MASK", + "type": "MASK", + "links": [ + 678 + ] + } + ], + "properties": { + "Node name for S&R": "FlexAudioVisualizerLine" + }, + "widgets_values": [ + 1, + 0, + "smoothing", + "relative", + 30, + 768, + 464, + 0.5, + 0.5, + "line", + "frequency", + 0.5, + 0, + 0, + 64, + 200, + 10, + 5, + 0, + 0, + 2048, + 20, + 8000, + false + ] + }, + { + "id": 227, + "type": "FrequencyFilterPreset", + "pos": [ + -1017.4654541015625, + 1145.1510009765625 + ], + "size": [ + 405.5999755859375, + 58 + ], + "flags": {}, + "order": 25, + "mode": 0, + "inputs": [ + { + "name": "previous_filter", + "type": "FREQUENCY_FILTER", + "link": null, + "shape": 7 + } + ], + "outputs": [ + { + "name": "FREQUENCY_FILTER", + "type": "FREQUENCY_FILTER", + "links": [ + 372 + ], + "slot_index": 0, + "shape": 3 + } + ], + "properties": { + "Node name for S&R": "FrequencyFilterPreset" + }, + "widgets_values": [ + "isolate_kick_drum" + ] + }, + { + "id": 228, + "type": "AudioFilter", + "pos": [ + -994.8829345703125, + 1266.406982421875 + ], + "size": [ + 252, + 46 + ], + "flags": {}, + "order": 56, + "mode": 0, + "inputs": [ + { + "name": "audio", + "type": "AUDIO", + "link": 654 + }, + { + "name": "filters", + "type": "FREQUENCY_FILTER", + "link": 372 + } + ], + "outputs": [ + { + "name": "AUDIO", + "type": "AUDIO", + "links": [ + 662 + ], + "slot_index": 0, + "shape": 3 + } + ], + "properties": { + "Node name for S&R": "AudioFilter" + }, + "widgets_values": [] + }, + { + "id": 425, + "type": "AudioFeatureExtractor", + "pos": [ + -998.2593994140625, + 1465.2696533203125 + ], + "size": [ + 415.8000183105469, + 174 + ], + "flags": { + "collapsed": true + }, + "order": 72, + "mode": 0, + "inputs": [ + { + "name": "audio", + "type": "AUDIO", + "link": 662 + }, + { + "name": "frame_rate", + "type": "FLOAT", + "link": null, + "widget": { + "name": "frame_rate" + } + }, + { + "name": "frame_count", + "type": "INT", + "link": null, + "widget": { + "name": "frame_count" + } + }, + { + "name": "width", + "type": "INT", + "link": null, + "widget": { + "name": "width" + } + }, + { + "name": "height", + "type": "INT", + "link": null, + "widget": { + "name": "height" + } + } + ], + "outputs": [ + { + "name": "feature", + "type": "FEATURE", + "links": [ + 663 + ] + }, + { + "name": "frame_count", + "type": "INT", + "links": null + } + ], + "properties": { + "Node name for S&R": "AudioFeatureExtractor" + }, + "widgets_values": [ + "amplitude_envelope", + 30, + 0, + 512, + 512 + ] + }, + { + "id": 431, + "type": "AudioFeatureExtractor", + "pos": [ + -1055.8651123046875, + 1974.902099609375 + ], + "size": [ + 415.8000183105469, + 174 + ], + "flags": { + "collapsed": true + }, + "order": 64, + "mode": 0, + "inputs": [ + { + "name": "audio", + "type": "AUDIO", + "link": 674 + }, + { + "name": "frame_rate", + "type": "FLOAT", + "link": null, + "widget": { + "name": "frame_rate" + } + }, + { + "name": "frame_count", + "type": "INT", + "link": null, + "widget": { + "name": "frame_count" + } + }, + { + "name": "width", + "type": "INT", + "link": null, + "widget": { + "name": "width" + } + }, + { + "name": "height", + "type": "INT", + "link": null, + "widget": { + "name": "height" + } + } + ], + "outputs": [ + { + "name": "feature", + "type": "FEATURE", + "links": [ + 675 + ], + "slot_index": 0 + }, + { + "name": "frame_count", + "type": "INT", + "links": null + } + ], + "properties": { + "Node name for S&R": "AudioFeatureExtractor" + }, + "widgets_values": [ + "amplitude_envelope", + 30, + 0, + 512, + 512 + ] + }, + { + "id": 430, + "type": "AudioFeatureExtractor", + "pos": [ + -1027.8121337890625, + 1765.503662109375 + ], + "size": [ + 415.8000183105469, + 174 + ], + "flags": { + "collapsed": true + }, + "order": 62, + "mode": 0, + "inputs": [ + { + "name": "audio", + "type": "AUDIO", + "link": 672 + }, + { + "name": "frame_rate", + "type": "FLOAT", + "link": null, + "widget": { + "name": "frame_rate" + } + }, + { + "name": "frame_count", + "type": "INT", + "link": null, + "widget": { + "name": "frame_count" + } + }, + { + "name": "width", + "type": "INT", + "link": null, + "widget": { + "name": "width" + } + }, + { + "name": "height", + "type": "INT", + "link": null, + "widget": { + "name": "height" + } + } + ], + "outputs": [ + { + "name": "feature", + "type": "FEATURE", + "links": [ + 673 + ], + "slot_index": 0 + }, + { + "name": "frame_count", + "type": "INT", + "links": null + } + ], + "properties": { + "Node name for S&R": "AudioFeatureExtractor" + }, + "widgets_values": [ + "amplitude_envelope", + 30, + 0, + 512, + 512 + ] + }, + { + "id": 427, + "type": "Anything Everywhere?", + "pos": [ + -1955.12353515625, + 382.4744567871094 + ], + "size": [ + 315, + 106 + ], + "flags": {}, + "order": 43, + "mode": 0, + "inputs": [ + { + "name": "AUDIO", + "type": "*", + "link": 664, + "shape": 7, + "color_on": "" + } + ], + "outputs": [], + "properties": { + "Node name for S&R": "Anything Everywhere?", + "group_restricted": 0, + "color_restricted": 0 + }, + "widgets_values": [ + ".*", + "audio", + ".*" + ] + }, + { + "id": 416, + "type": "Anything Everywhere?", + "pos": [ + -2596.76025390625, + 834.32177734375 + ], + "size": [ + 315, + 106 + ], + "flags": {}, + "order": 35, + "mode": 0, + "inputs": [ + { + "name": "FLOAT", + "type": "*", + "link": 645, + "shape": 7, + "color_on": "" + } + ], + "outputs": [], + "properties": { + "Node name for S&R": "Anything Everywhere?", + "group_restricted": 0, + "color_restricted": 0 + }, + "widgets_values": [ + ".*", + "frame_rate", + ".*" + ] + }, + { + "id": 426, + "type": "Anything Everywhere?", + "pos": [ + -1607.34765625, + 1765.4197998046875 + ], + "size": [ + 315, + 106 + ], + "flags": {}, + "order": 54, + "mode": 0, + "inputs": [ + { + "name": "INT", + "type": "*", + "link": 665, + "shape": 7, + "color_on": "" + } + ], + "outputs": [], + "properties": { + "Node name for S&R": "Anything Everywhere?", + "group_restricted": 0, + "color_restricted": 0 + }, + "widgets_values": [ + ".*", + "frame_count|frame_load_cap", + ".*" + ] + }, + { + "id": 439, + "type": "FlexImageTransform", + "pos": [ + 5393, + 310 + ], + "size": [ + 378, + 222 + ], + "flags": {}, + "order": 93, + "mode": 0, + "inputs": [ + { + "name": "images", + "type": "IMAGE", + "link": 689 + }, + { + "name": "opt_feature", + "type": "FEATURE", + "link": null, + "shape": 7 + } + ], + "outputs": [ + { + "name": "IMAGE", + "type": "IMAGE", + "links": [ + 690, + 691 + ] + } + ], + "properties": { + "Node name for S&R": "FlexImageTransform" + }, + "widgets_values": [ + 1, + 0, + "x_value", + "relative", + "scale", + 1.5, + 1.5 + ] + }, + { + "id": 438, + "type": "FlexImageTransform", + "pos": [ + 5401, + 655 + ], + "size": [ + 378, + 222 + ], + "flags": {}, + "order": 85, + "mode": 0, + "inputs": [ + { + "name": "images", + "type": "IMAGE", + "link": 685 + }, + { + "name": "opt_feature", + "type": "FEATURE", + "link": null, + "shape": 7 + } + ], + "outputs": [ + { + "name": "IMAGE", + "type": "IMAGE", + "links": [ + 686, + 687, + 688 + ] + } + ], + "properties": { + "Node name for S&R": "FlexImageTransform" + }, + "widgets_values": [ + 1, + 0, + "x_value", + "relative", + "translate", + 1.5, + 1.5 + ] + }, + { + "id": 325, + "type": "ImpactImageBatchToImageList", + "pos": [ + 3421.8388671875, + 343.20367431640625 + ], + "size": [ + 307.0949401855469, + 26 + ], + "flags": {}, + "order": 66, + "mode": 0, + "inputs": [ + { + "name": "image", + "type": "IMAGE", + "link": 684 + } + ], + "outputs": [ + { + "name": "IMAGE", + "type": "IMAGE", + "links": [ + 546 + ], + "slot_index": 0, + "shape": 6 + } + ], + "properties": { + "Node name for S&R": "ImpactImageBatchToImageList" + }, + "widgets_values": [], + "color": "#223", + "bgcolor": "#335" + }, + { + "id": 437, + "type": "FlexImageTransform", + "pos": [ + 2664.79638671875, + 321.1230773925781 + ], + "size": [ + 378, + 222 + ], + "flags": {}, + "order": 44, + "mode": 0, + "inputs": [ + { + "name": "images", + "type": "IMAGE", + "link": 682 + }, + { + "name": "opt_feature", + "type": "FEATURE", + "link": null, + "shape": 7 + } + ], + "outputs": [ + { + "name": "IMAGE", + "type": "IMAGE", + "links": [ + 683, + 684 + ] + } + ], + "properties": { + "Node name for S&R": "FlexImageTransform" + }, + "widgets_values": [ + 1, + 0, + "None", + "relative", + "translate", + -76, + -220 + ] + } + ], + "links": [ + [ + 38, + 39, + 0, + 42, + 0, + "AUDIO" + ], + [ + 48, + 39, + 0, + 45, + 0, + "*" + ], + [ + 56, + 39, + 0, + 49, + 0, + "AUDIO" + ], + [ + 162, + 42, + 0, + 101, + 0, + "*" + ], + [ + 372, + 227, + 0, + 228, + 1, + "FREQUENCY_FILTER" + ], + [ + 453, + 42, + 1, + 277, + 0, + "*" + ], + [ + 454, + 42, + 2, + 278, + 0, + "*" + ], + [ + 483, + 301, + 0, + 273, + 0, + "IMAGE" + ], + [ + 501, + 316, + 0, + 286, + 0, + "IMAGE" + ], + [ + 516, + 293, + 0, + 334, + 1, + "AUDIO" + ], + [ + 522, + 336, + 0, + 337, + 0, + "SEGS" + ], + [ + 523, + 339, + 0, + 338, + 0, + "MASK" + ], + [ + 524, + 337, + 0, + 339, + 0, + "MASK" + ], + [ + 525, + 338, + 0, + 340, + 0, + "IMAGE" + ], + [ + 529, + 290, + 0, + 343, + 0, + "*" + ], + [ + 531, + 341, + 0, + 342, + 2, + "MASK" + ], + [ + 532, + 290, + 0, + 345, + 0, + "MASK" + ], + [ + 533, + 345, + 0, + 346, + 0, + "*" + ], + [ + 536, + 348, + 0, + 315, + 2, + "INT" + ], + [ + 541, + 342, + 0, + 334, + 0, + "IMAGE" + ], + [ + 546, + 325, + 0, + 324, + 0, + "IMAGE" + ], + [ + 551, + 340, + 0, + 354, + 0, + "IMAGE" + ], + [ + 552, + 324, + 0, + 336, + 0, + "IMAGE" + ], + [ + 555, + 324, + 0, + 355, + 0, + "IMAGE" + ], + [ + 558, + 347, + 0, + 342, + 0, + "IMAGE" + ], + [ + 569, + 383, + 1, + 363, + 0, + "CLIP" + ], + [ + 570, + 383, + 1, + 364, + 0, + "CLIP" + ], + [ + 571, + 386, + 0, + 365, + 0, + "MODEL" + ], + [ + 572, + 369, + 0, + 365, + 1, + "CONTEXT_OPTIONS" + ], + [ + 573, + 375, + 0, + 365, + 2, + "MOTION_LORA" + ], + [ + 574, + 372, + 0, + 365, + 3, + "AD_SETTINGS" + ], + [ + 575, + 366, + 0, + 365, + 5, + "SAMPLE_SETTINGS" + ], + [ + 576, + 368, + 0, + 365, + 6, + "MULTIVAL" + ], + [ + 577, + 370, + 0, + 365, + 7, + "MULTIVAL" + ], + [ + 578, + 371, + 0, + 366, + 2, + "CUSTOM_CFG" + ], + [ + 579, + 367, + 0, + 366, + 3, + "SIGMA_SCHEDULE" + ], + [ + 580, + 373, + 0, + 372, + 0, + "PE_ADJUST" + ], + [ + 581, + 374, + 0, + 372, + 1, + "WEIGHT_ADJUST" + ], + [ + 582, + 380, + 0, + 376, + 0, + "MODEL" + ], + [ + 584, + 376, + 0, + 377, + 0, + "LATENT" + ], + [ + 586, + 379, + 0, + 378, + 0, + "IMAGE" + ], + [ + 587, + 387, + 0, + 378, + 1, + "*" + ], + [ + 588, + 377, + 0, + 379, + 0, + "IMAGE" + ], + [ + 589, + 365, + 0, + 380, + 0, + "MODEL" + ], + [ + 593, + 382, + 0, + 383, + 2, + "LORA_STACK" + ], + [ + 594, + 385, + 0, + 384, + 0, + "MODEL" + ], + [ + 595, + 385, + 1, + 384, + 1, + "IPADAPTER" + ], + [ + 596, + 383, + 0, + 385, + 0, + "MODEL" + ], + [ + 597, + 384, + 0, + 386, + 0, + "MODEL" + ], + [ + 599, + 342, + 0, + 388, + 0, + "IMAGE" + ], + [ + 600, + 388, + 0, + 376, + 3, + "LATENT" + ], + [ + 603, + 380, + 0, + 389, + 0, + "MODEL" + ], + [ + 607, + 389, + 0, + 390, + 0, + "LATENT" + ], + [ + 610, + 393, + 0, + 391, + 1, + "*" + ], + [ + 611, + 390, + 0, + 392, + 0, + "IMAGE" + ], + [ + 612, + 376, + 0, + 394, + 0, + "LATENT" + ], + [ + 613, + 394, + 0, + 389, + 3, + "LATENT" + ], + [ + 618, + 362, + 0, + 400, + 0, + "*" + ], + [ + 619, + 362, + 1, + 399, + 0, + "*" + ], + [ + 620, + 362, + 2, + 398, + 0, + "*" + ], + [ + 621, + 401, + 0, + 383, + 1, + "CLIP" + ], + [ + 622, + 402, + 0, + 383, + 0, + "MODEL" + ], + [ + 623, + 403, + 0, + 388, + 1, + "VAE" + ], + [ + 624, + 404, + 0, + 377, + 1, + "VAE" + ], + [ + 625, + 404, + 0, + 390, + 1, + "VAE" + ], + [ + 629, + 341, + 0, + 407, + 0, + "*" + ], + [ + 637, + 392, + 0, + 411, + 0, + "IMAGE" + ], + [ + 638, + 411, + 0, + 391, + 0, + "IMAGE" + ], + [ + 639, + 39, + 0, + 412, + 0, + "AUDIO" + ], + [ + 641, + 363, + 0, + 376, + 1, + "CONDITIONING" + ], + [ + 642, + 364, + 0, + 376, + 2, + "CONDITIONING" + ], + [ + 643, + 363, + 0, + 389, + 1, + "CONDITIONING" + ], + [ + 644, + 364, + 0, + 389, + 2, + "CONDITIONING" + ], + [ + 645, + 417, + 0, + 416, + 0, + "FLOAT" + ], + [ + 648, + 420, + 0, + 419, + 0, + "INT" + ], + [ + 649, + 421, + 0, + 418, + 0, + "INT" + ], + [ + 650, + 41, + 0, + 424, + 0, + "OPEN_UNMIX_MODEL" + ], + [ + 651, + 39, + 0, + 424, + 1, + "AUDIO" + ], + [ + 652, + 424, + 0, + 50, + 0, + "AUDIO" + ], + [ + 654, + 424, + 1, + 228, + 0, + "AUDIO" + ], + [ + 655, + 424, + 1, + 256, + 0, + "AUDIO" + ], + [ + 656, + 424, + 2, + 257, + 0, + "AUDIO" + ], + [ + 658, + 424, + 3, + 258, + 0, + "AUDIO" + ], + [ + 660, + 424, + 4, + 259, + 0, + "AUDIO" + ], + [ + 662, + 228, + 0, + 425, + 0, + "AUDIO" + ], + [ + 663, + 425, + 0, + 261, + 0, + "FEATURE" + ], + [ + 664, + 39, + 0, + 427, + 0, + "AUDIO" + ], + [ + 665, + 42, + 2, + 426, + 0, + "INT" + ], + [ + 666, + 424, + 1, + 428, + 0, + "AUDIO" + ], + [ + 668, + 424, + 1, + 429, + 0, + "AUDIO" + ], + [ + 670, + 428, + 0, + 262, + 0, + "FEATURE" + ], + [ + 671, + 429, + 0, + 264, + 0, + "FEATURE" + ], + [ + 672, + 424, + 3, + 430, + 0, + "AUDIO" + ], + [ + 673, + 430, + 0, + 266, + 0, + "FEATURE" + ], + [ + 674, + 424, + 4, + 431, + 0, + "AUDIO" + ], + [ + 675, + 431, + 0, + 268, + 0, + "FEATURE" + ], + [ + 676, + 269, + 0, + 434, + 0, + "AUDIO" + ], + [ + 677, + 434, + 0, + 301, + 0, + "IMAGE" + ], + [ + 678, + 434, + 1, + 290, + 0, + "MASK" + ], + [ + 679, + 269, + 0, + 435, + 0, + "AUDIO" + ], + [ + 680, + 435, + 0, + 316, + 0, + "IMAGE" + ], + [ + 681, + 435, + 1, + 290, + 1, + "MASK" + ], + [ + 682, + 315, + 0, + 437, + 0, + "IMAGE" + ], + [ + 683, + 437, + 0, + 353, + 0, + "IMAGE" + ], + [ + 684, + 437, + 0, + 325, + 0, + "IMAGE" + ], + [ + 685, + 355, + 0, + 438, + 0, + "IMAGE" + ], + [ + 686, + 438, + 0, + 361, + 0, + "IMAGE" + ], + [ + 687, + 438, + 0, + 342, + 1, + "IMAGE" + ], + [ + 688, + 438, + 0, + 409, + 0, + "IMAGE" + ], + [ + 689, + 340, + 0, + 439, + 0, + "IMAGE" + ], + [ + 690, + 439, + 0, + 360, + 0, + "IMAGE" + ], + [ + 691, + 439, + 0, + 341, + 0, + "IMAGE" + ], + [ + 692, + 417, + 0, + 428, + 1, + "FLOAT" + ], + [ + 693, + 42, + 2, + 428, + 2, + "INT" + ], + [ + 694, + 420, + 0, + 428, + 3, + "INT" + ], + [ + 695, + 421, + 0, + 428, + 4, + "INT" + ], + [ + 696, + 417, + 0, + 429, + 1, + "FLOAT" + ], + [ + 697, + 42, + 2, + 429, + 2, + "INT" + ], + [ + 698, + 420, + 0, + 429, + 3, + "INT" + ], + [ + 699, + 421, + 0, + 429, + 4, + "INT" + ], + [ + 700, + 417, + 0, + 435, + 2, + "FLOAT" + ], + [ + 701, + 420, + 0, + 435, + 3, + "INT" + ], + [ + 702, + 421, + 0, + 435, + 4, + "INT" + ], + [ + 703, + 420, + 0, + 434, + 2, + "INT" + ], + [ + 704, + 417, + 0, + 434, + 3, + "FLOAT" + ], + [ + 705, + 421, + 0, + 434, + 4, + "INT" + ], + [ + 706, + 417, + 0, + 425, + 1, + "FLOAT" + ], + [ + 707, + 42, + 2, + 425, + 2, + "INT" + ], + [ + 708, + 420, + 0, + 425, + 3, + "INT" + ], + [ + 709, + 421, + 0, + 425, + 4, + "INT" + ], + [ + 710, + 417, + 0, + 431, + 1, + "FLOAT" + ], + [ + 711, + 42, + 2, + 431, + 2, + "INT" + ], + [ + 712, + 420, + 0, + 431, + 3, + "INT" + ], + [ + 713, + 421, + 0, + 431, + 4, + "INT" + ], + [ + 714, + 417, + 0, + 430, + 1, + "FLOAT" + ], + [ + 715, + 42, + 2, + 430, + 2, + "INT" + ], + [ + 716, + 420, + 0, + 430, + 3, + "INT" + ], + [ + 717, + 421, + 0, + 430, + 4, + "INT" + ] + ], + "groups": [ + { + "id": 1, + "title": "Group", + "bounding": [ + -271, + 170, + 2428, + 2272 + ], + "color": "#3f789e", + "font_size": 24, + "flags": {} + }, + { + "id": 2, + "title": "Group", + "bounding": [ + -2214, + 466, + 1821, + 1681 + ], + "color": "#3f789e", + "font_size": 24, + "flags": {} + }, + { + "id": 3, + "title": "samp", + "bounding": [ + 8892, + -516, + 820, + 594 + ], + "color": "#3f789e", + "font_size": 24, + "flags": {} + }, + { + "id": 4, + "title": "samp22", + "bounding": [ + 8817, + 153, + 6977, + 1263 + ], + "color": "#3f789e", + "font_size": 24, + "flags": {} + }, + { + "id": 5, + "title": "model", + "bounding": [ + 2239, + 145, + 6548, + 1137 + ], + "color": "#3f789e", + "font_size": 24, + "flags": {} + } + ], + "config": {}, + "extra": { + "ds": { + "scale": 0.11000000000000008, + "offset": [ + 3512.746452762388, + 3261.409354563668 + ] + }, + "node_versions": { + "comfy-core": "0.3.12", + "ComfyUI-KJNodes": "973ceb6ca8b7525d54873805888ad690090d6b1e", + "ComfyUI-AnimateDiff-Evolved": "7ec46937095048a77342aeada964e9823a2102f0", + "ComfyUI_IPAdapter_plus": "b188a6cb39b512a9c6da7235b880af42c78ccd0d", + "ComfyUI-VideoHelperSuite": "6953fa21443cf55f7c3b61ed3f4c87c5d3677fe1", + "ComfyUI_Comfyroll_CustomNodes": "d78b780ae43fcf8c6b7c6505e6ffb4584281ceca", + "comfyui_controlnet_aux": "5a049bde9cc117dafc327cded156459289097ea1", + "comfyui-impact-pack": "cdb7b4d3b08994a983c26c9c6f1b905e1759f2cd", + "ComfyUI_RyanOnTheInside": "0507092b2c3f5c51b45989c6c4fd51c1add26513", + "ComfyUi_NNLatentUpscale": "08105da31dbd7a54569661e135835e73bd8064b0", + "cg-use-everywhere": "cd06259166a6af4c054c62f540871ca09a359b50" + }, + "ue_links": [ + { + "downstream": 428, + "downstream_slot": 1, + "upstream": "417", + "upstream_slot": 0, + "controller": 416, + "type": "FLOAT" + }, + { + "downstream": 428, + "downstream_slot": 2, + "upstream": "42", + "upstream_slot": 2, + "controller": 426, + "type": "INT" + }, + { + "downstream": 428, + "downstream_slot": 3, + "upstream": "420", + "upstream_slot": 0, + "controller": 419, + "type": "INT" + }, + { + "downstream": 428, + "downstream_slot": 4, + "upstream": "421", + "upstream_slot": 0, + "controller": 418, + "type": "INT" + }, + { + "downstream": 429, + "downstream_slot": 1, + "upstream": "417", + "upstream_slot": 0, + "controller": 416, + "type": "FLOAT" + }, + { + "downstream": 429, + "downstream_slot": 2, + "upstream": "42", + "upstream_slot": 2, + "controller": 426, + "type": "INT" + }, + { + "downstream": 429, + "downstream_slot": 3, + "upstream": "420", + "upstream_slot": 0, + "controller": 419, + "type": "INT" + }, + { + "downstream": 429, + "downstream_slot": 4, + "upstream": "421", + "upstream_slot": 0, + "controller": 418, + "type": "INT" + }, + { + "downstream": 435, + "downstream_slot": 2, + "upstream": "417", + "upstream_slot": 0, + "controller": 416, + "type": "FLOAT" + }, + { + "downstream": 435, + "downstream_slot": 3, + "upstream": "420", + "upstream_slot": 0, + "controller": 419, + "type": "INT" + }, + { + "downstream": 435, + "downstream_slot": 4, + "upstream": "421", + "upstream_slot": 0, + "controller": 418, + "type": "INT" + }, + { + "downstream": 434, + "downstream_slot": 2, + "upstream": "420", + "upstream_slot": 0, + "controller": 419, + "type": "INT" + }, + { + "downstream": 434, + "downstream_slot": 3, + "upstream": "417", + "upstream_slot": 0, + "controller": 416, + "type": "FLOAT" + }, + { + "downstream": 434, + "downstream_slot": 4, + "upstream": "421", + "upstream_slot": 0, + "controller": 418, + "type": "INT" + }, + { + "downstream": 425, + "downstream_slot": 1, + "upstream": "417", + "upstream_slot": 0, + "controller": 416, + "type": "FLOAT" + }, + { + "downstream": 425, + "downstream_slot": 2, + "upstream": "42", + "upstream_slot": 2, + "controller": 426, + "type": "INT" + }, + { + "downstream": 425, + "downstream_slot": 3, + "upstream": "420", + "upstream_slot": 0, + "controller": 419, + "type": "INT" + }, + { + "downstream": 425, + "downstream_slot": 4, + "upstream": "421", + "upstream_slot": 0, + "controller": 418, + "type": "INT" + }, + { + "downstream": 431, + "downstream_slot": 1, + "upstream": "417", + "upstream_slot": 0, + "controller": 416, + "type": "FLOAT" + }, + { + "downstream": 431, + "downstream_slot": 2, + "upstream": "42", + "upstream_slot": 2, + "controller": 426, + "type": "INT" + }, + { + "downstream": 431, + "downstream_slot": 3, + "upstream": "420", + "upstream_slot": 0, + "controller": 419, + "type": "INT" + }, + { + "downstream": 431, + "downstream_slot": 4, + "upstream": "421", + "upstream_slot": 0, + "controller": 418, + "type": "INT" + }, + { + "downstream": 430, + "downstream_slot": 1, + "upstream": "417", + "upstream_slot": 0, + "controller": 416, + "type": "FLOAT" + }, + { + "downstream": 430, + "downstream_slot": 2, + "upstream": "42", + "upstream_slot": 2, + "controller": 426, + "type": "INT" + }, + { + "downstream": 430, + "downstream_slot": 3, + "upstream": "420", + "upstream_slot": 0, + "controller": 419, + "type": "INT" + }, + { + "downstream": 430, + "downstream_slot": 4, + "upstream": "421", + "upstream_slot": 0, + "controller": 418, + "type": "INT" + } + ] + }, + "version": 0.4 +} \ No newline at end of file diff --git a/examples/multi_instrument_audio_visualizer.json b/examples/multi_instrument_audio_visualizer.json deleted file mode 100644 index 86eafa6..0000000 --- a/examples/multi_instrument_audio_visualizer.json +++ /dev/null @@ -1,8277 +0,0 @@ -{ - "last_node_id": 349, - "last_link_id": 643, - "nodes": [ - { - "id": 15, - "type": "ADE_ApplyAnimateDiffModelSimple", - "pos": [ - 370, - -440 - ], - "size": { - "0": 304.79998779296875, - "1": 138 - }, - "flags": {}, - "order": 47, - "mode": 0, - "inputs": [ - { - "name": "motion_model", - "type": "MOTION_MODEL_ADE", - "link": 18 - }, - { - "name": "motion_lora", - "type": "MOTION_LORA", - "link": null - }, - { - "name": "scale_multival", - "type": "MULTIVAL", - "link": null - }, - { - "name": "effect_multival", - "type": "MULTIVAL", - "link": null - }, - { - "name": "ad_keyframes", - "type": "AD_KEYFRAMES", - "link": null - } - ], - "outputs": [ - { - "name": "M_MODELS", - "type": "M_MODELS", - "links": [ - 16 - ], - "shape": 3, - "slot_index": 0 - } - ], - "properties": { - "Node name for S&R": "ADE_ApplyAnimateDiffModelSimple" - }, - "widgets_values": [ - "" - ] - }, - { - "id": 16, - "type": "ADE_LoadAnimateDiffModel", - "pos": [ - 360, - -580 - ], - "size": { - "0": 315, - "1": 82 - }, - "flags": {}, - "order": 0, - "mode": 0, - "inputs": [ - { - "name": "ad_settings", - "type": "AD_SETTINGS", - "link": null - } - ], - "outputs": [ - { - "name": "MOTION_MODEL", - "type": "MOTION_MODEL_ADE", - "links": [ - 18 - ], - "shape": 3, - "slot_index": 0 - } - ], - "properties": { - "Node name for S&R": "ADE_LoadAnimateDiffModel" - }, - "widgets_values": [ - "ALCM_sd15_t2v_beta.ckpt" - ] - }, - { - "id": 14, - "type": "ADE_UseEvolvedSampling", - "pos": [ - 370, - -260 - ], - "size": { - "0": 315, - "1": 142 - }, - "flags": {}, - "order": 130, - "mode": 0, - "inputs": [ - { - "name": "model", - "type": "MODEL", - "link": 294 - }, - { - "name": "m_models", - "type": "M_MODELS", - "link": 16 - }, - { - "name": "context_options", - "type": "CONTEXT_OPTIONS", - "link": 17, - "slot_index": 2 - }, - { - "name": "sample_settings", - "type": "SAMPLE_SETTINGS", - "link": null - } - ], - "outputs": [ - { - "name": "MODEL", - "type": "MODEL", - "links": [ - 10, - 108 - ], - "shape": 3, - "slot_index": 0 - } - ], - "properties": { - "Node name for S&R": "ADE_UseEvolvedSampling" - }, - "widgets_values": [ - "lcm >> sqrt_linear" - ] - }, - { - "id": 151, - "type": "MaskToImage", - "pos": [ - -1239.5792892362501, - -4070.099044376746 - ], - "size": { - "0": 210, - "1": 26 - }, - "flags": {}, - "order": 111, - "mode": 0, - "inputs": [ - { - "name": "mask", - "type": "MASK", - "link": 244 - } - ], - "outputs": [ - { - "name": "IMAGE", - "type": "IMAGE", - "links": [ - 247 - ], - "shape": 3, - "slot_index": 0 - } - ], - "properties": { - "Node name for S&R": "MaskToImage" - } - }, - { - "id": 129, - "type": "_mfc", - "pos": [ - -2384, - -4010 - ], - "size": { - "0": 315, - "1": 174 - }, - "flags": {}, - "order": 102, - "mode": 0, - "inputs": [ - { - "name": "image", - "type": "IMAGE", - "link": 262 - } - ], - "outputs": [ - { - "name": "MASK", - "type": "MASK", - "links": [ - 238 - ], - "shape": 3, - "slot_index": 0 - }, - { - "name": "IMAGE", - "type": "IMAGE", - "links": [], - "shape": 3, - "slot_index": 1 - } - ], - "properties": { - "Node name for S&R": "_mfc" - }, - "widgets_values": [ - 255, - 0, - 0, - 30 - ] - }, - { - "id": 153, - "type": "MaskToImage", - "pos": [ - -1133, - -2822 - ], - "size": { - "0": 210, - "1": 26 - }, - "flags": {}, - "order": 115, - "mode": 0, - "inputs": [ - { - "name": "mask", - "type": "MASK", - "link": 600 - } - ], - "outputs": [ - { - "name": "IMAGE", - "type": "IMAGE", - "links": [ - 515 - ], - "shape": 3, - "slot_index": 0 - } - ], - "properties": { - "Node name for S&R": "MaskToImage" - } - }, - { - "id": 169, - "type": "LoadImage", - "pos": [ - 654.1794766227333, - -1642.1577364075526 - ], - "size": { - "0": 320, - "1": 314.0001220703125 - }, - "flags": {}, - "order": 1, - "mode": 4, - "outputs": [ - { - "name": "IMAGE", - "type": "IMAGE", - "links": [ - 291 - ], - "shape": 3 - }, - { - "name": "MASK", - "type": "MASK", - "links": null, - "shape": 3 - } - ], - "properties": { - "Node name for S&R": "LoadImage" - }, - "widgets_values": [ - "FREE_psychadelicFire.webp", - "image" - ] - }, - { - "id": 168, - "type": "IPAdapterAdvanced", - "pos": [ - 214.1794766227335, - -1632.1577364075526 - ], - "size": { - "0": 315, - "1": 278 - }, - "flags": {}, - "order": 128, - "mode": 4, - "inputs": [ - { - "name": "model", - "type": "MODEL", - "link": 321 - }, - { - "name": "ipadapter", - "type": "IPADAPTER", - "link": 295 - }, - { - "name": "image", - "type": "IMAGE", - "link": 291, - "slot_index": 2 - }, - { - "name": "image_negative", - "type": "IMAGE", - "link": null - }, - { - "name": "attn_mask", - "type": "MASK", - "link": 293 - }, - { - "name": "clip_vision", - "type": "CLIP_VISION", - "link": null - } - ], - "outputs": [ - { - "name": "MODEL", - "type": "MODEL", - "links": [ - 294 - ], - "shape": 3, - "slot_index": 0 - } - ], - "properties": { - "Node name for S&R": "IPAdapterAdvanced" - }, - "widgets_values": [ - 1.1, - "linear", - "concat", - 0, - 1, - "V only" - ] - }, - { - "id": 80, - "type": "IPAdapterUnifiedLoader", - "pos": [ - -297, - -2972 - ], - "size": { - "0": 315, - "1": 78 - }, - "flags": {}, - "order": 69, - "mode": 0, - "inputs": [ - { - "name": "model", - "type": "MODEL", - "link": 121 - }, - { - "name": "ipadapter", - "type": "IPADAPTER", - "link": null - } - ], - "outputs": [ - { - "name": "model", - "type": "MODEL", - "links": [ - 119 - ], - "shape": 3, - "slot_index": 0 - }, - { - "name": "ipadapter", - "type": "IPADAPTER", - "links": [ - 120, - 148, - 255, - 295, - 319 - ], - "shape": 3, - "slot_index": 1 - } - ], - "properties": { - "Node name for S&R": "IPAdapterUnifiedLoader" - }, - "widgets_values": [ - "PLUS (high strength)" - ] - }, - { - "id": 189, - "type": "MaskToImage", - "pos": [ - -1074.3725874739782, - -2207.608112317848 - ], - "size": { - "0": 210, - "1": 26 - }, - "flags": {}, - "order": 116, - "mode": 0, - "inputs": [ - { - "name": "mask", - "type": "MASK", - "link": 511 - } - ], - "outputs": [ - { - "name": "IMAGE", - "type": "IMAGE", - "links": [ - 477 - ], - "shape": 3, - "slot_index": 0 - } - ], - "properties": { - "Node name for S&R": "MaskToImage" - } - }, - { - "id": 166, - "type": "MaskComposite", - "pos": [ - -1529.5385301981569, - -1675.513764755127 - ], - "size": { - "0": 315, - "1": 126 - }, - "flags": {}, - "order": 114, - "mode": 0, - "inputs": [ - { - "name": "destination", - "type": "MASK", - "link": 286 - }, - { - "name": "source", - "type": "MASK", - "link": 287 - } - ], - "outputs": [ - { - "name": "MASK", - "type": "MASK", - "links": [ - 356 - ], - "shape": 3, - "slot_index": 0 - } - ], - "properties": { - "Node name for S&R": "MaskComposite" - }, - "widgets_values": [ - 0, - 0, - "add" - ] - }, - { - "id": 207, - "type": "MaskComposite", - "pos": [ - -1534.5385301981569, - -1490.513764755127 - ], - "size": { - "0": 315, - "1": 126 - }, - "flags": {}, - "order": 120, - "mode": 0, - "inputs": [ - { - "name": "destination", - "type": "MASK", - "link": 356 - }, - { - "name": "source", - "type": "MASK", - "link": 602 - } - ], - "outputs": [ - { - "name": "MASK", - "type": "MASK", - "links": [ - 360 - ], - "shape": 3, - "slot_index": 0 - } - ], - "properties": { - "Node name for S&R": "MaskComposite" - }, - "widgets_values": [ - 0, - 0, - "add" - ] - }, - { - "id": 185, - "type": "_mfc", - "pos": [ - -2353.3725874739785, - -2262.608112317848 - ], - "size": { - "0": 315, - "1": 174 - }, - "flags": {}, - "order": 105, - "mode": 0, - "inputs": [ - { - "name": "image", - "type": "IMAGE", - "link": 329 - } - ], - "outputs": [ - { - "name": "MASK", - "type": "MASK", - "links": [ - 508 - ], - "shape": 3, - "slot_index": 0 - }, - { - "name": "IMAGE", - "type": "IMAGE", - "links": [], - "shape": 3, - "slot_index": 1 - } - ], - "properties": { - "Node name for S&R": "_mfc" - }, - "widgets_values": [ - 255, - 255, - 255, - 30 - ] - }, - { - "id": 84, - "type": "LineartStandardPreprocessor", - "pos": [ - -625.2707974212142, - -719.5747229214809 - ], - "size": { - "0": 315, - "1": 106 - }, - "flags": {}, - "order": 66, - "mode": 4, - "inputs": [ - { - "name": "image", - "type": "IMAGE", - "link": 469 - } - ], - "outputs": [ - { - "name": "IMAGE", - "type": "IMAGE", - "links": [ - 128 - ], - "shape": 3, - "slot_index": 0 - } - ], - "properties": { - "Node name for S&R": "LineartStandardPreprocessor" - }, - "widgets_values": [ - 6, - 8, - 512 - ] - }, - { - "id": 83, - "type": "ControlNetLoader", - "pos": [ - -632.2707974212142, - -822.5747229214808 - ], - "size": { - "0": 315, - "1": 58 - }, - "flags": {}, - "order": 2, - "mode": 4, - "outputs": [ - { - "name": "CONTROL_NET", - "type": "CONTROL_NET", - "links": [ - 127 - ], - "shape": 3 - } - ], - "properties": { - "Node name for S&R": "ControlNetLoader" - }, - "widgets_values": [ - "control_v11p_sd15_lineart_fp16.safetensors" - ] - }, - { - "id": 17, - "type": "ADE_StandardStaticContextOptions", - "pos": [ - 360, - -850 - ], - "size": { - "0": 319.20001220703125, - "1": 222 - }, - "flags": {}, - "order": 3, - "mode": 0, - "inputs": [ - { - "name": "prev_context", - "type": "CONTEXT_OPTIONS", - "link": null - }, - { - "name": "view_opts", - "type": "VIEW_OPTS", - "link": null - } - ], - "outputs": [ - { - "name": "CONTEXT_OPTS", - "type": "CONTEXT_OPTIONS", - "links": [ - 17 - ], - "shape": 3 - } - ], - "properties": { - "Node name for S&R": "ADE_StandardStaticContextOptions" - }, - "widgets_values": [ - 16, - 4, - "pyramid", - false, - 0, - 1 - ] - }, - { - "id": 223, - "type": "Reroute", - "pos": [ - 848.1562971048259, - -477.4030864591942 - ], - "size": [ - 75, - 26 - ], - "flags": {}, - "order": 58, - "mode": 0, - "inputs": [ - { - "name": "", - "type": "*", - "link": 408 - } - ], - "outputs": [ - { - "name": "", - "type": "VAE", - "links": [ - 409, - 410 - ], - "slot_index": 0 - } - ], - "properties": { - "showOutputText": false, - "horizontal": false - } - }, - { - "id": 12, - "type": "SetLatentNoiseMask", - "pos": [ - 870.6986314309653, - -389.73938332622606 - ], - "size": { - "0": 176.39999389648438, - "1": 46 - }, - "flags": {}, - "order": 126, - "mode": 0, - "inputs": [ - { - "name": "samples", - "type": "LATENT", - "link": 74 - }, - { - "name": "mask", - "type": "MASK", - "link": 290 - } - ], - "outputs": [ - { - "name": "LATENT", - "type": "LATENT", - "links": [ - 11 - ], - "shape": 3, - "slot_index": 0 - } - ], - "properties": { - "Node name for S&R": "SetLatentNoiseMask" - } - }, - { - "id": 65, - "type": "LoraLoaderModelOnly", - "pos": [ - -1937, - -735 - ], - "size": { - "0": 315, - "1": 82 - }, - "flags": {}, - "order": 55, - "mode": 0, - "inputs": [ - { - "name": "model", - "type": "MODEL", - "link": 90 - } - ], - "outputs": [ - { - "name": "MODEL", - "type": "MODEL", - "links": [ - 121 - ], - "shape": 3, - "slot_index": 0 - } - ], - "properties": { - "Node name for S&R": "LoraLoaderModelOnly" - }, - "widgets_values": [ - "ral-dissolve-sd15.safetensors", - 1 - ] - }, - { - "id": 224, - "type": "Note", - "pos": [ - -7153.27503551134, - -3040.000244140627 - ], - "size": { - "0": 210, - "1": 58 - }, - "flags": {}, - "order": 4, - "mode": 0, - "properties": { - "text": "" - }, - "widgets_values": [ - "441 is verse\n" - ], - "color": "#432", - "bgcolor": "#653" - }, - { - "id": 228, - "type": "SetLatentNoiseMask", - "pos": [ - 2105, - -736 - ], - "size": { - "0": 210, - "1": 46 - }, - "flags": {}, - "order": 135, - "mode": 0, - "inputs": [ - { - "name": "samples", - "type": "LATENT", - "link": 423 - }, - { - "name": "mask", - "type": "MASK", - "link": 422 - } - ], - "outputs": [ - { - "name": "LATENT", - "type": "LATENT", - "links": [ - 424 - ], - "shape": 3, - "slot_index": 0 - } - ], - "properties": { - "Node name for S&R": "SetLatentNoiseMask" - } - }, - { - "id": 229, - "type": "InvertMask", - "pos": [ - 1697, - -678 - ], - "size": { - "0": 210, - "1": 26 - }, - "flags": {}, - "order": 50, - "mode": 0, - "inputs": [ - { - "name": "mask", - "type": "MASK", - "link": 625 - } - ], - "outputs": [ - { - "name": "MASK", - "type": "MASK", - "links": [ - 421 - ], - "shape": 3, - "slot_index": 0 - } - ], - "properties": { - "Node name for S&R": "InvertMask" - } - }, - { - "id": 230, - "type": "GrowMaskWithBlur", - "pos": [ - 1673, - -603 - ], - "size": { - "0": 315, - "1": 246 - }, - "flags": {}, - "order": 64, - "mode": 0, - "inputs": [ - { - "name": "mask", - "type": "MASK", - "link": 421 - } - ], - "outputs": [ - { - "name": "mask", - "type": "MASK", - "links": [ - 422 - ], - "shape": 3, - "slot_index": 0 - }, - { - "name": "mask_inverted", - "type": "MASK", - "links": null, - "shape": 3 - } - ], - "properties": { - "Node name for S&R": "GrowMaskWithBlur" - }, - "widgets_values": [ - 5, - 0, - true, - false, - 0, - 1, - 1, - false - ] - }, - { - "id": 236, - "type": "Note", - "pos": [ - 1039, - -1544 - ], - "size": { - "0": 210.59083557128906, - "1": 153.2702178955078 - }, - "flags": {}, - "order": 5, - "mode": 0, - "properties": { - "text": "" - }, - "widgets_values": [ - "applies ipadapter to ALL masked areas" - ], - "color": "#432", - "bgcolor": "#653" - }, - { - "id": 79, - "type": "IPAdapterAdvanced", - "pos": [ - 218.76429968005436, - -4047 - ], - "size": { - "0": 315, - "1": 278 - }, - "flags": {}, - "order": 112, - "mode": 0, - "inputs": [ - { - "name": "model", - "type": "MODEL", - "link": 119 - }, - { - "name": "ipadapter", - "type": "IPADAPTER", - "link": 120 - }, - { - "name": "image", - "type": "IMAGE", - "link": 124, - "slot_index": 2 - }, - { - "name": "image_negative", - "type": "IMAGE", - "link": null - }, - { - "name": "attn_mask", - "type": "MASK", - "link": 260 - }, - { - "name": "clip_vision", - "type": "CLIP_VISION", - "link": null - } - ], - "outputs": [ - { - "name": "MODEL", - "type": "MODEL", - "links": [ - 146 - ], - "shape": 3, - "slot_index": 0 - } - ], - "properties": { - "Node name for S&R": "IPAdapterAdvanced" - }, - "widgets_values": [ - 0.6, - "linear", - "concat", - 0, - 1, - "V only" - ] - }, - { - "id": 156, - "type": "Reroute", - "pos": [ - -2910, - -3060 - ], - "size": [ - 75, - 26 - ], - "flags": {}, - "order": 101, - "mode": 0, - "inputs": [ - { - "name": "", - "type": "*", - "link": 279 - } - ], - "outputs": [ - { - "name": "", - "type": "IMAGE", - "links": [ - 262, - 263, - 264, - 329 - ], - "slot_index": 0 - } - ], - "title": "MASK IMAGE", - "properties": { - "showOutputText": false, - "horizontal": false - } - }, - { - "id": 61, - "type": "FrequencyFilterPreset", - "pos": [ - -1969, - -4069 - ], - "size": { - "0": 344.3999938964844, - "1": 58 - }, - "flags": {}, - "order": 6, - "mode": 0, - "inputs": [ - { - "name": "previous_filter", - "type": "FREQUENCY_FILTER", - "link": null - } - ], - "outputs": [ - { - "name": "FREQUENCY_FILTER", - "type": "FREQUENCY_FILTER", - "links": [ - 241 - ], - "shape": 3, - "slot_index": 0 - } - ], - "properties": { - "Node name for S&R": "FrequencyFilterPreset" - }, - "widgets_values": [ - "isolate_kick_drum" - ] - }, - { - "id": 147, - "type": "AudioFeatureExtractor", - "pos": [ - -1979, - -3862 - ], - "size": { - "0": 361.20001220703125, - "1": 78 - }, - "flags": {}, - "order": 82, - "mode": 0, - "inputs": [ - { - "name": "audio", - "type": "AUDIO", - "link": 243 - }, - { - "name": "feature_pipe", - "type": "FEATURE_PIPE", - "link": 621 - } - ], - "outputs": [ - { - "name": "FEATURE", - "type": "FEATURE", - "links": [ - 228 - ], - "shape": 3, - "slot_index": 0 - }, - { - "name": "FEATURE_PIPE", - "type": "FEATURE_PIPE", - "links": [ - 229 - ], - "shape": 3, - "slot_index": 1 - } - ], - "properties": { - "Node name for S&R": "AudioFeatureExtractor" - }, - "widgets_values": [ - "amplitude_envelope" - ] - }, - { - "id": 241, - "type": "Note", - "pos": [ - -1938, - -4354 - ], - "size": { - "0": 672.896728515625, - "1": 148.70925903320312 - }, - "flags": {}, - "order": 7, - "mode": 0, - "properties": { - "text": "" - }, - "widgets_values": [ - "5. Here we have the masks split by color, and modulate each of them with the audio of a different instrument.\n\nFor the drums, we use an optional audio filter to further isolate the kick drum.\n\nThe fundamental nodes here, though, are the AudioFeatureExtractor and the FlexMaskMorph.\n\nLike its name implies, the FlexMask nodes can accept \"features\" other than audio. At the time of writing this, I have implemented MIDI, Time, and Depth features.\n" - ], - "color": "#432", - "bgcolor": "#653" - }, - { - "id": 242, - "type": "Note", - "pos": [ - 111.58510832419961, - -4343.152072461528 - ], - "size": { - "0": 210, - "1": 58 - }, - "flags": {}, - "order": 8, - "mode": 0, - "properties": { - "text": "" - }, - "widgets_values": [ - "6. Optionally assign an IP adapter for each color" - ], - "color": "#432", - "bgcolor": "#653" - }, - { - "id": 243, - "type": "Note", - "pos": [ - -1129.0810304375746, - -1513.6734700657614 - ], - "size": { - "0": 253.1964874267578, - "1": 129.31674194335938 - }, - "flags": {}, - "order": 9, - "mode": 0, - "properties": { - "text": "" - }, - "widgets_values": [ - "we join all the modulated masks back together so we can sample these areas" - ], - "color": "#432", - "bgcolor": "#653" - }, - { - "id": 85, - "type": "ControlNetApplyAdvanced", - "pos": [ - -197, - -502 - ], - "size": { - "0": 315, - "1": 166 - }, - "flags": {}, - "order": 81, - "mode": 4, - "inputs": [ - { - "name": "positive", - "type": "CONDITIONING", - "link": 140 - }, - { - "name": "negative", - "type": "CONDITIONING", - "link": 139 - }, - { - "name": "control_net", - "type": "CONTROL_NET", - "link": 138, - "slot_index": 2 - }, - { - "name": "image", - "type": "IMAGE", - "link": 137 - } - ], - "outputs": [ - { - "name": "positive", - "type": "CONDITIONING", - "links": [ - 141 - ], - "shape": 3, - "slot_index": 0 - }, - { - "name": "negative", - "type": "CONDITIONING", - "links": [ - 142 - ], - "shape": 3, - "slot_index": 1 - } - ], - "properties": { - "Node name for S&R": "ControlNetApplyAdvanced" - }, - "widgets_values": [ - 0.5, - 0, - 0.654 - ] - }, - { - "id": 149, - "type": "AudioFeatureExtractor", - "pos": [ - -1874, - -2726 - ], - "size": { - "0": 361.20001220703125, - "1": 78 - }, - "flags": {}, - "order": 84, - "mode": 0, - "inputs": [ - { - "name": "audio", - "type": "AUDIO", - "link": 437 - }, - { - "name": "feature_pipe", - "type": "FEATURE_PIPE", - "link": 620 - } - ], - "outputs": [ - { - "name": "FEATURE", - "type": "FEATURE", - "links": [ - 463, - 598 - ], - "shape": 3, - "slot_index": 0 - }, - { - "name": "FEATURE_PIPE", - "type": "FEATURE_PIPE", - "links": [ - 464, - 599 - ], - "shape": 3, - "slot_index": 1 - } - ], - "properties": { - "Node name for S&R": "AudioFeatureExtractor" - }, - "widgets_values": [ - "amplitude_envelope" - ] - }, - { - "id": 144, - "type": "AudioFeatureExtractor", - "pos": [ - -1963.661136666576, - -3222.9379927776727 - ], - "size": { - "0": 361.20001220703125, - "1": 78 - }, - "flags": {}, - "order": 83, - "mode": 0, - "inputs": [ - { - "name": "audio", - "type": "AUDIO", - "link": 440 - }, - { - "name": "feature_pipe", - "type": "FEATURE_PIPE", - "link": 619 - } - ], - "outputs": [ - { - "name": "FEATURE", - "type": "FEATURE", - "links": [ - 226 - ], - "shape": 3, - "slot_index": 0 - }, - { - "name": "FEATURE_PIPE", - "type": "FEATURE_PIPE", - "links": [ - 227 - ], - "shape": 3, - "slot_index": 1 - } - ], - "properties": { - "Node name for S&R": "AudioFeatureExtractor" - }, - "widgets_values": [ - "amplitude_envelope" - ] - }, - { - "id": 86, - "type": "DWPreprocessor", - "pos": [ - -645, - -421 - ], - "size": { - "0": 315, - "1": 198 - }, - "flags": {}, - "order": 65, - "mode": 4, - "inputs": [ - { - "name": "image", - "type": "IMAGE", - "link": 136 - } - ], - "outputs": [ - { - "name": "IMAGE", - "type": "IMAGE", - "links": [ - 137 - ], - "shape": 3, - "slot_index": 0 - }, - { - "name": "POSE_KEYPOINT", - "type": "POSE_KEYPOINT", - "links": null, - "shape": 3 - } - ], - "properties": { - "Node name for S&R": "DWPreprocessor" - }, - "widgets_values": [ - "enable", - "enable", - "enable", - 512, - "yolox_l.onnx", - "dw-ll_ucoco_384_bs5.torchscript.pt" - ] - }, - { - "id": 88, - "type": "ControlNetLoader", - "pos": [ - -642, - -533 - ], - "size": { - "0": 315, - "1": 58 - }, - "flags": {}, - "order": 10, - "mode": 4, - "outputs": [ - { - "name": "CONTROL_NET", - "type": "CONTROL_NET", - "links": [ - 138 - ], - "shape": 3 - } - ], - "properties": { - "Node name for S&R": "ControlNetLoader" - }, - "widgets_values": [ - "control_v11p_sd15_openpose_fp16.safetensors" - ] - }, - { - "id": 154, - "type": "IPAdapterAdvanced", - "pos": [ - 239, - -2751 - ], - "size": { - "0": 315, - "1": 278 - }, - "flags": {}, - "order": 123, - "mode": 0, - "inputs": [ - { - "name": "model", - "type": "MODEL", - "link": 257 - }, - { - "name": "ipadapter", - "type": "IPADAPTER", - "link": 255 - }, - { - "name": "image", - "type": "IMAGE", - "link": 604, - "slot_index": 2 - }, - { - "name": "image_negative", - "type": "IMAGE", - "link": null - }, - { - "name": "attn_mask", - "type": "MASK", - "link": 601 - }, - { - "name": "clip_vision", - "type": "CLIP_VISION", - "link": null - } - ], - "outputs": [ - { - "name": "MODEL", - "type": "MODEL", - "links": [ - 320 - ], - "shape": 3, - "slot_index": 0 - } - ], - "properties": { - "Node name for S&R": "IPAdapterAdvanced" - }, - "widgets_values": [ - 1, - "linear", - "concat", - 0, - 1, - "V only" - ] - }, - { - "id": 251, - "type": "Note", - "pos": [ - -650, - -1085 - ], - "size": { - "0": 287.7337951660156, - "1": 97.48538208007812 - }, - "flags": {}, - "order": 11, - "mode": 0, - "properties": { - "text": "" - }, - "widgets_values": [ - "I have masked off the only person so ive disabled openpose" - ], - "color": "#432", - "bgcolor": "#653" - }, - { - "id": 82, - "type": "ControlNetApplyAdvanced", - "pos": [ - -214, - -783 - ], - "size": { - "0": 315, - "1": 166 - }, - "flags": {}, - "order": 92, - "mode": 4, - "inputs": [ - { - "name": "positive", - "type": "CONDITIONING", - "link": 141 - }, - { - "name": "negative", - "type": "CONDITIONING", - "link": 142 - }, - { - "name": "control_net", - "type": "CONTROL_NET", - "link": 127, - "slot_index": 2 - }, - { - "name": "image", - "type": "IMAGE", - "link": 128 - } - ], - "outputs": [ - { - "name": "positive", - "type": "CONDITIONING", - "links": [ - 131, - 132 - ], - "shape": 3, - "slot_index": 0 - }, - { - "name": "negative", - "type": "CONDITIONING", - "links": [ - 130, - 133 - ], - "shape": 3, - "slot_index": 1 - } - ], - "properties": { - "Node name for S&R": "ControlNetApplyAdvanced" - }, - "widgets_values": [ - 0.5, - 0, - 0.654 - ] - }, - { - "id": 75, - "type": "KSampler", - "pos": [ - 2413, - -830 - ], - "size": { - "0": 315, - "1": 286 - }, - "flags": {}, - "order": 136, - "mode": 0, - "inputs": [ - { - "name": "model", - "type": "MODEL", - "link": 108 - }, - { - "name": "positive", - "type": "CONDITIONING", - "link": 132 - }, - { - "name": "negative", - "type": "CONDITIONING", - "link": 133 - }, - { - "name": "latent_image", - "type": "LATENT", - "link": 424 - } - ], - "outputs": [ - { - "name": "LATENT", - "type": "LATENT", - "links": [ - 112 - ], - "slot_index": 0 - } - ], - "properties": { - "Node name for S&R": "KSampler" - }, - "widgets_values": [ - 271603655952848, - "fixed", - 4, - 1.59, - "lcm", - "sgm_uniform", - 0.58 - ] - }, - { - "id": 246, - "type": "Reroute", - "pos": [ - -2115, - -3216 - ], - "size": [ - 75, - 26 - ], - "flags": {}, - "order": 71, - "mode": 0, - "inputs": [ - { - "name": "", - "type": "*", - "link": 639 - } - ], - "outputs": [ - { - "name": "", - "type": "AUDIO", - "links": [ - 440 - ], - "slot_index": 0 - } - ], - "properties": { - "showOutputText": false, - "horizontal": false - } - }, - { - "id": 258, - "type": "VHS_VideoCombine", - "pos": [ - -818, - -3490 - ], - "size": [ - 315, - 489.9375 - ], - "flags": {}, - "order": 119, - "mode": 4, - "inputs": [ - { - "name": "images", - "type": "IMAGE", - "link": 472 - }, - { - "name": "audio", - "type": "*", - "link": null - }, - { - "name": "meta_batch", - "type": "VHS_BatchManager", - "link": null - }, - { - "name": "vae", - "type": "VAE", - "link": null - } - ], - "outputs": [ - { - "name": "Filenames", - "type": "VHS_FILENAMES", - "links": null, - "shape": 3 - } - ], - "properties": { - "Node name for S&R": "VHS_VideoCombine" - }, - "widgets_values": { - "frame_rate": 30, - "loop_count": 0, - "filename_prefix": "AnimateDiff", - "format": "video/h264-mp4", - "pix_fmt": "yuv420p", - "crf": 19, - "save_metadata": true, - "pingpong": false, - "save_output": true, - "videopreview": { - "hidden": false, - "paused": false, - "params": { - "filename": "AnimateDiff_02531-audio.mp4", - "subfolder": "", - "type": "output", - "format": "video/h264-mp4", - "frame_rate": 30 - } - } - } - }, - { - "id": 260, - "type": "VHS_VideoCombine", - "pos": [ - -674, - -2294 - ], - "size": [ - 320, - 492.75 - ], - "flags": {}, - "order": 122, - "mode": 4, - "inputs": [ - { - "name": "images", - "type": "IMAGE", - "link": 477 - }, - { - "name": "audio", - "type": "AUDIO", - "link": 520 - }, - { - "name": "meta_batch", - "type": "VHS_BatchManager", - "link": null - }, - { - "name": "vae", - "type": "VAE", - "link": null - } - ], - "outputs": [ - { - "name": "Filenames", - "type": "VHS_FILENAMES", - "links": null, - "shape": 3 - } - ], - "properties": { - "Node name for S&R": "VHS_VideoCombine" - }, - "widgets_values": { - "frame_rate": 30, - "loop_count": 0, - "filename_prefix": "AnimateDiff", - "format": "video/h264-mp4", - "pix_fmt": "yuv420p", - "crf": 19, - "save_metadata": true, - "pingpong": false, - "save_output": true, - "videopreview": { - "hidden": false, - "paused": false, - "params": { - "filename": "AnimateDiff_02532-audio.mp4", - "subfolder": "", - "type": "output", - "format": "video/h264-mp4", - "frame_rate": 30 - } - } - } - }, - { - "id": 161, - "type": "PrimitiveNode", - "pos": [ - -7153.27503551134, - -3360.000244140627 - ], - "size": { - "0": 210, - "1": 82 - }, - "flags": {}, - "order": 12, - "mode": 0, - "outputs": [ - { - "name": "INT", - "type": "INT", - "links": [ - 275, - 362, - 577 - ], - "slot_index": 0, - "widget": { - "name": "width" - } - } - ], - "title": "Width", - "properties": { - "Run widget replace on values": false - }, - "widgets_values": [ - 1280, - "fixed" - ] - }, - { - "id": 162, - "type": "PrimitiveNode", - "pos": [ - -7173.27503551134, - -3480.000244140627 - ], - "size": { - "0": 210, - "1": 82 - }, - "flags": {}, - "order": 13, - "mode": 0, - "outputs": [ - { - "name": "INT", - "type": "INT", - "links": [ - 276, - 361, - 578 - ], - "slot_index": 0, - "widget": { - "name": "height" - } - } - ], - "title": "Height", - "properties": { - "Run widget replace on values": false - }, - "widgets_values": [ - 720, - "fixed" - ] - }, - { - "id": 167, - "type": "MaskComposite", - "pos": [ - -1145.0810304375746, - -1690.6734700657614 - ], - "size": { - "0": 315, - "1": 126 - }, - "flags": {}, - "order": 124, - "mode": 0, - "inputs": [ - { - "name": "destination", - "type": "MASK", - "link": 512 - }, - { - "name": "source", - "type": "MASK", - "link": 360 - } - ], - "outputs": [ - { - "name": "MASK", - "type": "MASK", - "links": [ - 290, - 293, - 480 - ], - "shape": 3, - "slot_index": 0 - } - ], - "properties": { - "Node name for S&R": "MaskComposite" - }, - "widgets_values": [ - 0, - 0, - "add" - ] - }, - { - "id": 263, - "type": "MaskToImage", - "pos": [ - -785.0810304375746, - -1689.6734700657614 - ], - "size": { - "0": 210, - "1": 26 - }, - "flags": {}, - "order": 127, - "mode": 4, - "inputs": [ - { - "name": "mask", - "type": "MASK", - "link": 480 - } - ], - "outputs": [ - { - "name": "IMAGE", - "type": "IMAGE", - "links": [ - 481 - ], - "shape": 3, - "slot_index": 0 - } - ], - "properties": { - "Node name for S&R": "MaskToImage" - } - }, - { - "id": 262, - "type": "VHS_VideoCombine", - "pos": [ - -638, - -1682 - ], - "size": [ - 320, - 493 - ], - "flags": {}, - "order": 129, - "mode": 4, - "inputs": [ - { - "name": "images", - "type": "IMAGE", - "link": 481 - }, - { - "name": "audio", - "type": "AUDIO", - "link": null - }, - { - "name": "meta_batch", - "type": "VHS_BatchManager", - "link": null - }, - { - "name": "vae", - "type": "VAE", - "link": null - } - ], - "outputs": [ - { - "name": "Filenames", - "type": "VHS_FILENAMES", - "links": null, - "shape": 3 - } - ], - "properties": { - "Node name for S&R": "VHS_VideoCombine" - }, - "widgets_values": { - "frame_rate": 30, - "loop_count": 0, - "filename_prefix": "AnimateDiff", - "format": "video/h264-mp4", - "pix_fmt": "yuv420p", - "crf": 19, - "save_metadata": true, - "pingpong": false, - "save_output": true, - "videopreview": { - "hidden": false, - "paused": false, - "params": { - "filename": "AnimateDiff_02533.mp4", - "subfolder": "", - "type": "output", - "format": "video/h264-mp4", - "frame_rate": 30 - } - } - } - }, - { - "id": 253, - "type": "StaticBody", - "pos": [ - -4857.194123640608, - -3164.053148376446 - ], - "size": { - "0": 317.4000244140625, - "1": 250 - }, - "flags": {}, - "order": 48, - "mode": 4, - "inputs": [ - { - "name": "previous_body", - "type": "STATIC_BODY", - "link": 455 - } - ], - "outputs": [ - { - "name": "STATIC_BODY", - "type": "STATIC_BODY", - "links": [ - 454 - ], - "shape": 3 - } - ], - "properties": { - "Node name for S&R": "StaticBody" - }, - "widgets_values": [ - "polygon", - 0.02, - 0.03, - 0.15, - 0.19, - 0.9, - 0.5, - true, - "(255,255,255)" - ] - }, - { - "id": 10, - "type": "KSampler", - "pos": [ - 835.1562971048259, - -829.4030864591936 - ], - "size": { - "0": 315, - "1": 286 - }, - "flags": {}, - "order": 131, - "mode": 0, - "inputs": [ - { - "name": "model", - "type": "MODEL", - "link": 10 - }, - { - "name": "positive", - "type": "CONDITIONING", - "link": 131 - }, - { - "name": "negative", - "type": "CONDITIONING", - "link": 130 - }, - { - "name": "latent_image", - "type": "LATENT", - "link": 11 - } - ], - "outputs": [ - { - "name": "LATENT", - "type": "LATENT", - "links": [ - 12, - 117 - ], - "slot_index": 0 - } - ], - "properties": { - "Node name for S&R": "KSampler" - }, - "widgets_values": [ - 271603655952848, - "fixed", - 4, - 1.59, - "lcm", - "sgm_uniform", - 1 - ] - }, - { - "id": 11, - "type": "VAEDecode", - "pos": [ - 1269, - -765 - ], - "size": { - "0": 210, - "1": 46 - }, - "flags": {}, - "order": 132, - "mode": 0, - "inputs": [ - { - "name": "samples", - "type": "LATENT", - "link": 12 - }, - { - "name": "vae", - "type": "VAE", - "link": 409 - } - ], - "outputs": [ - { - "name": "IMAGE", - "type": "IMAGE", - "links": [ - 88 - ], - "slot_index": 0 - } - ], - "properties": { - "Node name for S&R": "VAEDecode" - } - }, - { - "id": 90, - "type": "IPAdapterAdvanced", - "pos": [ - 316.9526873108316, - -3366 - ], - "size": { - "0": 315, - "1": 278 - }, - "flags": {}, - "order": 118, - "mode": 0, - "inputs": [ - { - "name": "model", - "type": "MODEL", - "link": 146 - }, - { - "name": "ipadapter", - "type": "IPADAPTER", - "link": 148 - }, - { - "name": "image", - "type": "IMAGE", - "link": 488, - "slot_index": 2 - }, - { - "name": "image_negative", - "type": "IMAGE", - "link": null - }, - { - "name": "attn_mask", - "type": "MASK", - "link": 259 - }, - { - "name": "clip_vision", - "type": "CLIP_VISION", - "link": null - } - ], - "outputs": [ - { - "name": "MODEL", - "type": "MODEL", - "links": [ - 257 - ], - "shape": 3, - "slot_index": 0 - } - ], - "properties": { - "Node name for S&R": "IPAdapterAdvanced" - }, - "widgets_values": [ - 1.1, - "strong style transfer", - "concat", - 0, - 1, - "V only" - ] - }, - { - "id": 268, - "type": "LoadImage", - "pos": [ - 706, - -3404 - ], - "size": { - "0": 315, - "1": 314.0000305175781 - }, - "flags": {}, - "order": 14, - "mode": 0, - "outputs": [ - { - "name": "IMAGE", - "type": "IMAGE", - "links": [ - 488 - ], - "shape": 3, - "slot_index": 0 - }, - { - "name": "MASK", - "type": "MASK", - "links": null, - "shape": 3 - } - ], - "properties": { - "Node name for S&R": "LoadImage" - }, - "widgets_values": [ - "pasted/image (95).png", - "image" - ] - }, - { - "id": 276, - "type": "FlexMaskMorph", - "pos": [ - -1442, - -2223 - ], - "size": { - "0": 333.47332763671875, - "1": 266 - }, - "flags": {}, - "order": 110, - "mode": 0, - "inputs": [ - { - "name": "masks", - "type": "MASK", - "link": 508 - }, - { - "name": "feature", - "type": "FEATURE", - "link": 509 - }, - { - "name": "feature_pipe", - "type": "FEATURE_PIPE", - "link": 510 - } - ], - "outputs": [ - { - "name": "MASK", - "type": "MASK", - "links": [ - 511, - 512, - 513 - ], - "shape": 3 - } - ], - "properties": { - "Node name for S&R": "FlexMaskMorph" - }, - "widgets_values": [ - 1, - false, - 0, - 0, - 0, - "erode", - 5, - 10 - ] - }, - { - "id": 188, - "type": "AudioFeatureExtractor", - "pos": [ - -1826, - -2264 - ], - "size": { - "0": 361.20001220703125, - "1": 78 - }, - "flags": {}, - "order": 93, - "mode": 0, - "inputs": [ - { - "name": "audio", - "type": "AUDIO", - "link": 519 - }, - { - "name": "feature_pipe", - "type": "FEATURE_PIPE", - "link": 622 - } - ], - "outputs": [ - { - "name": "FEATURE", - "type": "FEATURE", - "links": [ - 509 - ], - "shape": 3, - "slot_index": 0 - }, - { - "name": "FEATURE_PIPE", - "type": "FEATURE_PIPE", - "links": [ - 510 - ], - "shape": 3, - "slot_index": 1 - } - ], - "properties": { - "Node name for S&R": "AudioFeatureExtractor" - }, - "widgets_values": [ - "amplitude_envelope" - ] - }, - { - "id": 132, - "type": "_mfc", - "pos": [ - -2380, - -2810 - ], - "size": { - "0": 315, - "1": 174 - }, - "flags": {}, - "order": 104, - "mode": 0, - "inputs": [ - { - "name": "image", - "type": "IMAGE", - "link": 264 - } - ], - "outputs": [ - { - "name": "MASK", - "type": "MASK", - "links": [ - 462, - 597 - ], - "shape": 3, - "slot_index": 0 - }, - { - "name": "IMAGE", - "type": "IMAGE", - "links": [], - "shape": 3, - "slot_index": 1 - } - ], - "properties": { - "Node name for S&R": "_mfc" - }, - "widgets_values": [ - 0, - 255, - 0, - 30 - ] - }, - { - "id": 245, - "type": "Reroute", - "pos": [ - -2003.558254000694, - -2722.9441223922195 - ], - "size": [ - 75, - 26 - ], - "flags": {}, - "order": 72, - "mode": 0, - "inputs": [ - { - "name": "", - "type": "*", - "link": 640 - } - ], - "outputs": [ - { - "name": "", - "type": "AUDIO", - "links": [ - 437 - ], - "slot_index": 0 - } - ], - "properties": { - "showOutputText": false, - "horizontal": false - } - }, - { - "id": 280, - "type": "FrequencyFilterPreset", - "pos": [ - -2235, - -2011 - ], - "size": { - "0": 344.3999938964844, - "1": 62.53976821899414 - }, - "flags": {}, - "order": 15, - "mode": 0, - "inputs": [ - { - "name": "previous_filter", - "type": "FREQUENCY_FILTER", - "link": null - } - ], - "outputs": [ - { - "name": "FREQUENCY_FILTER", - "type": "FREQUENCY_FILTER", - "links": [ - 517 - ], - "shape": 3 - } - ], - "properties": { - "Node name for S&R": "FrequencyFilterPreset" - }, - "widgets_values": [ - "remove_hiss" - ] - }, - { - "id": 244, - "type": "Reroute", - "pos": [ - -1991, - -2240 - ], - "size": [ - 75, - 26 - ], - "flags": {}, - "order": 73, - "mode": 0, - "inputs": [ - { - "name": "", - "type": "*", - "link": 641 - } - ], - "outputs": [ - { - "name": "", - "type": "AUDIO", - "links": [ - 518 - ], - "slot_index": 0 - } - ], - "properties": { - "showOutputText": false, - "horizontal": false - } - }, - { - "id": 279, - "type": "AudioFilter", - "pos": [ - -1908.8988784876315, - -2114.2240143194176 - ], - "size": { - "0": 252, - "1": 46 - }, - "flags": {}, - "order": 85, - "mode": 0, - "inputs": [ - { - "name": "audio", - "type": "AUDIO", - "link": 518 - }, - { - "name": "filters", - "type": "FREQUENCY_FILTER", - "link": 517, - "slot_index": 1 - } - ], - "outputs": [ - { - "name": "AUDIO", - "type": "AUDIO", - "links": [ - 519, - 520 - ], - "shape": 3, - "slot_index": 0 - } - ], - "properties": { - "Node name for S&R": "AudioFilter" - } - }, - { - "id": 254, - "type": "StaticBody", - "pos": [ - -4861.194123640608, - -2874.053148376448 - ], - "size": { - "0": 317.4000244140625, - "1": 250 - }, - "flags": {}, - "order": 16, - "mode": 4, - "inputs": [ - { - "name": "previous_body", - "type": "STATIC_BODY", - "link": null - } - ], - "outputs": [ - { - "name": "STATIC_BODY", - "type": "STATIC_BODY", - "links": [ - 455 - ], - "shape": 3, - "slot_index": 0 - } - ], - "properties": { - "Node name for S&R": "StaticBody" - }, - "widgets_values": [ - "polygon", - 0.85, - 0.03, - 0.98, - 0.19, - 0.9, - 0.5, - true, - "(0,255,0)" - ] - }, - { - "id": 7, - "type": "CLIPTextEncode", - "pos": [ - -1431, - -360 - ], - "size": { - "0": 425.27801513671875, - "1": 180.6060791015625 - }, - "flags": {}, - "order": 57, - "mode": 0, - "inputs": [ - { - "name": "clip", - "type": "CLIP", - "link": 5 - } - ], - "outputs": [ - { - "name": "CONDITIONING", - "type": "CONDITIONING", - "links": [ - 139 - ], - "slot_index": 0 - } - ], - "properties": { - "Node name for S&R": "CLIPTextEncode" - }, - "widgets_values": [ - "text, watermark" - ] - }, - { - "id": 6, - "type": "CLIPTextEncode", - "pos": [ - -1441, - -569 - ], - "size": { - "0": 422.84503173828125, - "1": 164.31304931640625 - }, - "flags": {}, - "order": 56, - "mode": 0, - "inputs": [ - { - "name": "clip", - "type": "CLIP", - "link": 3 - } - ], - "outputs": [ - { - "name": "CONDITIONING", - "type": "CONDITIONING", - "links": [ - 140 - ], - "slot_index": 0 - } - ], - "properties": { - "Node name for S&R": "CLIPTextEncode" - }, - "widgets_values": [ - "woman dancing made surrounded by psychadelic electricity made of ral-dissolve, rings of ral-dissolve, spinning cubes of ral-dissolve" - ] - }, - { - "id": 87, - "type": "Reroute", - "pos": [ - -1818, - -869 - ], - "size": [ - 75, - 26 - ], - "flags": {}, - "order": 52, - "mode": 0, - "inputs": [ - { - "name": "", - "type": "*", - "link": 629 - } - ], - "outputs": [ - { - "name": "", - "type": "IMAGE", - "links": [ - 136, - 469, - 523 - ], - "slot_index": 0 - } - ], - "properties": { - "showOutputText": false, - "horizontal": false - } - }, - { - "id": 52, - "type": "VAEEncode", - "pos": [ - -1155, - -863 - ], - "size": { - "0": 210, - "1": 46 - }, - "flags": {}, - "order": 67, - "mode": 0, - "inputs": [ - { - "name": "pixels", - "type": "IMAGE", - "link": 523 - }, - { - "name": "vae", - "type": "VAE", - "link": 58 - } - ], - "outputs": [ - { - "name": "LATENT", - "type": "LATENT", - "links": [ - 74 - ], - "shape": 3, - "slot_index": 0 - } - ], - "properties": { - "Node name for S&R": "VAEEncode" - } - }, - { - "id": 284, - "type": "Reroute", - "pos": [ - -1817, - -909 - ], - "size": [ - 75, - 26 - ], - "flags": {}, - "order": 53, - "mode": 0, - "inputs": [ - { - "name": "", - "type": "*", - "link": 630 - } - ], - "outputs": [ - { - "name": "", - "type": "AUDIO", - "links": [], - "slot_index": 0 - } - ], - "properties": { - "showOutputText": false, - "horizontal": false - } - }, - { - "id": 64, - "type": "VHS_VideoCombine", - "pos": [ - 1257, - -649 - ], - "size": [ - 273.7296142578125, - 467.12952599158655 - ], - "flags": {}, - "order": 134, - "mode": 0, - "inputs": [ - { - "name": "images", - "type": "IMAGE", - "link": 88 - }, - { - "name": "audio", - "type": "*", - "link": null - }, - { - "name": "meta_batch", - "type": "VHS_BatchManager", - "link": null - }, - { - "name": "vae", - "type": "VAE", - "link": null - } - ], - "outputs": [ - { - "name": "Filenames", - "type": "VHS_FILENAMES", - "links": null, - "shape": 3 - } - ], - "properties": { - "Node name for S&R": "VHS_VideoCombine" - }, - "widgets_values": { - "frame_rate": 30, - "loop_count": 0, - "filename_prefix": "AnimateDiff", - "format": "video/h264-mp4", - "pix_fmt": "yuv420p", - "crf": 19, - "save_metadata": true, - "pingpong": false, - "save_output": true, - "videopreview": { - "hidden": false, - "paused": false, - "params": { - "filename": "AnimateDiff_03225.mp4", - "subfolder": "", - "type": "output", - "format": "video/h264-mp4", - "frame_rate": 30 - } - } - } - }, - { - "id": 295, - "type": "UpscaleModelLoader", - "pos": [ - 3600, - -730 - ], - "size": { - "0": 315, - "1": 58 - }, - "flags": {}, - "order": 17, - "mode": 4, - "outputs": [ - { - "name": "UPSCALE_MODEL", - "type": "UPSCALE_MODEL", - "links": [ - 545 - ], - "shape": 3 - } - ], - "properties": { - "Node name for S&R": "UpscaleModelLoader" - }, - "widgets_values": [ - "RealESRGAN_x2.pth" - ] - }, - { - "id": 76, - "type": "VAEDecode", - "pos": [ - 2765, - -670 - ], - "size": { - "0": 210, - "1": 46 - }, - "flags": {}, - "order": 137, - "mode": 0, - "inputs": [ - { - "name": "samples", - "type": "LATENT", - "link": 112 - }, - { - "name": "vae", - "type": "VAE", - "link": 410 - } - ], - "outputs": [ - { - "name": "IMAGE", - "type": "IMAGE", - "links": [ - 570 - ], - "slot_index": 0 - } - ], - "properties": { - "Node name for S&R": "VAEDecode" - } - }, - { - "id": 294, - "type": "ImageUpscaleWithModel", - "pos": [ - 3610, - -600 - ], - "size": { - "0": 241.79998779296875, - "1": 46 - }, - "flags": {}, - "order": 141, - "mode": 4, - "inputs": [ - { - "name": "upscale_model", - "type": "UPSCALE_MODEL", - "link": 545, - "slot_index": 0 - }, - { - "name": "image", - "type": "IMAGE", - "link": 546 - } - ], - "outputs": [ - { - "name": "IMAGE", - "type": "IMAGE", - "links": [ - 572 - ], - "shape": 3, - "slot_index": 0 - } - ], - "properties": { - "Node name for S&R": "ImageUpscaleWithModel" - } - }, - { - "id": 293, - "type": "ImageCASharpening+", - "pos": [ - 3610, - -830 - ], - "size": { - "0": 310.79998779296875, - "1": 59.621212005615234 - }, - "flags": {}, - "order": 140, - "mode": 4, - "inputs": [ - { - "name": "image", - "type": "IMAGE", - "link": 571 - } - ], - "outputs": [ - { - "name": "IMAGE", - "type": "IMAGE", - "links": [ - 546 - ], - "shape": 3, - "slot_index": 0 - } - ], - "properties": { - "Node name for S&R": "ImageCASharpening+" - }, - "widgets_values": [ - 0.8 - ] - }, - { - "id": 296, - "type": "Reroute", - "pos": [ - 3063, - -396 - ], - "size": [ - 75, - 26 - ], - "flags": {}, - "order": 51, - "mode": 0, - "inputs": [ - { - "name": "", - "type": "*", - "link": 626 - } - ], - "outputs": [ - { - "name": "", - "type": "MASK", - "links": [ - 559 - ], - "slot_index": 0 - } - ], - "properties": { - "showOutputText": false, - "horizontal": false - } - }, - { - "id": 297, - "type": "Reroute", - "pos": [ - 3060, - -439 - ], - "size": [ - 75, - 26 - ], - "flags": {}, - "order": 54, - "mode": 0, - "inputs": [ - { - "name": "", - "type": "*", - "link": 631 - } - ], - "outputs": [ - { - "name": "", - "type": "IMAGE", - "links": [ - 550 - ], - "slot_index": 0 - } - ], - "properties": { - "showOutputText": false, - "horizontal": false - } - }, - { - "id": 300, - "type": "ImageCompositeMasked", - "pos": [ - 3198, - -523 - ], - "size": { - "0": 315, - "1": 146 - }, - "flags": {}, - "order": 139, - "mode": 0, - "inputs": [ - { - "name": "destination", - "type": "IMAGE", - "link": 569 - }, - { - "name": "source", - "type": "IMAGE", - "link": 561 - }, - { - "name": "mask", - "type": "MASK", - "link": 559 - } - ], - "outputs": [ - { - "name": "IMAGE", - "type": "IMAGE", - "links": [ - 571 - ], - "shape": 3, - "slot_index": 0 - } - ], - "properties": { - "Node name for S&R": "ImageCompositeMasked" - }, - "widgets_values": [ - 0, - 0, - false - ] - }, - { - "id": 299, - "type": "ImageScale", - "pos": [ - 3201, - -703 - ], - "size": { - "0": 315, - "1": 130 - }, - "flags": {}, - "order": 138, - "mode": 0, - "inputs": [ - { - "name": "image", - "type": "IMAGE", - "link": 570 - }, - { - "name": "width", - "type": "INT", - "link": 554, - "widget": { - "name": "width" - } - }, - { - "name": "height", - "type": "INT", - "link": 555, - "widget": { - "name": "height" - } - } - ], - "outputs": [ - { - "name": "IMAGE", - "type": "IMAGE", - "links": [ - 569 - ], - "shape": 3, - "slot_index": 0 - } - ], - "properties": { - "Node name for S&R": "ImageScale" - }, - "widgets_values": [ - "nearest-exact", - 512, - 512, - "disabled" - ] - }, - { - "id": 305, - "type": "ImageScale", - "pos": [ - -6291, - -2714 - ], - "size": { - "0": 315, - "1": 130 - }, - "flags": {}, - "order": 75, - "mode": 0, - "inputs": [ - { - "name": "image", - "type": "IMAGE", - "link": 576 - }, - { - "name": "width", - "type": "INT", - "link": 577, - "widget": { - "name": "width" - }, - "slot_index": 1 - }, - { - "name": "height", - "type": "INT", - "link": 578, - "widget": { - "name": "height" - } - } - ], - "outputs": [ - { - "name": "IMAGE", - "type": "IMAGE", - "links": [ - 579 - ], - "shape": 3, - "slot_index": 0 - } - ], - "properties": { - "Node name for S&R": "ImageScale" - }, - "widgets_values": [ - "nearest-exact", - 1280, - 720, - "disabled" - ] - }, - { - "id": 208, - "type": "EmptyImage", - "pos": [ - -6634, - -2716 - ], - "size": { - "0": 315, - "1": 130 - }, - "flags": {}, - "order": 61, - "mode": 0, - "inputs": [ - { - "name": "width", - "type": "INT", - "link": 362, - "widget": { - "name": "width" - } - }, - { - "name": "height", - "type": "INT", - "link": 361, - "widget": { - "name": "height" - } - }, - { - "name": "batch_size", - "type": "INT", - "link": 363, - "widget": { - "name": "batch_size" - } - } - ], - "outputs": [ - { - "name": "IMAGE", - "type": "IMAGE", - "links": [ - 369 - ], - "shape": 3, - "slot_index": 0 - } - ], - "properties": { - "Node name for S&R": "EmptyImage" - }, - "widgets_values": [ - 1280, - 720, - 60, - 0 - ] - }, - { - "id": 309, - "type": "Reroute", - "pos": [ - -6486, - -4275 - ], - "size": [ - 75, - 26 - ], - "flags": {}, - "order": 91, - "mode": 0, - "inputs": [ - { - "name": "", - "type": "*", - "link": 588 - } - ], - "outputs": [ - { - "name": "", - "type": "IMAGE", - "links": [ - 589 - ], - "slot_index": 0 - } - ], - "properties": { - "showOutputText": false, - "horizontal": false - } - }, - { - "id": 298, - "type": "GetImageSizeAndCount", - "pos": [ - 3213, - -849 - ], - "size": { - "0": 210, - "1": 86 - }, - "flags": {}, - "order": 68, - "mode": 0, - "inputs": [ - { - "name": "image", - "type": "IMAGE", - "link": 550 - } - ], - "outputs": [ - { - "name": "image", - "type": "IMAGE", - "links": [ - 561 - ], - "shape": 3, - "slot_index": 0 - }, - { - "name": "1920 width", - "type": "INT", - "links": [ - 554 - ], - "shape": 3, - "slot_index": 1 - }, - { - "name": "1080 height", - "type": "INT", - "links": [ - 555 - ], - "shape": 3, - "slot_index": 2 - }, - { - "name": "25 count", - "type": "INT", - "links": [], - "shape": 3, - "slot_index": 3 - } - ], - "properties": { - "Node name for S&R": "GetImageSizeAndCount" - } - }, - { - "id": 312, - "type": "Note", - "pos": [ - -844, - -4272 - ], - "size": { - "0": 428.9208679199219, - "1": 114.45166778564453 - }, - "flags": {}, - "order": 18, - "mode": 0, - "properties": { - "text": "" - }, - "widgets_values": [ - "enable or disable the video combine nodes below just to check your masks are coming out the way you expect" - ], - "color": "#432", - "bgcolor": "#653" - }, - { - "id": 183, - "type": "IPAdapterAdvanced", - "pos": [ - 210, - -2180 - ], - "size": { - "0": 315, - "1": 278 - }, - "flags": {}, - "order": 125, - "mode": 4, - "inputs": [ - { - "name": "model", - "type": "MODEL", - "link": 320 - }, - { - "name": "ipadapter", - "type": "IPADAPTER", - "link": 319 - }, - { - "name": "image", - "type": "IMAGE", - "link": 596, - "slot_index": 2 - }, - { - "name": "image_negative", - "type": "IMAGE", - "link": null - }, - { - "name": "attn_mask", - "type": "MASK", - "link": 513 - }, - { - "name": "clip_vision", - "type": "CLIP_VISION", - "link": null - } - ], - "outputs": [ - { - "name": "MODEL", - "type": "MODEL", - "links": [ - 321 - ], - "shape": 3, - "slot_index": 0 - } - ], - "properties": { - "Node name for S&R": "IPAdapterAdvanced" - }, - "widgets_values": [ - 1.1, - "strong style transfer", - "concat", - 0, - 1, - "V only" - ] - }, - { - "id": 184, - "type": "LoadImage", - "pos": [ - 670, - -2220 - ], - "size": { - "0": 320, - "1": 314.0001220703125 - }, - "flags": {}, - "order": 19, - "mode": 4, - "outputs": [ - { - "name": "IMAGE", - "type": "IMAGE", - "links": [ - 596 - ], - "shape": 3, - "slot_index": 0 - }, - { - "name": "MASK", - "type": "MASK", - "links": null, - "shape": 3 - } - ], - "properties": { - "Node name for S&R": "LoadImage" - }, - "widgets_values": [ - "forestBG.jpg", - "image" - ] - }, - { - "id": 256, - "type": "FlexMaskTransform", - "pos": [ - -1590, - -2477 - ], - "size": { - "0": 315, - "1": 266 - }, - "flags": { - "collapsed": true - }, - "order": 108, - "mode": 4, - "inputs": [ - { - "name": "masks", - "type": "MASK", - "link": 462 - }, - { - "name": "feature", - "type": "FEATURE", - "link": 463 - }, - { - "name": "feature_pipe", - "type": "FEATURE_PIPE", - "link": 464 - } - ], - "outputs": [ - { - "name": "MASK", - "type": "MASK", - "links": [], - "shape": 3 - } - ], - "properties": { - "Node name for S&R": "FlexMaskTransform" - }, - "widgets_values": [ - 1, - false, - 0, - 0, - 0, - "translate", - 20.1, - -10 - ] - }, - { - "id": 315, - "type": "FlexMaskMorph", - "pos": [ - -1471, - -2735 - ], - "size": { - "0": 315, - "1": 266 - }, - "flags": {}, - "order": 109, - "mode": 0, - "inputs": [ - { - "name": "masks", - "type": "MASK", - "link": 597 - }, - { - "name": "feature", - "type": "FEATURE", - "link": 598 - }, - { - "name": "feature_pipe", - "type": "FEATURE_PIPE", - "link": 599 - } - ], - "outputs": [ - { - "name": "MASK", - "type": "MASK", - "links": [ - 600, - 601, - 602 - ], - "shape": 3, - "slot_index": 0 - } - ], - "properties": { - "Node name for S&R": "FlexMaskMorph" - }, - "widgets_values": [ - 1, - false, - 0, - 0, - 0, - "dilate", - 17, - 10 - ] - }, - { - "id": 292, - "type": "VHS_VideoCombine", - "pos": [ - 3969, - -755 - ], - "size": [ - 1774.458251953125, - 1310.8827667236328 - ], - "flags": {}, - "order": 142, - "mode": 0, - "inputs": [ - { - "name": "images", - "type": "IMAGE", - "link": 572 - }, - { - "name": "audio", - "type": "*", - "link": null - }, - { - "name": "meta_batch", - "type": "VHS_BatchManager", - "link": null - }, - { - "name": "vae", - "type": "VAE", - "link": null - } - ], - "outputs": [ - { - "name": "Filenames", - "type": "VHS_FILENAMES", - "links": null, - "shape": 3 - } - ], - "properties": { - "Node name for S&R": "VHS_VideoCombine" - }, - "widgets_values": { - "frame_rate": 30, - "loop_count": 0, - "filename_prefix": "charlie/charlie", - "format": "video/h264-mp4", - "pix_fmt": "yuv420p", - "crf": 19, - "save_metadata": true, - "pingpong": false, - "save_output": true, - "videopreview": { - "hidden": false, - "paused": false, - "params": { - "filename": "charlie_00010.mp4", - "subfolder": "charlie", - "type": "output", - "format": "video/h264-mp4", - "frame_rate": 30 - } - } - } - }, - { - "id": 248, - "type": "VHS_LoadVideo", - "pos": [ - -7140, - -4224 - ], - "size": [ - 235.1999969482422, - 373.112556422034 - ], - "flags": {}, - "order": 62, - "mode": 0, - "inputs": [ - { - "name": "meta_batch", - "type": "VHS_BatchManager", - "link": null - }, - { - "name": "vae", - "type": "VAE", - "link": null - }, - { - "name": "frame_load_cap", - "type": "*", - "link": 451, - "widget": { - "name": "frame_load_cap" - } - } - ], - "outputs": [ - { - "name": "IMAGE", - "type": "IMAGE", - "links": [ - 584 - ], - "shape": 3, - "slot_index": 0 - }, - { - "name": "frame_count", - "type": "INT", - "links": null, - "shape": 3 - }, - { - "name": "audio", - "type": "AUDIO", - "links": null, - "shape": 3 - }, - { - "name": "video_info", - "type": "VHS_VIDEOINFO", - "links": null, - "shape": 3 - } - ], - "properties": { - "Node name for S&R": "VHS_LoadVideo" - }, - "widgets_values": { - "video": "charlie724_mask_600-900.mp4", - "force_rate": 0, - "force_size": "Disabled", - "custom_width": 512, - "custom_height": 512, - "frame_load_cap": 60, - "skip_first_frames": 200, - "select_every_nth": 1, - "choose video to upload": "image", - "videopreview": { - "hidden": false, - "paused": false, - "params": { - "frame_load_cap": 60, - "skip_first_frames": 200, - "force_rate": 0, - "filename": "charlie724_mask_600-900.mp4", - "type": "input", - "format": "video/mp4", - "select_every_nth": 1 - } - } - } - }, - { - "id": 81, - "type": "LoadImage", - "pos": [ - 657, - -4034 - ], - "size": { - "0": 315, - "1": 314 - }, - "flags": {}, - "order": 20, - "mode": 0, - "outputs": [ - { - "name": "IMAGE", - "type": "IMAGE", - "links": [ - 124 - ], - "shape": 3, - "slot_index": 0 - }, - { - "name": "MASK", - "type": "MASK", - "links": null, - "shape": 3 - } - ], - "properties": { - "Node name for S&R": "LoadImage" - }, - "widgets_values": [ - "FREE_psychadelicFire.webp", - "image" - ] - }, - { - "id": 146, - "type": "FlexMaskMorph", - "pos": [ - -1602, - -4032 - ], - "size": { - "0": 315, - "1": 266 - }, - "flags": {}, - "order": 106, - "mode": 0, - "inputs": [ - { - "name": "masks", - "type": "MASK", - "link": 238 - }, - { - "name": "feature", - "type": "FEATURE", - "link": 228 - }, - { - "name": "feature_pipe", - "type": "FEATURE_PIPE", - "link": 229 - } - ], - "outputs": [ - { - "name": "MASK", - "type": "MASK", - "links": [ - 244, - 260, - 286 - ], - "shape": 3, - "slot_index": 0 - } - ], - "properties": { - "Node name for S&R": "FlexMaskMorph" - }, - "widgets_values": [ - 1, - false, - 0.8300000000000001, - 0.30000000000000004, - 0, - "dilate", - 17, - 10 - ] - }, - { - "id": 313, - "type": "ParticleEmitter", - "pos": [ - -5237, - -2538 - ], - "size": { - "0": 312.3999938964844, - "1": 382 - }, - "flags": {}, - "order": 21, - "mode": 4, - "inputs": [ - { - "name": "previous_emitter", - "type": "PARTICLE_EMITTER", - "link": null, - "slot_index": 0 - }, - { - "name": "emitter_movement", - "type": "EMITTER_MOVEMENT", - "link": null - }, - { - "name": "spring_joint_setting", - "type": "SPRING_JOINT_SETTING", - "link": null - }, - { - "name": "particle_modulation", - "type": "PARTICLE_MODULATION", - "link": null - } - ], - "outputs": [ - { - "name": "PARTICLE_EMITTER", - "type": "PARTICLE_EMITTER", - "links": [ - 594 - ], - "shape": 3, - "slot_index": 0 - } - ], - "properties": { - "Node name for S&R": "ParticleEmitter" - }, - "widgets_values": [ - 1, - 0.5, - 200, - 136, - 49.2, - 372, - 49.2, - "(0,255,0)", - 0.05, - 55, - 0, - 0 - ] - }, - { - "id": 232, - "type": "ParticleEmitter", - "pos": [ - -5235, - -2937 - ], - "size": { - "0": 312.3999938964844, - "1": 382 - }, - "flags": {}, - "order": 49, - "mode": 4, - "inputs": [ - { - "name": "previous_emitter", - "type": "PARTICLE_EMITTER", - "link": 594, - "slot_index": 0 - }, - { - "name": "emitter_movement", - "type": "EMITTER_MOVEMENT", - "link": null - }, - { - "name": "spring_joint_setting", - "type": "SPRING_JOINT_SETTING", - "link": null - }, - { - "name": "particle_modulation", - "type": "PARTICLE_MODULATION", - "link": null - } - ], - "outputs": [ - { - "name": "PARTICLE_EMITTER", - "type": "PARTICLE_EMITTER", - "links": [ - 425 - ], - "shape": 3, - "slot_index": 0 - } - ], - "properties": { - "Node name for S&R": "ParticleEmitter" - }, - "widgets_values": [ - 0, - 0.5, - 315, - 95, - 52.300000000000004, - 754, - 19.5, - "(0,255,0)", - 0.05, - 21, - 0, - 0 - ] - }, - { - "id": 277, - "type": "VHS_VideoCombine", - "pos": [ - -845, - -2872 - ], - "size": [ - 315, - 489.9375 - ], - "flags": {}, - "order": 121, - "mode": 4, - "inputs": [ - { - "name": "images", - "type": "IMAGE", - "link": 515 - }, - { - "name": "audio", - "type": "*", - "link": null - }, - { - "name": "meta_batch", - "type": "VHS_BatchManager", - "link": null - }, - { - "name": "vae", - "type": "VAE", - "link": null - } - ], - "outputs": [ - { - "name": "Filenames", - "type": "VHS_FILENAMES", - "links": null, - "shape": 3 - } - ], - "properties": { - "Node name for S&R": "VHS_VideoCombine" - }, - "widgets_values": { - "frame_rate": 30, - "loop_count": 0, - "filename_prefix": "AnimateDiff", - "format": "video/h264-mp4", - "pix_fmt": "yuv420p", - "crf": 19, - "save_metadata": true, - "pingpong": false, - "save_output": true, - "videopreview": { - "hidden": false, - "paused": false, - "params": { - "filename": "AnimateDiff_02606-audio.mp4", - "subfolder": "", - "type": "output", - "format": "video/h264-mp4", - "frame_rate": 30 - } - } - } - }, - { - "id": 307, - "type": "DyeImage", - "pos": [ - -6873, - -4204 - ], - "size": { - "0": 315, - "1": 106 - }, - "flags": {}, - "order": 79, - "mode": 0, - "inputs": [ - { - "name": "image", - "type": "IMAGE", - "link": 584 - } - ], - "outputs": [ - { - "name": "IMAGE", - "type": "IMAGE", - "links": [ - 585, - 588 - ], - "shape": 3, - "slot_index": 0 - } - ], - "properties": { - "Node name for S&R": "DyeImage" - }, - "widgets_values": [ - "255,255,255", - "0,0,255", - 0.124 - ] - }, - { - "id": 221, - "type": "ParticleEmitter", - "pos": [ - -5238.194123640608, - -3335.4633919330504 - ], - "size": { - "0": 312.3999938964844, - "1": 382 - }, - "flags": {}, - "order": 63, - "mode": 0, - "inputs": [ - { - "name": "previous_emitter", - "type": "PARTICLE_EMITTER", - "link": 425, - "slot_index": 0 - }, - { - "name": "emitter_movement", - "type": "EMITTER_MOVEMENT", - "link": null, - "slot_index": 1 - }, - { - "name": "spring_joint_setting", - "type": "SPRING_JOINT_SETTING", - "link": null - }, - { - "name": "particle_modulation", - "type": "PARTICLE_MODULATION", - "link": null - } - ], - "outputs": [ - { - "name": "PARTICLE_EMITTER", - "type": "PARTICLE_EMITTER", - "links": [ - 395 - ], - "shape": 3, - "slot_index": 0 - } - ], - "properties": { - "Node name for S&R": "ParticleEmitter" - }, - "widgets_values": [ - 0.85, - 0.89, - 270, - 30, - 227.10000000000002, - 332, - 0.30000000000000004, - "(255,0,0)", - 0, - 0, - 0, - 0 - ], - "color": "#232", - "bgcolor": "#353" - }, - { - "id": 218, - "type": "ParticleEmitter", - "pos": [ - -5254, - -3726 - ], - "size": { - "0": 312.3999938964844, - "1": 382 - }, - "flags": {}, - "order": 80, - "mode": 0, - "inputs": [ - { - "name": "previous_emitter", - "type": "PARTICLE_EMITTER", - "link": 395, - "slot_index": 0 - }, - { - "name": "emitter_movement", - "type": "EMITTER_MOVEMENT", - "link": null - }, - { - "name": "spring_joint_setting", - "type": "SPRING_JOINT_SETTING", - "link": null - }, - { - "name": "particle_modulation", - "type": "PARTICLE_MODULATION", - "link": null - } - ], - "outputs": [ - { - "name": "PARTICLE_EMITTER", - "type": "PARTICLE_EMITTER", - "links": [ - 390 - ], - "shape": 3 - } - ], - "properties": { - "Node name for S&R": "ParticleEmitter" - }, - "widgets_values": [ - 0.15, - 0.89, - 270, - 30, - 227.10000000000002, - 330, - 0.4, - "(255,0,0)", - 0, - 0, - 0, - 0 - ], - "color": "#223", - "bgcolor": "#335" - }, - { - "id": 304, - "type": "Note", - "pos": [ - -6920.39209934666, - -2646.358321652289 - ], - "size": { - "0": 210, - "1": 58 - }, - "flags": {}, - "order": 22, - "mode": 0, - "properties": { - "text": "" - }, - "widgets_values": [ - "remove bg since" - ], - "color": "#432", - "bgcolor": "#653" - }, - { - "id": 155, - "type": "LoadImage", - "pos": [ - 694.0616085845941, - -2794.4554317781603 - ], - "size": { - "0": 320, - "1": 314.0001220703125 - }, - "flags": {}, - "order": 23, - "mode": 0, - "outputs": [ - { - "name": "IMAGE", - "type": "IMAGE", - "links": [ - 604 - ], - "shape": 3, - "slot_index": 0 - }, - { - "name": "MASK", - "type": "MASK", - "links": null, - "shape": 3 - } - ], - "properties": { - "Node name for S&R": "LoadImage" - }, - "widgets_values": [ - "forestBG.jpg", - "image" - ] - }, - { - "id": 231, - "type": "Note", - "pos": [ - 2036, - -576 - ], - "size": { - "0": 264.4328308105469, - "1": 104.34508514404297 - }, - "flags": {}, - "order": 24, - "mode": 0, - "properties": { - "text": "" - }, - "widgets_values": [ - "latent noise mask again, but this time only skip the vocalist" - ], - "color": "#432", - "bgcolor": "#653" - }, - { - "id": 317, - "type": "Note", - "pos": [ - 3287, - -292 - ], - "size": { - "0": 275.04754638671875, - "1": 152.1307830810547 - }, - "flags": {}, - "order": 25, - "mode": 0, - "properties": { - "text": "" - }, - "widgets_values": [ - "paste the vocalist back on the image\nyou can use this instead of the second latent noise mask" - ], - "color": "#432", - "bgcolor": "#653" - }, - { - "id": 238, - "type": "Note", - "pos": [ - -4439.194123640608, - -2969.053148376447 - ], - "size": { - "0": 420.99908447265625, - "1": 117.18041229248047 - }, - "flags": {}, - "order": 26, - "mode": 0, - "properties": { - "text": "" - }, - "widgets_values": [ - "3. Here we set up particle system and composite the images to extract masks by color later.\n\nClick the \"?\" icons on nodes for more information\n" - ], - "color": "#432", - "bgcolor": "#653" - }, - { - "id": 314, - "type": "Note", - "pos": [ - -4879, - -2471 - ], - "size": { - "0": 349.6924133300781, - "1": 93.68490600585938 - }, - "flags": {}, - "order": 27, - "mode": 0, - "properties": { - "text": "" - }, - "widgets_values": [ - "change color of the particle emitters to have their masks modulated by different instruments. You can have many particle emitters." - ], - "color": "#432", - "bgcolor": "#653" - }, - { - "id": 225, - "type": "Note", - "pos": [ - -5724, - -3727 - ], - "size": { - "0": 404.19134521484375, - "1": 215.7861328125 - }, - "flags": {}, - "order": 28, - "mode": 0, - "properties": { - "text": "" - }, - "widgets_values": [ - "1. With this workflow, we modulate different colored masks with the different instruments in a song, showcasing the FLEX mask modulating nodes, and the audio classification nodes, and particle simulations made available by RyanOnTheInside nodes. In this example, we use audio, but the Flex mods can also accept MIDI, Time, motion, and more\n\nClick the \"?\" icons on nodes for more information\n\n\n\n" - ], - "color": "#432", - "bgcolor": "#653" - }, - { - "id": 222, - "type": "ImageCompositeMasked", - "pos": [ - -4454, - -3636 - ], - "size": { - "0": 315, - "1": 146 - }, - "flags": {}, - "order": 98, - "mode": 0, - "inputs": [ - { - "name": "destination", - "type": "IMAGE", - "link": 407 - }, - { - "name": "source", - "type": "IMAGE", - "link": 589 - }, - { - "name": "mask", - "type": "MASK", - "link": 483 - } - ], - "outputs": [ - { - "name": "IMAGE", - "type": "IMAGE", - "links": [ - 400, - 413 - ], - "shape": 3, - "slot_index": 0 - } - ], - "properties": { - "Node name for S&R": "ImageCompositeMasked" - }, - "widgets_values": [ - 0, - 0, - false - ] - }, - { - "id": 137, - "type": "VHS_VideoCombine", - "pos": [ - -824, - -4106 - ], - "size": [ - 315, - 489.9375 - ], - "flags": {}, - "order": 117, - "mode": 4, - "inputs": [ - { - "name": "images", - "type": "IMAGE", - "link": 247 - }, - { - "name": "audio", - "type": "AUDIO", - "link": 443 - }, - { - "name": "meta_batch", - "type": "VHS_BatchManager", - "link": null - }, - { - "name": "vae", - "type": "VAE", - "link": null - } - ], - "outputs": [ - { - "name": "Filenames", - "type": "VHS_FILENAMES", - "links": null, - "shape": 3 - } - ], - "properties": { - "Node name for S&R": "VHS_VideoCombine" - }, - "widgets_values": { - "frame_rate": 30, - "loop_count": 0, - "filename_prefix": "AnimateDiff", - "format": "video/h264-mp4", - "pix_fmt": "yuv420p", - "crf": 19, - "save_metadata": true, - "pingpong": false, - "save_output": true, - "videopreview": { - "hidden": false, - "paused": false, - "params": { - "filename": "AnimateDiff_02605-audio.mp4", - "subfolder": "", - "type": "output", - "format": "video/h264-mp4", - "frame_rate": 30 - } - } - } - }, - { - "id": 150, - "type": "AudioFilter", - "pos": [ - -1964, - -3966 - ], - "size": { - "0": 252, - "1": 46 - }, - "flags": {}, - "order": 70, - "mode": 0, - "inputs": [ - { - "name": "audio", - "type": "AUDIO", - "link": 638 - }, - { - "name": "filters", - "type": "FREQUENCY_FILTER", - "link": 241 - } - ], - "outputs": [ - { - "name": "AUDIO", - "type": "AUDIO", - "links": [ - 243, - 443 - ], - "shape": 3, - "slot_index": 0 - } - ], - "properties": { - "Node name for S&R": "AudioFilter" - } - }, - { - "id": 180, - "type": "VHS_VideoCombine", - "pos": [ - -3993, - -3590 - ], - "size": [ - 320, - 493 - ], - "flags": {}, - "order": 99, - "mode": 0, - "inputs": [ - { - "name": "images", - "type": "IMAGE", - "link": 400 - }, - { - "name": "audio", - "type": "*", - "link": 632 - }, - { - "name": "meta_batch", - "type": "VHS_BatchManager", - "link": null - }, - { - "name": "vae", - "type": "VAE", - "link": null - } - ], - "outputs": [ - { - "name": "Filenames", - "type": "VHS_FILENAMES", - "links": null, - "shape": 3 - } - ], - "properties": { - "Node name for S&R": "VHS_VideoCombine" - }, - "widgets_values": { - "frame_rate": 30, - "loop_count": 0, - "filename_prefix": "AnimateDiff", - "format": "video/h264-mp4", - "pix_fmt": "yuv420p", - "crf": 19, - "save_metadata": true, - "pingpong": false, - "save_output": true, - "videopreview": { - "hidden": false, - "paused": false, - "params": { - "filename": "AnimateDiff_03224-audio.mp4", - "subfolder": "", - "type": "output", - "format": "video/h264-mp4", - "frame_rate": 30 - } - } - } - }, - { - "id": 44, - "type": "VHS_LoadVideo", - "pos": [ - -6757, - -3243 - ], - "size": [ - 235.1999969482422, - 373.112556422034 - ], - "flags": {}, - "order": 60, - "mode": 0, - "inputs": [ - { - "name": "meta_batch", - "type": "VHS_BatchManager", - "link": null - }, - { - "name": "vae", - "type": "VAE", - "link": null - }, - { - "name": "frame_load_cap", - "type": "INT", - "link": 250, - "widget": { - "name": "frame_load_cap" - } - } - ], - "outputs": [ - { - "name": "IMAGE", - "type": "IMAGE", - "links": [ - 576, - 611 - ], - "shape": 3, - "slot_index": 0 - }, - { - "name": "frame_count", - "type": "INT", - "links": null, - "shape": 3 - }, - { - "name": "audio", - "type": "AUDIO", - "links": [ - 610 - ], - "shape": 3, - "slot_index": 2 - }, - { - "name": "video_info", - "type": "VHS_VIDEOINFO", - "links": [ - 297 - ], - "shape": 3, - "slot_index": 3 - } - ], - "properties": { - "Node name for S&R": "VHS_LoadVideo" - }, - "widgets_values": { - "video": "Charli XCX - claws [Official Video].mp4", - "force_rate": 0, - "force_size": "Disabled", - "custom_width": 512, - "custom_height": 512, - "frame_load_cap": 60, - "skip_first_frames": 1524, - "select_every_nth": 1, - "choose video to upload": "image", - "videopreview": { - "hidden": false, - "paused": false, - "params": { - "frame_load_cap": 60, - "skip_first_frames": 1524, - "force_rate": 0, - "filename": "Charli XCX - claws [Official Video].mp4", - "type": "input", - "format": "video/mp4", - "select_every_nth": 1 - } - } - } - }, - { - "id": 326, - "type": "SetNode", - "pos": { - "0": -6299, - "1": -2951, - "2": 0, - "3": 0, - "4": 0, - "5": 0, - "6": 0, - "7": 0, - "8": 0, - "9": 0 - }, - "size": { - "0": 210, - "1": 58 - }, - "flags": { - "collapsed": true - }, - "order": 77, - "mode": 0, - "inputs": [ - { - "name": "AUDIO", - "type": "AUDIO", - "link": 610 - } - ], - "outputs": [ - { - "name": "*", - "type": "*", - "links": null - } - ], - "title": "Set_AUDIO", - "properties": { - "previousName": "AUDIO" - }, - "widgets_values": [ - "AUDIO" - ] - }, - { - "id": 327, - "type": "SetNode", - "pos": { - "0": -6330, - "1": -3005, - "2": 0, - "3": 0, - "4": 0, - "5": 0, - "6": 0, - "7": 0, - "8": 0, - "9": 0 - }, - "size": { - "0": 210, - "1": 58 - }, - "flags": { - "collapsed": true - }, - "order": 76, - "mode": 0, - "inputs": [ - { - "name": "IMAGE", - "type": "IMAGE", - "link": 611 - } - ], - "outputs": [ - { - "name": "*", - "type": "*", - "links": null - } - ], - "title": "Set_INIT_IMAGES", - "properties": { - "previousName": "INIT_IMAGES" - }, - "widgets_values": [ - "INIT_IMAGES" - ] - }, - { - "id": 331, - "type": "SetNode", - "pos": { - "0": -6338, - "1": -3060, - "2": 0, - "3": 0, - "4": 0, - "5": 0, - "6": 0, - "7": 0, - "8": 0, - "9": 0 - }, - "size": { - "0": 210, - "1": 58 - }, - "flags": { - "collapsed": true - }, - "order": 89, - "mode": 0, - "inputs": [ - { - "name": "INT", - "type": "INT", - "link": 614 - } - ], - "outputs": [ - { - "name": "*", - "type": "*", - "links": null - } - ], - "title": "Set_INIT_HEIGHT", - "properties": { - "previousName": "INIT_HEIGHT" - }, - "widgets_values": [ - "INIT_HEIGHT" - ] - }, - { - "id": 330, - "type": "SetNode", - "pos": { - "0": -6308, - "1": -3122, - "2": 0, - "3": 0, - "4": 0, - "5": 0, - "6": 0, - "7": 0, - "8": 0, - "9": 0 - }, - "size": { - "0": 210, - "1": 58 - }, - "flags": { - "collapsed": true - }, - "order": 88, - "mode": 0, - "inputs": [ - { - "name": "INT", - "type": "INT", - "link": 613 - } - ], - "outputs": [ - { - "name": "*", - "type": "*", - "links": null - } - ], - "title": "Set_INIT_WIDTH", - "properties": { - "previousName": "INIT_WIDTH" - }, - "widgets_values": [ - "INIT_WIDTH" - ] - }, - { - "id": 328, - "type": "SetNode", - "pos": { - "0": -6299, - "1": -3180, - "2": 0, - "3": 0, - "4": 0, - "5": 0, - "6": 0, - "7": 0, - "8": 0, - "9": 0 - }, - "size": { - "0": 210, - "1": 58 - }, - "flags": { - "collapsed": true - }, - "order": 87, - "mode": 0, - "inputs": [ - { - "name": "FLOAT", - "type": "FLOAT", - "link": 612 - } - ], - "outputs": [ - { - "name": "*", - "type": "*", - "links": null - } - ], - "title": "Set_FRAME_RATE", - "properties": { - "previousName": "FRAME_RATE" - }, - "widgets_values": [ - "FRAME_RATE" - ] - }, - { - "id": 171, - "type": "VHS_VideoInfoLoaded", - "pos": [ - -6522, - -3315 - ], - "size": { - "0": 304.79998779296875, - "1": 106 - }, - "flags": { - "collapsed": true - }, - "order": 78, - "mode": 0, - "inputs": [ - { - "name": "video_info", - "type": "VHS_VIDEOINFO", - "link": 297 - } - ], - "outputs": [ - { - "name": "fps🟦", - "type": "FLOAT", - "links": [ - 612 - ], - "shape": 3, - "slot_index": 0 - }, - { - "name": "frame_count🟦", - "type": "INT", - "links": null, - "shape": 3 - }, - { - "name": "duration🟦", - "type": "FLOAT", - "links": null, - "shape": 3 - }, - { - "name": "width🟦", - "type": "INT", - "links": [ - 613 - ], - "shape": 3, - "slot_index": 3 - }, - { - "name": "height🟦", - "type": "INT", - "links": [ - 614 - ], - "shape": 3, - "slot_index": 4 - } - ], - "properties": { - "Node name for S&R": "VHS_VideoInfoLoaded" - }, - "widgets_values": {} - }, - { - "id": 336, - "type": "GetNode", - "pos": { - "0": -2292, - "1": -3105, - "2": 0, - "3": 0, - "4": 0, - "5": 0, - "6": 0, - "7": 0, - "8": 0, - "9": 0 - }, - "size": { - "0": 210, - "1": 58 - }, - "flags": {}, - "order": 29, - "mode": 0, - "inputs": [], - "outputs": [ - { - "name": "FEATURE_PIPE", - "type": "FEATURE_PIPE", - "links": [ - 619 - ], - "slot_index": 0 - } - ], - "title": "Get_FEATURE_PIPE", - "properties": {}, - "widgets_values": [ - "FEATURE_PIPE" - ] - }, - { - "id": 337, - "type": "GetNode", - "pos": { - "0": -2205, - "1": -2560, - "2": 0, - "3": 0, - "4": 0, - "5": 0, - "6": 0, - "7": 0, - "8": 0, - "9": 0 - }, - "size": { - "0": 210, - "1": 58 - }, - "flags": {}, - "order": 30, - "mode": 0, - "inputs": [], - "outputs": [ - { - "name": "FEATURE_PIPE", - "type": "FEATURE_PIPE", - "links": [ - 620 - ], - "slot_index": 0 - } - ], - "title": "Get_FEATURE_PIPE", - "properties": {}, - "widgets_values": [ - "FEATURE_PIPE" - ] - }, - { - "id": 338, - "type": "GetNode", - "pos": { - "0": -2348, - "1": -3746, - "2": 0, - "3": 0, - "4": 0, - "5": 0, - "6": 0, - "7": 0, - "8": 0, - "9": 0 - }, - "size": { - "0": 210, - "1": 58 - }, - "flags": {}, - "order": 31, - "mode": 0, - "inputs": [], - "outputs": [ - { - "name": "FEATURE_PIPE", - "type": "FEATURE_PIPE", - "links": [ - 621 - ], - "slot_index": 0 - } - ], - "title": "Get_FEATURE_PIPE", - "properties": {}, - "widgets_values": [ - "FEATURE_PIPE" - ] - }, - { - "id": 339, - "type": "GetNode", - "pos": { - "0": -2275, - "1": -1866, - "2": 0, - "3": 0, - "4": 0, - "5": 0, - "6": 0, - "7": 0, - "8": 0, - "9": 0 - }, - "size": { - "0": 210, - "1": 58 - }, - "flags": {}, - "order": 32, - "mode": 0, - "inputs": [], - "outputs": [ - { - "name": "FEATURE_PIPE", - "type": "FEATURE_PIPE", - "links": [ - 622 - ], - "slot_index": 0 - } - ], - "title": "Get_FEATURE_PIPE", - "properties": {}, - "widgets_values": [ - "FEATURE_PIPE" - ] - }, - { - "id": 163, - "type": "ImageScale", - "pos": [ - -4382, - -3146 - ], - "size": { - "0": 315, - "1": 130 - }, - "flags": {}, - "order": 100, - "mode": 0, - "inputs": [ - { - "name": "image", - "type": "IMAGE", - "link": 413 - }, - { - "name": "width", - "type": "INT", - "link": 275, - "widget": { - "name": "width" - }, - "slot_index": 1 - }, - { - "name": "height", - "type": "INT", - "link": 276, - "widget": { - "name": "height" - } - } - ], - "outputs": [ - { - "name": "IMAGE", - "type": "IMAGE", - "links": [ - 279 - ], - "shape": 3, - "slot_index": 0 - } - ], - "properties": { - "Node name for S&R": "ImageScale" - }, - "widgets_values": [ - "nearest-exact", - 1280, - 720, - "disabled" - ] - }, - { - "id": 237, - "type": "Note", - "pos": [ - -6106, - -4362 - ], - "size": { - "0": 463.9614562988281, - "1": 129.11036682128906 - }, - "flags": {}, - "order": 33, - "mode": 0, - "properties": { - "text": "" - }, - "widgets_values": [ - "2. Input your masks here. My example has one color for the vocalist" - ], - "color": "#432", - "bgcolor": "#653" - }, - { - "id": 250, - "type": "_mfc", - "pos": [ - -6486, - -4194 - ], - "size": { - "0": 315, - "1": 174 - }, - "flags": {}, - "order": 90, - "mode": 0, - "inputs": [ - { - "name": "image", - "type": "IMAGE", - "link": 585 - } - ], - "outputs": [ - { - "name": "MASK", - "type": "MASK", - "links": [ - 450, - 623 - ], - "shape": 3, - "slot_index": 0 - }, - { - "name": "IMAGE", - "type": "IMAGE", - "links": null, - "shape": 3, - "slot_index": 1 - } - ], - "properties": { - "Node name for S&R": "_mfc" - }, - "widgets_values": [ - 0, - 0, - 255, - 19 - ] - }, - { - "id": 341, - "type": "GetNode", - "pos": { - "0": -6140, - "1": -2860, - "2": 0, - "3": 0, - "4": 0, - "5": 0, - "6": 0, - "7": 0, - "8": 0, - "9": 0 - }, - "size": { - "0": 210, - "1": 58 - }, - "flags": {}, - "order": 34, - "mode": 0, - "inputs": [], - "outputs": [ - { - "name": "MASK", - "type": "MASK", - "links": [ - 624 - ], - "slot_index": 0 - } - ], - "title": "Get_SUBJECT_MASK", - "properties": {}, - "widgets_values": [ - "SUBJECT_MASK" - ] - }, - { - "id": 249, - "type": "Reroute", - "pos": [ - -6090, - -3987 - ], - "size": [ - 75, - 26 - ], - "flags": {}, - "order": 95, - "mode": 0, - "inputs": [ - { - "name": "", - "type": "*", - "link": 450 - } - ], - "outputs": [ - { - "name": "", - "type": "MASK", - "links": [ - 482, - 483 - ], - "slot_index": 0 - } - ], - "properties": { - "showOutputText": false, - "horizontal": false - } - }, - { - "id": 78, - "type": "NNLatentUpscale", - "pos": [ - 1690, - -908 - ], - "size": { - "0": 315, - "1": 82 - }, - "flags": {}, - "order": 133, - "mode": 0, - "inputs": [ - { - "name": "latent", - "type": "LATENT", - "link": 117 - } - ], - "outputs": [ - { - "name": "LATENT", - "type": "LATENT", - "links": [ - 423 - ], - "shape": 3, - "slot_index": 0 - } - ], - "properties": { - "Node name for S&R": "NNLatentUpscale" - }, - "widgets_values": [ - "SD 1.x", - 1.1500000000000001 - ] - }, - { - "id": 342, - "type": "GetNode", - "pos": { - "0": 1400, - "1": -11, - "2": 0, - "3": 0, - "4": 0, - "5": 0, - "6": 0, - "7": 0, - "8": 0, - "9": 0 - }, - "size": { - "0": 210, - "1": 58 - }, - "flags": { - "collapsed": false - }, - "order": 35, - "mode": 0, - "inputs": [], - "outputs": [ - { - "name": "MASK", - "type": "MASK", - "links": [ - 625, - 626 - ], - "slot_index": 0 - } - ], - "title": "Get_SUBJECT_MASK", - "properties": {}, - "widgets_values": [ - "SUBJECT_MASK" - ] - }, - { - "id": 343, - "type": "SetNode", - "pos": { - "0": -5554.4580078125, - "1": -2597.67236328125, - "2": 0, - "3": 0, - "4": 0, - "5": 0, - "6": 0, - "7": 0, - "8": 0, - "9": 0 - }, - "size": { - "0": 210, - "1": 58 - }, - "flags": {}, - "order": 94, - "mode": 0, - "inputs": [ - { - "name": "IMAGE", - "type": "IMAGE", - "link": 634 - } - ], - "outputs": [ - { - "name": "*", - "type": "*", - "links": null - } - ], - "title": "Set_GEN_AREA", - "properties": { - "previousName": "GEN_AREA" - }, - "widgets_values": [ - "GEN_AREA" - ] - }, - { - "id": 344, - "type": "GetNode", - "pos": { - "0": -2087, - "1": -831, - "2": 0, - "3": 0, - "4": 0, - "5": 0, - "6": 0, - "7": 0, - "8": 0, - "9": 0 - }, - "size": { - "0": 210, - "1": 58 - }, - "flags": {}, - "order": 36, - "mode": 0, - "inputs": [], - "outputs": [ - { - "name": "IMAGE", - "type": "IMAGE", - "links": [ - 629 - ], - "slot_index": 0 - } - ], - "title": "Get_GEN_AREA", - "properties": {}, - "widgets_values": [ - "GEN_AREA" - ] - }, - { - "id": 345, - "type": "GetNode", - "pos": { - "0": -2086, - "1": -937, - "2": 0, - "3": 0, - "4": 0, - "5": 0, - "6": 0, - "7": 0, - "8": 0, - "9": 0 - }, - "size": { - "0": 210, - "1": 58 - }, - "flags": {}, - "order": 37, - "mode": 0, - "inputs": [], - "outputs": [ - { - "name": "AUDIO", - "type": "AUDIO", - "links": [ - 630 - ], - "slot_index": 0 - } - ], - "title": "Get_AUDIO", - "properties": {}, - "widgets_values": [ - "AUDIO" - ] - }, - { - "id": 133, - "type": "_mfc", - "pos": [ - -2380, - -3464 - ], - "size": { - "0": 315, - "1": 174 - }, - "flags": {}, - "order": 103, - "mode": 0, - "inputs": [ - { - "name": "image", - "type": "IMAGE", - "link": 263 - } - ], - "outputs": [ - { - "name": "MASK", - "type": "MASK", - "links": [ - 239 - ], - "shape": 3, - "slot_index": 0 - }, - { - "name": "IMAGE", - "type": "IMAGE", - "links": [], - "shape": 3, - "slot_index": 1 - } - ], - "properties": { - "Node name for S&R": "_mfc" - }, - "widgets_values": [ - 0, - 0, - 255, - 30 - ] - }, - { - "id": 152, - "type": "MaskToImage", - "pos": [ - -1131, - -3426 - ], - "size": { - "0": 210, - "1": 26 - }, - "flags": {}, - "order": 113, - "mode": 0, - "inputs": [ - { - "name": "mask", - "type": "MASK", - "link": 245 - } - ], - "outputs": [ - { - "name": "IMAGE", - "type": "IMAGE", - "links": [ - 472 - ], - "shape": 3, - "slot_index": 0 - } - ], - "properties": { - "Node name for S&R": "MaskToImage" - } - }, - { - "id": 143, - "type": "FlexMaskMorph", - "pos": [ - -1522, - -3351 - ], - "size": { - "0": 315, - "1": 266 - }, - "flags": {}, - "order": 107, - "mode": 0, - "inputs": [ - { - "name": "masks", - "type": "MASK", - "link": 239 - }, - { - "name": "feature", - "type": "FEATURE", - "link": 226 - }, - { - "name": "feature_pipe", - "type": "FEATURE_PIPE", - "link": 227 - } - ], - "outputs": [ - { - "name": "MASK", - "type": "MASK", - "links": [ - 245, - 259, - 287 - ], - "shape": 3, - "slot_index": 0 - } - ], - "properties": { - "Node name for S&R": "FlexMaskMorph" - }, - "widgets_values": [ - 1, - false, - 1, - 0, - 0.3, - "dilate", - 11, - 10 - ] - }, - { - "id": 346, - "type": "GetNode", - "pos": { - "0": 1412, - "1": -113, - "2": 0, - "3": 0, - "4": 0, - "5": 0, - "6": 0, - "7": 0, - "8": 0, - "9": 0 - }, - "size": { - "0": 210, - "1": 58 - }, - "flags": {}, - "order": 38, - "mode": 0, - "inputs": [], - "outputs": [ - { - "name": "IMAGE", - "type": "IMAGE", - "links": [ - 631 - ], - "slot_index": 0 - } - ], - "title": "Get_INIT_IMAGES", - "properties": {}, - "widgets_values": [ - "INIT_IMAGES" - ] - }, - { - "id": 4, - "type": "CheckpointLoaderSimple", - "pos": [ - -2254, - -545 - ], - "size": { - "0": 315, - "1": 98 - }, - "flags": {}, - "order": 39, - "mode": 0, - "outputs": [ - { - "name": "MODEL", - "type": "MODEL", - "links": [ - 90 - ], - "slot_index": 0 - }, - { - "name": "CLIP", - "type": "CLIP", - "links": [ - 3, - 5 - ], - "slot_index": 1 - }, - { - "name": "VAE", - "type": "VAE", - "links": [ - 58, - 408 - ], - "slot_index": 2 - } - ], - "properties": { - "Node name for S&R": "CheckpointLoaderSimple" - }, - "widgets_values": [ - "photonLCM_v10.safetensors" - ] - }, - { - "id": 347, - "type": "GetNode", - "pos": { - "0": -4289, - "1": -3402, - "2": 0, - "3": 0, - "4": 0, - "5": 0, - "6": 0, - "7": 0, - "8": 0, - "9": 0 - }, - "size": { - "0": 210, - "1": 58 - }, - "flags": {}, - "order": 40, - "mode": 0, - "inputs": [], - "outputs": [ - { - "name": "AUDIO", - "type": "AUDIO", - "links": [ - 632 - ], - "slot_index": 0 - } - ], - "title": "Get_AUDIO", - "properties": {}, - "widgets_values": [ - "AUDIO" - ] - }, - { - "id": 340, - "type": "SetNode", - "pos": { - "0": -6053.337890625, - "1": -4076.483154296875, - "2": 0, - "3": 0, - "4": 0, - "5": 0, - "6": 0, - "7": 0, - "8": 0, - "9": 0 - }, - "size": { - "0": 210, - "1": 58 - }, - "flags": {}, - "order": 96, - "mode": 0, - "inputs": [ - { - "name": "MASK", - "type": "MASK", - "link": 623 - } - ], - "outputs": [ - { - "name": "*", - "type": "*", - "links": null, - "slot_index": 0 - } - ], - "title": "Set_SUBJECT_MASK", - "properties": { - "previousName": "SUBJECT_MASK" - }, - "widgets_values": [ - "SUBJECT_MASK" - ] - }, - { - "id": 215, - "type": "ParticleEmissionMask", - "pos": [ - -4850, - -3685 - ], - "size": { - "0": 336, - "1": 474 - }, - "flags": {}, - "order": 97, - "mode": 0, - "inputs": [ - { - "name": "masks", - "type": "MASK", - "link": 482 - }, - { - "name": "emitters", - "type": "PARTICLE_EMITTER", - "link": 390, - "slot_index": 1 - }, - { - "name": "vortices", - "type": "VORTEX", - "link": null - }, - { - "name": "wells", - "type": "GRAVITY_WELL", - "link": null - }, - { - "name": "static_bodies", - "type": "STATIC_BODY", - "link": 454, - "slot_index": 4 - } - ], - "outputs": [ - { - "name": "MASK", - "type": "MASK", - "links": [], - "shape": 3, - "slot_index": 0 - }, - { - "name": "IMAGE", - "type": "IMAGE", - "links": [ - 407 - ], - "shape": 3, - "slot_index": 1 - } - ], - "properties": { - "Node name for S&R": "ParticleEmissionMask" - }, - "widgets_values": [ - 1, - false, - 1, - 0, - 542, - 4, - 0, - 0, - 184, - 0, - 0, - 0, - 1, - 1, - 1 - ] - }, - { - "id": 318, - "type": "Note", - "pos": [ - -7711, - -3482 - ], - "size": { - "0": 331.4390869140625, - "1": 133.74197387695312 - }, - "flags": {}, - "order": 41, - "mode": 0, - "properties": { - "text": "" - }, - "widgets_values": [ - "Click the \"?\" icons on nodes for more information\n\nthe size you use here will drastically affect the quality of your output and also the amount of punishment inflicted on your computer." - ], - "color": "#432", - "bgcolor": "#653" - }, - { - "id": 334, - "type": "GetNode", - "pos": { - "0": -3488, - "1": -3226, - "2": 0, - "3": 0, - "4": 0, - "5": 0, - "6": 0, - "7": 0, - "8": 0, - "9": 0 - }, - "size": { - "0": 210, - "1": 58 - }, - "flags": {}, - "order": 42, - "mode": 0, - "inputs": [], - "outputs": [ - { - "name": "FLOAT", - "type": "FLOAT", - "links": [ - 637 - ], - "slot_index": 0 - } - ], - "title": "Get_FRAME_RATE", - "properties": {}, - "widgets_values": [ - "FRAME_RATE" - ] - }, - { - "id": 333, - "type": "GetNode", - "pos": { - "0": -3473, - "1": -3371, - "2": 0, - "3": 0, - "4": 0, - "5": 0, - "6": 0, - "7": 0, - "8": 0, - "9": 0 - }, - "size": { - "0": 210, - "1": 58 - }, - "flags": {}, - "order": 43, - "mode": 0, - "inputs": [], - "outputs": [ - { - "name": "IMAGE", - "type": "IMAGE", - "links": [ - 636 - ], - "slot_index": 0 - } - ], - "title": "Get_INIT_IMAGES", - "properties": {}, - "widgets_values": [ - "INIT_IMAGES" - ] - }, - { - "id": 332, - "type": "GetNode", - "pos": { - "0": -3460, - "1": -3469, - "2": 0, - "3": 0, - "4": 0, - "5": 0, - "6": 0, - "7": 0, - "8": 0, - "9": 0 - }, - "size": { - "0": 210, - "1": 58 - }, - "flags": {}, - "order": 44, - "mode": 0, - "inputs": [], - "outputs": [ - { - "name": "AUDIO", - "type": "AUDIO", - "links": [ - 635 - ], - "slot_index": 0 - } - ], - "title": "Get_AUDIO", - "properties": {}, - "widgets_values": [ - "AUDIO" - ] - }, - { - "id": 209, - "type": "ImageCompositeMasked", - "pos": [ - -5933, - -2735 - ], - "size": { - "0": 315, - "1": 146 - }, - "flags": {}, - "order": 86, - "mode": 0, - "inputs": [ - { - "name": "destination", - "type": "IMAGE", - "link": 369 - }, - { - "name": "source", - "type": "IMAGE", - "link": 579 - }, - { - "name": "mask", - "type": "MASK", - "link": 624 - } - ], - "outputs": [ - { - "name": "IMAGE", - "type": "IMAGE", - "links": [ - 634 - ], - "shape": 3, - "slot_index": 0 - } - ], - "properties": { - "Node name for S&R": "ImageCompositeMasked" - }, - "widgets_values": [ - 0, - 0, - false - ] - }, - { - "id": 335, - "type": "SetNode", - "pos": { - "0": -2982, - "1": -3358, - "2": 0, - "3": 0, - "4": 0, - "5": 0, - "6": 0, - "7": 0, - "8": 0, - "9": 0 - }, - "size": { - "0": 210, - "1": 58 - }, - "flags": { - "collapsed": true - }, - "order": 74, - "mode": 0, - "inputs": [ - { - "name": "FEATURE_PIPE", - "type": "FEATURE_PIPE", - "link": 642 - } - ], - "outputs": [ - { - "name": "*", - "type": "*", - "links": null - } - ], - "title": "Set_FEATURE_PIPE", - "properties": { - "previousName": "FEATURE_PIPE" - }, - "widgets_values": [ - "FEATURE_PIPE" - ] - }, - { - "id": 348, - "type": "AudioSeparator", - "pos": [ - -3146, - -3280 - ], - "size": { - "0": 317.4000244140625, - "1": 158 - }, - "flags": {}, - "order": 59, - "mode": 0, - "inputs": [ - { - "name": "model", - "type": "OPEN_UNMIX_MODEL", - "link": 643, - "slot_index": 0 - }, - { - "name": "audio", - "type": "AUDIO", - "link": 635 - }, - { - "name": "video_frames", - "type": "IMAGE", - "link": 636 - }, - { - "name": "frame_rate", - "type": "FLOAT", - "link": 637, - "widget": { - "name": "frame_rate" - } - } - ], - "outputs": [ - { - "name": "audio", - "type": "AUDIO", - "links": null, - "shape": 3 - }, - { - "name": "drums_audio", - "type": "AUDIO", - "links": [ - 638 - ], - "shape": 3 - }, - { - "name": "vocals_audio", - "type": "AUDIO", - "links": [ - 639 - ], - "shape": 3 - }, - { - "name": "bass_audio", - "type": "AUDIO", - "links": [ - 640 - ], - "shape": 3 - }, - { - "name": "other_audio", - "type": "AUDIO", - "links": [ - 641 - ], - "shape": 3 - }, - { - "name": "feature_pipe", - "type": "FEATURE_PIPE", - "links": [ - 642 - ], - "shape": 3 - } - ], - "properties": { - "Node name for S&R": "AudioSeparator" - }, - "widgets_values": [ - 30 - ] - }, - { - "id": 349, - "type": "DownloadOpenUnmixModel", - "pos": [ - -3154.76910626233, - -3487.954722302218 - ], - "size": { - "0": 315, - "1": 58 - }, - "flags": {}, - "order": 45, - "mode": 0, - "outputs": [ - { - "name": "OPEN_UNMIX_MODEL", - "type": "OPEN_UNMIX_MODEL", - "links": [ - 643 - ], - "shape": 3, - "slot_index": 0 - } - ], - "properties": { - "Node name for S&R": "DownloadOpenUnmixModel" - }, - "widgets_values": [ - "umxl" - ] - }, - { - "id": 140, - "type": "PrimitiveNode", - "pos": [ - -7163, - -3190 - ], - "size": { - "0": 210, - "1": 82 - }, - "flags": {}, - "order": 46, - "mode": 0, - "outputs": [ - { - "name": "INT", - "type": "INT", - "links": [ - 250, - 363, - 451 - ], - "slot_index": 0, - "widget": { - "name": "frame_load_cap" - } - } - ], - "title": "Num Frames", - "properties": { - "Run widget replace on values": false - }, - "widgets_values": [ - 60, - "fixed" - ] - } - ], - "links": [ - [ - 3, - 4, - 1, - 6, - 0, - "CLIP" - ], - [ - 5, - 4, - 1, - 7, - 0, - "CLIP" - ], - [ - 10, - 14, - 0, - 10, - 0, - "MODEL" - ], - [ - 11, - 12, - 0, - 10, - 3, - "LATENT" - ], - [ - 12, - 10, - 0, - 11, - 0, - "LATENT" - ], - [ - 16, - 15, - 0, - 14, - 1, - "M_MODELS" - ], - [ - 17, - 17, - 0, - 14, - 2, - "CONTEXT_OPTIONS" - ], - [ - 18, - 16, - 0, - 15, - 0, - "MOTION_MODEL_ADE" - ], - [ - 58, - 4, - 2, - 52, - 1, - "VAE" - ], - [ - 74, - 52, - 0, - 12, - 0, - "LATENT" - ], - [ - 88, - 11, - 0, - 64, - 0, - "IMAGE" - ], - [ - 90, - 4, - 0, - 65, - 0, - "MODEL" - ], - [ - 108, - 14, - 0, - 75, - 0, - "MODEL" - ], - [ - 112, - 75, - 0, - 76, - 0, - "LATENT" - ], - [ - 117, - 10, - 0, - 78, - 0, - "LATENT" - ], - [ - 119, - 80, - 0, - 79, - 0, - "MODEL" - ], - [ - 120, - 80, - 1, - 79, - 1, - "IPADAPTER" - ], - [ - 121, - 65, - 0, - 80, - 0, - "MODEL" - ], - [ - 124, - 81, - 0, - 79, - 2, - "IMAGE" - ], - [ - 127, - 83, - 0, - 82, - 2, - "CONTROL_NET" - ], - [ - 128, - 84, - 0, - 82, - 3, - "IMAGE" - ], - [ - 130, - 82, - 1, - 10, - 2, - "CONDITIONING" - ], - [ - 131, - 82, - 0, - 10, - 1, - "CONDITIONING" - ], - [ - 132, - 82, - 0, - 75, - 1, - "CONDITIONING" - ], - [ - 133, - 82, - 1, - 75, - 2, - "CONDITIONING" - ], - [ - 136, - 87, - 0, - 86, - 0, - "IMAGE" - ], - [ - 137, - 86, - 0, - 85, - 3, - "IMAGE" - ], - [ - 138, - 88, - 0, - 85, - 2, - "CONTROL_NET" - ], - [ - 139, - 7, - 0, - 85, - 1, - "CONDITIONING" - ], - [ - 140, - 6, - 0, - 85, - 0, - "CONDITIONING" - ], - [ - 141, - 85, - 0, - 82, - 0, - "CONDITIONING" - ], - [ - 142, - 85, - 1, - 82, - 1, - "CONDITIONING" - ], - [ - 146, - 79, - 0, - 90, - 0, - "MODEL" - ], - [ - 148, - 80, - 1, - 90, - 1, - "IPADAPTER" - ], - [ - 226, - 144, - 0, - 143, - 1, - "FEATURE" - ], - [ - 227, - 144, - 1, - 143, - 2, - "FEATURE_PIPE" - ], - [ - 228, - 147, - 0, - 146, - 1, - "FEATURE" - ], - [ - 229, - 147, - 1, - 146, - 2, - "FEATURE_PIPE" - ], - [ - 238, - 129, - 0, - 146, - 0, - "MASK" - ], - [ - 239, - 133, - 0, - 143, - 0, - "MASK" - ], - [ - 241, - 61, - 0, - 150, - 1, - "FREQUENCY_FILTER" - ], - [ - 243, - 150, - 0, - 147, - 0, - "AUDIO" - ], - [ - 244, - 146, - 0, - 151, - 0, - "MASK" - ], - [ - 245, - 143, - 0, - 152, - 0, - "MASK" - ], - [ - 247, - 151, - 0, - 137, - 0, - "IMAGE" - ], - [ - 250, - 140, - 0, - 44, - 2, - "INT" - ], - [ - 255, - 80, - 1, - 154, - 1, - "IPADAPTER" - ], - [ - 257, - 90, - 0, - 154, - 0, - "MODEL" - ], - [ - 259, - 143, - 0, - 90, - 4, - "MASK" - ], - [ - 260, - 146, - 0, - 79, - 4, - "MASK" - ], - [ - 262, - 156, - 0, - 129, - 0, - "IMAGE" - ], - [ - 263, - 156, - 0, - 133, - 0, - "IMAGE" - ], - [ - 264, - 156, - 0, - 132, - 0, - "IMAGE" - ], - [ - 275, - 161, - 0, - 163, - 1, - "INT" - ], - [ - 276, - 162, - 0, - 163, - 2, - "INT" - ], - [ - 279, - 163, - 0, - 156, - 0, - "*" - ], - [ - 286, - 146, - 0, - 166, - 0, - "MASK" - ], - [ - 287, - 143, - 0, - 166, - 1, - "MASK" - ], - [ - 290, - 167, - 0, - 12, - 1, - "MASK" - ], - [ - 291, - 169, - 0, - 168, - 2, - "IMAGE" - ], - [ - 293, - 167, - 0, - 168, - 4, - "MASK" - ], - [ - 294, - 168, - 0, - 14, - 0, - "MODEL" - ], - [ - 295, - 80, - 1, - 168, - 1, - "IPADAPTER" - ], - [ - 297, - 44, - 3, - 171, - 0, - "VHS_VIDEOINFO" - ], - [ - 319, - 80, - 1, - 183, - 1, - "IPADAPTER" - ], - [ - 320, - 154, - 0, - 183, - 0, - "MODEL" - ], - [ - 321, - 183, - 0, - 168, - 0, - "MODEL" - ], - [ - 329, - 156, - 0, - 185, - 0, - "IMAGE" - ], - [ - 356, - 166, - 0, - 207, - 0, - "MASK" - ], - [ - 360, - 207, - 0, - 167, - 1, - "MASK" - ], - [ - 361, - 162, - 0, - 208, - 1, - "INT" - ], - [ - 362, - 161, - 0, - 208, - 0, - "INT" - ], - [ - 363, - 140, - 0, - 208, - 2, - "INT" - ], - [ - 369, - 208, - 0, - 209, - 0, - "IMAGE" - ], - [ - 390, - 218, - 0, - 215, - 1, - "PARTICLE_EMITTER" - ], - [ - 395, - 221, - 0, - 218, - 0, - "PARTICLE_EMITTER" - ], - [ - 400, - 222, - 0, - 180, - 0, - "IMAGE" - ], - [ - 407, - 215, - 1, - 222, - 0, - "IMAGE" - ], - [ - 408, - 4, - 2, - 223, - 0, - "*" - ], - [ - 409, - 223, - 0, - 11, - 1, - "VAE" - ], - [ - 410, - 223, - 0, - 76, - 1, - "VAE" - ], - [ - 413, - 222, - 0, - 163, - 0, - "IMAGE" - ], - [ - 421, - 229, - 0, - 230, - 0, - "MASK" - ], - [ - 422, - 230, - 0, - 228, - 1, - "MASK" - ], - [ - 423, - 78, - 0, - 228, - 0, - "LATENT" - ], - [ - 424, - 228, - 0, - 75, - 3, - "LATENT" - ], - [ - 425, - 232, - 0, - 221, - 0, - "PARTICLE_EMITTER" - ], - [ - 437, - 245, - 0, - 149, - 0, - "AUDIO" - ], - [ - 440, - 246, - 0, - 144, - 0, - "AUDIO" - ], - [ - 443, - 150, - 0, - 137, - 1, - "AUDIO" - ], - [ - 450, - 250, - 0, - 249, - 0, - "*" - ], - [ - 451, - 140, - 0, - 248, - 2, - "INT" - ], - [ - 454, - 253, - 0, - 215, - 4, - "STATIC_BODY" - ], - [ - 455, - 254, - 0, - 253, - 0, - "STATIC_BODY" - ], - [ - 462, - 132, - 0, - 256, - 0, - "MASK" - ], - [ - 463, - 149, - 0, - 256, - 1, - "FEATURE" - ], - [ - 464, - 149, - 1, - 256, - 2, - "FEATURE_PIPE" - ], - [ - 469, - 87, - 0, - 84, - 0, - "IMAGE" - ], - [ - 472, - 152, - 0, - 258, - 0, - "IMAGE" - ], - [ - 477, - 189, - 0, - 260, - 0, - "IMAGE" - ], - [ - 480, - 167, - 0, - 263, - 0, - "MASK" - ], - [ - 481, - 263, - 0, - 262, - 0, - "IMAGE" - ], - [ - 482, - 249, - 0, - 215, - 0, - "MASK" - ], - [ - 483, - 249, - 0, - 222, - 2, - "MASK" - ], - [ - 488, - 268, - 0, - 90, - 2, - "IMAGE" - ], - [ - 508, - 185, - 0, - 276, - 0, - "MASK" - ], - [ - 509, - 188, - 0, - 276, - 1, - "FEATURE" - ], - [ - 510, - 188, - 1, - 276, - 2, - "FEATURE_PIPE" - ], - [ - 511, - 276, - 0, - 189, - 0, - "MASK" - ], - [ - 512, - 276, - 0, - 167, - 0, - "MASK" - ], - [ - 513, - 276, - 0, - 183, - 4, - "MASK" - ], - [ - 515, - 153, - 0, - 277, - 0, - "IMAGE" - ], - [ - 517, - 280, - 0, - 279, - 1, - "FREQUENCY_FILTER" - ], - [ - 518, - 244, - 0, - 279, - 0, - "AUDIO" - ], - [ - 519, - 279, - 0, - 188, - 0, - "AUDIO" - ], - [ - 520, - 279, - 0, - 260, - 1, - "AUDIO" - ], - [ - 523, - 87, - 0, - 52, - 0, - "IMAGE" - ], - [ - 545, - 295, - 0, - 294, - 0, - "UPSCALE_MODEL" - ], - [ - 546, - 293, - 0, - 294, - 1, - "IMAGE" - ], - [ - 550, - 297, - 0, - 298, - 0, - "IMAGE" - ], - [ - 554, - 298, - 1, - 299, - 1, - "INT" - ], - [ - 555, - 298, - 2, - 299, - 2, - "INT" - ], - [ - 559, - 296, - 0, - 300, - 2, - "MASK" - ], - [ - 561, - 298, - 0, - 300, - 1, - "IMAGE" - ], - [ - 569, - 299, - 0, - 300, - 0, - "IMAGE" - ], - [ - 570, - 76, - 0, - 299, - 0, - "IMAGE" - ], - [ - 571, - 300, - 0, - 293, - 0, - "IMAGE" - ], - [ - 572, - 294, - 0, - 292, - 0, - "IMAGE" - ], - [ - 576, - 44, - 0, - 305, - 0, - "IMAGE" - ], - [ - 577, - 161, - 0, - 305, - 1, - "INT" - ], - [ - 578, - 162, - 0, - 305, - 2, - "INT" - ], - [ - 579, - 305, - 0, - 209, - 1, - "IMAGE" - ], - [ - 584, - 248, - 0, - 307, - 0, - "IMAGE" - ], - [ - 585, - 307, - 0, - 250, - 0, - "IMAGE" - ], - [ - 588, - 307, - 0, - 309, - 0, - "*" - ], - [ - 589, - 309, - 0, - 222, - 1, - "IMAGE" - ], - [ - 594, - 313, - 0, - 232, - 0, - "PARTICLE_EMITTER" - ], - [ - 596, - 184, - 0, - 183, - 2, - "IMAGE" - ], - [ - 597, - 132, - 0, - 315, - 0, - "MASK" - ], - [ - 598, - 149, - 0, - 315, - 1, - "FEATURE" - ], - [ - 599, - 149, - 1, - 315, - 2, - "FEATURE_PIPE" - ], - [ - 600, - 315, - 0, - 153, - 0, - "MASK" - ], - [ - 601, - 315, - 0, - 154, - 4, - "MASK" - ], - [ - 602, - 315, - 0, - 207, - 1, - "MASK" - ], - [ - 604, - 155, - 0, - 154, - 2, - "IMAGE" - ], - [ - 610, - 44, - 2, - 326, - 0, - "*" - ], - [ - 611, - 44, - 0, - 327, - 0, - "*" - ], - [ - 612, - 171, - 0, - 328, - 0, - "*" - ], - [ - 613, - 171, - 3, - 330, - 0, - "*" - ], - [ - 614, - 171, - 4, - 331, - 0, - "*" - ], - [ - 619, - 336, - 0, - 144, - 1, - "FEATURE_PIPE" - ], - [ - 620, - 337, - 0, - 149, - 1, - "FEATURE_PIPE" - ], - [ - 621, - 338, - 0, - 147, - 1, - "FEATURE_PIPE" - ], - [ - 622, - 339, - 0, - 188, - 1, - "FEATURE_PIPE" - ], - [ - 623, - 250, - 0, - 340, - 0, - "*" - ], - [ - 624, - 341, - 0, - 209, - 2, - "MASK" - ], - [ - 625, - 342, - 0, - 229, - 0, - "MASK" - ], - [ - 626, - 342, - 0, - 296, - 0, - "*" - ], - [ - 629, - 344, - 0, - 87, - 0, - "*" - ], - [ - 630, - 345, - 0, - 284, - 0, - "*" - ], - [ - 631, - 346, - 0, - 297, - 0, - "*" - ], - [ - 632, - 347, - 0, - 180, - 1, - "AUDIO" - ], - [ - 634, - 209, - 0, - 343, - 0, - "IMAGE" - ], - [ - 635, - 332, - 0, - 348, - 1, - "AUDIO" - ], - [ - 636, - 333, - 0, - 348, - 2, - "IMAGE" - ], - [ - 637, - 334, - 0, - 348, - 3, - "FLOAT" - ], - [ - 638, - 348, - 1, - 150, - 0, - "AUDIO" - ], - [ - 639, - 348, - 2, - 246, - 0, - "*" - ], - [ - 640, - 348, - 3, - 245, - 0, - "*" - ], - [ - 641, - 348, - 4, - 244, - 0, - "*" - ], - [ - 642, - 348, - 5, - 335, - 0, - "FEATURE_PIPE" - ], - [ - 643, - 349, - 0, - 348, - 0, - "OPEN_UNMIX_MODEL" - ] - ], - "groups": [ - { - "title": "DRUMS", - "bounding": [ - -2415, - -4214, - 2070, - 627 - ], - "color": "#A88", - "font_size": 24, - "locked": false - }, - { - "title": "VOCALS", - "bounding": [ - -2418, - -3566, - 2081, - 584 - ], - "color": "#88A", - "font_size": 24, - "locked": false - }, - { - "title": "Bass", - "bounding": [ - -2418, - -2957, - 2082, - 569 - ], - "color": "#8A8", - "font_size": 24, - "locked": false - }, - { - "title": "IPAdapter", - "bounding": [ - 39, - -4215, - 1037, - 601 - ], - "color": "#A88", - "font_size": 24, - "locked": false - }, - { - "title": "Vox IPAdapter", - "bounding": [ - 73, - -3550, - 1053, - 545 - ], - "color": "#88A", - "font_size": 24, - "locked": false - }, - { - "title": "Guitar IPAdapter", - "bounding": [ - 73, - -2916, - 1084, - 532 - ], - "color": "#8A8", - "font_size": 24, - "locked": false - }, - { - "title": "Composite IPAdapter", - "bounding": [ - 79, - -1736, - 1154, - 525 - ], - "color": "#3f789e", - "font_size": 24, - "locked": false - }, - { - "title": "Composit", - "bounding": [ - -1643, - -1769, - 1363, - 599 - ], - "color": "#3f789e", - "font_size": 24, - "locked": false - }, - { - "title": "Load Video / Masks / Audio", - "bounding": [ - -7205, - -3806, - 1865, - 1282 - ], - "color": "#3f789e", - "font_size": 24, - "locked": false - }, - { - "title": "Other", - "bounding": [ - -2417, - -2366, - 2131, - 575 - ], - "color": "#3f789e", - "font_size": 24, - "locked": false - }, - { - "title": "Other IPAdapter", - "bounding": [ - 81, - -2314, - 1063, - 520 - ], - "color": "#3f789e", - "font_size": 24, - "locked": false - }, - { - "title": "Control Net", - "bounding": [ - -748, - -954, - 978, - 749 - ], - "color": "#3f789e", - "font_size": 24, - "locked": false - }, - { - "title": "Anim Diff", - "bounding": [ - 332, - -950, - 384, - 882 - ], - "color": "#3f789e", - "font_size": 24, - "locked": false - }, - { - "title": "Samp", - "bounding": [ - 814, - -947, - 729, - 629 - ], - "color": "#3f789e", - "font_size": 24, - "locked": false - }, - { - "title": "Samp2", - "bounding": [ - 1619, - -942, - 1399, - 598 - ], - "color": "#3f789e", - "font_size": 24, - "locked": false - }, - { - "title": "Particle", - "bounding": [ - -5292, - -3785, - 1753, - 1229 - ], - "color": "#3f789e", - "font_size": 24, - "locked": false - }, - { - "title": "MASK input", - "bounding": [ - -7200, - -4325, - 1760, - 506 - ], - "color": "#3f789e", - "font_size": 24, - "locked": false - }, - { - "title": "upscale", - "bounding": [ - 3071, - -941, - 1191, - 577 - ], - "color": "#3f789e", - "font_size": 24, - "locked": false - } - ], - "config": {}, - "extra": { - "ds": { - "scale": 0.21435888100000167, - "offset": [ - 1177.4792012031467, - 2878.774805902092 - ] - } - }, - "version": 0.4 -} \ No newline at end of file diff --git a/examples/particle_systems_tutorial.json b/examples/particle_systems_tutorial.json deleted file mode 100644 index a2e9cf4..0000000 --- a/examples/particle_systems_tutorial.json +++ /dev/null @@ -1,2745 +0,0 @@ -{ - "last_node_id": 168, - "last_link_id": 263, - "nodes": [ - { - "id": 107, - "type": "ParticleEmissionMask", - "pos": [ - -790, - 90 - ], - "size": { - "0": 315, - "1": 474 - }, - "flags": {}, - "order": 31, - "mode": 0, - "inputs": [ - { - "name": "masks", - "type": "MASK", - "link": 219 - }, - { - "name": "emitters", - "type": "PARTICLE_EMITTER", - "link": 201, - "slot_index": 1 - }, - { - "name": "vortices", - "type": "VORTEX", - "link": null - }, - { - "name": "wells", - "type": "GRAVITY_WELL", - "link": null - }, - { - "name": "static_bodies", - "type": "STATIC_BODY", - "link": null - } - ], - "outputs": [ - { - "name": "MASK", - "type": "MASK", - "links": null, - "shape": 3 - }, - { - "name": "IMAGE", - "type": "IMAGE", - "links": [ - 203 - ], - "shape": 3, - "slot_index": 1 - } - ], - "properties": { - "Node name for S&R": "ParticleEmissionMask" - }, - "widgets_values": [ - 1, - false, - 0, - 0, - 200, - 4, - 0, - 0, - 0, - 0, - 0, - 0, - true, - 1, - 1 - ] - }, - { - "id": 110, - "type": "ParticleEmitter", - "pos": [ - -1350, - 500 - ], - "size": { - "0": 468.5999755859375, - "1": 358 - }, - "flags": {}, - "order": 0, - "mode": 0, - "inputs": [ - { - "name": "previous_emitter", - "type": "PARTICLE_EMITTER", - "link": null - }, - { - "name": "emitter_movement", - "type": "EMITTER_MOVEMENT", - "link": null - }, - { - "name": "spring_joint_setting", - "type": "SPRING_JOINT_SETTING", - "link": null - }, - { - "name": "particle_modulation", - "type": "PARTICLE_MODULATION", - "link": null - } - ], - "outputs": [ - { - "name": "PARTICLE_EMITTER", - "type": "PARTICLE_EMITTER", - "links": [ - 202 - ], - "shape": 3, - "slot_index": 0 - } - ], - "properties": { - "Node name for S&R": "ParticleEmitter" - }, - "widgets_values": [ - 1, - 0.5, - 180, - 30, - 17.4, - 330, - 10, - "(255,0,0)", - 0, - 0, - 0 - ] - }, - { - "id": 112, - "type": "VHS_VideoCombine", - "pos": [ - -440, - 100 - ], - "size": [ - 214.8000030517578, - 694.3110961914062 - ], - "flags": {}, - "order": 35, - "mode": 0, - "inputs": [ - { - "name": "images", - "type": "IMAGE", - "link": 203 - }, - { - "name": "audio", - "type": "AUDIO", - "link": null - }, - { - "name": "meta_batch", - "type": "VHS_BatchManager", - "link": null - }, - { - "name": "vae", - "type": "VAE", - "link": null - } - ], - "outputs": [ - { - "name": "Filenames", - "type": "VHS_FILENAMES", - "links": null, - "shape": 3 - } - ], - "properties": { - "Node name for S&R": "VHS_VideoCombine" - }, - "widgets_values": { - "frame_rate": 30, - "loop_count": 0, - "filename_prefix": "AnimateDiff", - "format": "video/nvenc_h264-mp4", - "pix_fmt": "yuv420p", - "bitrate": 10, - "megabit": true, - "save_metadata": true, - "pingpong": false, - "save_output": true, - "videopreview": { - "hidden": false, - "paused": false, - "params": { - "filename": "AnimateDiff_00653.mp4", - "subfolder": "", - "type": "output", - "format": "video/nvenc_h264-mp4", - "frame_rate": 30 - }, - "muted": false - } - } - }, - { - "id": 109, - "type": "ParticleEmitter", - "pos": [ - -1340, - 80 - ], - "size": { - "0": 468.5999755859375, - "1": 358 - }, - "flags": {}, - "order": 15, - "mode": 0, - "inputs": [ - { - "name": "previous_emitter", - "type": "PARTICLE_EMITTER", - "link": 202 - }, - { - "name": "emitter_movement", - "type": "EMITTER_MOVEMENT", - "link": null - }, - { - "name": "spring_joint_setting", - "type": "SPRING_JOINT_SETTING", - "link": null - }, - { - "name": "particle_modulation", - "type": "PARTICLE_MODULATION", - "link": null - } - ], - "outputs": [ - { - "name": "PARTICLE_EMITTER", - "type": "PARTICLE_EMITTER", - "links": [ - 201 - ], - "shape": 3 - } - ], - "properties": { - "Node name for S&R": "ParticleEmitter" - }, - "widgets_values": [ - 0, - 0.5, - 0, - 30, - 17.4, - 330, - 10, - "(0,0,255)", - 0, - 0, - 0 - ] - }, - { - "id": 108, - "type": "_mfc", - "pos": [ - -2164, - 122 - ], - "size": { - "0": 315, - "1": 130 - }, - "flags": {}, - "order": 16, - "mode": 0, - "inputs": [ - { - "name": "image", - "type": "IMAGE", - "link": 199 - } - ], - "outputs": [ - { - "name": "MASK", - "type": "MASK", - "links": [ - 208 - ], - "shape": 3, - "slot_index": 0 - } - ], - "properties": { - "Node name for S&R": "_mfc" - }, - "widgets_values": [ - 255, - 255, - 255, - 0 - ], - "shape": 4 - }, - { - "id": 104, - "type": "VHS_LoadVideo", - "pos": [ - -2489, - 27 - ], - "size": [ - 235.1999969482422, - 658.5777723524305 - ], - "flags": {}, - "order": 1, - "mode": 0, - "inputs": [ - { - "name": "meta_batch", - "type": "VHS_BatchManager", - "link": null - }, - { - "name": "vae", - "type": "VAE", - "link": null - } - ], - "outputs": [ - { - "name": "IMAGE", - "type": "IMAGE", - "links": [ - 199, - 213 - ], - "shape": 3, - "slot_index": 0 - }, - { - "name": "frame_count", - "type": "INT", - "links": null, - "shape": 3 - }, - { - "name": "audio", - "type": "AUDIO", - "links": [], - "shape": 3, - "slot_index": 2 - }, - { - "name": "video_info", - "type": "VHS_VIDEOINFO", - "links": null, - "shape": 3 - } - ], - "properties": { - "Node name for S&R": "VHS_LoadVideo" - }, - "widgets_values": { - "video": "music_square.mp4", - "force_rate": 30, - "force_size": "Disabled", - "custom_width": 512, - "custom_height": 512, - "frame_load_cap": 30, - "skip_first_frames": 0, - "select_every_nth": 1, - "choose video to upload": "image", - "videopreview": { - "hidden": false, - "paused": false, - "params": { - "frame_load_cap": 30, - "skip_first_frames": 0, - "force_rate": 30, - "filename": "music_square.mp4", - "type": "input", - "format": "video/mp4", - "select_every_nth": 1 - }, - "muted": false - } - } - }, - { - "id": 121, - "type": "_mfc", - "pos": [ - -2163, - -133 - ], - "size": { - "0": 315, - "1": 130 - }, - "flags": {}, - "order": 17, - "mode": 0, - "inputs": [ - { - "name": "image", - "type": "IMAGE", - "link": 213 - } - ], - "outputs": [ - { - "name": "MASK", - "type": "MASK", - "links": [ - 214 - ], - "shape": 3, - "slot_index": 0 - } - ], - "properties": { - "Node name for S&R": "_mfc" - }, - "widgets_values": [ - 420, - 420, - 69, - 0 - ], - "shape": 4 - }, - { - "id": 123, - "type": "StaticBody", - "pos": [ - 390, - 620 - ], - "size": { - "0": 317.4000244140625, - "1": 250 - }, - "flags": {}, - "order": 18, - "mode": 0, - "inputs": [ - { - "name": "previous_body", - "type": "STATIC_BODY", - "link": 218, - "slot_index": 0 - } - ], - "outputs": [ - { - "name": "STATIC_BODY", - "type": "STATIC_BODY", - "links": [ - 217 - ], - "shape": 3, - "slot_index": 0 - } - ], - "properties": { - "Node name for S&R": "StaticBody" - }, - "widgets_values": [ - "segment", - 0.85, - 0.2, - 0.85, - 0.6, - 0.9, - 0.5, - true, - "(255,255,255)" - ] - }, - { - "id": 124, - "type": "StaticBody", - "pos": [ - 28, - 618 - ], - "size": { - "0": 317.4000244140625, - "1": 250 - }, - "flags": {}, - "order": 2, - "mode": 0, - "inputs": [ - { - "name": "previous_body", - "type": "STATIC_BODY", - "link": null - } - ], - "outputs": [ - { - "name": "STATIC_BODY", - "type": "STATIC_BODY", - "links": [ - 218 - ], - "shape": 3 - } - ], - "properties": { - "Node name for S&R": "StaticBody" - }, - "widgets_values": [ - "segment", - 0.85, - 0.6, - 0.15, - 0.6, - 0.9, - 0.5, - true, - "(255,255,255)" - ] - }, - { - "id": 125, - "type": "Note", - "pos": [ - 398.87343045930527, - 503.9184890962709 - ], - "size": { - "0": 210, - "1": 58 - }, - "flags": {}, - "order": 3, - "mode": 0, - "properties": { - "text": "" - }, - "widgets_values": [ - "draw fish tank\n" - ], - "color": "#432", - "bgcolor": "#653" - }, - { - "id": 120, - "type": "StaticBody", - "pos": [ - 730, - 620 - ], - "size": { - "0": 317.4000244140625, - "1": 250 - }, - "flags": {}, - "order": 26, - "mode": 0, - "inputs": [ - { - "name": "previous_body", - "type": "STATIC_BODY", - "link": 217 - } - ], - "outputs": [ - { - "name": "STATIC_BODY", - "type": "STATIC_BODY", - "links": [ - 211 - ], - "shape": 3 - } - ], - "properties": { - "Node name for S&R": "StaticBody" - }, - "widgets_values": [ - "segment", - 0.15, - 0.2, - 0.15, - 0.6, - 0.9, - 0.5, - true, - "(255,255,255)" - ] - }, - { - "id": 114, - "type": "ParticleEmitter", - "pos": [ - 39, - 33 - ], - "size": { - "0": 468.5999755859375, - "1": 358 - }, - "flags": {}, - "order": 4, - "mode": 0, - "inputs": [ - { - "name": "previous_emitter", - "type": "PARTICLE_EMITTER", - "link": null - }, - { - "name": "emitter_movement", - "type": "EMITTER_MOVEMENT", - "link": null - }, - { - "name": "spring_joint_setting", - "type": "SPRING_JOINT_SETTING", - "link": null - }, - { - "name": "particle_modulation", - "type": "PARTICLE_MODULATION", - "link": null - } - ], - "outputs": [ - { - "name": "PARTICLE_EMITTER", - "type": "PARTICLE_EMITTER", - "links": [ - 205 - ], - "shape": 3 - } - ], - "properties": { - "Node name for S&R": "ParticleEmitter" - }, - "widgets_values": [ - 0.5, - 0.1, - 90, - 29, - 38.5, - 330, - 18.6, - "(0,0,255)", - 0, - 0, - 0 - ] - }, - { - "id": 116, - "type": "VHS_VideoCombine", - "pos": [ - 1391, - 8 - ], - "size": [ - 363.0020404593031, - 933.7814052609833 - ], - "flags": {}, - "order": 36, - "mode": 0, - "inputs": [ - { - "name": "images", - "type": "IMAGE", - "link": 207 - }, - { - "name": "audio", - "type": "AUDIO", - "link": null - }, - { - "name": "meta_batch", - "type": "VHS_BatchManager", - "link": null - }, - { - "name": "vae", - "type": "VAE", - "link": null - } - ], - "outputs": [ - { - "name": "Filenames", - "type": "VHS_FILENAMES", - "links": null, - "shape": 3 - } - ], - "properties": { - "Node name for S&R": "VHS_VideoCombine" - }, - "widgets_values": { - "frame_rate": 30, - "loop_count": 0, - "filename_prefix": "AnimateDiff", - "format": "video/h264-mp4", - "pix_fmt": "yuv420p", - "crf": 19, - "save_metadata": true, - "pingpong": false, - "save_output": true, - "videopreview": { - "hidden": false, - "paused": false, - "params": { - "filename": "AnimateDiff_00663.mp4", - "subfolder": "", - "type": "output", - "format": "video/h264-mp4", - "frame_rate": 30 - }, - "muted": false - } - } - }, - { - "id": 122, - "type": "Reroute", - "pos": [ - -1589, - -198 - ], - "size": [ - 75, - 26 - ], - "flags": {}, - "order": 25, - "mode": 0, - "inputs": [ - { - "name": "", - "type": "*", - "link": 214 - } - ], - "outputs": [ - { - "name": "", - "type": "MASK", - "links": [ - 215 - ], - "slot_index": 0 - } - ], - "properties": { - "showOutputText": false, - "horizontal": false - } - }, - { - "id": 117, - "type": "Reroute", - "pos": [ - -1594, - -133 - ], - "size": [ - 75, - 26 - ], - "flags": {}, - "order": 24, - "mode": 0, - "inputs": [ - { - "name": "", - "type": "*", - "link": 208 - } - ], - "outputs": [ - { - "name": "", - "type": "MASK", - "links": [ - 209 - ], - "slot_index": 0 - } - ], - "properties": { - "showOutputText": false, - "horizontal": false - } - }, - { - "id": 126, - "type": "Note", - "pos": [ - -2146, - -251 - ], - "size": [ - 286.507407342717, - 72.89825855180612 - ], - "flags": {}, - "order": 5, - "mode": 0, - "properties": { - "text": "" - }, - "widgets_values": [ - "get empty mask, and mask of the square" - ], - "color": "#432", - "bgcolor": "#653" - }, - { - "id": 113, - "type": "ParticleEmissionMask", - "pos": [ - 951, - 38 - ], - "size": { - "0": 315, - "1": 474 - }, - "flags": {}, - "order": 32, - "mode": 0, - "inputs": [ - { - "name": "masks", - "type": "MASK", - "link": 216 - }, - { - "name": "emitters", - "type": "PARTICLE_EMITTER", - "link": 205, - "slot_index": 1 - }, - { - "name": "vortices", - "type": "VORTEX", - "link": null - }, - { - "name": "wells", - "type": "GRAVITY_WELL", - "link": null - }, - { - "name": "static_bodies", - "type": "STATIC_BODY", - "link": 211, - "slot_index": 4 - } - ], - "outputs": [ - { - "name": "MASK", - "type": "MASK", - "links": null, - "shape": 3 - }, - { - "name": "IMAGE", - "type": "IMAGE", - "links": [ - 207 - ], - "shape": 3, - "slot_index": 1 - } - ], - "properties": { - "Node name for S&R": "ParticleEmissionMask" - }, - "widgets_values": [ - 1, - false, - 0, - 0, - 503, - 4, - 0, - 0, - 0, - 0, - 0, - 0, - true, - 1, - 1 - ] - }, - { - "id": 118, - "type": "Reroute", - "pos": [ - -906, - -130 - ], - "size": [ - 75, - 26 - ], - "flags": {}, - "order": 28, - "mode": 0, - "inputs": [ - { - "name": "", - "type": "*", - "link": 209 - } - ], - "outputs": [ - { - "name": "", - "type": "MASK", - "links": [ - 219 - ], - "slot_index": 0 - } - ], - "properties": { - "showOutputText": false, - "horizontal": false - } - }, - { - "id": 119, - "type": "Reroute", - "pos": [ - 306, - -203 - ], - "size": [ - 75, - 26 - ], - "flags": {}, - "order": 29, - "mode": 0, - "inputs": [ - { - "name": "", - "type": "*", - "link": 215 - } - ], - "outputs": [ - { - "name": "", - "type": "MASK", - "links": [ - 216, - 233 - ], - "slot_index": 0 - } - ], - "properties": { - "showOutputText": false, - "horizontal": false - } - }, - { - "id": 145, - "type": "Vortex", - "pos": [ - 2762, - 508 - ], - "size": { - "0": 315, - "1": 226 - }, - "flags": {}, - "order": 6, - "mode": 0, - "inputs": [ - { - "name": "previous_vortex", - "type": "VORTEX", - "link": null - } - ], - "outputs": [ - { - "name": "VORTEX", - "type": "VORTEX", - "links": [ - 239 - ], - "shape": 3 - } - ], - "properties": { - "Node name for S&R": "Vortex" - }, - "widgets_values": [ - 0.5, - 0.73, - 1000, - 330, - 1, - 1, - "(0,127,255)", - 1 - ] - }, - { - "id": 144, - "type": "Vortex", - "pos": [ - 2755, - 157 - ], - "size": { - "0": 315, - "1": 226 - }, - "flags": {}, - "order": 19, - "mode": 0, - "inputs": [ - { - "name": "previous_vortex", - "type": "VORTEX", - "link": 239, - "slot_index": 0 - } - ], - "outputs": [ - { - "name": "VORTEX", - "type": "VORTEX", - "links": [ - 238 - ], - "shape": 3 - } - ], - "properties": { - "Node name for S&R": "Vortex" - }, - "widgets_values": [ - 0.5, - 0.27, - 1000, - 330, - 1, - 1, - "(0,127,255)", - 1 - ] - }, - { - "id": 142, - "type": "ParticleEmitter", - "pos": [ - 2160, - 30 - ], - "size": { - "0": 468.5999755859375, - "1": 358 - }, - "flags": {}, - "order": 20, - "mode": 0, - "inputs": [ - { - "name": "previous_emitter", - "type": "PARTICLE_EMITTER", - "link": 236 - }, - { - "name": "emitter_movement", - "type": "EMITTER_MOVEMENT", - "link": null - }, - { - "name": "spring_joint_setting", - "type": "SPRING_JOINT_SETTING", - "link": null - }, - { - "name": "particle_modulation", - "type": "PARTICLE_MODULATION", - "link": null - } - ], - "outputs": [ - { - "name": "PARTICLE_EMITTER", - "type": "PARTICLE_EMITTER", - "links": [ - 237 - ], - "shape": 3, - "slot_index": 0 - } - ], - "properties": { - "Node name for S&R": "ParticleEmitter" - }, - "widgets_values": [ - 0.22, - 0.25, - 0, - 360, - 17.4, - 72, - 10, - "(0,0,255)", - 0, - 0, - 0 - ] - }, - { - "id": 143, - "type": "ParticleEmitter", - "pos": [ - 2150, - 450 - ], - "size": { - "0": 468.5999755859375, - "1": 358 - }, - "flags": {}, - "order": 7, - "mode": 0, - "inputs": [ - { - "name": "previous_emitter", - "type": "PARTICLE_EMITTER", - "link": null - }, - { - "name": "emitter_movement", - "type": "EMITTER_MOVEMENT", - "link": null - }, - { - "name": "spring_joint_setting", - "type": "SPRING_JOINT_SETTING", - "link": null - }, - { - "name": "particle_modulation", - "type": "PARTICLE_MODULATION", - "link": null - } - ], - "outputs": [ - { - "name": "PARTICLE_EMITTER", - "type": "PARTICLE_EMITTER", - "links": [ - 236 - ], - "shape": 3, - "slot_index": 0 - } - ], - "properties": { - "Node name for S&R": "ParticleEmitter" - }, - "widgets_values": [ - 0.74, - 0.75, - 180, - 360, - 17.4, - 55, - 10, - "(255,0,0)", - 0, - 0, - 0 - ] - }, - { - "id": 134, - "type": "ParticleEmissionMask", - "pos": [ - 3140, - 40 - ], - "size": { - "0": 315, - "1": 474 - }, - "flags": {}, - "order": 37, - "mode": 0, - "inputs": [ - { - "name": "masks", - "type": "MASK", - "link": 226 - }, - { - "name": "emitters", - "type": "PARTICLE_EMITTER", - "link": 237, - "slot_index": 1 - }, - { - "name": "vortices", - "type": "VORTEX", - "link": 238, - "slot_index": 2 - }, - { - "name": "wells", - "type": "GRAVITY_WELL", - "link": null - }, - { - "name": "static_bodies", - "type": "STATIC_BODY", - "link": null, - "slot_index": 4 - } - ], - "outputs": [ - { - "name": "MASK", - "type": "MASK", - "links": null, - "shape": 3 - }, - { - "name": "IMAGE", - "type": "IMAGE", - "links": [ - 229 - ], - "shape": 3, - "slot_index": 1 - } - ], - "properties": { - "Node name for S&R": "ParticleEmissionMask" - }, - "widgets_values": [ - 1, - false, - 0, - 0, - 503, - 4, - 0, - 0, - 0, - 10, - 0, - 0, - true, - 1, - 1 - ] - }, - { - "id": 147, - "type": "VHS_VideoCombine", - "pos": [ - 5220, - 10 - ], - "size": [ - 360, - 928.4444444444445 - ], - "flags": {}, - "order": 42, - "mode": 0, - "inputs": [ - { - "name": "images", - "type": "IMAGE", - "link": 243 - }, - { - "name": "audio", - "type": "AUDIO", - "link": null - }, - { - "name": "meta_batch", - "type": "VHS_BatchManager", - "link": null - }, - { - "name": "vae", - "type": "VAE", - "link": null - } - ], - "outputs": [ - { - "name": "Filenames", - "type": "VHS_FILENAMES", - "links": null, - "shape": 3 - } - ], - "properties": { - "Node name for S&R": "VHS_VideoCombine" - }, - "widgets_values": { - "frame_rate": 30, - "loop_count": 0, - "filename_prefix": "AnimateDiff", - "format": "video/h264-mp4", - "pix_fmt": "yuv420p", - "crf": 19, - "save_metadata": true, - "pingpong": false, - "save_output": true, - "videopreview": { - "hidden": false, - "paused": false, - "params": { - "filename": "AnimateDiff_00679.mp4", - "subfolder": "", - "type": "output", - "format": "video/h264-mp4", - "frame_rate": 30 - }, - "muted": false - } - } - }, - { - "id": 137, - "type": "Reroute", - "pos": [ - 2490, - -200 - ], - "size": [ - 75, - 26 - ], - "flags": {}, - "order": 33, - "mode": 0, - "inputs": [ - { - "name": "", - "type": "*", - "link": 233 - } - ], - "outputs": [ - { - "name": "", - "type": "MASK", - "links": [ - 226, - 247 - ], - "slot_index": 0 - } - ], - "properties": { - "showOutputText": false, - "horizontal": false - } - }, - { - "id": 146, - "type": "ParticleEmissionMask", - "pos": [ - 4870, - 70 - ], - "size": { - "0": 315, - "1": 474 - }, - "flags": {}, - "order": 40, - "mode": 0, - "inputs": [ - { - "name": "masks", - "type": "MASK", - "link": 248 - }, - { - "name": "emitters", - "type": "PARTICLE_EMITTER", - "link": 241, - "slot_index": 1 - }, - { - "name": "vortices", - "type": "VORTEX", - "link": null, - "slot_index": 2 - }, - { - "name": "wells", - "type": "GRAVITY_WELL", - "link": 249, - "slot_index": 3 - }, - { - "name": "static_bodies", - "type": "STATIC_BODY", - "link": null, - "slot_index": 4 - } - ], - "outputs": [ - { - "name": "MASK", - "type": "MASK", - "links": null, - "shape": 3 - }, - { - "name": "IMAGE", - "type": "IMAGE", - "links": [ - 243 - ], - "shape": 3, - "slot_index": 1 - } - ], - "properties": { - "Node name for S&R": "ParticleEmissionMask" - }, - "widgets_values": [ - 1, - false, - 0, - 0, - 503, - 4, - 0, - 0, - 0, - 0, - 0, - 0, - true, - 1, - 1 - ] - }, - { - "id": 150, - "type": "ParticleEmitter", - "pos": [ - 3880, - 480 - ], - "size": { - "0": 468.5999755859375, - "1": 358 - }, - "flags": {}, - "order": 8, - "mode": 0, - "inputs": [ - { - "name": "previous_emitter", - "type": "PARTICLE_EMITTER", - "link": null - }, - { - "name": "emitter_movement", - "type": "EMITTER_MOVEMENT", - "link": null - }, - { - "name": "spring_joint_setting", - "type": "SPRING_JOINT_SETTING", - "link": null - }, - { - "name": "particle_modulation", - "type": "PARTICLE_MODULATION", - "link": null - } - ], - "outputs": [ - { - "name": "PARTICLE_EMITTER", - "type": "PARTICLE_EMITTER", - "links": [ - 245 - ], - "shape": 3, - "slot_index": 0 - } - ], - "properties": { - "Node name for S&R": "ParticleEmitter" - }, - "widgets_values": [ - 0.9, - 0.75, - 180, - 31, - 17.4, - 179, - 13, - "(255,0,0)", - 0, - 0, - 0 - ] - }, - { - "id": 111, - "type": "Note", - "pos": [ - -1474, - -398 - ], - "size": [ - 545.4315055154448, - 176.34508026260346 - ], - "flags": {}, - "order": 9, - "mode": 0, - "title": "Click the question marks on the nodes!", - "properties": { - "text": "" - }, - "widgets_values": [ - "Demonstrating a few things with particle systems.\n\nClick the question marks in the nodes!" - ], - "color": "#432", - "bgcolor": "#653" - }, - { - "id": 154, - "type": "GravityWell", - "pos": [ - 4493, - 467 - ], - "size": { - "0": 330, - "1": 202 - }, - "flags": {}, - "order": 10, - "mode": 0, - "inputs": [ - { - "name": "previous_well", - "type": "GRAVITY_WELL", - "link": null - } - ], - "outputs": [ - { - "name": "GRAVITY_WELL", - "type": "GRAVITY_WELL", - "links": [ - 250 - ], - "shape": 3 - } - ], - "properties": { - "Node name for S&R": "GravityWell" - }, - "widgets_values": [ - 0.4, - 0.73, - 5000, - 250, - "repel", - "(255,127,0)", - 1 - ] - }, - { - "id": 153, - "type": "GravityWell", - "pos": [ - 4483, - 211 - ], - "size": { - "0": 330, - "1": 202 - }, - "flags": {}, - "order": 22, - "mode": 0, - "inputs": [ - { - "name": "previous_well", - "type": "GRAVITY_WELL", - "link": 250, - "slot_index": 0 - } - ], - "outputs": [ - { - "name": "GRAVITY_WELL", - "type": "GRAVITY_WELL", - "links": [ - 249 - ], - "shape": 3 - } - ], - "properties": { - "Node name for S&R": "GravityWell" - }, - "widgets_values": [ - 0.6, - 0.27, - 5000, - 250, - "attract", - "(255,127,0)", - 1 - ] - }, - { - "id": 149, - "type": "ParticleEmitter", - "pos": [ - 3890, - 60 - ], - "size": { - "0": 468.5999755859375, - "1": 358 - }, - "flags": {}, - "order": 21, - "mode": 0, - "inputs": [ - { - "name": "previous_emitter", - "type": "PARTICLE_EMITTER", - "link": 245 - }, - { - "name": "emitter_movement", - "type": "EMITTER_MOVEMENT", - "link": null - }, - { - "name": "spring_joint_setting", - "type": "SPRING_JOINT_SETTING", - "link": null - }, - { - "name": "particle_modulation", - "type": "PARTICLE_MODULATION", - "link": null - } - ], - "outputs": [ - { - "name": "PARTICLE_EMITTER", - "type": "PARTICLE_EMITTER", - "links": [ - 241 - ], - "shape": 3, - "slot_index": 0 - } - ], - "properties": { - "Node name for S&R": "ParticleEmitter" - }, - "widgets_values": [ - 0.23, - 0.25, - 360, - 28, - 17.4, - 202, - 13.9, - "(0,0,255)", - 0.08, - 0, - 0 - ] - }, - { - "id": 155, - "type": "Note", - "pos": [ - -806, - 621 - ], - "size": [ - 296.753182927981, - 128.7836855605558 - ], - "flags": {}, - "order": 11, - "mode": 0, - "properties": { - "text": "" - }, - "widgets_values": [ - "the particles treat the mask as an object in the simulation" - ], - "color": "#432", - "bgcolor": "#653" - }, - { - "id": 148, - "type": "Reroute", - "pos": [ - 4107, - -201 - ], - "size": [ - 75, - 26 - ], - "flags": {}, - "order": 38, - "mode": 0, - "inputs": [ - { - "name": "", - "type": "*", - "link": 247 - } - ], - "outputs": [ - { - "name": "", - "type": "MASK", - "links": [ - 248, - 257 - ], - "slot_index": 0 - } - ], - "properties": { - "showOutputText": false, - "horizontal": false - } - }, - { - "id": 158, - "type": "Reroute", - "pos": [ - 6000, - -185 - ], - "size": [ - 75, - 26 - ], - "flags": {}, - "order": 41, - "mode": 0, - "inputs": [ - { - "name": "", - "type": "*", - "link": 257 - } - ], - "outputs": [ - { - "name": "", - "type": "MASK", - "links": [ - 251 - ] - } - ], - "properties": { - "showOutputText": false, - "horizontal": false - } - }, - { - "id": 157, - "type": "VHS_VideoCombine", - "pos": [ - 7534, - 32 - ], - "size": [ - 360, - 928.4444444444445 - ], - "flags": {}, - "order": 44, - "mode": 0, - "inputs": [ - { - "name": "images", - "type": "IMAGE", - "link": 254 - }, - { - "name": "audio", - "type": "AUDIO", - "link": null - }, - { - "name": "meta_batch", - "type": "VHS_BatchManager", - "link": null - }, - { - "name": "vae", - "type": "VAE", - "link": null - } - ], - "outputs": [ - { - "name": "Filenames", - "type": "VHS_FILENAMES", - "links": null, - "shape": 3 - } - ], - "properties": { - "Node name for S&R": "VHS_VideoCombine" - }, - "widgets_values": { - "frame_rate": 30, - "loop_count": 0, - "filename_prefix": "AnimateDiff", - "format": "video/h264-mp4", - "pix_fmt": "yuv420p", - "crf": 19, - "save_metadata": true, - "pingpong": false, - "save_output": true, - "videopreview": { - "hidden": false, - "paused": false, - "params": { - "filename": "AnimateDiff_00682.mp4", - "subfolder": "", - "type": "output", - "format": "video/h264-mp4", - "frame_rate": 30 - }, - "muted": false - } - } - }, - { - "id": 156, - "type": "ParticleEmissionMask", - "pos": [ - 7112, - 14 - ], - "size": { - "0": 315, - "1": 474 - }, - "flags": {}, - "order": 43, - "mode": 0, - "inputs": [ - { - "name": "masks", - "type": "MASK", - "link": 251 - }, - { - "name": "emitters", - "type": "PARTICLE_EMITTER", - "link": 252, - "slot_index": 1 - }, - { - "name": "vortices", - "type": "VORTEX", - "link": null, - "slot_index": 2 - }, - { - "name": "wells", - "type": "GRAVITY_WELL", - "link": null, - "slot_index": 3 - }, - { - "name": "static_bodies", - "type": "STATIC_BODY", - "link": null, - "slot_index": 4 - } - ], - "outputs": [ - { - "name": "MASK", - "type": "MASK", - "links": null, - "shape": 3 - }, - { - "name": "IMAGE", - "type": "IMAGE", - "links": [ - 254 - ], - "shape": 3, - "slot_index": 1 - } - ], - "properties": { - "Node name for S&R": "ParticleEmissionMask" - }, - "widgets_values": [ - 1, - false, - 0, - 0, - 503, - 4, - 0, - 0, - 0, - 0, - 0, - 0, - true, - 1, - 1 - ] - }, - { - "id": 159, - "type": "ParticleEmitter", - "pos": [ - 6539, - 9 - ], - "size": { - "0": 468.5999755859375, - "1": 358 - }, - "flags": {}, - "order": 34, - "mode": 0, - "inputs": [ - { - "name": "previous_emitter", - "type": "PARTICLE_EMITTER", - "link": 259 - }, - { - "name": "emitter_movement", - "type": "EMITTER_MOVEMENT", - "link": null - }, - { - "name": "spring_joint_setting", - "type": "SPRING_JOINT_SETTING", - "link": 260, - "slot_index": 2 - }, - { - "name": "particle_modulation", - "type": "PARTICLE_MODULATION", - "link": null - } - ], - "outputs": [ - { - "name": "PARTICLE_EMITTER", - "type": "PARTICLE_EMITTER", - "links": [ - 252 - ], - "shape": 3, - "slot_index": 0 - } - ], - "properties": { - "Node name for S&R": "ParticleEmitter" - }, - "widgets_values": [ - 0.23, - 0.25, - 360, - 28, - 17.4, - 202, - 13.9, - "(0,0,255)", - 0.08, - 0, - 0 - ] - }, - { - "id": 163, - "type": "ParticleEmitter", - "pos": [ - 6541, - 412 - ], - "size": { - "0": 468.5999755859375, - "1": 358 - }, - "flags": {}, - "order": 30, - "mode": 0, - "inputs": [ - { - "name": "previous_emitter", - "type": "PARTICLE_EMITTER", - "link": null - }, - { - "name": "emitter_movement", - "type": "EMITTER_MOVEMENT", - "link": null - }, - { - "name": "spring_joint_setting", - "type": "SPRING_JOINT_SETTING", - "link": null - }, - { - "name": "particle_modulation", - "type": "PARTICLE_MODULATION", - "link": 261, - "slot_index": 3 - } - ], - "outputs": [ - { - "name": "PARTICLE_EMITTER", - "type": "PARTICLE_EMITTER", - "links": [ - 259 - ], - "shape": 3, - "slot_index": 0 - } - ], - "properties": { - "Node name for S&R": "ParticleEmitter" - }, - "widgets_values": [ - 0.9, - 0.75, - 180, - 31, - 17.4, - 179, - 13, - "(255,0,0)", - 0, - 0, - 0 - ] - }, - { - "id": 164, - "type": "SpringJointSetting", - "pos": [ - 5751, - 33 - ], - "size": { - "0": 315, - "1": 130 - }, - "flags": {}, - "order": 12, - "mode": 0, - "outputs": [ - { - "name": "SPRING_JOINT_SETTING", - "type": "SPRING_JOINT_SETTING", - "links": [ - 260 - ], - "shape": 3 - } - ], - "properties": { - "Node name for S&R": "SpringJointSetting" - }, - "widgets_values": [ - 100, - 10, - 0, - 50 - ] - }, - { - "id": 167, - "type": "ParticleSpeedModulation", - "pos": [ - 5955, - 796 - ], - "size": [ - 361.20001220703125, - 178 - ], - "flags": {}, - "order": 13, - "mode": 0, - "inputs": [ - { - "name": "previous_modulation", - "type": "PARTICLE_MODULATION", - "link": null - } - ], - "outputs": [ - { - "name": "PARTICLE_MODULATION", - "type": "PARTICLE_MODULATION", - "links": [ - 263 - ], - "shape": 3 - } - ], - "properties": { - "Node name for S&R": "ParticleSpeedModulation" - }, - "widgets_values": [ - 0, - 0, - 0, - "ease_in_out", - false, - 100 - ] - }, - { - "id": 165, - "type": "ParticleColorModulation", - "pos": [ - 5951, - 344 - ], - "size": [ - 361.20001220703125, - 178 - ], - "flags": {}, - "order": 27, - "mode": 0, - "inputs": [ - { - "name": "previous_modulation", - "type": "PARTICLE_MODULATION", - "link": 262, - "slot_index": 0 - } - ], - "outputs": [ - { - "name": "PARTICLE_MODULATION", - "type": "PARTICLE_MODULATION", - "links": [ - 261 - ], - "shape": 3 - } - ], - "properties": { - "Node name for S&R": "ParticleColorModulation" - }, - "widgets_values": [ - 0, - 0, - 0, - "ease_in_out", - false, - "(420,420,69)" - ] - }, - { - "id": 166, - "type": "ParticleSizeModulation", - "pos": [ - 5950, - 566 - ], - "size": [ - 352.79998779296875, - 178 - ], - "flags": {}, - "order": 23, - "mode": 0, - "inputs": [ - { - "name": "previous_modulation", - "type": "PARTICLE_MODULATION", - "link": 263, - "slot_index": 0 - } - ], - "outputs": [ - { - "name": "PARTICLE_MODULATION", - "type": "PARTICLE_MODULATION", - "links": [ - 262 - ], - "shape": 3 - } - ], - "properties": { - "Node name for S&R": "ParticleSizeModulation" - }, - "widgets_values": [ - 0, - 0, - 0, - "ease_in_out", - true, - 93.30000000000001 - ] - }, - { - "id": 168, - "type": "Note", - "pos": [ - 5663.026864025873, - 599.2102892984099 - ], - "size": { - "0": 210, - "1": 58 - }, - "flags": {}, - "order": 14, - "mode": 0, - "properties": { - "text": "" - }, - "widgets_values": [ - "palindrome true" - ], - "color": "#432", - "bgcolor": "#653" - }, - { - "id": 136, - "type": "VHS_VideoCombine", - "pos": [ - 3504, - 5 - ], - "size": [ - 360, - 928.4444444444445 - ], - "flags": {}, - "order": 39, - "mode": 0, - "inputs": [ - { - "name": "images", - "type": "IMAGE", - "link": 229 - }, - { - "name": "audio", - "type": "AUDIO", - "link": null - }, - { - "name": "meta_batch", - "type": "VHS_BatchManager", - "link": null - }, - { - "name": "vae", - "type": "VAE", - "link": null - } - ], - "outputs": [ - { - "name": "Filenames", - "type": "VHS_FILENAMES", - "links": null, - "shape": 3 - } - ], - "properties": { - "Node name for S&R": "VHS_VideoCombine" - }, - "widgets_values": { - "frame_rate": 30, - "loop_count": 0, - "filename_prefix": "AnimateDiff", - "format": "video/h264-mp4", - "pix_fmt": "yuv420p", - "crf": 19, - "save_metadata": true, - "pingpong": false, - "save_output": true, - "videopreview": { - "hidden": false, - "paused": false, - "params": { - "filename": "AnimateDiff_00671.mp4", - "subfolder": "", - "type": "output", - "format": "video/h264-mp4", - "frame_rate": 30 - }, - "muted": false - } - } - } - ], - "links": [ - [ - 199, - 104, - 0, - 108, - 0, - "IMAGE" - ], - [ - 201, - 109, - 0, - 107, - 1, - "PARTICLE_EMITTER" - ], - [ - 202, - 110, - 0, - 109, - 0, - "PARTICLE_EMITTER" - ], - [ - 203, - 107, - 1, - 112, - 0, - "IMAGE" - ], - [ - 205, - 114, - 0, - 113, - 1, - "PARTICLE_EMITTER" - ], - [ - 207, - 113, - 1, - 116, - 0, - "IMAGE" - ], - [ - 208, - 108, - 0, - 117, - 0, - "*" - ], - [ - 209, - 117, - 0, - 118, - 0, - "*" - ], - [ - 211, - 120, - 0, - 113, - 4, - "STATIC_BODY" - ], - [ - 213, - 104, - 0, - 121, - 0, - "IMAGE" - ], - [ - 214, - 121, - 0, - 122, - 0, - "*" - ], - [ - 215, - 122, - 0, - 119, - 0, - "*" - ], - [ - 216, - 119, - 0, - 113, - 0, - "MASK" - ], - [ - 217, - 123, - 0, - 120, - 0, - "STATIC_BODY" - ], - [ - 218, - 124, - 0, - 123, - 0, - "STATIC_BODY" - ], - [ - 219, - 118, - 0, - 107, - 0, - "MASK" - ], - [ - 226, - 137, - 0, - 134, - 0, - "MASK" - ], - [ - 229, - 134, - 1, - 136, - 0, - "IMAGE" - ], - [ - 233, - 119, - 0, - 137, - 0, - "*" - ], - [ - 236, - 143, - 0, - 142, - 0, - "PARTICLE_EMITTER" - ], - [ - 237, - 142, - 0, - 134, - 1, - "PARTICLE_EMITTER" - ], - [ - 238, - 144, - 0, - 134, - 2, - "VORTEX" - ], - [ - 239, - 145, - 0, - 144, - 0, - "VORTEX" - ], - [ - 241, - 149, - 0, - 146, - 1, - "PARTICLE_EMITTER" - ], - [ - 243, - 146, - 1, - 147, - 0, - "IMAGE" - ], - [ - 245, - 150, - 0, - 149, - 0, - "PARTICLE_EMITTER" - ], - [ - 247, - 137, - 0, - 148, - 0, - "*" - ], - [ - 248, - 148, - 0, - 146, - 0, - "MASK" - ], - [ - 249, - 153, - 0, - 146, - 3, - "GRAVITY_WELL" - ], - [ - 250, - 154, - 0, - 153, - 0, - "GRAVITY_WELL" - ], - [ - 251, - 158, - 0, - 156, - 0, - "MASK" - ], - [ - 252, - 159, - 0, - 156, - 1, - "PARTICLE_EMITTER" - ], - [ - 254, - 156, - 1, - 157, - 0, - "IMAGE" - ], - [ - 257, - 148, - 0, - 158, - 0, - "*" - ], - [ - 259, - 163, - 0, - 159, - 0, - "PARTICLE_EMITTER" - ], - [ - 260, - 164, - 0, - 159, - 2, - "SPRING_JOINT_SETTING" - ], - [ - 261, - 165, - 0, - 163, - 3, - "PARTICLE_MODULATION" - ], - [ - 262, - 166, - 0, - 165, - 0, - "PARTICLE_MODULATION" - ], - [ - 263, - 167, - 0, - 166, - 0, - "PARTICLE_MODULATION" - ] - ], - "groups": [ - { - "title": "Multiple Particle Emitters", - "bounding": [ - -1523, - -70, - 1480, - 994 - ], - "color": "#3f789e", - "font_size": 24 - }, - { - "title": "Static bodies", - "bounding": [ - -17, - -76, - 2121, - 1008 - ], - "color": "#3f789e", - "font_size": 24 - }, - { - "title": "Vortex / Gravity Well", - "bounding": [ - 2128, - -75, - 3444, - 1007 - ], - "color": "#3f789e", - "font_size": 24 - }, - { - "title": "Particle Modulation", - "bounding": [ - 5639, - -75, - 2268, - 1083 - ], - "color": "#3f789e", - "font_size": 24 - } - ], - "config": {}, - "extra": { - "ds": { - "scale": 0.1635079908265581, - "offset": [ - 4425.9102655421375, - 2454.955484849879 - ] - } - }, - "version": 0.4 -} \ No newline at end of file diff --git a/examples/playhead_tutorial.json b/examples/playhead_tutorial.json deleted file mode 100644 index 72d3d96..0000000 --- a/examples/playhead_tutorial.json +++ /dev/null @@ -1,4509 +0,0 @@ -{ - "last_node_id": 244, - "last_link_id": 510, - "nodes": [ - { - "id": 165, - "type": "FeatureSmoothing", - "pos": { - "0": 1767.974609375, - "1": 1058.024658203125 - }, - "size": { - "0": 478.8000183105469, - "1": 174 - }, - "flags": { - "collapsed": false - }, - "order": 33, - "mode": 0, - "inputs": [ - { - "name": "feature", - "type": "FEATURE", - "link": 374 - } - ], - "outputs": [ - { - "name": "FEATURE", - "type": "FEATURE", - "links": [ - 370 - ], - "slot_index": 0, - "shape": 3 - }, - { - "name": "FEATURE_VISUALIZATION", - "type": "IMAGE", - "links": [ - 371 - ], - "slot_index": 1, - "shape": 3 - } - ], - "properties": { - "Node name for S&R": "FeatureSmoothing" - }, - "widgets_values": [ - "moving_average", - 7, - 0.3, - 1, - false - ] - }, - { - "id": 153, - "type": "FeatureSmoothing", - "pos": { - "0": 1674.97509765625, - "1": -693.136962890625 - }, - "size": { - "0": 478.8000183105469, - "1": 174 - }, - "flags": { - "collapsed": false - }, - "order": 32, - "mode": 0, - "inputs": [ - { - "name": "feature", - "type": "FEATURE", - "link": 351 - } - ], - "outputs": [ - { - "name": "FEATURE", - "type": "FEATURE", - "links": [ - 357 - ], - "slot_index": 0, - "shape": 3 - }, - { - "name": "FEATURE_VISUALIZATION", - "type": "IMAGE", - "links": [ - 358 - ], - "slot_index": 1, - "shape": 3 - } - ], - "properties": { - "Node name for S&R": "FeatureSmoothing" - }, - "widgets_values": [ - "moving_average", - 7, - 0.3, - 1, - false - ] - }, - { - "id": 157, - "type": "PreviewImage", - "pos": { - "0": 2260.976318359375, - "1": -1098.1416015625 - }, - "size": { - "0": 210, - "1": 246 - }, - "flags": {}, - "order": 41, - "mode": 0, - "inputs": [ - { - "name": "images", - "type": "IMAGE", - "link": 358 - } - ], - "outputs": [], - "properties": { - "Node name for S&R": "PreviewImage" - }, - "widgets_values": [] - }, - { - "id": 180, - "type": "VHS_VideoCombine", - "pos": { - "0": 8987.7255859375, - "1": -793.009765625 - }, - "size": [ - 214.7587890625, - 670.2378472222222 - ], - "flags": {}, - "order": 63, - "mode": 4, - "inputs": [ - { - "name": "images", - "type": "IMAGE", - "link": 405 - }, - { - "name": "audio", - "type": "*", - "link": 494 - }, - { - "name": "meta_batch", - "type": "VHS_BatchManager", - "link": null - }, - { - "name": "vae", - "type": "VAE", - "link": null - } - ], - "outputs": [ - { - "name": "Filenames", - "type": "VHS_FILENAMES", - "links": null, - "shape": 3 - } - ], - "properties": { - "Node name for S&R": "VHS_VideoCombine" - }, - "widgets_values": { - "frame_rate": 30, - "loop_count": 0, - "filename_prefix": "AnimateDiff", - "format": "video/h264-mp4", - "pix_fmt": "yuv420p", - "crf": 19, - "save_metadata": true, - "pingpong": false, - "save_output": true, - "videopreview": { - "hidden": false, - "paused": false, - "params": { - "filename": "AnimateDiff_00201-audio.mp4", - "subfolder": "", - "type": "output", - "format": "video/h264-mp4", - "frame_rate": 30 - }, - "muted": false - } - } - }, - { - "id": 175, - "type": "GetImageSizeAndCount", - "pos": { - "0": 7767.72509765625, - "1": -543.01025390625 - }, - "size": { - "0": 277.20001220703125, - "1": 86 - }, - "flags": {}, - "order": 49, - "mode": 4, - "inputs": [ - { - "name": "image", - "type": "IMAGE", - "link": 396 - } - ], - "outputs": [ - { - "name": "image", - "type": "IMAGE", - "links": [ - 409 - ], - "slot_index": 0, - "shape": 3 - }, - { - "name": "360 width", - "type": "INT", - "links": [ - 397 - ], - "slot_index": 1, - "shape": 3 - }, - { - "name": "640 height", - "type": "INT", - "links": [ - 398 - ], - "slot_index": 2, - "shape": 3 - }, - { - "name": "726 count", - "type": "INT", - "links": [ - 399 - ], - "slot_index": 3, - "shape": 3 - } - ], - "properties": { - "Node name for S&R": "GetImageSizeAndCount" - }, - "widgets_values": [] - }, - { - "id": 185, - "type": "GetImageSizeAndCount", - "pos": { - "0": 7807.72509765625, - "1": 1446.989501953125 - }, - "size": { - "0": 277.20001220703125, - "1": 86 - }, - "flags": {}, - "order": 51, - "mode": 4, - "inputs": [ - { - "name": "image", - "type": "IMAGE", - "link": 427 - } - ], - "outputs": [ - { - "name": "image", - "type": "IMAGE", - "links": [ - 422 - ], - "slot_index": 0, - "shape": 3 - }, - { - "name": "360 width", - "type": "INT", - "links": [ - 419 - ], - "slot_index": 1, - "shape": 3 - }, - { - "name": "640 height", - "type": "INT", - "links": [ - 420 - ], - "slot_index": 2, - "shape": 3 - }, - { - "name": "726 count", - "type": "INT", - "links": [ - 421 - ], - "slot_index": 3, - "shape": 3 - } - ], - "properties": { - "Node name for S&R": "GetImageSizeAndCount" - }, - "widgets_values": [] - }, - { - "id": 188, - "type": "VHS_VideoCombine", - "pos": { - "0": 9027.7255859375, - "1": 1196.989501953125 - }, - "size": [ - 214.7587890625, - 670.2378472222222 - ], - "flags": {}, - "order": 64, - "mode": 4, - "inputs": [ - { - "name": "images", - "type": "IMAGE", - "link": 425 - }, - { - "name": "audio", - "type": "*", - "link": 500 - }, - { - "name": "meta_batch", - "type": "VHS_BatchManager", - "link": null - }, - { - "name": "vae", - "type": "VAE", - "link": null - } - ], - "outputs": [ - { - "name": "Filenames", - "type": "VHS_FILENAMES", - "links": null, - "shape": 3 - } - ], - "properties": { - "Node name for S&R": "VHS_VideoCombine" - }, - "widgets_values": { - "frame_rate": 30, - "loop_count": 0, - "filename_prefix": "AnimateDiff", - "format": "video/h264-mp4", - "pix_fmt": "yuv420p", - "crf": 19, - "save_metadata": true, - "pingpong": false, - "save_output": true, - "videopreview": { - "hidden": false, - "paused": false, - "params": { - "filename": "AnimateDiff_00202-audio.mp4", - "subfolder": "", - "type": "output", - "format": "video/h264-mp4", - "frame_rate": 30 - }, - "muted": false - } - } - }, - { - "id": 181, - "type": "GetImageSizeAndCount", - "pos": { - "0": 7845.7255859375, - "1": 257.989501953125 - }, - "size": { - "0": 277.20001220703125, - "1": 86 - }, - "flags": {}, - "order": 47, - "mode": 4, - "inputs": [ - { - "name": "image", - "type": "IMAGE", - "link": 426 - } - ], - "outputs": [ - { - "name": "image", - "type": "IMAGE", - "links": [ - 415 - ], - "slot_index": 0, - "shape": 3 - }, - { - "name": "360 width", - "type": "INT", - "links": [ - 412 - ], - "slot_index": 1, - "shape": 3 - }, - { - "name": "640 height", - "type": "INT", - "links": [ - 413 - ], - "slot_index": 2, - "shape": 3 - }, - { - "name": "726 count", - "type": "INT", - "links": [ - 414 - ], - "slot_index": 3, - "shape": 3 - } - ], - "properties": { - "Node name for S&R": "GetImageSizeAndCount" - }, - "widgets_values": [] - }, - { - "id": 184, - "type": "VHS_VideoCombine", - "pos": { - "0": 9196.7255859375, - "1": 187.989501953125 - }, - "size": [ - 214.7587890625, - 670.2378472222222 - ], - "flags": {}, - "order": 62, - "mode": 4, - "inputs": [ - { - "name": "images", - "type": "IMAGE", - "link": 418 - }, - { - "name": "audio", - "type": "*", - "link": 497 - }, - { - "name": "meta_batch", - "type": "VHS_BatchManager", - "link": null - }, - { - "name": "vae", - "type": "VAE", - "link": null - } - ], - "outputs": [ - { - "name": "Filenames", - "type": "VHS_FILENAMES", - "links": null, - "shape": 3 - } - ], - "properties": { - "Node name for S&R": "VHS_VideoCombine" - }, - "widgets_values": { - "frame_rate": 30, - "loop_count": 0, - "filename_prefix": "AnimateDiff", - "format": "video/h264-mp4", - "pix_fmt": "yuv420p", - "crf": 19, - "save_metadata": true, - "pingpong": false, - "save_output": true, - "videopreview": { - "hidden": false, - "paused": false, - "params": { - "filename": "AnimateDiff_00203-audio.mp4", - "subfolder": "", - "type": "output", - "format": "video/h264-mp4", - "frame_rate": 30 - }, - "muted": false - } - } - }, - { - "id": 164, - "type": "FlexVideoDirection", - "pos": { - "0": 1781.974609375, - "1": 1278.0252685546875 - }, - "size": { - "0": 466.279296875, - "1": 170 - }, - "flags": {}, - "order": 42, - "mode": 0, - "inputs": [ - { - "name": "images", - "type": "IMAGE", - "link": 391 - }, - { - "name": "feature", - "type": "FEATURE", - "link": 370 - }, - { - "name": "feature_pipe", - "type": "FEATURE_PIPE", - "link": 375 - } - ], - "outputs": [ - { - "name": "IMAGE", - "type": "IMAGE", - "links": [ - 369, - 427 - ], - "slot_index": 0, - "shape": 3 - } - ], - "properties": { - "Node name for S&R": "FlexVideoDirection" - }, - "widgets_values": [ - 0.99, - "relative", - "direction", - 0 - ] - }, - { - "id": 179, - "type": "ImageCompositeMasked", - "pos": { - "0": 8557.7255859375, - "1": -603.009765625 - }, - "size": { - "0": 315, - "1": 146 - }, - "flags": {}, - "order": 59, - "mode": 4, - "inputs": [ - { - "name": "destination", - "type": "IMAGE", - "link": 409 - }, - { - "name": "source", - "type": "IMAGE", - "link": 411 - }, - { - "name": "mask", - "type": "MASK", - "link": 404 - } - ], - "outputs": [ - { - "name": "IMAGE", - "type": "IMAGE", - "links": [ - 405, - 428 - ], - "slot_index": 0, - "shape": 3 - } - ], - "properties": { - "Node name for S&R": "ImageCompositeMasked" - }, - "widgets_values": [ - 0, - 0, - false - ] - }, - { - "id": 183, - "type": "ImageCompositeMasked", - "pos": { - "0": 8777.7255859375, - "1": 252.989501953125 - }, - "size": { - "0": 315, - "1": 146 - }, - "flags": {}, - "order": 58, - "mode": 4, - "inputs": [ - { - "name": "destination", - "type": "IMAGE", - "link": 415 - }, - { - "name": "source", - "type": "IMAGE", - "link": 416 - }, - { - "name": "mask", - "type": "MASK", - "link": 417 - } - ], - "outputs": [ - { - "name": "IMAGE", - "type": "IMAGE", - "links": [ - 418, - 429 - ], - "slot_index": 0, - "shape": 3 - } - ], - "properties": { - "Node name for S&R": "ImageCompositeMasked" - }, - "widgets_values": [ - 0, - 0, - false - ] - }, - { - "id": 187, - "type": "ImageCompositeMasked", - "pos": { - "0": 8597.7255859375, - "1": 1386.989501953125 - }, - "size": { - "0": 315, - "1": 146 - }, - "flags": {}, - "order": 60, - "mode": 4, - "inputs": [ - { - "name": "destination", - "type": "IMAGE", - "link": 422 - }, - { - "name": "source", - "type": "IMAGE", - "link": 423 - }, - { - "name": "mask", - "type": "MASK", - "link": 424 - } - ], - "outputs": [ - { - "name": "IMAGE", - "type": "IMAGE", - "links": [ - 425, - 430 - ], - "slot_index": 0, - "shape": 3 - } - ], - "properties": { - "Node name for S&R": "ImageCompositeMasked" - }, - "widgets_values": [ - 0, - 0, - false - ] - }, - { - "id": 195, - "type": "Reroute", - "pos": { - "0": 1644, - "1": 900 - }, - "size": [ - 75, - 26 - ], - "flags": {}, - "order": 13, - "mode": 0, - "inputs": [ - { - "name": "", - "type": "*", - "link": 442 - } - ], - "outputs": [ - { - "name": "", - "type": "AUDIO", - "links": [ - 443, - 498 - ], - "slot_index": 0 - } - ], - "properties": { - "showOutputText": false, - "horizontal": false - } - }, - { - "id": 198, - "type": "FeatureSmoothing", - "pos": { - "0": 1790, - "1": 1950 - }, - "size": { - "0": 478.8000183105469, - "1": 174 - }, - "flags": { - "collapsed": false - }, - "order": 34, - "mode": 0, - "inputs": [ - { - "name": "feature", - "type": "FEATURE", - "link": 450 - } - ], - "outputs": [ - { - "name": "FEATURE", - "type": "FEATURE", - "links": [ - 448 - ], - "slot_index": 0, - "shape": 3 - }, - { - "name": "FEATURE_VISUALIZATION", - "type": "IMAGE", - "links": [ - 451 - ], - "slot_index": 1, - "shape": 3 - } - ], - "properties": { - "Node name for S&R": "FeatureSmoothing" - }, - "widgets_values": [ - "moving_average", - 7, - 0.3, - 1, - false - ] - }, - { - "id": 201, - "type": "Reroute", - "pos": { - "0": 1670, - "1": 1800 - }, - "size": [ - 75, - 26 - ], - "flags": {}, - "order": 15, - "mode": 0, - "inputs": [ - { - "name": "", - "type": "*", - "link": 454 - } - ], - "outputs": [ - { - "name": "", - "type": "AUDIO", - "links": [ - 452, - 501 - ] - } - ], - "properties": { - "showOutputText": false, - "horizontal": false - } - }, - { - "id": 200, - "type": "AudioFeatureExtractor", - "pos": { - "0": 1760, - "1": 1800 - }, - "size": { - "0": 541.800048828125, - "1": 78 - }, - "flags": {}, - "order": 24, - "mode": 0, - "inputs": [ - { - "name": "audio", - "type": "AUDIO", - "link": 452 - }, - { - "name": "feature_pipe", - "type": "FEATURE_PIPE", - "link": 455 - } - ], - "outputs": [ - { - "name": "FEATURE", - "type": "FEATURE", - "links": [ - 450 - ], - "slot_index": 0, - "shape": 3 - }, - { - "name": "FEATURE_PIPE", - "type": "FEATURE_PIPE", - "links": [ - 449 - ], - "slot_index": 1, - "shape": 3 - } - ], - "properties": { - "Node name for S&R": "AudioFeatureExtractor" - }, - "widgets_values": [ - "amplitude_envelope" - ] - }, - { - "id": 172, - "type": "Reroute", - "pos": { - "0": 952.9832763671875, - "1": 422.727294921875 - }, - "size": [ - 75, - 26 - ], - "flags": {}, - "order": 8, - "mode": 0, - "inputs": [ - { - "name": "", - "type": "*", - "link": 386 - } - ], - "outputs": [ - { - "name": "", - "type": "IMAGE", - "links": [ - 388, - 389, - 391, - 453 - ], - "slot_index": 0 - } - ], - "properties": { - "showOutputText": false, - "horizontal": false - } - }, - { - "id": 191, - "type": "Reroute", - "pos": { - "0": 9654, - "1": 929 - }, - "size": [ - 75, - 26 - ], - "flags": {}, - "order": 11, - "mode": 4, - "inputs": [ - { - "name": "", - "type": "*", - "link": 432 - } - ], - "outputs": [ - { - "name": "", - "type": "AUDIO", - "links": [ - 433 - ], - "slot_index": 0 - } - ], - "properties": { - "showOutputText": false, - "horizontal": false - } - }, - { - "id": 202, - "type": "GetImageSizeAndCount", - "pos": { - "0": 7820, - "1": 2260 - }, - "size": { - "0": 277.20001220703125, - "1": 86 - }, - "flags": {}, - "order": 53, - "mode": 4, - "inputs": [ - { - "name": "image", - "type": "IMAGE", - "link": 464 - } - ], - "outputs": [ - { - "name": "image", - "type": "IMAGE", - "links": [ - 459 - ], - "slot_index": 0, - "shape": 3 - }, - { - "name": "360 width", - "type": "INT", - "links": [ - 456 - ], - "slot_index": 1, - "shape": 3 - }, - { - "name": "640 height", - "type": "INT", - "links": [ - 457 - ], - "slot_index": 2, - "shape": 3 - }, - { - "name": "726 count", - "type": "INT", - "links": [ - 458 - ], - "slot_index": 3, - "shape": 3 - } - ], - "properties": { - "Node name for S&R": "GetImageSizeAndCount" - }, - "widgets_values": [] - }, - { - "id": 205, - "type": "VHS_VideoCombine", - "pos": { - "0": 9040, - "1": 2010 - }, - "size": [ - 214.7587890625, - 670.2378472222222 - ], - "flags": {}, - "order": 65, - "mode": 4, - "inputs": [ - { - "name": "images", - "type": "IMAGE", - "link": 462 - }, - { - "name": "audio", - "type": "AUDIO", - "link": 503 - }, - { - "name": "meta_batch", - "type": "VHS_BatchManager", - "link": null - }, - { - "name": "vae", - "type": "VAE", - "link": null - } - ], - "outputs": [ - { - "name": "Filenames", - "type": "VHS_FILENAMES", - "links": null, - "shape": 3 - } - ], - "properties": { - "Node name for S&R": "VHS_VideoCombine" - }, - "widgets_values": { - "frame_rate": 30, - "loop_count": 0, - "filename_prefix": "AnimateDiff", - "format": "video/h264-mp4", - "pix_fmt": "yuv420p", - "crf": 19, - "save_metadata": true, - "pingpong": false, - "save_output": true, - "videopreview": { - "hidden": false, - "paused": false, - "params": { - "filename": "AnimateDiff_00204-audio.mp4", - "subfolder": "", - "type": "output", - "format": "video/h264-mp4", - "frame_rate": 30 - }, - "muted": false - } - } - }, - { - "id": 189, - "type": "ImageConcatMulti", - "pos": { - "0": 9917, - "1": 981 - }, - "size": { - "0": 210, - "1": 190 - }, - "flags": {}, - "order": 66, - "mode": 4, - "inputs": [ - { - "name": "image_1", - "type": "IMAGE", - "link": 428 - }, - { - "name": "image_2", - "type": "IMAGE", - "link": 429 - }, - { - "name": "image_3", - "type": "IMAGE", - "link": 430 - }, - { - "name": "image_4", - "type": "IMAGE", - "link": 463 - } - ], - "outputs": [ - { - "name": "images", - "type": "IMAGE", - "links": [ - 431 - ], - "slot_index": 0, - "shape": 3 - } - ], - "properties": {}, - "widgets_values": [ - 4, - "right", - false, - null - ] - }, - { - "id": 204, - "type": "ImageCompositeMasked", - "pos": { - "0": 8610, - "1": 2200 - }, - "size": { - "0": 315, - "1": 146 - }, - "flags": {}, - "order": 61, - "mode": 4, - "inputs": [ - { - "name": "destination", - "type": "IMAGE", - "link": 459 - }, - { - "name": "source", - "type": "IMAGE", - "link": 460 - }, - { - "name": "mask", - "type": "MASK", - "link": 461 - } - ], - "outputs": [ - { - "name": "IMAGE", - "type": "IMAGE", - "links": [ - 462, - 463 - ], - "slot_index": 0, - "shape": 3 - } - ], - "properties": { - "Node name for S&R": "ImageCompositeMasked" - }, - "widgets_values": [ - 0, - 0, - false - ] - }, - { - "id": 197, - "type": "FlexVideoDirection", - "pos": { - "0": 1800, - "1": 2170 - }, - "size": { - "0": 466.279296875, - "1": 170 - }, - "flags": {}, - "order": 44, - "mode": 0, - "inputs": [ - { - "name": "images", - "type": "IMAGE", - "link": 453 - }, - { - "name": "feature", - "type": "FEATURE", - "link": 448 - }, - { - "name": "feature_pipe", - "type": "FEATURE_PIPE", - "link": 449 - } - ], - "outputs": [ - { - "name": "IMAGE", - "type": "IMAGE", - "links": [ - 446, - 464 - ], - "slot_index": 0, - "shape": 3 - } - ], - "properties": { - "Node name for S&R": "FlexVideoDirection" - }, - "widgets_values": [ - 0.99, - "relative", - "direction", - 0 - ] - }, - { - "id": 193, - "type": "EmptyImageFromAudio", - "pos": { - "0": -371.01666259765625, - "1": 441.72735595703125 - }, - "size": { - "0": 336, - "1": 113.79998779296875 - }, - "flags": {}, - "order": 6, - "mode": 0, - "inputs": [ - { - "name": "audio", - "type": "AUDIO", - "link": 434 - } - ], - "outputs": [ - { - "name": "IMAGE", - "type": "IMAGE", - "links": [ - 439, - 465 - ], - "slot_index": 0, - "shape": 3 - } - ], - "properties": { - "Node name for S&R": "EmptyImageFromAudio" - }, - "widgets_values": [ - 30, - 512, - 512 - ] - }, - { - "id": 208, - "type": "PreviewFeature", - "pos": { - "0": -182.3755340576172, - "1": 1588.4697265625 - }, - "size": { - "0": 415.8000183105469, - "1": 58 - }, - "flags": {}, - "order": 17, - "mode": 0, - "inputs": [ - { - "name": "feature", - "type": "FEATURE", - "link": 466 - } - ], - "outputs": [ - { - "name": "FEATURE_PREVIEW", - "type": "IMAGE", - "links": [ - 467 - ], - "slot_index": 0, - "shape": 3 - } - ], - "properties": { - "Node name for S&R": "PreviewFeature" - }, - "widgets_values": [ - false - ] - }, - { - "id": 213, - "type": "EffectVisualizer", - "pos": { - "0": -164.37551879882812, - "1": 1925.4698486328125 - }, - "size": { - "0": 441, - "1": 102 - }, - "flags": {}, - "order": 31, - "mode": 0, - "inputs": [ - { - "name": "video_frames", - "type": "IMAGE", - "link": 472 - }, - { - "name": "feature", - "type": "FEATURE", - "link": 473 - } - ], - "outputs": [ - { - "name": "IMAGE", - "type": "IMAGE", - "links": [ - 474 - ], - "slot_index": 0, - "shape": 3 - } - ], - "properties": { - "Node name for S&R": "EffectVisualizer" - }, - "widgets_values": [ - "(255,255,255)", - 1 - ] - }, - { - "id": 210, - "type": "FlexVideoDirection", - "pos": { - "0": -169.37551879882812, - "1": 1701.4698486328125 - }, - "size": { - "0": 466.279296875, - "1": 170 - }, - "flags": {}, - "order": 19, - "mode": 0, - "inputs": [ - { - "name": "images", - "type": "IMAGE", - "link": 470 - }, - { - "name": "feature", - "type": "FEATURE", - "link": 469 - }, - { - "name": "feature_pipe", - "type": "FEATURE_PIPE", - "link": 479 - } - ], - "outputs": [ - { - "name": "IMAGE", - "type": "IMAGE", - "links": [ - 472 - ], - "slot_index": 0, - "shape": 3 - } - ], - "properties": { - "Node name for S&R": "FlexVideoDirection" - }, - "widgets_values": [ - 0.99, - "absolute", - "direction", - 0 - ] - }, - { - "id": 221, - "type": "PreviewImage", - "pos": { - "0": -52.375545501708984, - "1": 2606.470458984375 - }, - "size": { - "0": 210, - "1": 246 - }, - "flags": {}, - "order": 30, - "mode": 0, - "inputs": [ - { - "name": "images", - "type": "IMAGE", - "link": 506 - } - ], - "outputs": [], - "properties": { - "Node name for S&R": "PreviewImage" - }, - "widgets_values": [] - }, - { - "id": 225, - "type": "VHS_VideoCombine", - "pos": { - "0": 738.624267578125, - "1": 2394.470458984375 - }, - "size": [ - 214.7587890625, - 670.2378472222222 - ], - "flags": {}, - "order": 38, - "mode": 0, - "inputs": [ - { - "name": "images", - "type": "IMAGE", - "link": 487 - }, - { - "name": "audio", - "type": "*", - "link": null - }, - { - "name": "meta_batch", - "type": "VHS_BatchManager", - "link": null - }, - { - "name": "vae", - "type": "VAE", - "link": null - } - ], - "outputs": [ - { - "name": "Filenames", - "type": "VHS_FILENAMES", - "links": null, - "shape": 3 - } - ], - "properties": { - "Node name for S&R": "VHS_VideoCombine" - }, - "widgets_values": { - "frame_rate": 30, - "loop_count": 0, - "filename_prefix": "AnimateDiff", - "format": "video/h264-mp4", - "pix_fmt": "yuv420p", - "crf": 19, - "save_metadata": true, - "pingpong": false, - "save_output": true, - "videopreview": { - "hidden": false, - "paused": false, - "params": { - "filename": "AnimateDiff_00218.mp4", - "subfolder": "", - "type": "output", - "format": "video/h264-mp4", - "frame_rate": 30 - }, - "muted": false - } - } - }, - { - "id": 211, - "type": "VHS_VideoCombine", - "pos": { - "0": 591.624267578125, - "1": 1546.4697265625 - }, - "size": [ - 214.7587890625, - 670.2378472222222 - ], - "flags": {}, - "order": 39, - "mode": 0, - "inputs": [ - { - "name": "images", - "type": "IMAGE", - "link": 474 - }, - { - "name": "audio", - "type": "*", - "link": null - }, - { - "name": "meta_batch", - "type": "VHS_BatchManager", - "link": null - }, - { - "name": "vae", - "type": "VAE", - "link": null - } - ], - "outputs": [ - { - "name": "Filenames", - "type": "VHS_FILENAMES", - "links": null, - "shape": 3 - } - ], - "properties": { - "Node name for S&R": "VHS_VideoCombine" - }, - "widgets_values": { - "frame_rate": 30, - "loop_count": 0, - "filename_prefix": "AnimateDiff", - "format": "video/h264-mp4", - "pix_fmt": "yuv420p", - "crf": 19, - "save_metadata": true, - "pingpong": false, - "save_output": true, - "videopreview": { - "hidden": false, - "paused": false, - "params": { - "filename": "AnimateDiff_00223.mp4", - "subfolder": "", - "type": "output", - "format": "video/h264-mp4", - "frame_rate": 30 - }, - "muted": false - } - } - }, - { - "id": 207, - "type": "Note", - "pos": { - "0": 173.1876983642578, - "1": 473.1287841796875 - }, - "size": { - "0": 689.7115478515625, - "1": 270.1275634765625 - }, - "flags": {}, - "order": 0, - "mode": 0, - "inputs": [], - "outputs": [], - "properties": {}, - "widgets_values": [ - "THANK YOU for checking this out!!! I developed these nodes as well as this workflow.\n\nIf you think this is cool please consider a sub to my youtube and a star to the repo :)\n\nhttps://github.com/ryanontheinside/ComfyUI_RyanOnTheInside\nhttps://www.youtube.com/@ryanontheinside\n\nLove, \nRyan\n\nPS\n\nAudio is just one powerful example\n\nBut ANY FLEX FEATURE CAN CONTROL THIS EFFECT. Including proximity, motion, depth, MIDI, color, brightness........etc\n\nSee Time example below, and flex features tutorial for more info https://youtu.be/fobd9mEzkBU\n\n" - ], - "color": "#432", - "bgcolor": "#653" - }, - { - "id": 186, - "type": "TextMaskNode", - "pos": { - "0": 8148, - "1": 1457 - }, - "size": { - "0": 403.1999816894531, - "1": 342 - }, - "flags": {}, - "order": 56, - "mode": 4, - "inputs": [ - { - "name": "width", - "type": "INT", - "link": 419, - "widget": { - "name": "width" - } - }, - { - "name": "height", - "type": "INT", - "link": 420, - "widget": { - "name": "height" - } - }, - { - "name": "batch_size", - "type": "INT", - "link": 421, - "widget": { - "name": "batch_size" - } - } - ], - "outputs": [ - { - "name": "MASK", - "type": "MASK", - "links": [ - 424 - ], - "slot_index": 0, - "shape": 3 - }, - { - "name": "IMAGE", - "type": "IMAGE", - "links": [ - 423 - ], - "slot_index": 1, - "shape": 3 - } - ], - "properties": { - "Node name for S&R": "TextMaskNode" - }, - "widgets_values": [ - 512, - 512, - "VOCALS", - "Arial", - 32, - "(255,255,255)", - "(0,0,0)", - 0.5, - 0, - 0, - 0.9, - 1 - ] - }, - { - "id": 182, - "type": "TextMaskNode", - "pos": { - "0": 8251.7255859375, - "1": 251.989501953125 - }, - "size": { - "0": 403.1999816894531, - "1": 342 - }, - "flags": {}, - "order": 54, - "mode": 4, - "inputs": [ - { - "name": "width", - "type": "INT", - "link": 412, - "widget": { - "name": "width" - } - }, - { - "name": "height", - "type": "INT", - "link": 413, - "widget": { - "name": "height" - } - }, - { - "name": "batch_size", - "type": "INT", - "link": 414, - "widget": { - "name": "batch_size" - } - } - ], - "outputs": [ - { - "name": "MASK", - "type": "MASK", - "links": [ - 417 - ], - "slot_index": 0, - "shape": 3 - }, - { - "name": "IMAGE", - "type": "IMAGE", - "links": [ - 416 - ], - "slot_index": 1, - "shape": 3 - } - ], - "properties": { - "Node name for S&R": "TextMaskNode" - }, - "widgets_values": [ - 512, - 512, - "BASS", - "Arial", - 32, - "(255,255,255)", - "(0,0,0)", - 0.5, - 0, - 0, - 0.9, - 1 - ] - }, - { - "id": 177, - "type": "TextMaskNode", - "pos": { - "0": 8097.7255859375, - "1": -533.010498046875 - }, - "size": { - "0": 403.1999816894531, - "1": 342 - }, - "flags": {}, - "order": 55, - "mode": 4, - "inputs": [ - { - "name": "width", - "type": "INT", - "link": 397, - "widget": { - "name": "width" - } - }, - { - "name": "height", - "type": "INT", - "link": 398, - "widget": { - "name": "height" - } - }, - { - "name": "batch_size", - "type": "INT", - "link": 399, - "widget": { - "name": "batch_size" - } - } - ], - "outputs": [ - { - "name": "MASK", - "type": "MASK", - "links": [ - 404 - ], - "slot_index": 0, - "shape": 3 - }, - { - "name": "IMAGE", - "type": "IMAGE", - "links": [ - 411 - ], - "slot_index": 1, - "shape": 3 - } - ], - "properties": { - "Node name for S&R": "TextMaskNode" - }, - "widgets_values": [ - 512, - 512, - "DRUMS", - "Arial", - 32, - "(255,255,255)", - "(0,0,0)", - 0.5, - 0, - 0, - 0.9, - 1 - ] - }, - { - "id": 203, - "type": "TextMaskNode", - "pos": { - "0": 8160, - "1": 2270 - }, - "size": { - "0": 403.1999816894531, - "1": 342 - }, - "flags": {}, - "order": 57, - "mode": 4, - "inputs": [ - { - "name": "width", - "type": "INT", - "link": 456, - "widget": { - "name": "width" - } - }, - { - "name": "height", - "type": "INT", - "link": 457, - "widget": { - "name": "height" - } - }, - { - "name": "batch_size", - "type": "INT", - "link": 458, - "widget": { - "name": "batch_size" - } - } - ], - "outputs": [ - { - "name": "MASK", - "type": "MASK", - "links": [ - 461 - ], - "slot_index": 0, - "shape": 3 - }, - { - "name": "IMAGE", - "type": "IMAGE", - "links": [ - 460 - ], - "slot_index": 1, - "shape": 3 - } - ], - "properties": { - "Node name for S&R": "TextMaskNode" - }, - "widgets_values": [ - 512, - 512, - "OTHER INSTRUMENTS", - "Arial", - 32, - "(255,255,255)", - "(0,0,0)", - 0.5, - 0, - 0, - 0.9, - 1 - ] - }, - { - "id": 192, - "type": "VHS_LoadAudioUpload", - "pos": { - "0": -739, - "1": 252 - }, - "size": { - "0": 243.818359375, - "1": 130 - }, - "flags": {}, - "order": 1, - "mode": 0, - "inputs": [], - "outputs": [ - { - "name": "audio", - "type": "AUDIO", - "links": [ - 434, - 437, - 438 - ], - "slot_index": 0, - "shape": 3 - } - ], - "properties": { - "Node name for S&R": "VHS_LoadAudioUpload" - }, - "widgets_values": { - "audio": "juicy.mp3", - "start_time": 10.06, - "duration": 24.23, - "choose audio to upload": "image" - } - }, - { - "id": 194, - "type": "PreviewAudio", - "pos": { - "0": -255.94879150390625, - "1": -81.42230224609375 - }, - "size": { - "0": 315, - "1": 76 - }, - "flags": {}, - "order": 7, - "mode": 0, - "inputs": [ - { - "name": "audio", - "type": "AUDIO", - "link": 437 - } - ], - "outputs": [], - "properties": { - "Node name for S&R": "PreviewAudio" - }, - "widgets_values": [ - null - ] - }, - { - "id": 117, - "type": "DownloadOpenUnmixModel", - "pos": { - "0": -250, - "1": 93 - }, - "size": { - "0": 541.800048828125, - "1": 58 - }, - "flags": {}, - "order": 2, - "mode": 0, - "inputs": [], - "outputs": [ - { - "name": "OPEN_UNMIX_MODEL", - "type": "OPEN_UNMIX_MODEL", - "links": [ - 250 - ], - "shape": 3 - } - ], - "properties": { - "Node name for S&R": "DownloadOpenUnmixModel" - }, - "widgets_values": [ - "umxl" - ] - }, - { - "id": 106, - "type": "VHS_LoadVideo", - "pos": { - "0": -690, - "1": 593 - }, - "size": [ - 247.455078125, - 680.3645833333333 - ], - "flags": {}, - "order": 3, - "mode": 0, - "inputs": [ - { - "name": "meta_batch", - "type": "VHS_BatchManager", - "link": null - }, - { - "name": "vae", - "type": "VAE", - "link": null - } - ], - "outputs": [ - { - "name": "IMAGE", - "type": "IMAGE", - "links": [ - 386, - 470, - 483 - ], - "slot_index": 0, - "shape": 3 - }, - { - "name": "frame_count", - "type": "INT", - "links": null, - "shape": 3 - }, - { - "name": "audio", - "type": "AUDIO", - "links": null, - "shape": 3 - }, - { - "name": "video_info", - "type": "VHS_VIDEOINFO", - "links": [], - "slot_index": 3, - "shape": 3 - } - ], - "properties": { - "Node name for S&R": "VHS_LoadVideo" - }, - "widgets_values": { - "video": "flower_timelapse.mp4", - "force_rate": 0, - "force_size": "Disabled", - "custom_width": 512, - "custom_height": 512, - "frame_load_cap": 36, - "skip_first_frames": 0, - "select_every_nth": 1, - "choose video to upload": "image", - "videopreview": { - "hidden": false, - "paused": false, - "params": { - "frame_load_cap": 36, - "skip_first_frames": 0, - "force_rate": 0, - "filename": "flower_timelapse.mp4", - "type": "input", - "format": "video/mp4", - "select_every_nth": 1 - }, - "muted": false - } - } - }, - { - "id": 115, - "type": "AudioSeparator", - "pos": { - "0": 319, - "1": 229 - }, - "size": { - "0": 415.8000183105469, - "1": 158 - }, - "flags": {}, - "order": 9, - "mode": 0, - "inputs": [ - { - "name": "model", - "type": "OPEN_UNMIX_MODEL", - "link": 250 - }, - { - "name": "audio", - "type": "AUDIO", - "link": 438 - }, - { - "name": "video_frames", - "type": "IMAGE", - "link": 439 - } - ], - "outputs": [ - { - "name": "audio", - "type": "AUDIO", - "links": [ - 432 - ], - "slot_index": 0, - "shape": 3 - }, - { - "name": "drums_audio", - "type": "AUDIO", - "links": [ - 252 - ], - "slot_index": 1, - "shape": 3 - }, - { - "name": "vocals_audio", - "type": "AUDIO", - "links": [ - 442 - ], - "slot_index": 2, - "shape": 3 - }, - { - "name": "bass_audio", - "type": "AUDIO", - "links": [ - 296, - 495 - ], - "slot_index": 3, - "shape": 3 - }, - { - "name": "other_audio", - "type": "AUDIO", - "links": [ - 454 - ], - "slot_index": 4, - "shape": 3 - }, - { - "name": "feature_pipe", - "type": "FEATURE_PIPE", - "links": [ - 297, - 394, - 445, - 455 - ], - "slot_index": 5, - "shape": 3 - } - ], - "properties": { - "Node name for S&R": "AudioSeparator" - }, - "widgets_values": [ - 30 - ] - }, - { - "id": 120, - "type": "FrequencyFilterPreset", - "pos": { - "0": 1598, - "1": -1066 - }, - "size": { - "0": 516.5999755859375, - "1": 58 - }, - "flags": {}, - "order": 4, - "mode": 0, - "inputs": [ - { - "name": "previous_filter", - "type": "FREQUENCY_FILTER", - "link": null - } - ], - "outputs": [ - { - "name": "FREQUENCY_FILTER", - "type": "FREQUENCY_FILTER", - "links": [ - 253 - ], - "shape": 3 - } - ], - "properties": { - "Node name for S&R": "FrequencyFilterPreset" - }, - "widgets_values": [ - "isolate_kick_drum" - ] - }, - { - "id": 119, - "type": "AudioFilter", - "pos": { - "0": 1625, - "1": -948 - }, - "size": { - "0": 378, - "1": 46 - }, - "flags": {}, - "order": 12, - "mode": 0, - "inputs": [ - { - "name": "audio", - "type": "AUDIO", - "link": 252 - }, - { - "name": "filters", - "type": "FREQUENCY_FILTER", - "link": 253 - } - ], - "outputs": [ - { - "name": "AUDIO", - "type": "AUDIO", - "links": [ - 256, - 492 - ], - "slot_index": 0, - "shape": 3 - } - ], - "properties": { - "Node name for S&R": "AudioFilter" - }, - "widgets_values": [] - }, - { - "id": 161, - "type": "FeatureSmoothing", - "pos": { - "0": 1676, - "1": 124 - }, - "size": { - "0": 478.8000183105469, - "1": 174 - }, - "flags": { - "collapsed": false - }, - "order": 26, - "mode": 0, - "inputs": [ - { - "name": "feature", - "type": "FEATURE", - "link": 366 - } - ], - "outputs": [ - { - "name": "FEATURE", - "type": "FEATURE", - "links": [ - 362 - ], - "slot_index": 0, - "shape": 3 - }, - { - "name": "FEATURE_VISUALIZATION", - "type": "IMAGE", - "links": [ - 365 - ], - "slot_index": 1, - "shape": 3 - } - ], - "properties": { - "Node name for S&R": "FeatureSmoothing" - }, - "widgets_values": [ - "moving_average", - 7, - 0.3, - 1, - false - ] - }, - { - "id": 138, - "type": "AudioFeatureExtractor", - "pos": { - "0": 1683, - "1": -34 - }, - "size": { - "0": 541.800048828125, - "1": 78 - }, - "flags": {}, - "order": 16, - "mode": 0, - "inputs": [ - { - "name": "audio", - "type": "AUDIO", - "link": 296 - }, - { - "name": "feature_pipe", - "type": "FEATURE_PIPE", - "link": 297 - } - ], - "outputs": [ - { - "name": "FEATURE", - "type": "FEATURE", - "links": [ - 366, - 490 - ], - "slot_index": 0, - "shape": 3 - }, - { - "name": "FEATURE_PIPE", - "type": "FEATURE_PIPE", - "links": [ - 367 - ], - "slot_index": 1, - "shape": 3 - } - ], - "properties": { - "Node name for S&R": "AudioFeatureExtractor" - }, - "widgets_values": [ - "amplitude_envelope" - ] - }, - { - "id": 233, - "type": "PreviewFeature", - "pos": { - "0": 2175, - "1": -134 - }, - "size": { - "0": 415.8000183105469, - "1": 58 - }, - "flags": {}, - "order": 27, - "mode": 0, - "inputs": [ - { - "name": "feature", - "type": "FEATURE", - "link": 490 - } - ], - "outputs": [ - { - "name": "FEATURE_PREVIEW", - "type": "IMAGE", - "links": [ - 491 - ], - "slot_index": 0, - "shape": 3 - } - ], - "properties": { - "Node name for S&R": "PreviewFeature" - }, - "widgets_values": [ - false - ] - }, - { - "id": 234, - "type": "PreviewImage", - "pos": { - "0": 3022.890380859375, - "1": -176.58802795410156 - }, - "size": { - "0": 210, - "1": 246 - }, - "flags": {}, - "order": 37, - "mode": 0, - "inputs": [ - { - "name": "images", - "type": "IMAGE", - "link": 491 - } - ], - "outputs": [], - "properties": { - "Node name for S&R": "PreviewImage" - }, - "widgets_values": [] - }, - { - "id": 162, - "type": "PreviewImage", - "pos": { - "0": 2277, - "1": 60 - }, - "size": { - "0": 210, - "1": 246 - }, - "flags": {}, - "order": 36, - "mode": 0, - "inputs": [ - { - "name": "images", - "type": "IMAGE", - "link": 365 - } - ], - "outputs": [], - "properties": { - "Node name for S&R": "PreviewImage" - }, - "widgets_values": [] - }, - { - "id": 108, - "type": "VHS_VideoCombine", - "pos": { - "0": 2598, - "1": -1059 - }, - "size": [ - 214.7587890625, - 670.2378472222222 - ], - "flags": {}, - "order": 48, - "mode": 0, - "inputs": [ - { - "name": "images", - "type": "IMAGE", - "link": 316 - }, - { - "name": "audio", - "type": "*", - "link": 493 - }, - { - "name": "meta_batch", - "type": "VHS_BatchManager", - "link": null - }, - { - "name": "vae", - "type": "VAE", - "link": null - } - ], - "outputs": [ - { - "name": "Filenames", - "type": "VHS_FILENAMES", - "links": null, - "shape": 3 - } - ], - "properties": { - "Node name for S&R": "VHS_VideoCombine" - }, - "widgets_values": { - "frame_rate": 30, - "loop_count": 0, - "filename_prefix": "AnimateDiff", - "format": "video/h264-mp4", - "pix_fmt": "yuv420p", - "crf": 19, - "save_metadata": true, - "pingpong": false, - "save_output": true, - "videopreview": { - "hidden": false, - "paused": false, - "params": { - "filename": "AnimateDiff_00219-audio.mp4", - "subfolder": "", - "type": "output", - "format": "video/h264-mp4", - "frame_rate": 30 - }, - "muted": false - } - } - }, - { - "id": 238, - "type": "Reroute", - "pos": { - "0": 2541.888916015625, - "1": -1148.8082275390625 - }, - "size": [ - 75, - 26 - ], - "flags": {}, - "order": 21, - "mode": 0, - "inputs": [ - { - "name": "", - "type": "*", - "link": 492 - } - ], - "outputs": [ - { - "name": "", - "type": "AUDIO", - "links": [ - 493, - 494 - ], - "slot_index": 0 - } - ], - "properties": { - "showOutputText": false, - "horizontal": false - } - }, - { - "id": 159, - "type": "VHS_VideoCombine", - "pos": { - "0": 2610, - "1": -7 - }, - "size": [ - 214.7587890625, - 670.2378472222222 - ], - "flags": {}, - "order": 46, - "mode": 0, - "inputs": [ - { - "name": "images", - "type": "IMAGE", - "link": 359 - }, - { - "name": "audio", - "type": "*", - "link": 496 - }, - { - "name": "meta_batch", - "type": "VHS_BatchManager", - "link": null - }, - { - "name": "vae", - "type": "VAE", - "link": null - } - ], - "outputs": [ - { - "name": "Filenames", - "type": "VHS_FILENAMES", - "links": null, - "shape": 3 - } - ], - "properties": { - "Node name for S&R": "VHS_VideoCombine" - }, - "widgets_values": { - "frame_rate": 30, - "loop_count": 0, - "filename_prefix": "AnimateDiff", - "format": "video/h264-mp4", - "pix_fmt": "yuv420p", - "crf": 19, - "save_metadata": true, - "pingpong": false, - "save_output": true, - "videopreview": { - "hidden": false, - "paused": false, - "params": { - "filename": "AnimateDiff_00221-audio.mp4", - "subfolder": "", - "type": "output", - "format": "video/h264-mp4", - "frame_rate": 30 - }, - "muted": false - } - } - }, - { - "id": 239, - "type": "Reroute", - "pos": { - "0": 2451.01806640625, - "1": -21.460708618164062 - }, - "size": [ - 75, - 26 - ], - "flags": {}, - "order": 14, - "mode": 0, - "inputs": [ - { - "name": "", - "type": "*", - "link": 495 - } - ], - "outputs": [ - { - "name": "", - "type": "AUDIO", - "links": [ - 496, - 497 - ], - "slot_index": 0 - } - ], - "properties": { - "showOutputText": false, - "horizontal": false - } - }, - { - "id": 166, - "type": "PreviewImage", - "pos": { - "0": 2363, - "1": 1046 - }, - "size": { - "0": 210, - "1": 246 - }, - "flags": {}, - "order": 43, - "mode": 0, - "inputs": [ - { - "name": "images", - "type": "IMAGE", - "link": 371 - } - ], - "outputs": [], - "properties": { - "Node name for S&R": "PreviewImage" - }, - "widgets_values": [] - }, - { - "id": 163, - "type": "VHS_VideoCombine", - "pos": { - "0": 2682.668701171875, - "1": 897.24755859375 - }, - "size": [ - 214.7587890625, - 670.2378472222222 - ], - "flags": {}, - "order": 50, - "mode": 0, - "inputs": [ - { - "name": "images", - "type": "IMAGE", - "link": 369 - }, - { - "name": "audio", - "type": "AUDIO", - "link": 499 - }, - { - "name": "meta_batch", - "type": "VHS_BatchManager", - "link": null - }, - { - "name": "vae", - "type": "VAE", - "link": null - } - ], - "outputs": [ - { - "name": "Filenames", - "type": "VHS_FILENAMES", - "links": null, - "shape": 3 - } - ], - "properties": { - "Node name for S&R": "VHS_VideoCombine" - }, - "widgets_values": { - "frame_rate": 30, - "loop_count": 0, - "filename_prefix": "AnimateDiff", - "format": "video/h264-mp4", - "pix_fmt": "yuv420p", - "crf": 19, - "save_metadata": true, - "pingpong": false, - "save_output": true, - "videopreview": { - "hidden": false, - "paused": false, - "params": { - "filename": "AnimateDiff_00224-audio.mp4", - "subfolder": "", - "type": "output", - "format": "video/h264-mp4", - "frame_rate": 30 - }, - "muted": false - } - } - }, - { - "id": 240, - "type": "Reroute", - "pos": { - "0": 2513.22705078125, - "1": 919.3145751953125 - }, - "size": [ - 75, - 26 - ], - "flags": {}, - "order": 23, - "mode": 0, - "inputs": [ - { - "name": "", - "type": "*", - "link": 498 - } - ], - "outputs": [ - { - "name": "", - "type": "AUDIO", - "links": [ - 499, - 500 - ], - "slot_index": 0 - } - ], - "properties": { - "showOutputText": false, - "horizontal": false - } - }, - { - "id": 199, - "type": "PreviewImage", - "pos": { - "0": 2362, - "1": 1912 - }, - "size": { - "0": 210, - "1": 246 - }, - "flags": {}, - "order": 45, - "mode": 0, - "inputs": [ - { - "name": "images", - "type": "IMAGE", - "link": 451 - } - ], - "outputs": [], - "properties": { - "Node name for S&R": "PreviewImage" - }, - "widgets_values": [] - }, - { - "id": 196, - "type": "VHS_VideoCombine", - "pos": { - "0": 2710, - "1": 1790 - }, - "size": [ - 214.7587890625, - 670.2378472222222 - ], - "flags": {}, - "order": 52, - "mode": 0, - "inputs": [ - { - "name": "images", - "type": "IMAGE", - "link": 446 - }, - { - "name": "audio", - "type": "AUDIO", - "link": 502 - }, - { - "name": "meta_batch", - "type": "VHS_BatchManager", - "link": null - }, - { - "name": "vae", - "type": "VAE", - "link": null - } - ], - "outputs": [ - { - "name": "Filenames", - "type": "VHS_FILENAMES", - "links": null, - "shape": 3 - } - ], - "properties": { - "Node name for S&R": "VHS_VideoCombine" - }, - "widgets_values": { - "frame_rate": 30, - "loop_count": 0, - "filename_prefix": "AnimateDiff", - "format": "video/h264-mp4", - "pix_fmt": "yuv420p", - "crf": 19, - "save_metadata": true, - "pingpong": false, - "save_output": true, - "videopreview": { - "hidden": false, - "paused": false, - "params": { - "filename": "AnimateDiff_00222-audio.mp4", - "subfolder": "", - "type": "output", - "format": "video/h264-mp4", - "frame_rate": 30 - }, - "muted": false - } - } - }, - { - "id": 241, - "type": "Reroute", - "pos": { - "0": 2527.7314453125, - "1": 1820.163818359375 - }, - "size": [ - 75, - 26 - ], - "flags": {}, - "order": 25, - "mode": 0, - "inputs": [ - { - "name": "", - "type": "*", - "link": 501 - } - ], - "outputs": [ - { - "name": "", - "type": "AUDIO", - "links": [ - 502, - 503 - ], - "slot_index": 0 - } - ], - "properties": { - "showOutputText": false, - "horizontal": false - } - }, - { - "id": 220, - "type": "Note", - "pos": { - "0": -467.3756408691406, - "1": 2279.470458984375 - }, - "size": { - "0": 269.4545593261719, - "1": 75.10535430908203 - }, - "flags": {}, - "order": 5, - "mode": 0, - "inputs": [], - "outputs": [], - "properties": {}, - "widgets_values": [ - "you can do a lot with FeatureMod nodes, too" - ], - "color": "#432", - "bgcolor": "#653" - }, - { - "id": 224, - "type": "FlexVideoDirection", - "pos": { - "0": 199, - "1": 2400 - }, - "size": { - "0": 466.279296875, - "1": 170 - }, - "flags": {}, - "order": 29, - "mode": 0, - "inputs": [ - { - "name": "images", - "type": "IMAGE", - "link": 483 - }, - { - "name": "feature", - "type": "FEATURE", - "link": 505 - }, - { - "name": "feature_pipe", - "type": "FEATURE_PIPE", - "link": 485 - } - ], - "outputs": [ - { - "name": "IMAGE", - "type": "IMAGE", - "links": [ - 487 - ], - "slot_index": 0, - "shape": 3 - } - ], - "properties": { - "Node name for S&R": "FlexVideoDirection" - }, - "widgets_values": [ - 0.99, - "absolute", - "direction", - 0 - ] - }, - { - "id": 209, - "type": "PreviewImage", - "pos": { - "0": 329, - "1": 1541 - }, - "size": { - "0": 210, - "1": 246 - }, - "flags": {}, - "order": 28, - "mode": 0, - "inputs": [ - { - "name": "images", - "type": "IMAGE", - "link": 467 - } - ], - "outputs": [], - "properties": { - "Node name for S&R": "PreviewImage" - }, - "widgets_values": [] - }, - { - "id": 206, - "type": "TimeFeatureNode", - "pos": { - "0": -690, - "1": 1683 - }, - "size": { - "0": 378, - "1": 150 - }, - "flags": {}, - "order": 10, - "mode": 0, - "inputs": [ - { - "name": "video_frames", - "type": "IMAGE", - "link": 465 - } - ], - "outputs": [ - { - "name": "FEATURE", - "type": "FEATURE", - "links": [ - 466, - 469, - 473, - 504 - ], - "slot_index": 0, - "shape": 3 - }, - { - "name": "FEATURE_PIPE", - "type": "FEATURE_PIPE", - "links": [ - 479, - 485 - ], - "slot_index": 1, - "shape": 3 - } - ], - "properties": { - "Node name for S&R": "TimeFeatureNode" - }, - "widgets_values": [ - "pulse", - 30, - 0.30000000000000004, - 0 - ] - }, - { - "id": 242, - "type": "FeatureOscillator", - "pos": { - "0": -624, - "1": 2510 - }, - "size": { - "0": 491.4000244140625, - "1": 198 - }, - "flags": {}, - "order": 18, - "mode": 0, - "inputs": [ - { - "name": "feature", - "type": "FEATURE", - "link": 504 - } - ], - "outputs": [ - { - "name": "FEATURE", - "type": "FEATURE", - "links": [ - 505 - ], - "shape": 3 - }, - { - "name": "FEATURE_VISUALIZATION", - "type": "IMAGE", - "links": [ - 506 - ], - "shape": 3 - } - ], - "properties": { - "Node name for S&R": "FeatureOscillator" - }, - "widgets_values": [ - "sine", - 1, - 0.5, - 0, - 0.5, - false - ] - }, - { - "id": 121, - "type": "AudioFeatureExtractor", - "pos": { - "0": 1642, - "1": -841 - }, - "size": { - "0": 541.800048828125, - "1": 78 - }, - "flags": {}, - "order": 20, - "mode": 0, - "inputs": [ - { - "name": "audio", - "type": "AUDIO", - "link": 256 - }, - { - "name": "feature_pipe", - "type": "FEATURE_PIPE", - "link": 394 - } - ], - "outputs": [ - { - "name": "FEATURE", - "type": "FEATURE", - "links": [ - 351 - ], - "slot_index": 0, - "shape": 3 - }, - { - "name": "FEATURE_PIPE", - "type": "FEATURE_PIPE", - "links": [ - 327 - ], - "slot_index": 1, - "shape": 3 - } - ], - "properties": { - "Node name for S&R": "AudioFeatureExtractor" - }, - "widgets_values": [ - "amplitude_envelope" - ] - }, - { - "id": 142, - "type": "FlexVideoDirection", - "pos": { - "0": 1654, - "1": -435 - }, - "size": { - "0": 466.279296875, - "1": 170 - }, - "flags": {}, - "order": 40, - "mode": 0, - "inputs": [ - { - "name": "images", - "type": "IMAGE", - "link": 389 - }, - { - "name": "feature", - "type": "FEATURE", - "link": 357 - }, - { - "name": "feature_pipe", - "type": "FEATURE_PIPE", - "link": 327 - } - ], - "outputs": [ - { - "name": "IMAGE", - "type": "IMAGE", - "links": [ - 316, - 396 - ], - "slot_index": 0, - "shape": 3 - } - ], - "properties": { - "Node name for S&R": "FlexVideoDirection" - }, - "widgets_values": [ - 0.99, - "relative", - "direction", - 0 - ] - }, - { - "id": 167, - "type": "AudioFeatureExtractor", - "pos": { - "0": 2050, - "1": 860 - }, - "size": { - "0": 541.800048828125, - "1": 78 - }, - "flags": {}, - "order": 22, - "mode": 0, - "inputs": [ - { - "name": "audio", - "type": "AUDIO", - "link": 443 - }, - { - "name": "feature_pipe", - "type": "FEATURE_PIPE", - "link": 445 - } - ], - "outputs": [ - { - "name": "FEATURE", - "type": "FEATURE", - "links": [ - 374 - ], - "slot_index": 0, - "shape": 3 - }, - { - "name": "FEATURE_PIPE", - "type": "FEATURE_PIPE", - "links": [ - 375 - ], - "slot_index": 1, - "shape": 3 - } - ], - "properties": { - "Node name for S&R": "AudioFeatureExtractor" - }, - "widgets_values": [ - "amplitude_envelope" - ] - }, - { - "id": 160, - "type": "FlexVideoDirection", - "pos": { - "0": 1722, - "1": 432 - }, - "size": { - "0": 466.279296875, - "1": 170 - }, - "flags": {}, - "order": 35, - "mode": 0, - "inputs": [ - { - "name": "images", - "type": "IMAGE", - "link": 388 - }, - { - "name": "feature", - "type": "FEATURE", - "link": 362 - }, - { - "name": "feature_pipe", - "type": "FEATURE_PIPE", - "link": 367 - } - ], - "outputs": [ - { - "name": "IMAGE", - "type": "IMAGE", - "links": [ - 359, - 426 - ], - "slot_index": 0, - "shape": 3 - } - ], - "properties": { - "Node name for S&R": "FlexVideoDirection" - }, - "widgets_values": [ - 0.99, - "relative", - "direction", - 0 - ] - }, - { - "id": 190, - "type": "VHS_VideoCombine", - "pos": { - "0": 10165, - "1": 828 - }, - "size": [ - 214.7587890625, - 410.55946180555554 - ], - "flags": {}, - "order": 67, - "mode": 4, - "inputs": [ - { - "name": "images", - "type": "IMAGE", - "link": 431 - }, - { - "name": "audio", - "type": "AUDIO", - "link": 433 - }, - { - "name": "meta_batch", - "type": "VHS_BatchManager", - "link": null - }, - { - "name": "vae", - "type": "VAE", - "link": null - } - ], - "outputs": [ - { - "name": "Filenames", - "type": "VHS_FILENAMES", - "links": null, - "shape": 3 - } - ], - "properties": { - "Node name for S&R": "VHS_VideoCombine" - }, - "widgets_values": { - "frame_rate": 30, - "loop_count": 0, - "filename_prefix": "AnimateDiff", - "format": "video/h264-mp4", - "pix_fmt": "yuv420p", - "crf": 19, - "save_metadata": true, - "pingpong": false, - "save_output": true, - "videopreview": { - "hidden": false, - "paused": false, - "params": { - "filename": "AnimateDiff_00200-audio.mp4", - "subfolder": "", - "type": "output", - "format": "video/h264-mp4", - "frame_rate": 30 - }, - "muted": false - } - } - } - ], - "links": [ - [ - 250, - 117, - 0, - 115, - 0, - "OPEN_UNMIX_MODEL" - ], - [ - 252, - 115, - 1, - 119, - 0, - "AUDIO" - ], - [ - 253, - 120, - 0, - 119, - 1, - "FREQUENCY_FILTER" - ], - [ - 256, - 119, - 0, - 121, - 0, - "AUDIO" - ], - [ - 296, - 115, - 3, - 138, - 0, - "AUDIO" - ], - [ - 297, - 115, - 5, - 138, - 1, - "FEATURE_PIPE" - ], - [ - 316, - 142, - 0, - 108, - 0, - "IMAGE" - ], - [ - 327, - 121, - 1, - 142, - 2, - "FEATURE_PIPE" - ], - [ - 351, - 121, - 0, - 153, - 0, - "FEATURE" - ], - [ - 357, - 153, - 0, - 142, - 1, - "FEATURE" - ], - [ - 358, - 153, - 1, - 157, - 0, - "IMAGE" - ], - [ - 359, - 160, - 0, - 159, - 0, - "IMAGE" - ], - [ - 362, - 161, - 0, - 160, - 1, - "FEATURE" - ], - [ - 365, - 161, - 1, - 162, - 0, - "IMAGE" - ], - [ - 366, - 138, - 0, - 161, - 0, - "FEATURE" - ], - [ - 367, - 138, - 1, - 160, - 2, - "FEATURE_PIPE" - ], - [ - 369, - 164, - 0, - 163, - 0, - "IMAGE" - ], - [ - 370, - 165, - 0, - 164, - 1, - "FEATURE" - ], - [ - 371, - 165, - 1, - 166, - 0, - "IMAGE" - ], - [ - 374, - 167, - 0, - 165, - 0, - "FEATURE" - ], - [ - 375, - 167, - 1, - 164, - 2, - "FEATURE_PIPE" - ], - [ - 386, - 106, - 0, - 172, - 0, - "*" - ], - [ - 388, - 172, - 0, - 160, - 0, - "IMAGE" - ], - [ - 389, - 172, - 0, - 142, - 0, - "IMAGE" - ], - [ - 391, - 172, - 0, - 164, - 0, - "IMAGE" - ], - [ - 394, - 115, - 5, - 121, - 1, - "FEATURE_PIPE" - ], - [ - 396, - 142, - 0, - 175, - 0, - "IMAGE" - ], - [ - 397, - 175, - 1, - 177, - 0, - "INT" - ], - [ - 398, - 175, - 2, - 177, - 1, - "INT" - ], - [ - 399, - 175, - 3, - 177, - 2, - "INT" - ], - [ - 404, - 177, - 0, - 179, - 2, - "MASK" - ], - [ - 405, - 179, - 0, - 180, - 0, - "IMAGE" - ], - [ - 409, - 175, - 0, - 179, - 0, - "IMAGE" - ], - [ - 411, - 177, - 1, - 179, - 1, - "IMAGE" - ], - [ - 412, - 181, - 1, - 182, - 0, - "INT" - ], - [ - 413, - 181, - 2, - 182, - 1, - "INT" - ], - [ - 414, - 181, - 3, - 182, - 2, - "INT" - ], - [ - 415, - 181, - 0, - 183, - 0, - "IMAGE" - ], - [ - 416, - 182, - 1, - 183, - 1, - "IMAGE" - ], - [ - 417, - 182, - 0, - 183, - 2, - "MASK" - ], - [ - 418, - 183, - 0, - 184, - 0, - "IMAGE" - ], - [ - 419, - 185, - 1, - 186, - 0, - "INT" - ], - [ - 420, - 185, - 2, - 186, - 1, - "INT" - ], - [ - 421, - 185, - 3, - 186, - 2, - "INT" - ], - [ - 422, - 185, - 0, - 187, - 0, - "IMAGE" - ], - [ - 423, - 186, - 1, - 187, - 1, - "IMAGE" - ], - [ - 424, - 186, - 0, - 187, - 2, - "MASK" - ], - [ - 425, - 187, - 0, - 188, - 0, - "IMAGE" - ], - [ - 426, - 160, - 0, - 181, - 0, - "IMAGE" - ], - [ - 427, - 164, - 0, - 185, - 0, - "IMAGE" - ], - [ - 428, - 179, - 0, - 189, - 0, - "IMAGE" - ], - [ - 429, - 183, - 0, - 189, - 1, - "IMAGE" - ], - [ - 430, - 187, - 0, - 189, - 2, - "IMAGE" - ], - [ - 431, - 189, - 0, - 190, - 0, - "IMAGE" - ], - [ - 432, - 115, - 0, - 191, - 0, - "*" - ], - [ - 433, - 191, - 0, - 190, - 1, - "AUDIO" - ], - [ - 434, - 192, - 0, - 193, - 0, - "AUDIO" - ], - [ - 437, - 192, - 0, - 194, - 0, - "AUDIO" - ], - [ - 438, - 192, - 0, - 115, - 1, - "AUDIO" - ], - [ - 439, - 193, - 0, - 115, - 2, - "IMAGE" - ], - [ - 442, - 115, - 2, - 195, - 0, - "*" - ], - [ - 443, - 195, - 0, - 167, - 0, - "AUDIO" - ], - [ - 445, - 115, - 5, - 167, - 1, - "FEATURE_PIPE" - ], - [ - 446, - 197, - 0, - 196, - 0, - "IMAGE" - ], - [ - 448, - 198, - 0, - 197, - 1, - "FEATURE" - ], - [ - 449, - 200, - 1, - 197, - 2, - "FEATURE_PIPE" - ], - [ - 450, - 200, - 0, - 198, - 0, - "FEATURE" - ], - [ - 451, - 198, - 1, - 199, - 0, - "IMAGE" - ], - [ - 452, - 201, - 0, - 200, - 0, - "AUDIO" - ], - [ - 453, - 172, - 0, - 197, - 0, - "IMAGE" - ], - [ - 454, - 115, - 4, - 201, - 0, - "*" - ], - [ - 455, - 115, - 5, - 200, - 1, - "FEATURE_PIPE" - ], - [ - 456, - 202, - 1, - 203, - 0, - "INT" - ], - [ - 457, - 202, - 2, - 203, - 1, - "INT" - ], - [ - 458, - 202, - 3, - 203, - 2, - "INT" - ], - [ - 459, - 202, - 0, - 204, - 0, - "IMAGE" - ], - [ - 460, - 203, - 1, - 204, - 1, - "IMAGE" - ], - [ - 461, - 203, - 0, - 204, - 2, - "MASK" - ], - [ - 462, - 204, - 0, - 205, - 0, - "IMAGE" - ], - [ - 463, - 204, - 0, - 189, - 3, - "IMAGE" - ], - [ - 464, - 197, - 0, - 202, - 0, - "IMAGE" - ], - [ - 465, - 193, - 0, - 206, - 0, - "IMAGE" - ], - [ - 466, - 206, - 0, - 208, - 0, - "FEATURE" - ], - [ - 467, - 208, - 0, - 209, - 0, - "IMAGE" - ], - [ - 469, - 206, - 0, - 210, - 1, - "FEATURE" - ], - [ - 470, - 106, - 0, - 210, - 0, - "IMAGE" - ], - [ - 472, - 210, - 0, - 213, - 0, - "IMAGE" - ], - [ - 473, - 206, - 0, - 213, - 1, - "FEATURE" - ], - [ - 474, - 213, - 0, - 211, - 0, - "IMAGE" - ], - [ - 479, - 206, - 1, - 210, - 2, - "FEATURE_PIPE" - ], - [ - 483, - 106, - 0, - 224, - 0, - "IMAGE" - ], - [ - 485, - 206, - 1, - 224, - 2, - "FEATURE_PIPE" - ], - [ - 487, - 224, - 0, - 225, - 0, - "IMAGE" - ], - [ - 490, - 138, - 0, - 233, - 0, - "FEATURE" - ], - [ - 491, - 233, - 0, - 234, - 0, - "IMAGE" - ], - [ - 492, - 119, - 0, - 238, - 0, - "*" - ], - [ - 493, - 238, - 0, - 108, - 1, - "AUDIO" - ], - [ - 494, - 238, - 0, - 180, - 1, - "AUDIO" - ], - [ - 495, - 115, - 3, - 239, - 0, - "*" - ], - [ - 496, - 239, - 0, - 159, - 1, - "AUDIO" - ], - [ - 497, - 239, - 0, - 184, - 1, - "AUDIO" - ], - [ - 498, - 195, - 0, - 240, - 0, - "*" - ], - [ - 499, - 240, - 0, - 163, - 1, - "*" - ], - [ - 500, - 240, - 0, - 188, - 1, - "AUDIO" - ], - [ - 501, - 201, - 0, - 241, - 0, - "*" - ], - [ - 502, - 241, - 0, - 196, - 1, - "*" - ], - [ - 503, - 241, - 0, - 205, - 1, - "AUDIO" - ], - [ - 504, - 206, - 0, - 242, - 0, - "FEATURE" - ], - [ - 505, - 242, - 0, - 224, - 1, - "FEATURE" - ], - [ - 506, - 242, - 1, - 221, - 0, - "IMAGE" - ] - ], - "groups": [ - { - "title": "Time", - "bounding": [ - -819, - 1452, - 1924, - 1726 - ], - "color": "#3f789e", - "font_size": 24, - "flags": {} - }, - { - "title": "Other", - "bounding": [ - 1678, - 1737, - 1388, - 644 - ], - "color": "#3f789e", - "font_size": 24, - "flags": {} - }, - { - "title": "Bass", - "bounding": [ - 1625, - -193, - 1295, - 901 - ], - "color": "#3f789e", - "font_size": 24, - "flags": {} - }, - { - "title": "Vocals", - "bounding": [ - 1652, - 776, - 1367, - 831 - ], - "color": "#3f789e", - "font_size": 24, - "flags": {} - }, - { - "title": "Audio Separation", - "bounding": [ - -739, - -168, - 1831, - 1481 - ], - "color": "#3f789e", - "font_size": 24, - "flags": {} - }, - { - "title": "Drums", - "bounding": [ - 1598, - -1218, - 1317, - 941 - ], - "color": "#3f789e", - "font_size": 24, - "flags": {} - }, - { - "title": "Text Overlay\\", - "bounding": [ - 7810, - -1086, - 3484, - 4046 - ], - "color": "#3f789e", - "font_size": 24, - "flags": {} - } - ], - "config": {}, - "extra": { - "ds": { - "scale": 0.12100000000000158, - "offset": [ - 2650.1600993659995, - 2837.7087895071204 - ] - } - }, - "version": 0.4 -} \ No newline at end of file diff --git a/examples/playhead_tutorialVERSION2.json b/examples/playhead_tutorialVERSION2.json new file mode 100644 index 0000000..023879c --- /dev/null +++ b/examples/playhead_tutorialVERSION2.json @@ -0,0 +1,2650 @@ +{ + "last_node_id": 264, + "last_link_id": 580, + "nodes": [ + { + "id": 195, + "type": "Reroute", + "pos": [ + 1644, + 900 + ], + "size": [ + 75, + 26 + ], + "flags": {}, + "order": 16, + "mode": 0, + "inputs": [ + { + "name": "", + "type": "*", + "link": 515 + } + ], + "outputs": [ + { + "name": "", + "type": "AUDIO", + "links": [ + 498, + 545 + ], + "slot_index": 0 + } + ], + "properties": { + "showOutputText": false, + "horizontal": false + } + }, + { + "id": 201, + "type": "Reroute", + "pos": [ + 1670, + 1800 + ], + "size": [ + 75, + 26 + ], + "flags": {}, + "order": 19, + "mode": 0, + "inputs": [ + { + "name": "", + "type": "*", + "link": 518 + } + ], + "outputs": [ + { + "name": "", + "type": "AUDIO", + "links": [ + 501, + 531 + ] + } + ], + "properties": { + "showOutputText": false, + "horizontal": false + } + }, + { + "id": 172, + "type": "Reroute", + "pos": [ + 952.9832763671875, + 422.727294921875 + ], + "size": [ + 75, + 26 + ], + "flags": {}, + "order": 7, + "mode": 0, + "inputs": [ + { + "name": "", + "type": "*", + "link": 386 + } + ], + "outputs": [ + { + "name": "", + "type": "IMAGE", + "links": [ + 535, + 539, + 547, + 556 + ], + "slot_index": 0 + } + ], + "properties": { + "showOutputText": false, + "horizontal": false + } + }, + { + "id": 225, + "type": "VHS_VideoCombine", + "pos": [ + 738.624267578125, + 2394.470458984375 + ], + "size": [ + 214.7587890625, + 691.6919555664062 + ], + "flags": {}, + "order": 31, + "mode": 0, + "inputs": [ + { + "name": "images", + "type": "IMAGE", + "link": 575 + }, + { + "name": "audio", + "type": "AUDIO", + "link": null, + "shape": 7 + }, + { + "name": "meta_batch", + "type": "VHS_BatchManager", + "link": null, + "shape": 7 + }, + { + "name": "vae", + "type": "VAE", + "link": null, + "shape": 7 + } + ], + "outputs": [ + { + "name": "Filenames", + "type": "VHS_FILENAMES", + "links": null, + "shape": 3 + } + ], + "properties": { + "Node name for S&R": "VHS_VideoCombine" + }, + "widgets_values": { + "frame_rate": 30, + "loop_count": 0, + "filename_prefix": "AnimateDiff", + "format": "video/h264-mp4", + "pix_fmt": "yuv420p", + "crf": 19, + "save_metadata": true, + "trim_to_audio": false, + "pingpong": false, + "save_output": true, + "videopreview": { + "hidden": false, + "paused": false, + "params": { + "filename": "AnimateDiff_00218.mp4", + "subfolder": "", + "type": "output", + "format": "video/h264-mp4", + "frame_rate": 30 + }, + "muted": false + } + } + }, + { + "id": 211, + "type": "VHS_VideoCombine", + "pos": [ + 591.624267578125, + 1546.4697265625 + ], + "size": [ + 214.7587890625, + 694.2378540039062 + ], + "flags": {}, + "order": 32, + "mode": 0, + "inputs": [ + { + "name": "images", + "type": "IMAGE", + "link": 474 + }, + { + "name": "audio", + "type": "AUDIO", + "link": null, + "shape": 7 + }, + { + "name": "meta_batch", + "type": "VHS_BatchManager", + "link": null, + "shape": 7 + }, + { + "name": "vae", + "type": "VAE", + "link": null, + "shape": 7 + } + ], + "outputs": [ + { + "name": "Filenames", + "type": "VHS_FILENAMES", + "links": null, + "shape": 3 + } + ], + "properties": { + "Node name for S&R": "VHS_VideoCombine" + }, + "widgets_values": { + "frame_rate": 30, + "loop_count": 0, + "filename_prefix": "AnimateDiff", + "format": "video/h264-mp4", + "pix_fmt": "yuv420p", + "crf": 19, + "save_metadata": true, + "trim_to_audio": false, + "pingpong": false, + "save_output": true, + "videopreview": { + "hidden": false, + "paused": false, + "params": { + "filename": "AnimateDiff_02418.mp4", + "subfolder": "", + "type": "output", + "format": "video/h264-mp4", + "frame_rate": 30, + "workflow": "AnimateDiff_02418.png", + "fullpath": "/runpod-volume/ComfyUI_rv/output/AnimateDiff_02418.mp4" + }, + "muted": false + } + } + }, + { + "id": 207, + "type": "Note", + "pos": [ + 173.1876983642578, + 473.1287841796875 + ], + "size": [ + 689.7115478515625, + 270.1275634765625 + ], + "flags": {}, + "order": 0, + "mode": 0, + "inputs": [], + "outputs": [], + "properties": {}, + "widgets_values": [ + "THANK YOU for checking this out!!! I developed these nodes as well as this workflow.\n\nIf you think this is cool please consider a sub to my youtube and a star to the repo :)\n\nhttps://github.com/ryanontheinside/ComfyUI_RyanOnTheInside\nhttps://www.youtube.com/@ryanontheinside\n\nLove, \nRyan\n\nPS\n\nAudio is just one powerful example\n\nBut ANY FLEX FEATURE CAN CONTROL THIS EFFECT. Including proximity, motion, depth, MIDI, color, brightness........etc\n\nSee Time example below, and flex features tutorial for more info https://youtu.be/fobd9mEzkBU\n\n" + ], + "color": "#432", + "bgcolor": "#653" + }, + { + "id": 194, + "type": "PreviewAudio", + "pos": [ + -255.94879150390625, + -81.42230224609375 + ], + "size": [ + 315, + 76 + ], + "flags": {}, + "order": 9, + "mode": 0, + "inputs": [ + { + "name": "audio", + "type": "AUDIO", + "link": 437 + } + ], + "outputs": [], + "properties": { + "Node name for S&R": "PreviewAudio" + }, + "widgets_values": [ + null + ] + }, + { + "id": 117, + "type": "DownloadOpenUnmixModel", + "pos": [ + -250, + 93 + ], + "size": [ + 541.800048828125, + 58 + ], + "flags": {}, + "order": 1, + "mode": 0, + "inputs": [], + "outputs": [ + { + "name": "OPEN_UNMIX_MODEL", + "type": "OPEN_UNMIX_MODEL", + "links": [ + 511 + ], + "shape": 3 + } + ], + "properties": { + "Node name for S&R": "DownloadOpenUnmixModel" + }, + "widgets_values": [ + "umxl" + ] + }, + { + "id": 106, + "type": "VHS_LoadVideo", + "pos": [ + -690, + 593 + ], + "size": [ + 247.455078125, + 262 + ], + "flags": {}, + "order": 2, + "mode": 0, + "inputs": [ + { + "name": "meta_batch", + "type": "VHS_BatchManager", + "link": null, + "shape": 7 + }, + { + "name": "vae", + "type": "VAE", + "link": null, + "shape": 7 + } + ], + "outputs": [ + { + "name": "IMAGE", + "type": "IMAGE", + "links": [ + 386, + 527, + 573 + ], + "slot_index": 0, + "shape": 3 + }, + { + "name": "frame_count", + "type": "INT", + "links": null, + "shape": 3 + }, + { + "name": "audio", + "type": "AUDIO", + "links": null, + "shape": 3 + }, + { + "name": "video_info", + "type": "VHS_VIDEOINFO", + "links": [], + "slot_index": 3, + "shape": 3 + } + ], + "properties": { + "Node name for S&R": "VHS_LoadVideo" + }, + "widgets_values": { + "video": "flower_timelapse.mp4", + "force_rate": 0, + "force_size": "Disabled", + "custom_width": 512, + "custom_height": 512, + "frame_load_cap": 36, + "skip_first_frames": 0, + "select_every_nth": 1, + "choose video to upload": "image", + "videopreview": { + "hidden": false, + "paused": false, + "params": { + "frame_load_cap": 36, + "skip_first_frames": 0, + "force_rate": 0, + "filename": "flower_timelapse.mp4", + "type": "input", + "format": "video/mp4", + "select_every_nth": 1 + }, + "muted": false + } + } + }, + { + "id": 120, + "type": "FrequencyFilterPreset", + "pos": [ + 1598, + -1066 + ], + "size": [ + 516.5999755859375, + 58 + ], + "flags": {}, + "order": 3, + "mode": 0, + "inputs": [ + { + "name": "previous_filter", + "type": "FREQUENCY_FILTER", + "link": null, + "shape": 7 + } + ], + "outputs": [ + { + "name": "FREQUENCY_FILTER", + "type": "FREQUENCY_FILTER", + "links": [ + 253 + ], + "shape": 3 + } + ], + "properties": { + "Node name for S&R": "FrequencyFilterPreset" + }, + "widgets_values": [ + "isolate_kick_drum" + ] + }, + { + "id": 119, + "type": "AudioFilter", + "pos": [ + 1625, + -948 + ], + "size": [ + 378, + 46 + ], + "flags": {}, + "order": 15, + "mode": 0, + "inputs": [ + { + "name": "audio", + "type": "AUDIO", + "link": 514 + }, + { + "name": "filters", + "type": "FREQUENCY_FILTER", + "link": 253 + } + ], + "outputs": [ + { + "name": "AUDIO", + "type": "AUDIO", + "links": [ + 492, + 562 + ], + "slot_index": 0, + "shape": 3 + } + ], + "properties": { + "Node name for S&R": "AudioFilter" + }, + "widgets_values": [] + }, + { + "id": 233, + "type": "PreviewFeature", + "pos": [ + 2175, + -134 + ], + "size": [ + 415.8000183105469, + 246 + ], + "flags": {}, + "order": 27, + "mode": 0, + "inputs": [ + { + "name": "feature", + "type": "FEATURE", + "link": 554 + } + ], + "outputs": [ + { + "name": "FEATURE_PREVIEW", + "type": "IMAGE", + "links": [], + "slot_index": 0, + "shape": 3 + } + ], + "properties": { + "Node name for S&R": "PreviewFeature" + }, + "widgets_values": [] + }, + { + "id": 108, + "type": "VHS_VideoCombine", + "pos": [ + 2598, + -1059 + ], + "size": [ + 214.7587890625, + 694.2378540039062 + ], + "flags": {}, + "order": 41, + "mode": 0, + "inputs": [ + { + "name": "images", + "type": "IMAGE", + "link": 558 + }, + { + "name": "audio", + "type": "AUDIO", + "link": 493, + "shape": 7 + }, + { + "name": "meta_batch", + "type": "VHS_BatchManager", + "link": null, + "shape": 7 + }, + { + "name": "vae", + "type": "VAE", + "link": null, + "shape": 7 + } + ], + "outputs": [ + { + "name": "Filenames", + "type": "VHS_FILENAMES", + "links": null, + "shape": 3 + } + ], + "properties": { + "Node name for S&R": "VHS_VideoCombine" + }, + "widgets_values": { + "frame_rate": 30, + "loop_count": 0, + "filename_prefix": "AnimateDiff", + "format": "video/h264-mp4", + "pix_fmt": "yuv420p", + "crf": 19, + "save_metadata": true, + "trim_to_audio": false, + "pingpong": false, + "save_output": true, + "videopreview": { + "hidden": false, + "paused": false, + "params": { + "filename": "AnimateDiff_02420-audio.mp4", + "subfolder": "", + "type": "output", + "format": "video/h264-mp4", + "frame_rate": 30, + "workflow": "AnimateDiff_02420.png", + "fullpath": "/runpod-volume/ComfyUI_rv/output/AnimateDiff_02420-audio.mp4" + }, + "muted": false + } + } + }, + { + "id": 238, + "type": "Reroute", + "pos": [ + 2541.888916015625, + -1148.8082275390625 + ], + "size": [ + 75, + 26 + ], + "flags": {}, + "order": 23, + "mode": 0, + "inputs": [ + { + "name": "", + "type": "*", + "link": 492 + } + ], + "outputs": [ + { + "name": "", + "type": "AUDIO", + "links": [ + 493 + ], + "slot_index": 0 + } + ], + "properties": { + "showOutputText": false, + "horizontal": false + } + }, + { + "id": 159, + "type": "VHS_VideoCombine", + "pos": [ + 2610, + -7 + ], + "size": [ + 214.7587890625, + 694.2378540039062 + ], + "flags": {}, + "order": 39, + "mode": 0, + "inputs": [ + { + "name": "images", + "type": "IMAGE", + "link": 549 + }, + { + "name": "audio", + "type": "AUDIO", + "link": 496, + "shape": 7 + }, + { + "name": "meta_batch", + "type": "VHS_BatchManager", + "link": null, + "shape": 7 + }, + { + "name": "vae", + "type": "VAE", + "link": null, + "shape": 7 + } + ], + "outputs": [ + { + "name": "Filenames", + "type": "VHS_FILENAMES", + "links": null, + "shape": 3 + } + ], + "properties": { + "Node name for S&R": "VHS_VideoCombine" + }, + "widgets_values": { + "frame_rate": 30, + "loop_count": 0, + "filename_prefix": "AnimateDiff", + "format": "video/h264-mp4", + "pix_fmt": "yuv420p", + "crf": 19, + "save_metadata": true, + "trim_to_audio": false, + "pingpong": false, + "save_output": true, + "videopreview": { + "hidden": false, + "paused": false, + "params": { + "filename": "AnimateDiff_02417-audio.mp4", + "subfolder": "", + "type": "output", + "format": "video/h264-mp4", + "frame_rate": 30, + "workflow": "AnimateDiff_02417.png", + "fullpath": "/runpod-volume/ComfyUI_rv/output/AnimateDiff_02417-audio.mp4" + }, + "muted": false + } + } + }, + { + "id": 239, + "type": "Reroute", + "pos": [ + 2451.01806640625, + -21.460708618164062 + ], + "size": [ + 75, + 26 + ], + "flags": {}, + "order": 17, + "mode": 0, + "inputs": [ + { + "name": "", + "type": "*", + "link": 517 + } + ], + "outputs": [ + { + "name": "", + "type": "AUDIO", + "links": [ + 496 + ], + "slot_index": 0 + } + ], + "properties": { + "showOutputText": false, + "horizontal": false + } + }, + { + "id": 163, + "type": "VHS_VideoCombine", + "pos": [ + 2682.668701171875, + 897.24755859375 + ], + "size": [ + 214.7587890625, + 694.2378540039062 + ], + "flags": {}, + "order": 42, + "mode": 0, + "inputs": [ + { + "name": "images", + "type": "IMAGE", + "link": 541 + }, + { + "name": "audio", + "type": "AUDIO", + "link": 499, + "shape": 7 + }, + { + "name": "meta_batch", + "type": "VHS_BatchManager", + "link": null, + "shape": 7 + }, + { + "name": "vae", + "type": "VAE", + "link": null, + "shape": 7 + } + ], + "outputs": [ + { + "name": "Filenames", + "type": "VHS_FILENAMES", + "links": null, + "shape": 3 + } + ], + "properties": { + "Node name for S&R": "VHS_VideoCombine" + }, + "widgets_values": { + "frame_rate": 30, + "loop_count": 0, + "filename_prefix": "AnimateDiff", + "format": "video/h264-mp4", + "pix_fmt": "yuv420p", + "crf": 19, + "save_metadata": true, + "trim_to_audio": false, + "pingpong": false, + "save_output": true, + "videopreview": { + "hidden": false, + "paused": false, + "params": { + "filename": "AnimateDiff_02421-audio.mp4", + "subfolder": "", + "type": "output", + "format": "video/h264-mp4", + "frame_rate": 30, + "workflow": "AnimateDiff_02421.png", + "fullpath": "/runpod-volume/ComfyUI_rv/output/AnimateDiff_02421-audio.mp4" + }, + "muted": false + } + } + }, + { + "id": 240, + "type": "Reroute", + "pos": [ + 2513.22705078125, + 919.3145751953125 + ], + "size": [ + 75, + 26 + ], + "flags": {}, + "order": 25, + "mode": 0, + "inputs": [ + { + "name": "", + "type": "*", + "link": 498 + } + ], + "outputs": [ + { + "name": "", + "type": "AUDIO", + "links": [ + 499 + ], + "slot_index": 0 + } + ], + "properties": { + "showOutputText": false, + "horizontal": false + } + }, + { + "id": 196, + "type": "VHS_VideoCombine", + "pos": [ + 2710, + 1790 + ], + "size": [ + 214.7587890625, + 694.2378540039062 + ], + "flags": {}, + "order": 43, + "mode": 0, + "inputs": [ + { + "name": "images", + "type": "IMAGE", + "link": 537 + }, + { + "name": "audio", + "type": "AUDIO", + "link": 502, + "shape": 7 + }, + { + "name": "meta_batch", + "type": "VHS_BatchManager", + "link": null, + "shape": 7 + }, + { + "name": "vae", + "type": "VAE", + "link": null, + "shape": 7 + } + ], + "outputs": [ + { + "name": "Filenames", + "type": "VHS_FILENAMES", + "links": null, + "shape": 3 + } + ], + "properties": { + "Node name for S&R": "VHS_VideoCombine" + }, + "widgets_values": { + "frame_rate": 30, + "loop_count": 0, + "filename_prefix": "AnimateDiff", + "format": "video/h264-mp4", + "pix_fmt": "yuv420p", + "crf": 19, + "save_metadata": true, + "trim_to_audio": false, + "pingpong": false, + "save_output": true, + "videopreview": { + "hidden": false, + "paused": false, + "params": { + "filename": "AnimateDiff_02419-audio.mp4", + "subfolder": "", + "type": "output", + "format": "video/h264-mp4", + "frame_rate": 30, + "workflow": "AnimateDiff_02419.png", + "fullpath": "/runpod-volume/ComfyUI_rv/output/AnimateDiff_02419-audio.mp4" + }, + "muted": false + } + } + }, + { + "id": 241, + "type": "Reroute", + "pos": [ + 2527.7314453125, + 1820.163818359375 + ], + "size": [ + 75, + 26 + ], + "flags": {}, + "order": 29, + "mode": 0, + "inputs": [ + { + "name": "", + "type": "*", + "link": 501 + } + ], + "outputs": [ + { + "name": "", + "type": "AUDIO", + "links": [ + 502 + ], + "slot_index": 0 + } + ], + "properties": { + "showOutputText": false, + "horizontal": false + } + }, + { + "id": 220, + "type": "Note", + "pos": [ + -467.3756408691406, + 2279.470458984375 + ], + "size": [ + 269.4545593261719, + 75.10535430908203 + ], + "flags": {}, + "order": 4, + "mode": 0, + "inputs": [], + "outputs": [], + "properties": {}, + "widgets_values": [ + "you can do a lot with FeatureMod nodes, too" + ], + "color": "#432", + "bgcolor": "#653" + }, + { + "id": 192, + "type": "VHS_LoadAudioUpload", + "pos": [ + -739, + 252 + ], + "size": [ + 243.818359375, + 130 + ], + "flags": {}, + "order": 5, + "mode": 0, + "inputs": [], + "outputs": [ + { + "name": "audio", + "type": "AUDIO", + "links": [ + 434, + 437, + 512 + ], + "slot_index": 0, + "shape": 3 + } + ], + "properties": { + "Node name for S&R": "VHS_LoadAudioUpload" + }, + "widgets_values": { + "audio": "juicy.mp3", + "start_time": 10.06, + "duration": 8.36, + "choose audio to upload": "image" + } + }, + { + "id": 245, + "type": "AudioSeparatorSimple", + "pos": [ + 380.8441162109375, + 30.808849334716797 + ], + "size": [ + 315, + 106 + ], + "flags": {}, + "order": 10, + "mode": 0, + "inputs": [ + { + "name": "model", + "type": "OPEN_UNMIX_MODEL", + "link": 511 + }, + { + "name": "audio", + "type": "AUDIO", + "link": 512 + } + ], + "outputs": [ + { + "name": "audio", + "type": "AUDIO", + "links": [] + }, + { + "name": "drums_audio", + "type": "AUDIO", + "links": [ + 514 + ] + }, + { + "name": "vocals_audio", + "type": "AUDIO", + "links": [ + 515 + ] + }, + { + "name": "bass_audio", + "type": "AUDIO", + "links": [ + 517, + 553 + ] + }, + { + "name": "other_audio", + "type": "AUDIO", + "links": [ + 518 + ] + } + ], + "properties": { + "Node name for S&R": "AudioSeparatorSimple" + } + }, + { + "id": 193, + "type": "EmptyImageFromAudio", + "pos": [ + -475.334716796875, + 380.57537841796875 + ], + "size": [ + 336, + 126 + ], + "flags": {}, + "order": 8, + "mode": 0, + "inputs": [ + { + "name": "audio", + "type": "AUDIO", + "link": 434 + } + ], + "outputs": [ + { + "name": "empty_image", + "type": "IMAGE", + "links": [], + "slot_index": 0, + "shape": 3 + }, + { + "name": "frame_count", + "type": "INT", + "links": [ + 519 + ], + "slot_index": 1 + } + ], + "properties": { + "Node name for S&R": "EmptyImageFromAudio" + }, + "widgets_values": [ + 30, + 512, + 512 + ] + }, + { + "id": 246, + "type": "Anything Everywhere?", + "pos": [ + -78.31401824951172, + 284.6726379394531 + ], + "size": [ + 315, + 106 + ], + "flags": {}, + "order": 14, + "mode": 0, + "inputs": [ + { + "name": "INT", + "type": "*", + "link": 519, + "shape": 7, + "color_on": "" + } + ], + "outputs": [], + "properties": { + "Node name for S&R": "Anything Everywhere?", + "group_restricted": 0, + "color_restricted": 0 + }, + "widgets_values": [ + ".*", + "frame_count", + ".*" + ] + }, + { + "id": 248, + "type": "FeatureOscillator", + "pos": [ + -503.73370361328125, + 2489.72998046875 + ], + "size": [ + 352.79998779296875, + 178 + ], + "flags": {}, + "order": 11, + "mode": 0, + "inputs": [ + { + "name": "feature", + "type": "FEATURE", + "link": 524 + } + ], + "outputs": [ + { + "name": "FEATURE", + "type": "FEATURE", + "links": [ + 526, + 574 + ], + "slot_index": 0 + } + ], + "properties": { + "Node name for S&R": "FeatureOscillator" + }, + "widgets_values": [ + "sine", + 1, + 0.5, + 0, + 0.5, + false + ] + }, + { + "id": 249, + "type": "PreviewFeature", + "pos": [ + 100.41519927978516, + 2743.287109375 + ], + "size": [ + 315, + 246 + ], + "flags": {}, + "order": 20, + "mode": 0, + "inputs": [ + { + "name": "feature", + "type": "FEATURE", + "link": 526 + } + ], + "outputs": [], + "properties": { + "Node name for S&R": "PreviewFeature" + } + }, + { + "id": 213, + "type": "EffectVisualizer", + "pos": [ + -160.68368530273438, + 1968.8489990234375 + ], + "size": [ + 441, + 102 + ], + "flags": {}, + "order": 22, + "mode": 0, + "inputs": [ + { + "name": "video_frames", + "type": "IMAGE", + "link": 529 + }, + { + "name": "feature", + "type": "FEATURE", + "link": 522 + } + ], + "outputs": [ + { + "name": "IMAGE", + "type": "IMAGE", + "links": [ + 474 + ], + "slot_index": 0, + "shape": 3 + } + ], + "properties": { + "Node name for S&R": "EffectVisualizer" + }, + "widgets_values": [ + "(255,255,255)", + 1 + ] + }, + { + "id": 250, + "type": "FlexVideoDirection", + "pos": [ + -159.2229766845703, + 1718.0833740234375 + ], + "size": [ + 378, + 150 + ], + "flags": {}, + "order": 12, + "mode": 0, + "inputs": [ + { + "name": "images", + "type": "IMAGE", + "link": 527 + }, + { + "name": "opt_feature", + "type": "FEATURE", + "link": 528, + "shape": 7 + } + ], + "outputs": [ + { + "name": "IMAGE", + "type": "IMAGE", + "links": [ + 529 + ] + } + ], + "properties": { + "Node name for S&R": "FlexVideoDirection" + }, + "widgets_values": [ + 1, + 0, + "direction", + "relative" + ] + }, + { + "id": 247, + "type": "TimeFeatureNode", + "pos": [ + -690, + 1683 + ], + "size": [ + 315, + 202 + ], + "flags": {}, + "order": 6, + "mode": 0, + "inputs": [ + { + "name": "frame_count", + "type": "INT", + "link": null, + "widget": { + "name": "frame_count" + } + } + ], + "outputs": [ + { + "name": "FEATURE", + "type": "FEATURE", + "links": [ + 522, + 524, + 528, + 530 + ], + "slot_index": 0 + } + ], + "properties": { + "Node name for S&R": "TimeFeatureNode" + }, + "widgets_values": [ + "smooth", + 30, + 30, + 512, + 512, + 30, + 0 + ] + }, + { + "id": 251, + "type": "PreviewFeature", + "pos": [ + 181.33267211914062, + 1559.62841796875 + ], + "size": [ + 315, + 246 + ], + "flags": {}, + "order": 13, + "mode": 0, + "inputs": [ + { + "name": "feature", + "type": "FEATURE", + "link": 530 + } + ], + "outputs": [], + "properties": { + "Node name for S&R": "PreviewFeature" + } + }, + { + "id": 253, + "type": "FeatureSmoothing", + "pos": [ + 1791.6351318359375, + 2043.1995849609375 + ], + "size": [ + 340.20001220703125, + 154 + ], + "flags": {}, + "order": 36, + "mode": 0, + "inputs": [ + { + "name": "feature", + "type": "FEATURE", + "link": 533 + } + ], + "outputs": [ + { + "name": "FEATURE", + "type": "FEATURE", + "links": [ + 536 + ] + } + ], + "properties": { + "Node name for S&R": "FeatureSmoothing" + }, + "widgets_values": [ + "moving_average", + 7, + 0.3, + 1, + false + ] + }, + { + "id": 254, + "type": "FlexVideoDirection", + "pos": [ + 1777.8875732421875, + 2252.532958984375 + ], + "size": [ + 378, + 150 + ], + "flags": {}, + "order": 40, + "mode": 0, + "inputs": [ + { + "name": "images", + "type": "IMAGE", + "link": 535 + }, + { + "name": "opt_feature", + "type": "FEATURE", + "link": 536, + "shape": 7 + } + ], + "outputs": [ + { + "name": "IMAGE", + "type": "IMAGE", + "links": [ + 537 + ] + } + ], + "properties": { + "Node name for S&R": "FlexVideoDirection" + }, + "widgets_values": [ + 1, + 0, + "direction", + "relative" + ] + }, + { + "id": 252, + "type": "AudioFeatureExtractor", + "pos": [ + 1805.4014892578125, + 1804.9228515625 + ], + "size": [ + 415.8000183105469, + 174 + ], + "flags": {}, + "order": 30, + "mode": 0, + "inputs": [ + { + "name": "audio", + "type": "AUDIO", + "link": 531 + }, + { + "name": "frame_count", + "type": "INT", + "link": null, + "widget": { + "name": "frame_count" + } + } + ], + "outputs": [ + { + "name": "feature", + "type": "FEATURE", + "links": [ + 533 + ] + }, + { + "name": "frame_count", + "type": "INT", + "links": null + } + ], + "properties": { + "Node name for S&R": "AudioFeatureExtractor" + }, + "widgets_values": [ + "amplitude_envelope", + 30, + 0, + 512, + 512 + ] + }, + { + "id": 255, + "type": "FlexVideoDirection", + "pos": [ + 1781.974609375, + 1278.0252685546875 + ], + "size": [ + 378, + 150 + ], + "flags": {}, + "order": 38, + "mode": 0, + "inputs": [ + { + "name": "images", + "type": "IMAGE", + "link": 539 + }, + { + "name": "opt_feature", + "type": "FEATURE", + "link": 544, + "shape": 7 + } + ], + "outputs": [ + { + "name": "IMAGE", + "type": "IMAGE", + "links": [ + 541 + ] + } + ], + "properties": { + "Node name for S&R": "FlexVideoDirection" + }, + "widgets_values": [ + 1, + 0, + "direction", + "relative" + ] + }, + { + "id": 256, + "type": "FeatureSmoothing", + "pos": [ + 1767.974609375, + 1058.024658203125 + ], + "size": [ + 340.20001220703125, + 154 + ], + "flags": {}, + "order": 34, + "mode": 0, + "inputs": [ + { + "name": "feature", + "type": "FEATURE", + "link": 546 + } + ], + "outputs": [ + { + "name": "FEATURE", + "type": "FEATURE", + "links": [ + 544 + ] + } + ], + "properties": { + "Node name for S&R": "FeatureSmoothing" + }, + "widgets_values": [ + "moving_average", + 7, + 0.3, + 1, + false + ] + }, + { + "id": 257, + "type": "AudioFeatureExtractor", + "pos": [ + 2047.5430908203125, + 805.9478149414062 + ], + "size": [ + 415.8000183105469, + 174 + ], + "flags": {}, + "order": 26, + "mode": 0, + "inputs": [ + { + "name": "audio", + "type": "AUDIO", + "link": 545 + }, + { + "name": "frame_count", + "type": "INT", + "link": null, + "widget": { + "name": "frame_count" + } + } + ], + "outputs": [ + { + "name": "feature", + "type": "FEATURE", + "links": [ + 546 + ] + }, + { + "name": "frame_count", + "type": "INT", + "links": null + } + ], + "properties": { + "Node name for S&R": "AudioFeatureExtractor" + }, + "widgets_values": [ + "amplitude_envelope", + 30, + 0, + 512, + 512 + ] + }, + { + "id": 258, + "type": "FlexVideoDirection", + "pos": [ + 1722, + 432 + ], + "size": [ + 378, + 150 + ], + "flags": {}, + "order": 35, + "mode": 0, + "inputs": [ + { + "name": "images", + "type": "IMAGE", + "link": 547 + }, + { + "name": "opt_feature", + "type": "FEATURE", + "link": 552, + "shape": 7 + } + ], + "outputs": [ + { + "name": "IMAGE", + "type": "IMAGE", + "links": [ + 549 + ] + } + ], + "properties": { + "Node name for S&R": "FlexVideoDirection" + }, + "widgets_values": [ + 1, + 0, + "direction", + "relative" + ] + }, + { + "id": 259, + "type": "FeatureSmoothing", + "pos": [ + 1682.142333984375, + 197.70758056640625 + ], + "size": [ + 340.20001220703125, + 154 + ], + "flags": {}, + "order": 28, + "mode": 0, + "inputs": [ + { + "name": "feature", + "type": "FEATURE", + "link": 555 + } + ], + "outputs": [ + { + "name": "FEATURE", + "type": "FEATURE", + "links": [ + 552 + ] + } + ], + "properties": { + "Node name for S&R": "FeatureSmoothing" + }, + "widgets_values": [ + "moving_average", + 7, + 0.3, + 1, + false + ] + }, + { + "id": 260, + "type": "AudioFeatureExtractor", + "pos": [ + 1683, + -34 + ], + "size": [ + 415.8000183105469, + 174 + ], + "flags": {}, + "order": 18, + "mode": 0, + "inputs": [ + { + "name": "audio", + "type": "AUDIO", + "link": 553 + }, + { + "name": "frame_count", + "type": "INT", + "link": null, + "widget": { + "name": "frame_count" + } + } + ], + "outputs": [ + { + "name": "feature", + "type": "FEATURE", + "links": [ + 554, + 555 + ] + }, + { + "name": "frame_count", + "type": "INT", + "links": null + } + ], + "properties": { + "Node name for S&R": "AudioFeatureExtractor" + }, + "widgets_values": [ + "amplitude_envelope", + 30, + 0, + 512, + 512 + ] + }, + { + "id": 263, + "type": "AudioFeatureExtractor", + "pos": [ + 1615.465087890625, + -846.8966674804688 + ], + "size": [ + 415.8000183105469, + 174 + ], + "flags": {}, + "order": 24, + "mode": 0, + "inputs": [ + { + "name": "audio", + "type": "AUDIO", + "link": 562 + }, + { + "name": "frame_count", + "type": "INT", + "link": null, + "widget": { + "name": "frame_count" + } + } + ], + "outputs": [ + { + "name": "feature", + "type": "FEATURE", + "links": [ + 563 + ] + }, + { + "name": "frame_count", + "type": "INT", + "links": null + } + ], + "properties": { + "Node name for S&R": "AudioFeatureExtractor" + }, + "widgets_values": [ + "amplitude_envelope", + 30, + 0, + 512, + 512 + ] + }, + { + "id": 262, + "type": "FeatureSmoothing", + "pos": [ + 1638.1209716796875, + -637.4877319335938 + ], + "size": [ + 340.20001220703125, + 154 + ], + "flags": {}, + "order": 33, + "mode": 0, + "inputs": [ + { + "name": "feature", + "type": "FEATURE", + "link": 563 + } + ], + "outputs": [ + { + "name": "FEATURE", + "type": "FEATURE", + "links": [ + 561 + ] + } + ], + "properties": { + "Node name for S&R": "FeatureSmoothing" + }, + "widgets_values": [ + "moving_average", + 5, + 0.3, + 1, + false + ] + }, + { + "id": 261, + "type": "FlexVideoDirection", + "pos": [ + 1620.8314208984375, + -420.258544921875 + ], + "size": [ + 378, + 150 + ], + "flags": {}, + "order": 37, + "mode": 0, + "inputs": [ + { + "name": "images", + "type": "IMAGE", + "link": 556 + }, + { + "name": "opt_feature", + "type": "FEATURE", + "link": 561, + "shape": 7 + } + ], + "outputs": [ + { + "name": "IMAGE", + "type": "IMAGE", + "links": [ + 558 + ] + } + ], + "properties": { + "Node name for S&R": "FlexVideoDirection" + }, + "widgets_values": [ + 1, + 0, + "direction", + "relative" + ] + }, + { + "id": 264, + "type": "FlexVideoDirection", + "pos": [ + 199, + 2400 + ], + "size": [ + 378, + 150 + ], + "flags": {}, + "order": 21, + "mode": 0, + "inputs": [ + { + "name": "images", + "type": "IMAGE", + "link": 573 + }, + { + "name": "opt_feature", + "type": "FEATURE", + "link": 574, + "shape": 7 + } + ], + "outputs": [ + { + "name": "IMAGE", + "type": "IMAGE", + "links": [ + 575 + ] + } + ], + "properties": { + "Node name for S&R": "FlexVideoDirection" + }, + "widgets_values": [ + 1, + 0, + "direction", + "relative" + ] + } + ], + "links": [ + [ + 253, + 120, + 0, + 119, + 1, + "FREQUENCY_FILTER" + ], + [ + 386, + 106, + 0, + 172, + 0, + "*" + ], + [ + 434, + 192, + 0, + 193, + 0, + "AUDIO" + ], + [ + 437, + 192, + 0, + 194, + 0, + "AUDIO" + ], + [ + 474, + 213, + 0, + 211, + 0, + "IMAGE" + ], + [ + 492, + 119, + 0, + 238, + 0, + "*" + ], + [ + 493, + 238, + 0, + 108, + 1, + "AUDIO" + ], + [ + 496, + 239, + 0, + 159, + 1, + "AUDIO" + ], + [ + 498, + 195, + 0, + 240, + 0, + "*" + ], + [ + 499, + 240, + 0, + 163, + 1, + "*" + ], + [ + 501, + 201, + 0, + 241, + 0, + "*" + ], + [ + 502, + 241, + 0, + 196, + 1, + "*" + ], + [ + 511, + 117, + 0, + 245, + 0, + "OPEN_UNMIX_MODEL" + ], + [ + 512, + 192, + 0, + 245, + 1, + "AUDIO" + ], + [ + 514, + 245, + 1, + 119, + 0, + "AUDIO" + ], + [ + 515, + 245, + 2, + 195, + 0, + "*" + ], + [ + 517, + 245, + 3, + 239, + 0, + "*" + ], + [ + 518, + 245, + 4, + 201, + 0, + "*" + ], + [ + 519, + 193, + 1, + 246, + 0, + "INT" + ], + [ + 522, + 247, + 0, + 213, + 1, + "FEATURE" + ], + [ + 524, + 247, + 0, + 248, + 0, + "FEATURE" + ], + [ + 526, + 248, + 0, + 249, + 0, + "FEATURE" + ], + [ + 527, + 106, + 0, + 250, + 0, + "IMAGE" + ], + [ + 528, + 247, + 0, + 250, + 1, + "FEATURE" + ], + [ + 529, + 250, + 0, + 213, + 0, + "IMAGE" + ], + [ + 530, + 247, + 0, + 251, + 0, + "FEATURE" + ], + [ + 531, + 201, + 0, + 252, + 0, + "AUDIO" + ], + [ + 533, + 252, + 0, + 253, + 0, + "FEATURE" + ], + [ + 535, + 172, + 0, + 254, + 0, + "IMAGE" + ], + [ + 536, + 253, + 0, + 254, + 1, + "FEATURE" + ], + [ + 537, + 254, + 0, + 196, + 0, + "IMAGE" + ], + [ + 539, + 172, + 0, + 255, + 0, + "IMAGE" + ], + [ + 541, + 255, + 0, + 163, + 0, + "IMAGE" + ], + [ + 544, + 256, + 0, + 255, + 1, + "FEATURE" + ], + [ + 545, + 195, + 0, + 257, + 0, + "AUDIO" + ], + [ + 546, + 257, + 0, + 256, + 0, + "FEATURE" + ], + [ + 547, + 172, + 0, + 258, + 0, + "IMAGE" + ], + [ + 549, + 258, + 0, + 159, + 0, + "IMAGE" + ], + [ + 552, + 259, + 0, + 258, + 1, + "FEATURE" + ], + [ + 553, + 245, + 3, + 260, + 0, + "AUDIO" + ], + [ + 554, + 260, + 0, + 233, + 0, + "FEATURE" + ], + [ + 555, + 260, + 0, + 259, + 0, + "FEATURE" + ], + [ + 556, + 172, + 0, + 261, + 0, + "IMAGE" + ], + [ + 558, + 261, + 0, + 108, + 0, + "IMAGE" + ], + [ + 561, + 262, + 0, + 261, + 1, + "FEATURE" + ], + [ + 562, + 119, + 0, + 263, + 0, + "AUDIO" + ], + [ + 563, + 263, + 0, + 262, + 0, + "FEATURE" + ], + [ + 573, + 106, + 0, + 264, + 0, + "IMAGE" + ], + [ + 574, + 248, + 0, + 264, + 1, + "FEATURE" + ], + [ + 575, + 264, + 0, + 225, + 0, + "IMAGE" + ], + [ + 576, + 193, + 1, + 247, + 0, + "INT" + ], + [ + 577, + 193, + 1, + 252, + 1, + "INT" + ], + [ + 578, + 193, + 1, + 257, + 1, + "INT" + ], + [ + 579, + 193, + 1, + 260, + 1, + "INT" + ], + [ + 580, + 193, + 1, + 263, + 1, + "INT" + ] + ], + "groups": [ + { + "id": 1, + "title": "Time", + "bounding": [ + -819, + 1452, + 1924, + 1726 + ], + "color": "#3f789e", + "font_size": 24, + "flags": {} + }, + { + "id": 2, + "title": "Other", + "bounding": [ + 1678, + 1737, + 1388, + 644 + ], + "color": "#3f789e", + "font_size": 24, + "flags": {} + }, + { + "id": 3, + "title": "Bass", + "bounding": [ + 1625, + -193, + 1295, + 901 + ], + "color": "#3f789e", + "font_size": 24, + "flags": {} + }, + { + "id": 4, + "title": "Vocals", + "bounding": [ + 1652, + 776, + 1367, + 831 + ], + "color": "#3f789e", + "font_size": 24, + "flags": {} + }, + { + "id": 5, + "title": "Audio Separation", + "bounding": [ + -739, + -168, + 1831, + 1481 + ], + "color": "#3f789e", + "font_size": 24, + "flags": {} + }, + { + "id": 6, + "title": "Drums", + "bounding": [ + 1598, + -1218, + 1317, + 941 + ], + "color": "#3f789e", + "font_size": 24, + "flags": {} + } + ], + "config": {}, + "extra": { + "ds": { + "scale": 0.8140274938684103, + "offset": [ + 441.66631958748064, + -1946.983432424807 + ] + }, + "node_versions": { + "ComfyUI-VideoHelperSuite": "6953fa21443cf55f7c3b61ed3f4c87c5d3677fe1", + "comfy-core": "0.3.12", + "ComfyUI_RyanOnTheInside": "0507092b2c3f5c51b45989c6c4fd51c1add26513", + "cg-use-everywhere": "cd06259166a6af4c054c62f540871ca09a359b50" + }, + "ue_links": [ + { + "downstream": 247, + "downstream_slot": 0, + "upstream": "193", + "upstream_slot": 1, + "controller": 246, + "type": "INT" + }, + { + "downstream": 252, + "downstream_slot": 1, + "upstream": "193", + "upstream_slot": 1, + "controller": 246, + "type": "INT" + }, + { + "downstream": 257, + "downstream_slot": 1, + "upstream": "193", + "upstream_slot": 1, + "controller": 246, + "type": "INT" + }, + { + "downstream": 260, + "downstream_slot": 1, + "upstream": "193", + "upstream_slot": 1, + "controller": 246, + "type": "INT" + }, + { + "downstream": 263, + "downstream_slot": 1, + "upstream": "193", + "upstream_slot": 1, + "controller": 246, + "type": "INT" + } + ] + }, + "version": 0.4 +} \ No newline at end of file diff --git a/examples/proximity_particle.json b/examples/proximity_particle.json deleted file mode 100644 index 3cb5e5e..0000000 --- a/examples/proximity_particle.json +++ /dev/null @@ -1,8414 +0,0 @@ -{ - "last_node_id": 339, - "last_link_id": 614, - "nodes": [ - { - "id": 30, - "type": "ADE_SigmaSchedule", - "pos": [ - 3141.5897819464126, - 1118.8759046187079 - ], - "size": { - "0": 244.73928833007812, - "1": 58 - }, - "flags": {}, - "order": 0, - "mode": 0, - "outputs": [ - { - "name": "SIGMA_SCHEDULE", - "type": "SIGMA_SCHEDULE", - "links": [ - 51 - ], - "shape": 3, - "slot_index": 0 - } - ], - "title": "Sigma Schedule 🎭🅐🅓", - "properties": { - "Node name for S&R": "ADE_SigmaSchedule", - "ttNbgOverride": { - "color": "#2a363b", - "bgcolor": "#3f5159", - "groupcolor": "#3f789e" - } - }, - "widgets_values": [ - "lcm avg(sqrt_linear,linear)" - ] - }, - { - "id": 32, - "type": "ADE_MultivalDynamic", - "pos": [ - 3131.5897819464126, - 768.8759046187079 - ], - "size": { - "0": 259.9388122558594, - "1": 63.332008361816406 - }, - "flags": {}, - "order": 1, - "mode": 0, - "inputs": [ - { - "name": "mask_optional", - "type": "MASK", - "link": null - } - ], - "outputs": [ - { - "name": "MULTIVAL", - "type": "MULTIVAL", - "links": [ - 48 - ], - "shape": 3, - "slot_index": 0 - } - ], - "title": "Scale 🎭🅐🅓", - "properties": { - "Node name for S&R": "ADE_MultivalDynamic", - "ttNbgOverride": { - "color": "#2a363b", - "bgcolor": "#3f5159", - "groupcolor": "#3f789e" - } - }, - "widgets_values": [ - 1.1400000000000001, - "" - ] - }, - { - "id": 34, - "type": "ADE_MultivalDynamic", - "pos": [ - 3131.5897819464126, - 658.8759046187079 - ], - "size": { - "0": 265.1632385253906, - "1": 58 - }, - "flags": {}, - "order": 2, - "mode": 0, - "inputs": [ - { - "name": "mask_optional", - "type": "MASK", - "link": null - } - ], - "outputs": [ - { - "name": "MULTIVAL", - "type": "MULTIVAL", - "links": [ - 49 - ], - "shape": 3 - } - ], - "title": "Effect 🎭🅐🅓", - "properties": { - "Node name for S&R": "ADE_MultivalDynamic", - "ttNbgOverride": { - "color": "#2a363b", - "bgcolor": "#3f5159", - "groupcolor": "#3f789e" - } - }, - "widgets_values": [ - 1.1, - "" - ] - }, - { - "id": 35, - "type": "ADE_CustomCFGSimple", - "pos": [ - 3131.5897819464126, - 868.8759046187079 - ], - "size": { - "0": 257.2469787597656, - "1": 60.893348693847656 - }, - "flags": {}, - "order": 3, - "mode": 0, - "inputs": [ - { - "name": "cfg_extras", - "type": "CFG_EXTRAS", - "link": null - } - ], - "outputs": [ - { - "name": "CUSTOM_CFG", - "type": "CUSTOM_CFG", - "links": [ - 50 - ], - "shape": 3 - } - ], - "properties": { - "Node name for S&R": "ADE_CustomCFGSimple", - "ttNbgOverride": { - "color": "#2a363b", - "bgcolor": "#3f5159", - "groupcolor": "#3f789e" - } - }, - "widgets_values": [ - 2, - "" - ] - }, - { - "id": 36, - "type": "ADE_AnimateDiffSettings", - "pos": [ - 3161.5897819464126, - 1218.8759046187079 - ], - "size": { - "0": 226.8000030517578, - "1": 54 - }, - "flags": { - "collapsed": true - }, - "order": 45, - "mode": 0, - "inputs": [ - { - "name": "pe_adjust", - "type": "PE_ADJUST", - "link": 53, - "slot_index": 0 - }, - { - "name": "weight_adjust", - "type": "WEIGHT_ADJUST", - "link": 54, - "slot_index": 1 - } - ], - "outputs": [ - { - "name": "AD_SETTINGS", - "type": "AD_SETTINGS", - "links": [ - 46 - ], - "shape": 3 - } - ], - "properties": { - "Node name for S&R": "ADE_AnimateDiffSettings", - "ttNbgOverride": { - "color": "#2a363b", - "bgcolor": "#3f5159", - "groupcolor": "#3f789e" - } - }, - "widgets_values": [ - "" - ] - }, - { - "id": 37, - "type": "ADE_AdjustPESweetspotStretch", - "pos": [ - 3131.5897819464126, - 968.8759046187079 - ], - "size": { - "0": 253.07310485839844, - "1": 106 - }, - "flags": {}, - "order": 4, - "mode": 0, - "inputs": [ - { - "name": "prev_pe_adjust", - "type": "PE_ADJUST", - "link": null - } - ], - "outputs": [ - { - "name": "PE_ADJUST", - "type": "PE_ADJUST", - "links": [ - 53 - ], - "shape": 3 - } - ], - "properties": { - "Node name for S&R": "ADE_AdjustPESweetspotStretch", - "ttNbgOverride": { - "color": "#2a363b", - "bgcolor": "#3f5159", - "groupcolor": "#3f789e" - } - }, - "widgets_values": [ - 16, - 18, - false, - "" - ] - }, - { - "id": 57, - "type": "GetNode", - "pos": { - "0": 981.441162109375, - "1": 1401.961181640625, - "2": 0, - "3": 0, - "4": 0, - "5": 0, - "6": 0, - "7": 0, - "8": 0, - "9": 0 - }, - "size": { - "0": 210, - "1": 58 - }, - "flags": {}, - "order": 5, - "mode": 0, - "inputs": [], - "outputs": [ - { - "name": "IMAGE", - "type": "IMAGE", - "links": [ - 81 - ], - "slot_index": 0 - } - ], - "title": "Get_depth_maps", - "properties": {}, - "widgets_values": [ - "depth_maps" - ] - }, - { - "id": 58, - "type": "GetNode", - "pos": { - "0": 961.441162109375, - "1": 1551.961181640625, - "2": 0, - "3": 0, - "4": 0, - "5": 0, - "6": 0, - "7": 0, - "8": 0, - "9": 0 - }, - "size": { - "0": 210, - "1": 58 - }, - "flags": {}, - "order": 6, - "mode": 0, - "inputs": [], - "outputs": [ - { - "name": "IMAGE", - "type": "IMAGE", - "links": [ - 82 - ], - "slot_index": 0 - } - ], - "title": "Get_lineart", - "properties": {}, - "widgets_values": [ - "lineart" - ] - }, - { - "id": 63, - "type": "PreviewImage", - "pos": [ - 1430, - -4640 - ], - "size": { - "0": 210, - "1": 246 - }, - "flags": {}, - "order": 65, - "mode": 4, - "inputs": [ - { - "name": "images", - "type": "IMAGE", - "link": 95 - } - ], - "properties": { - "Node name for S&R": "PreviewImage" - } - }, - { - "id": 19, - "type": "EmptyImage", - "pos": [ - -54.53860047793418, - -848.1971880599185 - ], - "size": { - "0": 315, - "1": 130 - }, - "flags": {}, - "order": 72, - "mode": 0, - "inputs": [ - { - "name": "width", - "type": "INT", - "link": 26, - "widget": { - "name": "width" - } - }, - { - "name": "height", - "type": "INT", - "link": 27, - "widget": { - "name": "height" - } - }, - { - "name": "batch_size", - "type": "INT", - "link": 103, - "widget": { - "name": "batch_size" - } - } - ], - "outputs": [ - { - "name": "IMAGE", - "type": "IMAGE", - "links": [ - 30 - ], - "shape": 3, - "slot_index": 0 - } - ], - "properties": { - "Node name for S&R": "EmptyImage" - }, - "widgets_values": [ - 512, - 512, - 60, - 0 - ] - }, - { - "id": 33, - "type": "ADE_AnimateDiffUniformContextOptions", - "pos": [ - 3481.5897819464126, - 658.8759046187079 - ], - "size": { - "0": 273.269775390625, - "1": 270 - }, - "flags": {}, - "order": 7, - "mode": 0, - "inputs": [ - { - "name": "prev_context", - "type": "CONTEXT_OPTIONS", - "link": null - }, - { - "name": "view_opts", - "type": "VIEW_OPTS", - "link": null - } - ], - "outputs": [ - { - "name": "CONTEXT_OPTS", - "type": "CONTEXT_OPTIONS", - "links": [ - 44 - ], - "shape": 3, - "slot_index": 0 - } - ], - "title": "Context Options 🎭🅐🅓", - "properties": { - "Node name for S&R": "ADE_AnimateDiffUniformContextOptions", - "ttNbgOverride": { - "color": "#2a363b", - "bgcolor": "#3f5159", - "groupcolor": "#3f789e" - } - }, - "widgets_values": [ - 16, - 1, - 4, - "uniform", - false, - "pyramid", - false, - 0, - 1, - "" - ] - }, - { - "id": 29, - "type": "ADE_AnimateDiffSamplingSettings", - "pos": [ - 3481.5897819464126, - 968.8759046187079 - ], - "size": { - "0": 273.3500061035156, - "1": 254 - }, - "flags": {}, - "order": 44, - "mode": 0, - "inputs": [ - { - "name": "noise_layers", - "type": "NOISE_LAYERS", - "link": null, - "slot_index": 0 - }, - { - "name": "iteration_opts", - "type": "ITERATION_OPTS", - "link": null - }, - { - "name": "custom_cfg", - "type": "CUSTOM_CFG", - "link": 50, - "slot_index": 2 - }, - { - "name": "sigma_schedule", - "type": "SIGMA_SCHEDULE", - "link": 51, - "slot_index": 3 - }, - { - "name": "seed_override", - "type": "INT", - "link": null, - "widget": { - "name": "seed_override" - } - }, - { - "name": "seed_override", - "type": "INT", - "link": null, - "widget": { - "name": "seed_override" - } - } - ], - "outputs": [ - { - "name": "settings", - "type": "SAMPLE_SETTINGS", - "links": [ - 47 - ], - "shape": 3, - "slot_index": 0 - } - ], - "properties": { - "Node name for S&R": "ADE_AnimateDiffSamplingSettings", - "ttNbgOverride": { - "color": "#2a363b", - "bgcolor": "#3f5159", - "groupcolor": "#3f789e" - } - }, - "widgets_values": [ - 0, - "FreeNoise", - "comfy", - 0, - 0, - false, - "" - ] - }, - { - "id": 86, - "type": "Note", - "pos": [ - 3160.2307942589186, - 250.7002531609014 - ], - "size": { - "0": 210, - "1": 58 - }, - "flags": {}, - "order": 8, - "mode": 0, - "properties": { - "text": "" - }, - "widgets_values": [ - "Shoutout Akatz" - ], - "color": "#432", - "bgcolor": "#653" - }, - { - "id": 40, - "type": "IPAdapterUnifiedLoader", - "pos": [ - 4427.911603734175, - 481.6610030536765 - ], - "size": { - "0": 315, - "1": 78 - }, - "flags": {}, - "order": 83, - "mode": 4, - "inputs": [ - { - "name": "model", - "type": "MODEL", - "link": 56 - }, - { - "name": "ipadapter", - "type": "IPADAPTER", - "link": null - } - ], - "outputs": [ - { - "name": "model", - "type": "MODEL", - "links": [ - 57 - ], - "shape": 3, - "slot_index": 0 - }, - { - "name": "ipadapter", - "type": "IPADAPTER", - "links": [ - 58 - ], - "shape": 3, - "slot_index": 1 - } - ], - "properties": { - "Node name for S&R": "IPAdapterUnifiedLoader" - }, - "widgets_values": [ - "PLUS (high strength)" - ] - }, - { - "id": 38, - "type": "ADE_AdjustWeightAllMult", - "pos": [ - 3115, - 498 - ], - "size": { - "0": 270.3999938964844, - "1": 82 - }, - "flags": {}, - "order": 9, - "mode": 0, - "inputs": [ - { - "name": "prev_weight_adjust", - "type": "WEIGHT_ADJUST", - "link": null - } - ], - "outputs": [ - { - "name": "WEIGHT_ADJUST", - "type": "WEIGHT_ADJUST", - "links": [ - 54 - ], - "shape": 3 - } - ], - "properties": { - "Node name for S&R": "ADE_AdjustWeightAllMult", - "ttNbgOverride": { - "color": "#2a363b", - "bgcolor": "#3f5159", - "groupcolor": "#3f789e" - } - }, - "widgets_values": [ - 1.01, - false, - "" - ] - }, - { - "id": 88, - "type": "Reroute", - "pos": [ - 2860.8354071366402, - 64 - ], - "size": [ - 75, - 26 - ], - "flags": {}, - "order": 51, - "mode": 0, - "inputs": [ - { - "name": "", - "type": "*", - "link": 133 - } - ], - "outputs": [ - { - "name": "", - "type": "VAE", - "links": [ - 136 - ], - "slot_index": 0 - } - ], - "properties": { - "showOutputText": false, - "horizontal": false - } - }, - { - "id": 89, - "type": "Reroute", - "pos": [ - 2860.8354071366402, - 105 - ], - "size": [ - 75, - 26 - ], - "flags": {}, - "order": 89, - "mode": 0, - "inputs": [ - { - "name": "", - "type": "*", - "link": 134 - } - ], - "outputs": [ - { - "name": "", - "type": "CONDITIONING", - "links": [ - 139 - ], - "slot_index": 0 - } - ], - "properties": { - "showOutputText": false, - "horizontal": false - } - }, - { - "id": 90, - "type": "Reroute", - "pos": [ - 2860.8354071366402, - 143.3452987595907 - ], - "size": [ - 75, - 26 - ], - "flags": {}, - "order": 90, - "mode": 0, - "inputs": [ - { - "name": "", - "type": "*", - "link": 135 - } - ], - "outputs": [ - { - "name": "", - "type": "CONDITIONING", - "links": [ - 141 - ], - "slot_index": 0 - } - ], - "properties": { - "showOutputText": false, - "horizontal": false - } - }, - { - "id": 72, - "type": "Note", - "pos": [ - -71.5386004779342, - -1041.1971880599176 - ], - "size": { - "0": 357.3516845703125, - "1": 135.6949462890625 - }, - "flags": {}, - "order": 10, - "mode": 0, - "properties": { - "text": "" - }, - "widgets_values": [ - "4. I want the whole image to be included in the depth chamber, so I create a mask the size of the image. You could pass in masks of anything here." - ], - "color": "#432", - "bgcolor": "#653" - }, - { - "id": 116, - "type": "Note", - "pos": [ - 1490, - 809 - ], - "size": { - "0": 380.91632080078125, - "1": 230.8916015625 - }, - "flags": {}, - "order": 11, - "mode": 0, - "properties": { - "text": "" - }, - "widgets_values": [ - "5. finally we do all this " - ], - "color": "#432", - "bgcolor": "#653" - }, - { - "id": 93, - "type": "Reroute", - "pos": [ - 5183, - 99 - ], - "size": [ - 75, - 26 - ], - "flags": {}, - "order": 97, - "mode": 0, - "inputs": [ - { - "name": "", - "type": "*", - "link": 139 - } - ], - "outputs": [ - { - "name": "", - "type": "CONDITIONING", - "links": [ - 140, - 143 - ], - "slot_index": 0 - } - ], - "properties": { - "showOutputText": false, - "horizontal": false - } - }, - { - "id": 94, - "type": "Reroute", - "pos": [ - 5180, - 136 - ], - "size": [ - 75, - 26 - ], - "flags": {}, - "order": 98, - "mode": 0, - "inputs": [ - { - "name": "", - "type": "*", - "link": 141 - } - ], - "outputs": [ - { - "name": "", - "type": "CONDITIONING", - "links": [ - 142, - 144 - ], - "slot_index": 0 - } - ], - "properties": { - "showOutputText": false, - "horizontal": false - } - }, - { - "id": 125, - "type": "Note", - "pos": [ - 4337.8690841450125, - 699.6818760329338 - ], - "size": { - "0": 336.1888122558594, - "1": 206.84153747558594 - }, - "flags": {}, - "order": 12, - "mode": 0, - "properties": { - "text": "" - }, - "widgets_values": [ - "enable this if you want" - ], - "color": "#432", - "bgcolor": "#653" - }, - { - "id": 122, - "type": "FeatureMixer", - "pos": [ - -72.21454028302455, - -5668.483763498456 - ], - "size": { - "0": 367.79998779296875, - "1": 342 - }, - "flags": {}, - "order": 47, - "mode": 4, - "inputs": [ - { - "name": "feature", - "type": "FEATURE", - "link": 195 - } - ], - "outputs": [ - { - "name": "FEATURE", - "type": "FEATURE", - "links": [ - 199 - ], - "shape": 3, - "slot_index": 0 - }, - { - "name": "FEATURE_VISUALIZATION", - "type": "IMAGE", - "links": [ - 196 - ], - "shape": 3, - "slot_index": 1 - } - ], - "properties": { - "Node name for S&R": "FeatureMixer" - }, - "widgets_values": [ - 1.5, - 0, - 1, - 1, - 1, - 1, - 1, - 0, - 0, - 1, - 0.5, - false - ] - }, - { - "id": 48, - "type": "ControlNetLoaderAdvanced", - "pos": [ - 984, - 1273.8269519976366 - ], - "size": { - "0": 327.6000061035156, - "1": 58 - }, - "flags": {}, - "order": 13, - "mode": 0, - "inputs": [ - { - "name": "timestep_keyframe", - "type": "TIMESTEP_KEYFRAME", - "link": null - } - ], - "outputs": [ - { - "name": "CONTROL_NET", - "type": "CONTROL_NET", - "links": [ - 76 - ], - "shape": 3 - } - ], - "properties": { - "Node name for S&R": "ControlNetLoaderAdvanced", - "ttNbgOverride": { - "color": "#2a363b", - "bgcolor": "#3f5159", - "groupcolor": "#3f789e" - } - }, - "widgets_values": [ - "control_v11f1p_sd15_depth_fp16.safetensors" - ] - }, - { - "id": 56, - "type": "ControlNetLoaderAdvanced", - "pos": [ - 1339, - 1281.8269519976366 - ], - "size": { - "0": 327.6000061035156, - "1": 58 - }, - "flags": {}, - "order": 14, - "mode": 0, - "inputs": [ - { - "name": "timestep_keyframe", - "type": "TIMESTEP_KEYFRAME", - "link": null - } - ], - "outputs": [ - { - "name": "CONTROL_NET", - "type": "CONTROL_NET", - "links": [ - 80 - ], - "shape": 3 - } - ], - "properties": { - "Node name for S&R": "ControlNetLoaderAdvanced", - "ttNbgOverride": { - "color": "#2a363b", - "bgcolor": "#3f5159", - "groupcolor": "#3f789e" - } - }, - "widgets_values": [ - "control_v11p_sd15_lineart_fp16.safetensors" - ] - }, - { - "id": 113, - "type": "UpscaleModelLoader", - "pos": [ - 8493.811170891195, - 363.5270008378391 - ], - "size": { - "0": 315, - "1": 58 - }, - "flags": {}, - "order": 15, - "mode": 4, - "outputs": [ - { - "name": "UPSCALE_MODEL", - "type": "UPSCALE_MODEL", - "links": [ - 175 - ], - "shape": 3 - } - ], - "properties": { - "Node name for S&R": "UpscaleModelLoader" - }, - "widgets_values": [ - "RealESRGAN_x2.pth" - ] - }, - { - "id": 28, - "type": "ADE_AnimateDiffLoaderGen1", - "pos": [ - 3481.5897819464126, - 358.87590461870786 - ], - "size": { - "0": 271.7644958496094, - "1": 242 - }, - "flags": {}, - "order": 73, - "mode": 0, - "inputs": [ - { - "name": "model", - "type": "MODEL", - "link": 65 - }, - { - "name": "context_options", - "type": "CONTEXT_OPTIONS", - "link": 44, - "slot_index": 1 - }, - { - "name": "motion_lora", - "type": "MOTION_LORA", - "link": 45, - "slot_index": 2 - }, - { - "name": "ad_settings", - "type": "AD_SETTINGS", - "link": 46, - "slot_index": 3 - }, - { - "name": "ad_keyframes", - "type": "AD_KEYFRAMES", - "link": null - }, - { - "name": "sample_settings", - "type": "SAMPLE_SETTINGS", - "link": 47, - "slot_index": 5 - }, - { - "name": "scale_multival", - "type": "MULTIVAL", - "link": 48, - "slot_index": 6 - }, - { - "name": "effect_multival", - "type": "MULTIVAL", - "link": 49, - "slot_index": 7 - }, - { - "name": "per_block", - "type": "PER_BLOCK", - "link": null - } - ], - "outputs": [ - { - "name": "MODEL", - "type": "MODEL", - "links": [ - 56 - ], - "shape": 3, - "slot_index": 0 - } - ], - "properties": { - "Node name for S&R": "ADE_AnimateDiffLoaderGen1", - "ttNbgOverride": { - "color": "#2a363b", - "bgcolor": "#3f5159", - "groupcolor": "#3f789e" - } - }, - "widgets_values": [ - "ALCM_sd15_t2v_beta.ckpt", - "lcm avg(sqrt_linear,linear)" - ] - }, - { - "id": 95, - "type": "Reroute", - "pos": [ - 6320, - 110 - ], - "size": [ - 75, - 26 - ], - "flags": {}, - "order": 104, - "mode": 0, - "inputs": [ - { - "name": "", - "type": "*", - "link": 143 - } - ], - "outputs": [ - { - "name": "", - "type": "CONDITIONING", - "links": [ - 145 - ], - "slot_index": 0 - } - ], - "properties": { - "showOutputText": false, - "horizontal": false - } - }, - { - "id": 96, - "type": "Reroute", - "pos": [ - 6320, - 140 - ], - "size": [ - 75, - 26 - ], - "flags": {}, - "order": 105, - "mode": 0, - "inputs": [ - { - "name": "", - "type": "*", - "link": 144 - } - ], - "outputs": [ - { - "name": "", - "type": "CONDITIONING", - "links": [ - 146 - ], - "slot_index": 0 - } - ], - "properties": { - "showOutputText": false, - "horizontal": false - } - }, - { - "id": 78, - "type": "KSampler", - "pos": [ - 6735.217366877503, - 289.41342322069596 - ], - "size": { - "0": 315, - "1": 262 - }, - "flags": {}, - "order": 137, - "mode": 0, - "inputs": [ - { - "name": "model", - "type": "MODEL", - "link": 112 - }, - { - "name": "positive", - "type": "CONDITIONING", - "link": 145 - }, - { - "name": "negative", - "type": "CONDITIONING", - "link": 146 - }, - { - "name": "latent_image", - "type": "LATENT", - "link": 153 - } - ], - "outputs": [ - { - "name": "LATENT", - "type": "LATENT", - "links": [ - 121 - ], - "slot_index": 0 - } - ], - "properties": { - "Node name for S&R": "KSampler" - }, - "widgets_values": [ - 156680208700286, - "fixed", - 4, - 1, - "lcm", - "sgm_uniform", - 0.36 - ] - }, - { - "id": 80, - "type": "VAEDecode", - "pos": [ - 7092.217366877503, - 294.41342322069596 - ], - "size": { - "0": 210, - "1": 46 - }, - "flags": {}, - "order": 138, - "mode": 0, - "inputs": [ - { - "name": "samples", - "type": "LATENT", - "link": 121 - }, - { - "name": "vae", - "type": "VAE", - "link": 147 - } - ], - "outputs": [ - { - "name": "IMAGE", - "type": "IMAGE", - "links": [ - 278 - ], - "slot_index": 0 - } - ], - "properties": { - "Node name for S&R": "VAEDecode" - } - }, - { - "id": 172, - "type": "Reroute", - "pos": [ - 7635, - 38 - ], - "size": [ - 75, - 26 - ], - "flags": {}, - "order": 131, - "mode": 0, - "inputs": [ - { - "name": "", - "type": "*", - "link": 273 - } - ], - "outputs": [ - { - "name": "", - "type": "MASK", - "links": [ - 274 - ], - "slot_index": 0 - } - ], - "properties": { - "showOutputText": false, - "horizontal": false - } - }, - { - "id": 121, - "type": "TimeFeatureNode", - "pos": [ - -449.21454028302617, - -5524.483763498457 - ], - "size": { - "0": 317.4000244140625, - "1": 150 - }, - "flags": {}, - "order": 16, - "mode": 4, - "inputs": [ - { - "name": "video_frames", - "type": "IMAGE", - "link": null - } - ], - "outputs": [ - { - "name": "FEATURE", - "type": "FEATURE", - "links": [ - 195 - ], - "shape": 3, - "slot_index": 0 - }, - { - "name": "FEATURE_PIPE", - "type": "FEATURE_PIPE", - "links": [ - 193 - ], - "shape": 3, - "slot_index": 1 - } - ], - "properties": { - "Node name for S&R": "TimeFeatureNode" - }, - "widgets_values": [ - 30, - "smooth", - 0.4, - 0 - ] - }, - { - "id": 123, - "type": "PreviewImage", - "pos": [ - 446.7854597169757, - -5708.483763498455 - ], - "size": { - "0": 443.01776123046875, - "1": 260.46453857421875 - }, - "flags": {}, - "order": 64, - "mode": 4, - "inputs": [ - { - "name": "images", - "type": "IMAGE", - "link": 196 - } - ], - "properties": { - "Node name for S&R": "PreviewImage" - } - }, - { - "id": 69, - "type": "FlexMaskDepthChamber", - "pos": [ - 487.78545971697525, - -5416.483763498458 - ], - "size": { - "0": 344.3999938964844, - "1": 310 - }, - "flags": {}, - "order": 63, - "mode": 4, - "inputs": [ - { - "name": "masks", - "type": "MASK", - "link": null - }, - { - "name": "feature", - "type": "FEATURE", - "link": 199 - }, - { - "name": "feature_pipe", - "type": "FEATURE_PIPE", - "link": 193 - }, - { - "name": "depth_map", - "type": "IMAGE", - "link": null - } - ], - "outputs": [ - { - "name": "MASK", - "type": "MASK", - "links": [], - "shape": 3, - "slot_index": 0 - } - ], - "properties": { - "Node name for S&R": "FlexMaskDepthChamber" - }, - "widgets_values": [ - 1, - false, - 0, - 0, - 0, - 1, - 0.66, - "both", - "move_back" - ] - }, - { - "id": 22, - "type": "FlexMaskDepthChamber", - "pos": [ - 127, - -4746 - ], - "size": { - "0": 344.3999938964844, - "1": 310 - }, - "flags": {}, - "order": 17, - "mode": 4, - "inputs": [ - { - "name": "masks", - "type": "MASK", - "link": null - }, - { - "name": "feature", - "type": "FEATURE", - "link": null - }, - { - "name": "feature_pipe", - "type": "FEATURE_PIPE", - "link": null - }, - { - "name": "depth_map", - "type": "IMAGE", - "link": null - } - ], - "outputs": [ - { - "name": "MASK", - "type": "MASK", - "links": [], - "shape": 3, - "slot_index": 0 - } - ], - "properties": { - "Node name for S&R": "FlexMaskDepthChamber" - }, - "widgets_values": [ - 1, - false, - 0, - 0, - 0, - 0.12, - 0.21, - "both", - "expand" - ] - }, - { - "id": 23, - "type": "TimeFeatureNode", - "pos": [ - 610, - -4500 - ], - "size": { - "0": 317.4000244140625, - "1": 150 - }, - "flags": {}, - "order": 18, - "mode": 4, - "inputs": [ - { - "name": "video_frames", - "type": "IMAGE", - "link": null - } - ], - "outputs": [ - { - "name": "FEATURE", - "type": "FEATURE", - "links": [ - 94 - ], - "shape": 3, - "slot_index": 0 - }, - { - "name": "FEATURE_PIPE", - "type": "FEATURE_PIPE", - "links": [], - "shape": 3, - "slot_index": 1 - } - ], - "properties": { - "Node name for S&R": "TimeFeatureNode" - }, - "widgets_values": [ - 20, - "bounce", - 0.5, - 0 - ] - }, - { - "id": 62, - "type": "FeatureMixer", - "pos": [ - 1010, - -4620 - ], - "size": { - "0": 367.79998779296875, - "1": 342 - }, - "flags": {}, - "order": 48, - "mode": 4, - "inputs": [ - { - "name": "feature", - "type": "FEATURE", - "link": 94 - } - ], - "outputs": [ - { - "name": "FEATURE", - "type": "FEATURE", - "links": [], - "shape": 3, - "slot_index": 0 - }, - { - "name": "FEATURE_VISUALIZATION", - "type": "IMAGE", - "links": [ - 95 - ], - "shape": 3, - "slot_index": 1 - } - ], - "properties": { - "Node name for S&R": "FeatureMixer" - }, - "widgets_values": [ - 2.32, - 0, - 2.17, - 1, - 1, - 1, - 1, - 0, - 0, - 0.3, - 0.5, - false - ] - }, - { - "id": 20, - "type": "GetImageSizeAndCount", - "pos": [ - -308.6652802094187, - -1002.1707483866909 - ], - "size": { - "0": 210, - "1": 86 - }, - "flags": {}, - "order": 59, - "mode": 0, - "inputs": [ - { - "name": "image", - "type": "IMAGE", - "link": 108 - } - ], - "outputs": [ - { - "name": "image", - "type": "IMAGE", - "links": [], - "shape": 3, - "slot_index": 0 - }, - { - "name": "960 width", - "type": "INT", - "links": [ - 26 - ], - "shape": 3, - "slot_index": 1 - }, - { - "name": "540 height", - "type": "INT", - "links": [ - 27 - ], - "shape": 3, - "slot_index": 2 - }, - { - "name": "90 count", - "type": "INT", - "links": [ - 103 - ], - "shape": 3, - "slot_index": 3 - } - ], - "properties": { - "Node name for S&R": "GetImageSizeAndCount" - } - }, - { - "id": 114, - "type": "Note", - "pos": [ - 326.3347197905803, - -1028.1707483866905 - ], - "size": { - "0": 484.20526123046875, - "1": 158.15316772460938 - }, - "flags": {}, - "order": 19, - "mode": 0, - "properties": { - "text": "" - }, - "widgets_values": [ - "see above for additional example configuration of this node that i left behind. You can do a lot" - ], - "color": "#432", - "bgcolor": "#653" - }, - { - "id": 173, - "type": "GetImageSizeAndCount", - "pos": [ - 7108, - 435 - ], - "size": { - "0": 210, - "1": 86 - }, - "flags": {}, - "order": 139, - "mode": 0, - "inputs": [ - { - "name": "image", - "type": "IMAGE", - "link": 278 - } - ], - "outputs": [ - { - "name": "image", - "type": "IMAGE", - "links": [ - 287 - ], - "shape": 3, - "slot_index": 0 - }, - { - "name": "1584 width", - "type": "INT", - "links": [ - 283 - ], - "shape": 3, - "slot_index": 1 - }, - { - "name": "888 height", - "type": "INT", - "links": [ - 284 - ], - "shape": 3, - "slot_index": 2 - }, - { - "name": "90 count", - "type": "INT", - "links": null, - "shape": 3 - } - ], - "properties": { - "Node name for S&R": "GetImageSizeAndCount" - } - }, - { - "id": 170, - "type": "ImageCompositeMasked", - "pos": [ - 7981, - 278 - ], - "size": { - "0": 315, - "1": 146 - }, - "flags": {}, - "order": 141, - "mode": 0, - "inputs": [ - { - "name": "destination", - "type": "IMAGE", - "link": 285 - }, - { - "name": "source", - "type": "IMAGE", - "link": 287 - }, - { - "name": "mask", - "type": "MASK", - "link": 274 - } - ], - "outputs": [ - { - "name": "IMAGE", - "type": "IMAGE", - "links": [ - 295 - ], - "shape": 3, - "slot_index": 0 - } - ], - "properties": { - "Node name for S&R": "ImageCompositeMasked" - }, - "widgets_values": [ - 0, - 0, - false - ] - }, - { - "id": 194, - "type": "GetNode", - "pos": { - "0": 8749, - "1": 664, - "2": 0, - "3": 0, - "4": 0, - "5": 0, - "6": 0, - "7": 0, - "8": 0, - "9": 0 - }, - "size": { - "0": 210, - "1": 58 - }, - "flags": {}, - "order": 20, - "mode": 0, - "inputs": [], - "outputs": [ - { - "name": "AUDIO", - "type": "AUDIO", - "links": [ - 336 - ], - "slot_index": 0 - } - ], - "title": "Get_audio", - "properties": {}, - "widgets_values": [ - "audio" - ] - }, - { - "id": 99, - "type": "Reroute", - "pos": [ - 6315, - 43 - ], - "size": [ - 75, - 26 - ], - "flags": {}, - "order": 129, - "mode": 0, - "inputs": [ - { - "name": "", - "type": "*", - "link": 150 - } - ], - "outputs": [ - { - "name": "", - "type": "MASK", - "links": [ - 154, - 273 - ], - "slot_index": 0 - } - ], - "properties": { - "showOutputText": false, - "horizontal": false - } - }, - { - "id": 98, - "type": "Reroute", - "pos": [ - 5181, - 38 - ], - "size": [ - 75, - 26 - ], - "flags": {}, - "order": 128, - "mode": 0, - "inputs": [ - { - "name": "", - "type": "*", - "link": 149 - } - ], - "outputs": [ - { - "name": "", - "type": "MASK", - "links": [ - 150, - 151 - ], - "slot_index": 0 - } - ], - "properties": { - "showOutputText": false, - "horizontal": false - } - }, - { - "id": 97, - "type": "Reroute", - "pos": [ - 2861, - 33 - ], - "size": [ - 75, - 26 - ], - "flags": {}, - "order": 127, - "mode": 0, - "inputs": [ - { - "name": "", - "type": "*", - "link": 518 - } - ], - "outputs": [ - { - "name": "", - "type": "MASK", - "links": [ - 149 - ], - "slot_index": 0 - } - ], - "properties": { - "showOutputText": false, - "horizontal": false - } - }, - { - "id": 175, - "type": "Reroute", - "pos": [ - 2863, - -7 - ], - "size": [ - 75, - 26 - ], - "flags": {}, - "order": 49, - "mode": 0, - "inputs": [ - { - "name": "", - "type": "*", - "link": 311 - } - ], - "outputs": [ - { - "name": "", - "type": "IMAGE", - "links": [ - 289 - ], - "slot_index": 0 - } - ], - "properties": { - "showOutputText": false, - "horizontal": false - } - }, - { - "id": 246, - "type": "GetNode", - "pos": { - "0": -2131.515869140625, - "1": -988.43212890625, - "2": 0, - "3": 0, - "4": 0, - "5": 0, - "6": 0, - "7": 0, - "8": 0, - "9": 0 - }, - "size": { - "0": 210, - "1": 58 - }, - "flags": {}, - "order": 21, - "mode": 0, - "inputs": [], - "outputs": [ - { - "name": "IMAGE", - "type": "IMAGE", - "links": [ - 439 - ], - "slot_index": 0 - } - ], - "title": "Get_init_images_resize", - "properties": {}, - "widgets_values": [ - "init_images_resize" - ] - }, - { - "id": 52, - "type": "SetNode", - "pos": { - "0": -2435.7626953125, - "1": -992, - "2": 0, - "3": 0, - "4": 0, - "5": 0, - "6": 0, - "7": 0, - "8": 0, - "9": 0 - }, - "size": { - "0": 210, - "1": 58 - }, - "flags": {}, - "order": 108, - "mode": 0, - "inputs": [ - { - "name": "IMAGE", - "type": "IMAGE", - "link": 303 - } - ], - "outputs": [ - { - "name": "*", - "type": "*", - "links": null - } - ], - "title": "Set_lineart", - "properties": { - "previousName": "lineart" - }, - "widgets_values": [ - "lineart" - ] - }, - { - "id": 43, - "type": "CR Apply LoRA Stack", - "pos": [ - 1524, - 612 - ], - "size": { - "0": 254.40000915527344, - "1": 66 - }, - "flags": {}, - "order": 61, - "mode": 0, - "inputs": [ - { - "name": "model", - "type": "MODEL", - "link": 60 - }, - { - "name": "clip", - "type": "CLIP", - "link": 61 - }, - { - "name": "lora_stack", - "type": "LORA_STACK", - "link": 62 - } - ], - "outputs": [ - { - "name": "MODEL", - "type": "MODEL", - "links": [ - 65 - ], - "shape": 3, - "slot_index": 0 - }, - { - "name": "CLIP", - "type": "CLIP", - "links": [ - 63, - 64 - ], - "shape": 3, - "slot_index": 1 - }, - { - "name": "show_help", - "type": "STRING", - "links": null, - "shape": 3 - } - ], - "properties": { - "Node name for S&R": "CR Apply LoRA Stack" - } - }, - { - "id": 77, - "type": "GetNode", - "pos": { - "0": 1017, - "1": 270, - "2": 0, - "3": 0, - "4": 0, - "5": 0, - "6": 0, - "7": 0, - "8": 0, - "9": 0 - }, - "size": { - "0": 210, - "1": 58 - }, - "flags": {}, - "order": 22, - "mode": 0, - "inputs": [], - "outputs": [ - { - "name": "IMAGE", - "type": "IMAGE", - "links": [ - 310, - 311 - ], - "slot_index": 0 - } - ], - "title": "Get_init_images_resize", - "properties": {}, - "widgets_values": [ - "init_images_resize" - ] - }, - { - "id": 193, - "type": "GetNode", - "pos": { - "0": 5864, - "1": 647, - "2": 0, - "3": 0, - "4": 0, - "5": 0, - "6": 0, - "7": 0, - "8": 0, - "9": 0 - }, - "size": { - "0": 210, - "1": 58 - }, - "flags": {}, - "order": 23, - "mode": 0, - "inputs": [], - "outputs": [ - { - "name": "AUDIO", - "type": "AUDIO", - "links": [ - 335 - ], - "slot_index": 0 - } - ], - "title": "Get_audio", - "properties": {}, - "widgets_values": [ - "audio" - ] - }, - { - "id": 245, - "type": "GetNode", - "pos": { - "0": -2132.515869140625, - "1": -495.4327392578125, - "2": 0, - "3": 0, - "4": 0, - "5": 0, - "6": 0, - "7": 0, - "8": 0, - "9": 0 - }, - "size": { - "0": 210, - "1": 58 - }, - "flags": {}, - "order": 24, - "mode": 0, - "inputs": [], - "outputs": [ - { - "name": "MASK", - "type": "MASK", - "links": [ - 438 - ], - "slot_index": 0 - } - ], - "title": "Get_mask_anchor", - "properties": {}, - "widgets_values": [ - "mask_anchor" - ] - }, - { - "id": 12, - "type": "VAEEncode", - "pos": [ - 1562, - 458 - ], - "size": { - "0": 210, - "1": 46 - }, - "flags": {}, - "order": 50, - "mode": 0, - "inputs": [ - { - "name": "pixels", - "type": "IMAGE", - "link": 310 - }, - { - "name": "vae", - "type": "VAE", - "link": 12 - } - ], - "outputs": [ - { - "name": "LATENT", - "type": "LATENT", - "links": [ - 467 - ], - "shape": 3, - "slot_index": 0 - } - ], - "properties": { - "Node name for S&R": "VAEEncode" - } - }, - { - "id": 256, - "type": "Reroute", - "pos": [ - 2867.44374280025, - -38.29445145366094 - ], - "size": [ - 75, - 26 - ], - "flags": {}, - "order": 67, - "mode": 0, - "inputs": [ - { - "name": "", - "type": "*", - "link": 467 - } - ], - "outputs": [ - { - "name": "", - "type": "LATENT", - "links": [ - 468 - ], - "slot_index": 0 - } - ], - "properties": { - "showOutputText": false, - "horizontal": false - } - }, - { - "id": 257, - "type": "Reroute", - "pos": [ - 4204, - -40 - ], - "size": [ - 75, - 26 - ], - "flags": {}, - "order": 76, - "mode": 0, - "inputs": [ - { - "name": "", - "type": "*", - "link": 468 - } - ], - "outputs": [ - { - "name": "", - "type": "LATENT", - "links": [ - 469 - ], - "slot_index": 0 - } - ], - "properties": { - "showOutputText": false, - "horizontal": false - } - }, - { - "id": 258, - "type": "Reroute", - "pos": [ - 5027, - -40 - ], - "size": [ - 75, - 26 - ], - "flags": {}, - "order": 85, - "mode": 0, - "inputs": [ - { - "name": "", - "type": "*", - "link": 469 - } - ], - "outputs": [ - { - "name": "", - "type": "LATENT", - "links": [ - 470 - ], - "slot_index": 0 - } - ], - "properties": { - "showOutputText": false, - "horizontal": false - } - }, - { - "id": 7, - "type": "CLIPTextEncode", - "pos": [ - 1937, - 702 - ], - "size": { - "0": 425.27801513671875, - "1": 180.6060791015625 - }, - "flags": {}, - "order": 75, - "mode": 0, - "inputs": [ - { - "name": "clip", - "type": "CLIP", - "link": 64 - } - ], - "outputs": [ - { - "name": "CONDITIONING", - "type": "CONDITIONING", - "links": [ - 86 - ], - "slot_index": 0 - } - ], - "properties": { - "Node name for S&R": "CLIPTextEncode" - }, - "widgets_values": [ - "text, watermark" - ] - }, - { - "id": 4, - "type": "CheckpointLoaderSimple", - "pos": [ - 1094, - 453 - ], - "size": { - "0": 315, - "1": 98 - }, - "flags": {}, - "order": 25, - "mode": 0, - "outputs": [ - { - "name": "MODEL", - "type": "MODEL", - "links": [ - 60 - ], - "slot_index": 0 - }, - { - "name": "CLIP", - "type": "CLIP", - "links": [ - 61 - ], - "slot_index": 1 - }, - { - "name": "VAE", - "type": "VAE", - "links": [ - 12, - 133 - ], - "slot_index": 2 - } - ], - "properties": { - "Node name for S&R": "CheckpointLoaderSimple" - }, - "widgets_values": [ - "photon_v1.safetensors" - ] - }, - { - "id": 8, - "type": "VAEDecode", - "pos": [ - 5898, - 437 - ], - "size": { - "0": 210, - "1": 46 - }, - "flags": {}, - "order": 133, - "mode": 0, - "inputs": [ - { - "name": "samples", - "type": "LATENT", - "link": 100 - }, - { - "name": "vae", - "type": "VAE", - "link": 138 - } - ], - "outputs": [ - { - "name": "IMAGE", - "type": "IMAGE", - "links": [ - 13 - ], - "slot_index": 0 - } - ], - "properties": { - "Node name for S&R": "VAEDecode" - } - }, - { - "id": 59, - "type": "Apply ControlNet Stack", - "pos": [ - 2411, - 622 - ], - "size": { - "0": 304.79998779296875, - "1": 66 - }, - "flags": {}, - "order": 84, - "mode": 0, - "inputs": [ - { - "name": "positive", - "type": "CONDITIONING", - "link": 85 - }, - { - "name": "negative", - "type": "CONDITIONING", - "link": 86 - }, - { - "name": "cnet_stack", - "type": "CONTROL_NET_STACK", - "link": 84, - "slot_index": 2 - } - ], - "outputs": [ - { - "name": "CONDITIONING+", - "type": "CONDITIONING", - "links": [ - 134 - ], - "shape": 3, - "slot_index": 0 - }, - { - "name": "CONDITIONING-", - "type": "CONDITIONING", - "links": [ - 135 - ], - "shape": 3, - "slot_index": 1 - } - ], - "properties": { - "Node name for S&R": "Apply ControlNet Stack", - "ttNbgOverride": { - "color": "#2a363b", - "bgcolor": "#3f5159", - "groupcolor": "#3f789e" - } - }, - "shape": 1 - }, - { - "id": 176, - "type": "Reroute", - "pos": [ - 7423, - 2 - ], - "size": [ - 75, - 26 - ], - "flags": {}, - "order": 66, - "mode": 0, - "inputs": [ - { - "name": "", - "type": "*", - "link": 289 - } - ], - "outputs": [ - { - "name": "", - "type": "IMAGE", - "links": [ - 509 - ], - "slot_index": 0 - } - ], - "properties": { - "showOutputText": false, - "horizontal": false - } - }, - { - "id": 277, - "type": "Reroute", - "pos": [ - -850, - -130 - ], - "size": [ - 75, - 26 - ], - "flags": {}, - "order": 112, - "mode": 0, - "inputs": [ - { - "name": "", - "type": "*", - "link": 506 - } - ], - "outputs": [ - { - "name": "", - "type": "LOCATION", - "links": [ - 511 - ], - "slot_index": 0 - } - ], - "properties": { - "showOutputText": false, - "horizontal": false - } - }, - { - "id": 279, - "type": "Reroute", - "pos": [ - -850, - -100 - ], - "size": [ - 75, - 26 - ], - "flags": {}, - "order": 114, - "mode": 0, - "inputs": [ - { - "name": "", - "type": "*", - "link": 508 - } - ], - "outputs": [ - { - "name": "", - "type": "FEATURE", - "links": [ - 512 - ], - "slot_index": 0 - } - ], - "properties": { - "showOutputText": false, - "horizontal": false - } - }, - { - "id": 280, - "type": "Reroute", - "pos": [ - 7970, - -110 - ], - "size": [ - 75, - 26 - ], - "flags": {}, - "order": 113, - "mode": 0, - "inputs": [ - { - "name": "", - "type": "*", - "link": 510 - } - ], - "outputs": [ - { - "name": "", - "type": "LOCATION", - "links": [ - 513 - ], - "slot_index": 0 - } - ], - "properties": { - "showOutputText": false, - "horizontal": false - } - }, - { - "id": 281, - "type": "Reroute", - "pos": [ - 7970, - -80 - ], - "size": [ - 75, - 26 - ], - "flags": {}, - "order": 118, - "mode": 0, - "inputs": [ - { - "name": "", - "type": "*", - "link": 511 - } - ], - "outputs": [ - { - "name": "", - "type": "LOCATION", - "links": [ - 514 - ], - "slot_index": 0 - } - ], - "properties": { - "showOutputText": false, - "horizontal": false - } - }, - { - "id": 282, - "type": "Reroute", - "pos": [ - 7970, - -50 - ], - "size": [ - 75, - 26 - ], - "flags": {}, - "order": 119, - "mode": 0, - "inputs": [ - { - "name": "", - "type": "*", - "link": 512 - } - ], - "outputs": [ - { - "name": "", - "type": "FEATURE", - "links": [ - 515 - ], - "slot_index": 0 - } - ], - "properties": { - "showOutputText": false, - "horizontal": false - } - }, - { - "id": 111, - "type": "ImageCASharpening+", - "pos": [ - 8503, - 537 - ], - "size": { - "0": 310.79998779296875, - "1": 58 - }, - "flags": {}, - "order": 142, - "mode": 0, - "inputs": [ - { - "name": "image", - "type": "IMAGE", - "link": 295 - } - ], - "outputs": [ - { - "name": "IMAGE", - "type": "IMAGE", - "links": [ - 298, - 516 - ], - "shape": 3, - "slot_index": 0 - } - ], - "properties": { - "Node name for S&R": "ImageCASharpening+" - }, - "widgets_values": [ - 0.8 - ] - }, - { - "id": 278, - "type": "Reroute", - "pos": [ - -850, - -160 - ], - "size": [ - 75, - 26 - ], - "flags": {}, - "order": 110, - "mode": 0, - "inputs": [ - { - "name": "", - "type": "*", - "link": 507 - } - ], - "outputs": [ - { - "name": "", - "type": "LOCATION", - "links": [ - 510 - ], - "slot_index": 0 - } - ], - "properties": { - "showOutputText": false, - "horizontal": false - } - }, - { - "id": 39, - "type": "ADE_AnimateDiffLoRALoader", - "pos": [ - 3114, - 356 - ], - "size": { - "0": 261.19134521484375, - "1": 82 - }, - "flags": {}, - "order": 26, - "mode": 0, - "inputs": [ - { - "name": "prev_motion_lora", - "type": "MOTION_LORA", - "link": null - } - ], - "outputs": [ - { - "name": "MOTION_LORA", - "type": "MOTION_LORA", - "links": [ - 45 - ], - "shape": 3, - "slot_index": 0 - } - ], - "title": "AnimateDiff LoRA", - "properties": { - "Node name for S&R": "ADE_AnimateDiffLoRALoader", - "ttNbgOverride": { - "color": "#2a363b", - "bgcolor": "#3f5159", - "groupcolor": "#3f789e" - } - }, - "widgets_values": [ - "LiquidAF-0-1.safetensors", - 0.8, - "" - ] - }, - { - "id": 186, - "type": "GetNode", - "pos": { - "0": 500, - "1": -462, - "2": 0, - "3": 0, - "4": 0, - "5": 0, - "6": 0, - "7": 0, - "8": 0, - "9": 0 - }, - "size": { - "0": 210, - "1": 58 - }, - "flags": {}, - "order": 27, - "mode": 0, - "inputs": [], - "outputs": [ - { - "name": "AUDIO", - "type": "AUDIO", - "links": [ - 323 - ], - "slot_index": 0 - } - ], - "title": "Get_audio", - "properties": {}, - "widgets_values": [ - "audio" - ] - }, - { - "id": 91, - "type": "Reroute", - "pos": [ - 5633, - 74 - ], - "size": [ - 75, - 26 - ], - "flags": {}, - "order": 68, - "mode": 0, - "inputs": [ - { - "name": "", - "type": "*", - "link": 136 - } - ], - "outputs": [ - { - "name": "", - "type": "VAE", - "links": [ - 137, - 138 - ], - "slot_index": 0 - } - ], - "properties": { - "showOutputText": false, - "horizontal": false - } - }, - { - "id": 92, - "type": "Reroute", - "pos": [ - 6757, - 74 - ], - "size": [ - 75, - 26 - ], - "flags": {}, - "order": 77, - "mode": 0, - "inputs": [ - { - "name": "", - "type": "*", - "link": 137 - } - ], - "outputs": [ - { - "name": "", - "type": "VAE", - "links": [ - 147 - ], - "slot_index": 0 - } - ], - "properties": { - "showOutputText": false, - "horizontal": false - } - }, - { - "id": 117, - "type": "Note", - "pos": [ - 180, - 232 - ], - "size": { - "0": 565.3340454101562, - "1": 455.6415710449219 - }, - "flags": {}, - "order": 28, - "mode": 0, - "properties": { - "text": "" - }, - "widgets_values": [ - "0. In this workflow we demonstrate a way to use FlexMaskDepthChamber in combination with a proximity feature, both introduced by my node pack. \n\nBe sure to click the \"?\" icons for information about the nodes\n\nGive her a star https://github.com/ryanontheinside/ComfyUI_RyanOnTheInside\n\nFor other tutorials \nhttps://civitai.com/user/ryanontheinside\nhttps://www.youtube.com/@ryanontheinside" - ], - "color": "#432", - "bgcolor": "#653" - }, - { - "id": 64, - "type": "ImageScale", - "pos": [ - 4420.911603734175, - 290.661003053677 - ], - "size": { - "0": 315, - "1": 130 - }, - "flags": {}, - "order": 52, - "mode": 4, - "inputs": [ - { - "name": "image", - "type": "IMAGE", - "link": 521, - "slot_index": 0 - } - ], - "outputs": [ - { - "name": "IMAGE", - "type": "IMAGE", - "links": [ - 98 - ], - "shape": 3, - "slot_index": 0 - } - ], - "properties": { - "Node name for S&R": "ImageScale" - }, - "widgets_values": [ - "nearest-exact", - 1000, - 1000, - "disabled" - ] - }, - { - "id": 13, - "type": "VHS_VideoCombine", - "pos": [ - 6185, - 452 - ], - "size": [ - 210, - 430 - ], - "flags": {}, - "order": 135, - "mode": 0, - "inputs": [ - { - "name": "images", - "type": "IMAGE", - "link": 13 - }, - { - "name": "audio", - "type": "AUDIO", - "link": 335 - }, - { - "name": "meta_batch", - "type": "VHS_BatchManager", - "link": null - }, - { - "name": "vae", - "type": "VAE", - "link": null - } - ], - "outputs": [ - { - "name": "Filenames", - "type": "VHS_FILENAMES", - "links": null, - "shape": 3 - } - ], - "properties": { - "Node name for S&R": "VHS_VideoCombine" - }, - "widgets_values": { - "frame_rate": 15, - "loop_count": 0, - "filename_prefix": "AnimateDiff", - "format": "video/h264-mp4", - "pix_fmt": "yuv420p", - "crf": 19, - "save_metadata": true, - "pingpong": false, - "save_output": true, - "videopreview": { - "hidden": false, - "paused": false, - "params": { - "filename": "AnimateDiff_03715.mp4", - "subfolder": "", - "type": "output", - "format": "video/h264-mp4", - "frame_rate": 15 - } - } - } - }, - { - "id": 230, - "type": "PreviewFeature", - "pos": [ - -1000, - -919 - ], - "size": { - "0": 315, - "1": 58 - }, - "flags": {}, - "order": 115, - "mode": 0, - "inputs": [ - { - "name": "feature", - "type": "FEATURE", - "link": 527 - } - ], - "outputs": [ - { - "name": "FEATURE_PREVIEW", - "type": "IMAGE", - "links": [ - 528 - ], - "shape": 3, - "slot_index": 0 - } - ], - "properties": { - "Node name for S&R": "PreviewFeature" - }, - "widgets_values": [ - false - ], - "color": "#322", - "bgcolor": "#533" - }, - { - "id": 47, - "type": "Control Net Stacker", - "pos": [ - 1346, - 1457.8269519976366 - ], - "size": { - "0": 315, - "1": 146 - }, - "flags": {}, - "order": 46, - "mode": 0, - "inputs": [ - { - "name": "control_net", - "type": "CONTROL_NET", - "link": 76, - "slot_index": 0 - }, - { - "name": "image", - "type": "IMAGE", - "link": 81 - }, - { - "name": "cnet_stack", - "type": "CONTROL_NET_STACK", - "link": null - } - ], - "outputs": [ - { - "name": "CNET_STACK", - "type": "CONTROL_NET_STACK", - "links": [ - 83 - ], - "shape": 3, - "slot_index": 0 - } - ], - "properties": { - "Node name for S&R": "Control Net Stacker" - }, - "widgets_values": [ - 0.48, - 0, - 0.534 - ], - "color": "#223322", - "bgcolor": "#335533", - "shape": 1 - }, - { - "id": 55, - "type": "Control Net Stacker", - "pos": [ - 1717, - 1454 - ], - "size": { - "0": 315, - "1": 146 - }, - "flags": {}, - "order": 62, - "mode": 0, - "inputs": [ - { - "name": "control_net", - "type": "CONTROL_NET", - "link": 80, - "slot_index": 0 - }, - { - "name": "image", - "type": "IMAGE", - "link": 82 - }, - { - "name": "cnet_stack", - "type": "CONTROL_NET_STACK", - "link": 83 - } - ], - "outputs": [ - { - "name": "CNET_STACK", - "type": "CONTROL_NET_STACK", - "links": [ - 84 - ], - "shape": 3, - "slot_index": 0 - } - ], - "properties": { - "Node name for S&R": "Control Net Stacker" - }, - "widgets_values": [ - 0.48, - 0, - 0.47900000000000004 - ], - "color": "#223322", - "bgcolor": "#335533", - "shape": 1 - }, - { - "id": 287, - "type": "LoadImage", - "pos": [ - 4053, - 275 - ], - "size": { - "0": 315, - "1": 314 - }, - "flags": {}, - "order": 29, - "mode": 4, - "outputs": [ - { - "name": "IMAGE", - "type": "IMAGE", - "links": [ - 521 - ], - "shape": 3 - }, - { - "name": "MASK", - "type": "MASK", - "links": null, - "shape": 3 - } - ], - "properties": { - "Node name for S&R": "LoadImage" - }, - "widgets_values": [ - "dmtvis1.webp", - "image" - ] - }, - { - "id": 304, - "type": "GetImageSizeAndCount", - "pos": [ - -5019, - 200 - ], - "size": { - "0": 210, - "1": 86 - }, - "flags": {}, - "order": 57, - "mode": 0, - "inputs": [ - { - "name": "image", - "type": "IMAGE", - "link": 551 - } - ], - "outputs": [ - { - "name": "image", - "type": "IMAGE", - "links": null, - "shape": 3 - }, - { - "name": "960 width", - "type": "INT", - "links": [ - 552 - ], - "shape": 3, - "slot_index": 1 - }, - { - "name": "540 height", - "type": "INT", - "links": [ - 553 - ], - "shape": 3, - "slot_index": 2 - }, - { - "name": "90 count", - "type": "INT", - "links": [ - 554 - ], - "shape": 3, - "slot_index": 3 - } - ], - "properties": { - "Node name for S&R": "GetImageSizeAndCount" - } - }, - { - "id": 306, - "type": "_mfc", - "pos": [ - -5061, - 536 - ], - "size": { - "0": 315, - "1": 150 - }, - "flags": {}, - "order": 80, - "mode": 0, - "inputs": [ - { - "name": "image", - "type": "IMAGE", - "link": 555 - } - ], - "outputs": [ - { - "name": "MASK", - "type": "MASK", - "links": [ - 556 - ], - "shape": 3, - "slot_index": 0 - }, - { - "name": "IMAGE", - "type": "IMAGE", - "links": null, - "shape": 3 - } - ], - "properties": { - "Node name for S&R": "_mfc" - }, - "widgets_values": [ - 255, - 255, - 255, - 0 - ] - }, - { - "id": 146, - "type": "SetNode", - "pos": { - "0": -2690, - "1": -879, - "2": 0, - "3": 0, - "4": 0, - "5": 0, - "6": 0, - "7": 0, - "8": 0, - "9": 0 - }, - "size": { - "0": 210, - "1": 58 - }, - "flags": {}, - "order": 53, - "mode": 0, - "inputs": [ - { - "name": "DAMODEL", - "type": "DAMODEL", - "link": 234 - } - ], - "outputs": [ - { - "name": "*", - "type": "*", - "links": null - } - ], - "title": "Set_DA_MODEL", - "properties": { - "previousName": "DA_MODEL" - }, - "widgets_values": [ - "DA_MODEL" - ] - }, - { - "id": 15, - "type": "DownloadAndLoadDepthAnythingV2Model", - "pos": [ - -3434, - -760 - ], - "size": { - "0": 315, - "1": 58 - }, - "flags": {}, - "order": 30, - "mode": 0, - "outputs": [ - { - "name": "da_v2_model", - "type": "DAMODEL", - "links": [ - 15, - 234 - ], - "shape": 3, - "slot_index": 0 - } - ], - "properties": { - "Node name for S&R": "DownloadAndLoadDepthAnythingV2Model" - }, - "widgets_values": [ - "depth_anything_v2_vitl_fp32.safetensors" - ] - }, - { - "id": 318, - "type": "ImageCompositeMasked", - "pos": [ - -3383, - -482 - ], - "size": { - "0": 315, - "1": 146 - }, - "flags": {}, - "order": 96, - "mode": 0, - "inputs": [ - { - "name": "destination", - "type": "IMAGE", - "link": 576 - }, - { - "name": "source", - "type": "IMAGE", - "link": 575 - }, - { - "name": "mask", - "type": "MASK", - "link": 574 - } - ], - "outputs": [ - { - "name": "IMAGE", - "type": "IMAGE", - "links": [ - 578 - ], - "shape": 3, - "slot_index": 0 - } - ], - "properties": { - "Node name for S&R": "ImageCompositeMasked" - }, - "widgets_values": [ - 0, - 0, - false - ] - }, - { - "id": 49, - "type": "SetNode", - "pos": { - "0": -2462, - "1": -458, - "2": 0, - "3": 0, - "4": 0, - "5": 0, - "6": 0, - "7": 0, - "8": 0, - "9": 0 - }, - "size": { - "0": 210, - "1": 58 - }, - "flags": {}, - "order": 99, - "mode": 0, - "inputs": [ - { - "name": "IMAGE", - "type": "IMAGE", - "link": 571 - } - ], - "outputs": [ - { - "name": "IMAGE", - "type": "IMAGE", - "links": [ - 458, - 573 - ], - "slot_index": 0 - } - ], - "title": "Set_depth_maps", - "properties": { - "previousName": "depth_maps" - }, - "widgets_values": [ - "depth_maps" - ] - }, - { - "id": 115, - "type": "Note", - "pos": [ - -3174, - -199 - ], - "size": { - "0": 363.1609191894531, - "1": 148.97213745117188 - }, - "flags": {}, - "order": 31, - "mode": 0, - "properties": { - "text": "" - }, - "widgets_values": [ - "2. We create some particles and fire them at one another. We add the particles to the depth map to give the model more to work with. For tutorials on the particle emitters, see my civitai page or youtube channel." - ], - "color": "#432", - "bgcolor": "#653" - }, - { - "id": 26, - "type": "IPAdapterAdvanced", - "pos": [ - 4798, - 303 - ], - "size": { - "0": 315, - "1": 278 - }, - "flags": {}, - "order": 88, - "mode": 4, - "inputs": [ - { - "name": "model", - "type": "MODEL", - "link": 57 - }, - { - "name": "ipadapter", - "type": "IPADAPTER", - "link": 58 - }, - { - "name": "image", - "type": "IMAGE", - "link": 98, - "slot_index": 2 - }, - { - "name": "image_negative", - "type": "IMAGE", - "link": null - }, - { - "name": "attn_mask", - "type": "MASK", - "link": null - }, - { - "name": "clip_vision", - "type": "CLIP_VISION", - "link": null - } - ], - "outputs": [ - { - "name": "MODEL", - "type": "MODEL", - "links": [ - 66, - 112 - ], - "shape": 3, - "slot_index": 0 - } - ], - "properties": { - "Node name for S&R": "IPAdapterAdvanced" - }, - "widgets_values": [ - 0.5, - "style transfer", - "concat", - 0, - 1, - "V only" - ] - }, - { - "id": 3, - "type": "KSampler", - "pos": [ - 5463, - 294 - ], - "size": { - "0": 315, - "1": 262 - }, - "flags": {}, - "order": 132, - "mode": 0, - "inputs": [ - { - "name": "model", - "type": "MODEL", - "link": 66 - }, - { - "name": "positive", - "type": "CONDITIONING", - "link": 140 - }, - { - "name": "negative", - "type": "CONDITIONING", - "link": 142 - }, - { - "name": "latent_image", - "type": "LATENT", - "link": 68 - } - ], - "outputs": [ - { - "name": "LATENT", - "type": "LATENT", - "links": [ - 100, - 246 - ], - "slot_index": 0 - } - ], - "properties": { - "Node name for S&R": "KSampler" - }, - "widgets_values": [ - 156680208700286, - "fixed", - 8, - 1, - "lcm", - "sgm_uniform", - 0.85 - ] - }, - { - "id": 104, - "type": "SetNode", - "pos": { - "0": -3789, - "1": -1046, - "2": 0, - "3": 0, - "4": 0, - "5": 0, - "6": 0, - "7": 0, - "8": 0, - "9": 0 - }, - "size": { - "0": 210, - "1": 58 - }, - "flags": {}, - "order": 54, - "mode": 0, - "inputs": [ - { - "name": "IMAGE", - "type": "IMAGE", - "link": 300 - } - ], - "outputs": [ - { - "name": "*", - "type": "*", - "links": null - } - ], - "title": "Set_init_img", - "properties": { - "previousName": "init_img" - }, - "widgets_values": [ - "init_img" - ] - }, - { - "id": 76, - "type": "SetNode", - "pos": { - "0": -3793, - "1": -922, - "2": 0, - "3": 0, - "4": 0, - "5": 0, - "6": 0, - "7": 0, - "8": 0, - "9": 0 - }, - "size": { - "0": 210, - "1": 58 - }, - "flags": {}, - "order": 78, - "mode": 0, - "inputs": [ - { - "name": "IMAGE", - "type": "IMAGE", - "link": 302 - } - ], - "outputs": [ - { - "name": "*", - "type": "*", - "links": [], - "slot_index": 0 - } - ], - "title": "Set_init_images_resize", - "properties": { - "previousName": "init_images_resize" - }, - "widgets_values": [ - "init_images_resize" - ] - }, - { - "id": 185, - "type": "SetNode", - "pos": { - "0": -3801, - "1": -803, - "2": 0, - "3": 0, - "4": 0, - "5": 0, - "6": 0, - "7": 0, - "8": 0, - "9": 0 - }, - "size": { - "0": 210, - "1": 58 - }, - "flags": {}, - "order": 56, - "mode": 0, - "inputs": [ - { - "name": "AUDIO", - "type": "AUDIO", - "link": 322 - } - ], - "outputs": [ - { - "name": "*", - "type": "*", - "links": null - } - ], - "title": "Set_audio", - "properties": { - "previousName": "audio" - }, - "widgets_values": [ - "audio" - ] - }, - { - "id": 326, - "type": "GetNode", - "pos": { - "0": -4906.345703125, - "1": 1453.89306640625, - "2": 0, - "3": 0, - "4": 0, - "5": 0, - "6": 0, - "7": 0, - "8": 0, - "9": 0 - }, - "size": { - "0": 210, - "1": 58 - }, - "flags": {}, - "order": 32, - "mode": 0, - "inputs": [], - "outputs": [ - { - "name": "IMAGE", - "type": "IMAGE", - "links": [ - 591 - ], - "slot_index": 0 - } - ], - "title": "Get_init_images_resize", - "properties": {}, - "widgets_values": [ - "init_images_resize" - ] - }, - { - "id": 327, - "type": "Reroute", - "pos": [ - -848, - 53 - ], - "size": [ - 75, - 26 - ], - "flags": {}, - "order": 81, - "mode": 0, - "inputs": [ - { - "name": "", - "type": "*", - "link": 601 - } - ], - "outputs": [ - { - "name": "", - "type": "MASK", - "links": [ - 593 - ], - "slot_index": 0 - } - ], - "properties": { - "showOutputText": false, - "horizontal": false - } - }, - { - "id": 283, - "type": "Reroute", - "pos": [ - 1647, - 25 - ], - "size": [ - 75, - 26 - ], - "flags": {}, - "order": 126, - "mode": 0, - "inputs": [ - { - "name": "", - "type": "*", - "link": 596 - } - ], - "outputs": [ - { - "name": "", - "type": "MASK", - "links": [ - 518 - ], - "slot_index": 0 - } - ], - "properties": { - "showOutputText": false, - "horizontal": false - } - }, - { - "id": 321, - "type": "Reroute", - "pos": [ - 671, - 68 - ], - "size": [ - 75, - 26 - ], - "flags": {}, - "order": 92, - "mode": 0, - "inputs": [ - { - "name": "", - "type": "*", - "link": 585 - } - ], - "outputs": [ - { - "name": "", - "type": "MASK", - "links": [ - 594 - ], - "slot_index": 0 - } - ], - "properties": { - "showOutputText": false, - "horizontal": false - } - }, - { - "id": 71, - "type": "Note", - "pos": [ - -1494, - -555 - ], - "size": { - "0": 344.94537353515625, - "1": 142.8384552001953 - }, - "flags": {}, - "order": 33, - "mode": 0, - "properties": { - "text": "" - }, - "widgets_values": [ - "3. We create a proximity feature between our two masked objects" - ], - "color": "#432", - "bgcolor": "#653" - }, - { - "id": 333, - "type": "Note", - "pos": [ - 842, - -108 - ], - "size": [ - 504.4923902062144, - 62.73726822622507 - ], - "flags": {}, - "order": 34, - "mode": 0, - "properties": { - "text": "" - }, - "widgets_values": [ - "here we remove the SKY and add the PARTICLES to the area we are sampling." - ], - "color": "#432", - "bgcolor": "#653" - }, - { - "id": 179, - "type": "VHS_LoadVideo", - "pos": [ - -4974, - -1051 - ], - "size": [ - 362.49700291695535, - 468.27901918144863 - ], - "flags": {}, - "order": 35, - "mode": 0, - "inputs": [ - { - "name": "meta_batch", - "type": "VHS_BatchManager", - "link": null - }, - { - "name": "vae", - "type": "VAE", - "link": null - } - ], - "outputs": [ - { - "name": "IMAGE", - "type": "IMAGE", - "links": [ - 300, - 301 - ], - "shape": 3, - "slot_index": 0 - }, - { - "name": "frame_count", - "type": "INT", - "links": null, - "shape": 3 - }, - { - "name": "audio", - "type": "AUDIO", - "links": [ - 322 - ], - "shape": 3, - "slot_index": 2 - }, - { - "name": "video_info", - "type": "VHS_VIDEOINFO", - "links": [], - "shape": 3, - "slot_index": 3 - } - ], - "properties": { - "Node name for S&R": "VHS_LoadVideo" - }, - "widgets_values": { - "video": "pexels_bus.mp4", - "force_rate": 30, - "force_size": "Disabled", - "custom_width": 512, - "custom_height": 512, - "frame_load_cap": 90, - "skip_first_frames": 68, - "select_every_nth": 1, - "choose video to upload": "image", - "videopreview": { - "hidden": false, - "paused": false, - "params": { - "frame_load_cap": 90, - "skip_first_frames": 68, - "force_rate": 30, - "filename": "pexels_bus.mp4", - "type": "input", - "format": "video/mp4", - "select_every_nth": 1 - } - } - } - }, - { - "id": 6, - "type": "CLIPTextEncode", - "pos": [ - 1942, - 483 - ], - "size": { - "0": 422.84503173828125, - "1": 164.31304931640625 - }, - "flags": {}, - "order": 74, - "mode": 0, - "inputs": [ - { - "name": "clip", - "type": "CLIP", - "link": 63 - } - ], - "outputs": [ - { - "name": "CONDITIONING", - "type": "CONDITIONING", - "links": [ - 85 - ], - "slot_index": 0 - } - ], - "properties": { - "Node name for S&R": "CLIPTextEncode" - }, - "widgets_values": [ - "two orbs colliding over metallic delicate intricate pattern of lava in the shape a city street, made of fiery burning lava string, mesh, pattern, weave, thin, pale, pipes, machinery, industrial, complex, engineering, ral-lava " - ] - }, - { - "id": 305, - "type": "GetNode", - "pos": { - "0": -5011, - "1": 70, - "2": 0, - "3": 0, - "4": 0, - "5": 0, - "6": 0, - "7": 0, - "8": 0, - "9": 0 - }, - "size": { - "0": 210, - "1": 58 - }, - "flags": {}, - "order": 36, - "mode": 0, - "inputs": [], - "outputs": [ - { - "name": "IMAGE", - "type": "IMAGE", - "links": [ - 551 - ], - "slot_index": 0 - } - ], - "title": "Get_init_images_resize", - "properties": {}, - "widgets_values": [ - "init_images_resize" - ] - }, - { - "id": 303, - "type": "EmptyImage", - "pos": [ - -5057, - 332 - ], - "size": [ - 315, - 130 - ], - "flags": {}, - "order": 70, - "mode": 0, - "inputs": [ - { - "name": "width", - "type": "INT", - "link": 552, - "widget": { - "name": "width" - } - }, - { - "name": "height", - "type": "INT", - "link": 553, - "widget": { - "name": "height" - } - }, - { - "name": "batch_size", - "type": "INT", - "link": 554, - "widget": { - "name": "batch_size" - } - } - ], - "outputs": [ - { - "name": "IMAGE", - "type": "IMAGE", - "links": [ - 555 - ], - "shape": 3, - "slot_index": 0 - } - ], - "properties": { - "Node name for S&R": "EmptyImage" - }, - "widgets_values": [ - 512, - 512, - 1, - 0 - ] - }, - { - "id": 324, - "type": "GroundingDinoSAMSegment (segment anything)", - "pos": [ - -4485.345470156843, - 1294.8929658540392 - ], - "size": { - "0": 330, - "1": 122 - }, - "flags": {}, - "order": 58, - "mode": 0, - "inputs": [ - { - "name": "sam_model", - "type": "SAM_MODEL", - "link": 589 - }, - { - "name": "grounding_dino_model", - "type": "GROUNDING_DINO_MODEL", - "link": 590 - }, - { - "name": "image", - "type": "IMAGE", - "link": 591 - } - ], - "outputs": [ - { - "name": "IMAGE", - "type": "IMAGE", - "links": null, - "shape": 3 - }, - { - "name": "MASK", - "type": "MASK", - "links": [ - 600 - ], - "shape": 3, - "slot_index": 1 - } - ], - "properties": { - "Node name for S&R": "GroundingDinoSAMSegment (segment anything)" - }, - "widgets_values": [ - "sky", - 0.3 - ] - }, - { - "id": 325, - "type": "SAMModelLoader (segment anything)", - "pos": [ - -4938.345470156843, - 1216.8929658540392 - ], - "size": { - "0": 315, - "1": 58 - }, - "flags": {}, - "order": 37, - "mode": 0, - "outputs": [ - { - "name": "SAM_MODEL", - "type": "SAM_MODEL", - "links": [ - 589 - ], - "shape": 3, - "slot_index": 0 - } - ], - "properties": { - "Node name for S&R": "SAMModelLoader (segment anything)" - }, - "widgets_values": [ - "sam_vit_h (2.56GB)" - ] - }, - { - "id": 323, - "type": "GroundingDinoModelLoader (segment anything)", - "pos": [ - -4931.345470156843, - 1342.8929658540392 - ], - "size": { - "0": 315, - "1": 58 - }, - "flags": {}, - "order": 38, - "mode": 0, - "outputs": [ - { - "name": "GROUNDING_DINO_MODEL", - "type": "GROUNDING_DINO_MODEL", - "links": [ - 590 - ], - "shape": 3, - "slot_index": 0 - } - ], - "properties": { - "Node name for S&R": "GroundingDinoModelLoader (segment anything)" - }, - "widgets_values": [ - "GroundingDINO_SwinT_OGC (694MB)" - ] - }, - { - "id": 332, - "type": "SwapDevice", - "pos": [ - -4015.345470156843, - 1366.8929658540392 - ], - "size": { - "0": 315, - "1": 78 - }, - "flags": {}, - "order": 71, - "mode": 0, - "inputs": [ - { - "name": "image", - "type": "IMAGE", - "link": null - }, - { - "name": "mask", - "type": "MASK", - "link": 600 - } - ], - "outputs": [ - { - "name": "IMAGE", - "type": "IMAGE", - "links": null, - "shape": 3 - }, - { - "name": "MASK", - "type": "MASK", - "links": [ - 601 - ], - "shape": 3, - "slot_index": 1 - } - ], - "properties": { - "Node name for S&R": "SwapDevice" - }, - "widgets_values": [ - "cpu" - ] - }, - { - "id": 317, - "type": "VHS_VideoCombine", - "pos": [ - -2561, - 41 - ], - "size": [ - 210, - 432 - ], - "flags": {}, - "order": 100, - "mode": 0, - "inputs": [ - { - "name": "images", - "type": "IMAGE", - "link": 582 - }, - { - "name": "audio", - "type": "*", - "link": null - }, - { - "name": "meta_batch", - "type": "VHS_BatchManager", - "link": null - }, - { - "name": "vae", - "type": "VAE", - "link": null - } - ], - "outputs": [ - { - "name": "Filenames", - "type": "VHS_FILENAMES", - "links": null, - "shape": 3 - } - ], - "properties": { - "Node name for S&R": "VHS_VideoCombine" - }, - "widgets_values": { - "frame_rate": 15, - "loop_count": 0, - "filename_prefix": "AnimateDiff", - "format": "video/h264-mp4", - "pix_fmt": "yuv420p", - "crf": 14, - "save_metadata": true, - "pingpong": false, - "save_output": true, - "videopreview": { - "hidden": false, - "paused": false, - "params": { - "filename": "AnimateDiff_03697.mp4", - "subfolder": "", - "type": "output", - "format": "video/h264-mp4", - "frame_rate": 15 - } - } - } - }, - { - "id": 240, - "type": "LocationFromMask", - "pos": [ - -1895, - -686 - ], - "size": { - "0": 317.4000244140625, - "1": 122 - }, - "flags": {}, - "order": 106, - "mode": 0, - "inputs": [ - { - "name": "masks", - "type": "MASK", - "link": 438 - }, - { - "name": "depth_maps", - "type": "IMAGE", - "link": 458 - } - ], - "outputs": [ - { - "name": "LOCATION", - "type": "LOCATION", - "links": [ - 431, - 507 - ], - "shape": 3, - "slot_index": 0 - } - ], - "properties": { - "Node name for S&R": "LocationFromMask" - }, - "widgets_values": [ - "mask_boundary" - ], - "color": "#322", - "bgcolor": "#533" - }, - { - "id": 74, - "type": "GetNode", - "pos": { - "0": -342, - "1": -875, - "2": 0, - "3": 0, - "4": 0, - "5": 0, - "6": 0, - "7": 0, - "8": 0, - "9": 0 - }, - "size": { - "0": 210, - "1": 58 - }, - "flags": {}, - "order": 39, - "mode": 0, - "inputs": [], - "outputs": [ - { - "name": "IMAGE", - "type": "IMAGE", - "links": [ - 108, - 203 - ], - "slot_index": 0 - } - ], - "title": "Get_depth_maps", - "properties": {}, - "widgets_values": [ - "depth_maps" - ] - }, - { - "id": 336, - "type": "Reroute", - "pos": [ - -263, - -776 - ], - "size": [ - 75, - 26 - ], - "flags": {}, - "order": 116, - "mode": 0, - "inputs": [ - { - "name": "", - "type": "*", - "link": 603 - } - ], - "outputs": [ - { - "name": "", - "type": "FEATURE", - "links": [ - 605, - 607 - ], - "slot_index": 0 - } - ], - "properties": { - "showOutputText": false, - "horizontal": false - } - }, - { - "id": 337, - "type": "Reroute", - "pos": [ - -256, - -741 - ], - "size": [ - 75, - 26 - ], - "flags": {}, - "order": 117, - "mode": 0, - "inputs": [ - { - "name": "", - "type": "*", - "link": 604 - } - ], - "outputs": [ - { - "name": "", - "type": "FEATURE_PIPE", - "links": [ - 606, - 608 - ], - "slot_index": 0 - } - ], - "properties": { - "showOutputText": false, - "horizontal": false - } - }, - { - "id": 127, - "type": "FlexMaskDepthChamber", - "pos": [ - 368, - -826 - ], - "size": { - "0": 344.3999938964844, - "1": 310 - }, - "flags": {}, - "order": 121, - "mode": 0, - "inputs": [ - { - "name": "masks", - "type": "MASK", - "link": 200 - }, - { - "name": "feature", - "type": "FEATURE", - "link": 605 - }, - { - "name": "feature_pipe", - "type": "FEATURE_PIPE", - "link": 606 - }, - { - "name": "depth_map", - "type": "IMAGE", - "link": 203 - } - ], - "outputs": [ - { - "name": "MASK", - "type": "MASK", - "links": [ - 609 - ], - "shape": 3, - "slot_index": 0 - } - ], - "properties": { - "Node name for S&R": "FlexMaskDepthChamber" - }, - "widgets_values": [ - 1, - false, - 0, - 0, - 0, - 0.03, - 0, - "z_front", - "move_forward" - ], - "color": "#322", - "bgcolor": "#533" - }, - { - "id": 25, - "type": "MaskToImage", - "pos": [ - 1041, - -981 - ], - "size": { - "0": 210, - "1": 26 - }, - "flags": {}, - "order": 123, - "mode": 0, - "inputs": [ - { - "name": "mask", - "type": "MASK", - "link": 610 - } - ], - "outputs": [ - { - "name": "IMAGE", - "type": "IMAGE", - "links": [ - 37 - ], - "shape": 3, - "slot_index": 0 - } - ], - "properties": { - "Node name for S&R": "MaskToImage" - } - }, - { - "id": 24, - "type": "VHS_VideoCombine", - "pos": [ - 1293, - -888 - ], - "size": [ - 210, - 432 - ], - "flags": {}, - "order": 125, - "mode": 0, - "inputs": [ - { - "name": "images", - "type": "IMAGE", - "link": 37 - }, - { - "name": "audio", - "type": "*", - "link": 323 - }, - { - "name": "meta_batch", - "type": "VHS_BatchManager", - "link": null - }, - { - "name": "vae", - "type": "VAE", - "link": null - } - ], - "outputs": [ - { - "name": "Filenames", - "type": "VHS_FILENAMES", - "links": null, - "shape": 3 - } - ], - "properties": { - "Node name for S&R": "VHS_VideoCombine" - }, - "widgets_values": { - "frame_rate": 15, - "loop_count": 0, - "filename_prefix": "AnimateDiff", - "format": "video/h264-mp4", - "pix_fmt": "yuv420p", - "crf": 14, - "save_metadata": true, - "pingpong": false, - "save_output": true, - "videopreview": { - "hidden": false, - "paused": false, - "params": { - "filename": "AnimateDiff_03710.mp4", - "subfolder": "", - "type": "output", - "format": "video/h264-mp4", - "frame_rate": 15 - } - } - } - }, - { - "id": 68, - "type": "Note", - "pos": [ - -4399, - -662 - ], - "size": { - "0": 372.2613220214844, - "1": 154.43922424316406 - }, - "flags": {}, - "order": 40, - "mode": 0, - "properties": { - "text": "" - }, - "widgets_values": [ - "1. Downscale the input image so the KSampler doesnt explode, but downscale another copy of the image LESS. This is specifically for the depth maps, to avoid losing detail in the maps. Not actually sure if it makes a difference, but it sounds smart.\n" - ], - "color": "#432", - "bgcolor": "#653" - }, - { - "id": 17, - "type": "GetImageSizeAndCount", - "pos": [ - -4526, - -967 - ], - "size": { - "0": 210, - "1": 86 - }, - "flags": {}, - "order": 55, - "mode": 0, - "inputs": [ - { - "name": "image", - "type": "IMAGE", - "link": 301 - } - ], - "outputs": [ - { - "name": "image", - "type": "IMAGE", - "links": [ - 122 - ], - "shape": 3, - "slot_index": 0 - }, - { - "name": "1920 width", - "type": "INT", - "links": null, - "shape": 3, - "slot_index": 1 - }, - { - "name": "1080 height", - "type": "INT", - "links": null, - "shape": 3 - }, - { - "name": "90 count", - "type": "INT", - "links": [], - "shape": 3, - "slot_index": 3 - } - ], - "properties": { - "Node name for S&R": "GetImageSizeAndCount" - } - }, - { - "id": 82, - "type": "ImageResizeKJ", - "pos": [ - -4218, - -974 - ], - "size": { - "0": 310.7047424316406, - "1": 238 - }, - "flags": {}, - "order": 69, - "mode": 0, - "inputs": [ - { - "name": "image", - "type": "IMAGE", - "link": 122 - }, - { - "name": "get_image_size", - "type": "IMAGE", - "link": null - }, - { - "name": "width_input", - "type": "INT", - "link": null, - "widget": { - "name": "width_input" - } - }, - { - "name": "height_input", - "type": "INT", - "link": null, - "widget": { - "name": "height_input" - } - } - ], - "outputs": [ - { - "name": "IMAGE", - "type": "IMAGE", - "links": [ - 302, - 570, - 576 - ], - "shape": 3, - "slot_index": 0 - }, - { - "name": "width", - "type": "INT", - "links": null, - "shape": 3 - }, - { - "name": "height", - "type": "INT", - "links": null, - "shape": 3 - } - ], - "properties": { - "Node name for S&R": "ImageResizeKJ" - }, - "widgets_values": [ - 960, - 960, - "lanczos", - true, - 2, - 0, - 0, - "disabled" - ] - }, - { - "id": 307, - "type": "ParticleEmitter", - "pos": [ - -4655, - 45 - ], - "size": { - "0": 468.5999755859375, - "1": 382 - }, - "flags": {}, - "order": 60, - "mode": 0, - "inputs": [ - { - "name": "previous_emitter", - "type": "PARTICLE_EMITTER", - "link": 557 - }, - { - "name": "emitter_movement", - "type": "EMITTER_MOVEMENT", - "link": null - }, - { - "name": "spring_joint_setting", - "type": "SPRING_JOINT_SETTING", - "link": null - }, - { - "name": "particle_modulation", - "type": "PARTICLE_MODULATION", - "link": null - } - ], - "outputs": [ - { - "name": "PARTICLE_EMITTER", - "type": "PARTICLE_EMITTER", - "links": [ - 559 - ], - "shape": 3, - "slot_index": 0 - } - ], - "properties": { - "Node name for S&R": "ParticleEmitter" - }, - "widgets_values": [ - 1, - 0.35000000000000003, - 180, - 0, - 120, - 160, - 1, - "(255,0,0)", - 0, - 0, - 0, - 0 - ] - }, - { - "id": 308, - "type": "ParticleEmitter", - "pos": [ - -4643, - 489 - ], - "size": { - "0": 468.5999755859375, - "1": 382 - }, - "flags": {}, - "order": 41, - "mode": 0, - "inputs": [ - { - "name": "previous_emitter", - "type": "PARTICLE_EMITTER", - "link": null - }, - { - "name": "emitter_movement", - "type": "EMITTER_MOVEMENT", - "link": null - }, - { - "name": "spring_joint_setting", - "type": "SPRING_JOINT_SETTING", - "link": null - }, - { - "name": "particle_modulation", - "type": "PARTICLE_MODULATION", - "link": null - } - ], - "outputs": [ - { - "name": "PARTICLE_EMITTER", - "type": "PARTICLE_EMITTER", - "links": [ - 557 - ], - "shape": 3, - "slot_index": 0 - } - ], - "properties": { - "Node name for S&R": "ParticleEmitter" - }, - "widgets_values": [ - 0, - 0.35000000000000003, - 0, - 0, - 120, - 150, - 1, - "(0,0,255)", - 0, - 0, - 0, - 0 - ] - }, - { - "id": 301, - "type": "ParticleEmissionMask", - "pos": [ - -4080, - 92 - ], - "size": { - "0": 315, - "1": 474 - }, - "flags": {}, - "order": 86, - "mode": 0, - "inputs": [ - { - "name": "masks", - "type": "MASK", - "link": 556 - }, - { - "name": "emitters", - "type": "PARTICLE_EMITTER", - "link": 559, - "slot_index": 1 - }, - { - "name": "vortices", - "type": "VORTEX", - "link": null - }, - { - "name": "wells", - "type": "GRAVITY_WELL", - "link": null - }, - { - "name": "static_bodies", - "type": "STATIC_BODY", - "link": null - } - ], - "outputs": [ - { - "name": "MASK", - "type": "MASK", - "links": [ - 566, - 574, - 585 - ], - "shape": 3, - "slot_index": 0 - }, - { - "name": "IMAGE", - "type": "IMAGE", - "links": [ - 558, - 560, - 561, - 575 - ], - "shape": 3, - "slot_index": 1 - } - ], - "properties": { - "Node name for S&R": "ParticleEmissionMask" - }, - "widgets_values": [ - 1, - false, - 0, - 0, - 2, - 4, - 0, - 0, - 0, - 5, - 0, - 0, - false, - 1, - 1 - ] - }, - { - "id": 311, - "type": "_mfc", - "pos": [ - -3642, - 198 - ], - "size": { - "0": 315, - "1": 150 - }, - "flags": {}, - "order": 94, - "mode": 0, - "inputs": [ - { - "name": "image", - "type": "IMAGE", - "link": 560 - } - ], - "outputs": [ - { - "name": "MASK", - "type": "MASK", - "links": [ - 562 - ], - "shape": 3, - "slot_index": 0 - }, - { - "name": "IMAGE", - "type": "IMAGE", - "links": null, - "shape": 3 - } - ], - "properties": { - "Node name for S&R": "_mfc" - }, - "widgets_values": [ - 255, - 0, - 0, - 0 - ] - }, - { - "id": 312, - "type": "_mfc", - "pos": [ - -3628, - 466 - ], - "size": { - "0": 315, - "1": 150 - }, - "flags": {}, - "order": 95, - "mode": 0, - "inputs": [ - { - "name": "image", - "type": "IMAGE", - "link": 561 - } - ], - "outputs": [ - { - "name": "MASK", - "type": "MASK", - "links": [ - 563 - ], - "shape": 3, - "slot_index": 0 - }, - { - "name": "IMAGE", - "type": "IMAGE", - "links": null, - "shape": 3 - } - ], - "properties": { - "Node name for S&R": "_mfc" - }, - "widgets_values": [ - 0, - 0, - 255, - 0 - ] - }, - { - "id": 309, - "type": "VHS_VideoCombine", - "pos": [ - -2863, - 33 - ], - "size": [ - 210, - 432 - ], - "flags": {}, - "order": 93, - "mode": 0, - "inputs": [ - { - "name": "images", - "type": "IMAGE", - "link": 558 - }, - { - "name": "audio", - "type": "*", - "link": null - }, - { - "name": "meta_batch", - "type": "VHS_BatchManager", - "link": null - }, - { - "name": "vae", - "type": "VAE", - "link": null - } - ], - "outputs": [ - { - "name": "Filenames", - "type": "VHS_FILENAMES", - "links": null, - "shape": 3 - } - ], - "properties": { - "Node name for S&R": "VHS_VideoCombine" - }, - "widgets_values": { - "frame_rate": 15, - "loop_count": 0, - "filename_prefix": "AnimateDiff", - "format": "video/h264-mp4", - "pix_fmt": "yuv420p", - "crf": 14, - "save_metadata": true, - "pingpong": false, - "save_output": true, - "videopreview": { - "hidden": false, - "paused": false, - "params": { - "filename": "AnimateDiff_03696.mp4", - "subfolder": "", - "type": "output", - "format": "video/h264-mp4", - "frame_rate": 15 - } - } - } - }, - { - "id": 14, - "type": "DepthAnything_V2", - "pos": [ - -3385, - -616 - ], - "size": { - "0": 210, - "1": 46 - }, - "flags": {}, - "order": 79, - "mode": 0, - "inputs": [ - { - "name": "da_model", - "type": "DAMODEL", - "link": 15, - "slot_index": 0 - }, - { - "name": "images", - "type": "IMAGE", - "link": 570 - } - ], - "outputs": [ - { - "name": "image", - "type": "IMAGE", - "links": [ - 567 - ], - "shape": 3, - "slot_index": 0 - } - ], - "properties": { - "Node name for S&R": "DepthAnything_V2" - } - }, - { - "id": 314, - "type": "DepthShapeModifier", - "pos": [ - -2907, - -602 - ], - "size": { - "0": 315, - "1": 150 - }, - "flags": {}, - "order": 91, - "mode": 0, - "inputs": [ - { - "name": "depth_map", - "type": "IMAGE", - "link": 567 - }, - { - "name": "mask", - "type": "MASK", - "link": 566 - } - ], - "outputs": [ - { - "name": "IMAGE", - "type": "IMAGE", - "links": [ - 571, - 582 - ], - "shape": 3, - "slot_index": 0 - } - ], - "properties": { - "Node name for S&R": "DepthShapeModifier" - }, - "widgets_values": [ - 2, - 0, - 1, - 1 - ], - "color": "#322", - "bgcolor": "#533" - }, - { - "id": 319, - "type": "VHS_VideoCombine", - "pos": [ - -2283, - 48 - ], - "size": [ - 210, - 431 - ], - "flags": {}, - "order": 109, - "mode": 0, - "inputs": [ - { - "name": "images", - "type": "IMAGE", - "link": 583 - }, - { - "name": "audio", - "type": "*", - "link": null - }, - { - "name": "meta_batch", - "type": "VHS_BatchManager", - "link": null - }, - { - "name": "vae", - "type": "VAE", - "link": null - } - ], - "outputs": [ - { - "name": "Filenames", - "type": "VHS_FILENAMES", - "links": null, - "shape": 3 - } - ], - "properties": { - "Node name for S&R": "VHS_VideoCombine" - }, - "widgets_values": { - "frame_rate": 15, - "loop_count": 0, - "filename_prefix": "AnimateDiff", - "format": "video/h264-mp4", - "pix_fmt": "yuv420p", - "crf": 14, - "save_metadata": true, - "pingpong": false, - "save_output": true, - "videopreview": { - "hidden": false, - "paused": false, - "params": { - "filename": "AnimateDiff_03698.mp4", - "subfolder": "", - "type": "output", - "format": "video/h264-mp4", - "frame_rate": 15 - } - } - } - }, - { - "id": 50, - "type": "LineartStandardPreprocessor", - "pos": [ - -3121, - -1002 - ], - "size": { - "0": 315, - "1": 106 - }, - "flags": {}, - "order": 103, - "mode": 0, - "inputs": [ - { - "name": "image", - "type": "IMAGE", - "link": 578 - } - ], - "outputs": [ - { - "name": "IMAGE", - "type": "IMAGE", - "links": [ - 303, - 583 - ], - "shape": 3, - "slot_index": 0 - } - ], - "properties": { - "Node name for S&R": "LineartStandardPreprocessor" - }, - "widgets_values": [ - 6, - 8, - 512 - ] - }, - { - "id": 310, - "type": "SetNode", - "pos": { - "0": -3193, - "1": 175, - "2": 0, - "3": 0, - "4": 0, - "5": 0, - "6": 0, - "7": 0, - "8": 0, - "9": 0 - }, - "size": { - "0": 210, - "1": 58 - }, - "flags": {}, - "order": 101, - "mode": 0, - "inputs": [ - { - "name": "MASK", - "type": "MASK", - "link": 562 - } - ], - "outputs": [ - { - "name": "*", - "type": "*", - "links": null - } - ], - "title": "Set_mask_anchor", - "properties": { - "previousName": "mask_anchor" - }, - "widgets_values": [ - "mask_anchor" - ] - }, - { - "id": 243, - "type": "SetNode", - "pos": { - "0": -3205, - "1": 360, - "2": 0, - "3": 0, - "4": 0, - "5": 0, - "6": 0, - "7": 0, - "8": 0, - "9": 0 - }, - "size": { - "0": 210, - "1": 58 - }, - "flags": {}, - "order": 102, - "mode": 0, - "inputs": [ - { - "name": "MASK", - "type": "MASK", - "link": 563 - } - ], - "outputs": [ - { - "name": "*", - "type": "*", - "links": null - } - ], - "title": "Set_mask_query", - "properties": { - "previousName": "mask_query" - }, - "widgets_values": [ - "mask_query" - ] - }, - { - "id": 244, - "type": "GetNode", - "pos": { - "0": -2148, - "1": -877, - "2": 0, - "3": 0, - "4": 0, - "5": 0, - "6": 0, - "7": 0, - "8": 0, - "9": 0 - }, - "size": { - "0": 210, - "1": 58 - }, - "flags": {}, - "order": 42, - "mode": 0, - "inputs": [], - "outputs": [ - { - "name": "MASK", - "type": "MASK", - "links": [ - 437 - ], - "slot_index": 0 - } - ], - "title": "Get_mask_query", - "properties": {}, - "widgets_values": [ - "mask_query" - ] - }, - { - "id": 206, - "type": "ProximityFeatureNode", - "pos": [ - -1480, - -857 - ], - "size": { - "0": 430.8000183105469, - "1": 122 - }, - "flags": {}, - "order": 111, - "mode": 0, - "inputs": [ - { - "name": "video_frames", - "type": "IMAGE", - "link": 439 - }, - { - "name": "anchor_locations", - "type": "LOCATION", - "link": 431 - }, - { - "name": "query_locations", - "type": "LOCATION", - "link": 393 - } - ], - "outputs": [ - { - "name": "proximity_feature", - "type": "FEATURE", - "links": [ - 508, - 527, - 603 - ], - "shape": 3, - "slot_index": 0 - }, - { - "name": "feature_pipe", - "type": "FEATURE_PIPE", - "links": [ - 604 - ], - "shape": 3, - "slot_index": 1 - } - ], - "properties": { - "Node name for S&R": "ProximityFeatureNode" - }, - "widgets_values": [ - 30, - "minmax" - ], - "color": "#322", - "bgcolor": "#533" - }, - { - "id": 205, - "type": "LocationFromMask", - "pos": [ - -1880, - -907 - ], - "size": { - "0": 310.43048095703125, - "1": 95.0680160522461 - }, - "flags": {}, - "order": 107, - "mode": 0, - "inputs": [ - { - "name": "masks", - "type": "MASK", - "link": 437 - }, - { - "name": "depth_maps", - "type": "IMAGE", - "link": 573 - } - ], - "outputs": [ - { - "name": "LOCATION", - "type": "LOCATION", - "links": [ - 393, - 506 - ], - "shape": 3, - "slot_index": 0 - } - ], - "properties": { - "Node name for S&R": "LocationFromMask" - }, - "widgets_values": [ - "mask_boundary" - ], - "color": "#322", - "bgcolor": "#533" - }, - { - "id": 231, - "type": "PreviewImage", - "pos": [ - -950, - -748 - ], - "size": [ - 549.6893936852398, - 327.1048672679128 - ], - "flags": {}, - "order": 120, - "mode": 0, - "inputs": [ - { - "name": "images", - "type": "IMAGE", - "link": 528 - } - ], - "properties": { - "Node name for S&R": "PreviewImage" - } - }, - { - "id": 21, - "type": "_mfc", - "pos": [ - -51, - -655 - ], - "size": { - "0": 315, - "1": 150 - }, - "flags": {}, - "order": 82, - "mode": 0, - "inputs": [ - { - "name": "image", - "type": "IMAGE", - "link": 30 - } - ], - "outputs": [ - { - "name": "MASK", - "type": "MASK", - "links": [ - 200 - ], - "shape": 3, - "slot_index": 0 - }, - { - "name": "IMAGE", - "type": "IMAGE", - "links": null, - "shape": 3 - } - ], - "properties": { - "Node name for S&R": "_mfc" - }, - "widgets_values": [ - 0, - 0, - 0, - 0 - ], - "color": "#322", - "bgcolor": "#533" - }, - { - "id": 335, - "type": "FlexMaskWarp", - "pos": [ - 779, - -820 - ], - "size": { - "0": 315, - "1": 290 - }, - "flags": {}, - "order": 122, - "mode": 0, - "inputs": [ - { - "name": "masks", - "type": "MASK", - "link": 609 - }, - { - "name": "feature", - "type": "FEATURE", - "link": 607 - }, - { - "name": "feature_pipe", - "type": "FEATURE_PIPE", - "link": 608 - } - ], - "outputs": [ - { - "name": "MASK", - "type": "MASK", - "links": [ - 610, - 612 - ], - "shape": 3, - "slot_index": 0 - } - ], - "properties": { - "Node name for S&R": "FlexMaskWarp" - }, - "widgets_values": [ - 1, - false, - 0, - 0, - 0, - "perlin", - 0.1, - 500, - 3 - ], - "color": "#322", - "bgcolor": "#533" - }, - { - "id": 322, - "type": "MaskComposite", - "pos": [ - 814, - -1 - ], - "size": { - "0": 315, - "1": 126 - }, - "flags": {}, - "order": 87, - "mode": 0, - "inputs": [ - { - "name": "destination", - "type": "MASK", - "link": null - }, - { - "name": "source", - "type": "MASK", - "link": 593 - } - ], - "outputs": [ - { - "name": "MASK", - "type": "MASK", - "links": [], - "shape": 3, - "slot_index": 0 - } - ], - "properties": { - "Node name for S&R": "MaskComposite" - }, - "widgets_values": [ - 0, - 0, - "subtract" - ] - }, - { - "id": 328, - "type": "MaskComposite", - "pos": [ - 1200, - 37 - ], - "size": { - "0": 315, - "1": 126 - }, - "flags": {}, - "order": 124, - "mode": 0, - "inputs": [ - { - "name": "destination", - "type": "MASK", - "link": 594 - }, - { - "name": "source", - "type": "MASK", - "link": 612 - } - ], - "outputs": [ - { - "name": "MASK", - "type": "MASK", - "links": [ - 596 - ], - "shape": 3, - "slot_index": 0 - } - ], - "properties": { - "Node name for S&R": "MaskComposite" - }, - "widgets_values": [ - 0, - 0, - "add" - ] - }, - { - "id": 42, - "type": "CR LoRA Stack", - "pos": [ - 1069, - 680 - ], - "size": { - "0": 315, - "1": 342 - }, - "flags": {}, - "order": 43, - "mode": 0, - "inputs": [ - { - "name": "lora_stack", - "type": "LORA_STACK", - "link": null - } - ], - "outputs": [ - { - "name": "LORA_STACK", - "type": "LORA_STACK", - "links": [ - 62 - ], - "shape": 3, - "slot_index": 0 - }, - { - "name": "show_help", - "type": "STRING", - "links": null, - "shape": 3 - } - ], - "properties": { - "Node name for S&R": "CR LoRA Stack" - }, - "widgets_values": [ - "On", - "AnimateLCM_sd15_t2v_lora.safetensors", - 1, - 1, - "On", - "add_detail.safetensors", - 1, - 1, - "On", - "ral-lava-sd15.safetensors", - 1, - 1 - ] - }, - { - "id": 44, - "type": "SetLatentNoiseMask", - "pos": [ - 5200, - 365 - ], - "size": { - "0": 210, - "1": 46 - }, - "flags": {}, - "order": 130, - "mode": 0, - "inputs": [ - { - "name": "samples", - "type": "LATENT", - "link": 470 - }, - { - "name": "mask", - "type": "MASK", - "link": 151 - } - ], - "outputs": [ - { - "name": "LATENT", - "type": "LATENT", - "links": [ - 68 - ], - "shape": 3, - "slot_index": 0 - } - ], - "properties": { - "Node name for S&R": "SetLatentNoiseMask" - } - }, - { - "id": 100, - "type": "SetLatentNoiseMask", - "pos": [ - 6504, - 363 - ], - "size": { - "0": 210, - "1": 46 - }, - "flags": {}, - "order": 136, - "mode": 0, - "inputs": [ - { - "name": "samples", - "type": "LATENT", - "link": 152 - }, - { - "name": "mask", - "type": "MASK", - "link": 154 - } - ], - "outputs": [ - { - "name": "LATENT", - "type": "LATENT", - "links": [ - 153 - ], - "shape": 3, - "slot_index": 0 - } - ], - "properties": { - "Node name for S&R": "SetLatentNoiseMask" - } - }, - { - "id": 79, - "type": "NNLatentUpscale", - "pos": [ - 6061, - 278 - ], - "size": { - "0": 315, - "1": 82 - }, - "flags": {}, - "order": 134, - "mode": 0, - "inputs": [ - { - "name": "latent", - "type": "LATENT", - "link": 246 - } - ], - "outputs": [ - { - "name": "LATENT", - "type": "LATENT", - "links": [ - 152 - ], - "shape": 3, - "slot_index": 0 - } - ], - "properties": { - "Node name for S&R": "NNLatentUpscale" - }, - "widgets_values": [ - "SD 1.x", - 1.6500000000000001 - ] - }, - { - "id": 174, - "type": "ImageScale", - "pos": [ - 7547, - 272 - ], - "size": { - "0": 315, - "1": 130 - }, - "flags": {}, - "order": 140, - "mode": 0, - "inputs": [ - { - "name": "image", - "type": "IMAGE", - "link": 509 - }, - { - "name": "width", - "type": "INT", - "link": 283, - "widget": { - "name": "width" - } - }, - { - "name": "height", - "type": "INT", - "link": 284, - "widget": { - "name": "height" - } - } - ], - "outputs": [ - { - "name": "IMAGE", - "type": "IMAGE", - "links": [ - 285 - ], - "shape": 3, - "slot_index": 0 - } - ], - "properties": { - "Node name for S&R": "ImageScale" - }, - "widgets_values": [ - "bilinear", - 512, - 512, - "disabled" - ] - }, - { - "id": 216, - "type": "ProximityVisualizer", - "pos": [ - 8861, - -230 - ], - "size": { - "0": 319.20001220703125, - "1": 214 - }, - "flags": {}, - "order": 144, - "mode": 0, - "inputs": [ - { - "name": "video_frames", - "type": "IMAGE", - "link": 516 - }, - { - "name": "anchor_locations", - "type": "LOCATION", - "link": 513 - }, - { - "name": "query_locations", - "type": "LOCATION", - "link": 514 - }, - { - "name": "proximity_feature", - "type": "FEATURE", - "link": 515 - } - ], - "outputs": [ - { - "name": "IMAGE", - "type": "IMAGE", - "links": [ - 418 - ], - "shape": 3, - "slot_index": 0 - } - ], - "properties": { - "Node name for S&R": "ProximityVisualizer" - }, - "widgets_values": [ - "(255,0,0)", - "(255,0,255)", - "(255,255,255)", - "(255,255,255)", - 0.8 - ], - "color": "#322", - "bgcolor": "#533" - }, - { - "id": 233, - "type": "VHS_VideoCombine", - "pos": [ - 9223, - -303 - ], - "size": [ - 416.640570361611, - 499.37127685546875 - ], - "flags": {}, - "order": 148, - "mode": 0, - "inputs": [ - { - "name": "images", - "type": "IMAGE", - "link": 418 - }, - { - "name": "audio", - "type": "*", - "link": null - }, - { - "name": "meta_batch", - "type": "VHS_BatchManager", - "link": null - }, - { - "name": "vae", - "type": "VAE", - "link": null - } - ], - "outputs": [ - { - "name": "Filenames", - "type": "VHS_FILENAMES", - "links": null, - "shape": 3 - } - ], - "properties": { - "Node name for S&R": "VHS_VideoCombine" - }, - "widgets_values": { - "frame_rate": 20, - "loop_count": 0, - "filename_prefix": "AnimateDiff", - "format": "video/ffmpeg-gif", - "dither": "sierra2_4a", - "pingpong": false, - "save_output": true, - "videopreview": { - "hidden": false, - "paused": false, - "params": { - "filename": "AnimateDiff_03718.gif", - "subfolder": "", - "type": "output", - "format": "video/ffmpeg-gif", - "frame_rate": 20 - } - } - } - }, - { - "id": 81, - "type": "VHS_VideoCombine", - "pos": [ - 9117, - 285 - ], - "size": [ - 257.5010156250737, - 457.7505798339844 - ], - "flags": {}, - "order": 145, - "mode": 0, - "inputs": [ - { - "name": "images", - "type": "IMAGE", - "link": 177 - }, - { - "name": "audio", - "type": "AUDIO", - "link": 336 - }, - { - "name": "meta_batch", - "type": "VHS_BatchManager", - "link": null - }, - { - "name": "vae", - "type": "VAE", - "link": null - } - ], - "outputs": [ - { - "name": "Filenames", - "type": "VHS_FILENAMES", - "links": null, - "shape": 3 - } - ], - "properties": { - "Node name for S&R": "VHS_VideoCombine" - }, - "widgets_values": { - "frame_rate": 20, - "loop_count": 0, - "filename_prefix": "AnimateDiff", - "format": "video/h264-mp4", - "pix_fmt": "yuv420p", - "crf": 19, - "save_metadata": false, - "pingpong": false, - "save_output": true, - "videopreview": { - "hidden": false, - "paused": false, - "params": { - "filename": "AnimateDiff_03717.mp4", - "subfolder": "", - "type": "output", - "format": "video/h264-mp4", - "frame_rate": 20 - } - } - } - }, - { - "id": 232, - "type": "VHS_VideoCombine", - "pos": [ - 10052, - 259 - ], - "size": [ - 658.5394466164435, - 634.0221172884678 - ], - "flags": {}, - "order": 146, - "mode": 0, - "inputs": [ - { - "name": "images", - "type": "IMAGE", - "link": 417 - }, - { - "name": "audio", - "type": "*", - "link": null - }, - { - "name": "meta_batch", - "type": "VHS_BatchManager", - "link": null - }, - { - "name": "vae", - "type": "VAE", - "link": null - } - ], - "outputs": [ - { - "name": "Filenames", - "type": "VHS_FILENAMES", - "links": null, - "shape": 3 - } - ], - "properties": { - "Node name for S&R": "VHS_VideoCombine" - }, - "widgets_values": { - "frame_rate": 20, - "loop_count": 0, - "filename_prefix": "AnimateDiff", - "format": "video/ffmpeg-gif", - "dither": "sierra2_4a", - "pingpong": false, - "save_output": true, - "videopreview": { - "hidden": false, - "paused": false, - "params": { - "filename": "AnimateDiff_03716.gif", - "subfolder": "", - "type": "output", - "format": "video/ffmpeg-gif", - "frame_rate": 20 - } - } - } - }, - { - "id": 112, - "type": "ImageUpscaleWithModel", - "pos": [ - 8851, - 407 - ], - "size": { - "0": 241.79998779296875, - "1": 46 - }, - "flags": {}, - "order": 143, - "mode": 4, - "inputs": [ - { - "name": "upscale_model", - "type": "UPSCALE_MODEL", - "link": 175, - "slot_index": 0 - }, - { - "name": "image", - "type": "IMAGE", - "link": 298 - } - ], - "outputs": [ - { - "name": "IMAGE", - "type": "IMAGE", - "links": [ - 177, - 417, - 613 - ], - "shape": 3, - "slot_index": 0 - } - ], - "properties": { - "Node name for S&R": "ImageUpscaleWithModel" - } - }, - { - "id": 338, - "type": "ImageInterval", - "pos": [ - 9541.018356636252, - 595.6964080163126 - ], - "size": { - "0": 315, - "1": 106 - }, - "flags": {}, - "order": 147, - "mode": 0, - "inputs": [ - { - "name": "image", - "type": "IMAGE", - "link": 613 - } - ], - "outputs": [ - { - "name": "IMAGE", - "type": "IMAGE", - "links": [ - 614 - ], - "shape": 3, - "slot_index": 0 - } - ], - "properties": { - "Node name for S&R": "ImageInterval" - }, - "widgets_values": [ - 5, - 13, - 95 - ] - }, - { - "id": 339, - "type": "PreviewImage", - "pos": [ - 9891, - 956 - ], - "size": [ - 210, - 246 - ], - "flags": {}, - "order": 149, - "mode": 0, - "inputs": [ - { - "name": "images", - "type": "IMAGE", - "link": 614 - } - ], - "properties": { - "Node name for S&R": "PreviewImage" - } - } - ], - "links": [ - [ - 12, - 4, - 2, - 12, - 1, - "VAE" - ], - [ - 13, - 8, - 0, - 13, - 0, - "IMAGE" - ], - [ - 15, - 15, - 0, - 14, - 0, - "DAMODEL" - ], - [ - 26, - 20, - 1, - 19, - 0, - "INT" - ], - [ - 27, - 20, - 2, - 19, - 1, - "INT" - ], - [ - 30, - 19, - 0, - 21, - 0, - "IMAGE" - ], - [ - 37, - 25, - 0, - 24, - 0, - "IMAGE" - ], - [ - 44, - 33, - 0, - 28, - 1, - "CONTEXT_OPTIONS" - ], - [ - 45, - 39, - 0, - 28, - 2, - "MOTION_LORA" - ], - [ - 46, - 36, - 0, - 28, - 3, - "AD_SETTINGS" - ], - [ - 47, - 29, - 0, - 28, - 5, - "SAMPLE_SETTINGS" - ], - [ - 48, - 32, - 0, - 28, - 6, - "MULTIVAL" - ], - [ - 49, - 34, - 0, - 28, - 7, - "MULTIVAL" - ], - [ - 50, - 35, - 0, - 29, - 2, - "CUSTOM_CFG" - ], - [ - 51, - 30, - 0, - 29, - 3, - "SIGMA_SCHEDULE" - ], - [ - 53, - 37, - 0, - 36, - 0, - "PE_ADJUST" - ], - [ - 54, - 38, - 0, - 36, - 1, - "WEIGHT_ADJUST" - ], - [ - 56, - 28, - 0, - 40, - 0, - "MODEL" - ], - [ - 57, - 40, - 0, - 26, - 0, - "MODEL" - ], - [ - 58, - 40, - 1, - 26, - 1, - "IPADAPTER" - ], - [ - 60, - 4, - 0, - 43, - 0, - "MODEL" - ], - [ - 61, - 4, - 1, - 43, - 1, - "CLIP" - ], - [ - 62, - 42, - 0, - 43, - 2, - "LORA_STACK" - ], - [ - 63, - 43, - 1, - 6, - 0, - "CLIP" - ], - [ - 64, - 43, - 1, - 7, - 0, - "CLIP" - ], - [ - 65, - 43, - 0, - 28, - 0, - "MODEL" - ], - [ - 66, - 26, - 0, - 3, - 0, - "MODEL" - ], - [ - 68, - 44, - 0, - 3, - 3, - "LATENT" - ], - [ - 76, - 48, - 0, - 47, - 0, - "CONTROL_NET" - ], - [ - 80, - 56, - 0, - 55, - 0, - "CONTROL_NET" - ], - [ - 81, - 57, - 0, - 47, - 1, - "IMAGE" - ], - [ - 82, - 58, - 0, - 55, - 1, - "IMAGE" - ], - [ - 83, - 47, - 0, - 55, - 2, - "CONTROL_NET_STACK" - ], - [ - 84, - 55, - 0, - 59, - 2, - "CONTROL_NET_STACK" - ], - [ - 85, - 6, - 0, - 59, - 0, - "CONDITIONING" - ], - [ - 86, - 7, - 0, - 59, - 1, - "CONDITIONING" - ], - [ - 94, - 23, - 0, - 62, - 0, - "FEATURE" - ], - [ - 95, - 62, - 1, - 63, - 0, - "IMAGE" - ], - [ - 98, - 64, - 0, - 26, - 2, - "IMAGE" - ], - [ - 100, - 3, - 0, - 8, - 0, - "LATENT" - ], - [ - 103, - 20, - 3, - 19, - 2, - "INT" - ], - [ - 108, - 74, - 0, - 20, - 0, - "IMAGE" - ], - [ - 112, - 26, - 0, - 78, - 0, - "MODEL" - ], - [ - 121, - 78, - 0, - 80, - 0, - "LATENT" - ], - [ - 122, - 17, - 0, - 82, - 0, - "IMAGE" - ], - [ - 133, - 4, - 2, - 88, - 0, - "*" - ], - [ - 134, - 59, - 0, - 89, - 0, - "*" - ], - [ - 135, - 59, - 1, - 90, - 0, - "*" - ], - [ - 136, - 88, - 0, - 91, - 0, - "*" - ], - [ - 137, - 91, - 0, - 92, - 0, - "*" - ], - [ - 138, - 91, - 0, - 8, - 1, - "VAE" - ], - [ - 139, - 89, - 0, - 93, - 0, - "*" - ], - [ - 140, - 93, - 0, - 3, - 1, - "CONDITIONING" - ], - [ - 141, - 90, - 0, - 94, - 0, - "*" - ], - [ - 142, - 94, - 0, - 3, - 2, - "CONDITIONING" - ], - [ - 143, - 93, - 0, - 95, - 0, - "*" - ], - [ - 144, - 94, - 0, - 96, - 0, - "*" - ], - [ - 145, - 95, - 0, - 78, - 1, - "CONDITIONING" - ], - [ - 146, - 96, - 0, - 78, - 2, - "CONDITIONING" - ], - [ - 147, - 92, - 0, - 80, - 1, - "VAE" - ], - [ - 149, - 97, - 0, - 98, - 0, - "*" - ], - [ - 150, - 98, - 0, - 99, - 0, - "*" - ], - [ - 151, - 98, - 0, - 44, - 1, - "MASK" - ], - [ - 152, - 79, - 0, - 100, - 0, - "LATENT" - ], - [ - 153, - 100, - 0, - 78, - 3, - "LATENT" - ], - [ - 154, - 99, - 0, - 100, - 1, - "MASK" - ], - [ - 175, - 113, - 0, - 112, - 0, - "UPSCALE_MODEL" - ], - [ - 177, - 112, - 0, - 81, - 0, - "IMAGE" - ], - [ - 193, - 121, - 1, - 69, - 2, - "FEATURE_PIPE" - ], - [ - 195, - 121, - 0, - 122, - 0, - "FEATURE" - ], - [ - 196, - 122, - 1, - 123, - 0, - "IMAGE" - ], - [ - 199, - 122, - 0, - 69, - 1, - "FEATURE" - ], - [ - 200, - 21, - 0, - 127, - 0, - "MASK" - ], - [ - 203, - 74, - 0, - 127, - 3, - "IMAGE" - ], - [ - 234, - 15, - 0, - 146, - 0, - "*" - ], - [ - 246, - 3, - 0, - 79, - 0, - "LATENT" - ], - [ - 273, - 99, - 0, - 172, - 0, - "*" - ], - [ - 274, - 172, - 0, - 170, - 2, - "MASK" - ], - [ - 278, - 80, - 0, - 173, - 0, - "IMAGE" - ], - [ - 283, - 173, - 1, - 174, - 1, - "INT" - ], - [ - 284, - 173, - 2, - 174, - 2, - "INT" - ], - [ - 285, - 174, - 0, - 170, - 0, - "IMAGE" - ], - [ - 287, - 173, - 0, - 170, - 1, - "IMAGE" - ], - [ - 289, - 175, - 0, - 176, - 0, - "*" - ], - [ - 295, - 170, - 0, - 111, - 0, - "IMAGE" - ], - [ - 298, - 111, - 0, - 112, - 1, - "IMAGE" - ], - [ - 300, - 179, - 0, - 104, - 0, - "IMAGE" - ], - [ - 301, - 179, - 0, - 17, - 0, - "IMAGE" - ], - [ - 302, - 82, - 0, - 76, - 0, - "IMAGE" - ], - [ - 303, - 50, - 0, - 52, - 0, - "IMAGE" - ], - [ - 310, - 77, - 0, - 12, - 0, - "IMAGE" - ], - [ - 311, - 77, - 0, - 175, - 0, - "*" - ], - [ - 322, - 179, - 2, - 185, - 0, - "*" - ], - [ - 323, - 186, - 0, - 24, - 1, - "AUDIO" - ], - [ - 335, - 193, - 0, - 13, - 1, - "AUDIO" - ], - [ - 336, - 194, - 0, - 81, - 1, - "AUDIO" - ], - [ - 393, - 205, - 0, - 206, - 2, - "LOCATION" - ], - [ - 417, - 112, - 0, - 232, - 0, - "IMAGE" - ], - [ - 418, - 216, - 0, - 233, - 0, - "IMAGE" - ], - [ - 431, - 240, - 0, - 206, - 1, - "LOCATION" - ], - [ - 437, - 244, - 0, - 205, - 0, - "MASK" - ], - [ - 438, - 245, - 0, - 240, - 0, - "MASK" - ], - [ - 439, - 246, - 0, - 206, - 0, - "IMAGE" - ], - [ - 458, - 49, - 0, - 240, - 1, - "IMAGE" - ], - [ - 467, - 12, - 0, - 256, - 0, - "*" - ], - [ - 468, - 256, - 0, - 257, - 0, - "*" - ], - [ - 469, - 257, - 0, - 258, - 0, - "*" - ], - [ - 470, - 258, - 0, - 44, - 0, - "LATENT" - ], - [ - 506, - 205, - 0, - 277, - 0, - "*" - ], - [ - 507, - 240, - 0, - 278, - 0, - "*" - ], - [ - 508, - 206, - 0, - 279, - 0, - "*" - ], - [ - 509, - 176, - 0, - 174, - 0, - "IMAGE" - ], - [ - 510, - 278, - 0, - 280, - 0, - "*" - ], - [ - 511, - 277, - 0, - 281, - 0, - "*" - ], - [ - 512, - 279, - 0, - 282, - 0, - "*" - ], - [ - 513, - 280, - 0, - 216, - 1, - "LOCATION" - ], - [ - 514, - 281, - 0, - 216, - 2, - "LOCATION" - ], - [ - 515, - 282, - 0, - 216, - 3, - "FEATURE" - ], - [ - 516, - 111, - 0, - 216, - 0, - "IMAGE" - ], - [ - 518, - 283, - 0, - 97, - 0, - "*" - ], - [ - 521, - 287, - 0, - 64, - 0, - "IMAGE" - ], - [ - 527, - 206, - 0, - 230, - 0, - "FEATURE" - ], - [ - 528, - 230, - 0, - 231, - 0, - "IMAGE" - ], - [ - 551, - 305, - 0, - 304, - 0, - "IMAGE" - ], - [ - 552, - 304, - 1, - 303, - 0, - "INT" - ], - [ - 553, - 304, - 2, - 303, - 1, - "INT" - ], - [ - 554, - 304, - 3, - 303, - 2, - "INT" - ], - [ - 555, - 303, - 0, - 306, - 0, - "IMAGE" - ], - [ - 556, - 306, - 0, - 301, - 0, - "MASK" - ], - [ - 557, - 308, - 0, - 307, - 0, - "PARTICLE_EMITTER" - ], - [ - 558, - 301, - 1, - 309, - 0, - "IMAGE" - ], - [ - 559, - 307, - 0, - 301, - 1, - "PARTICLE_EMITTER" - ], - [ - 560, - 301, - 1, - 311, - 0, - "IMAGE" - ], - [ - 561, - 301, - 1, - 312, - 0, - "IMAGE" - ], - [ - 562, - 311, - 0, - 310, - 0, - "*" - ], - [ - 563, - 312, - 0, - 243, - 0, - "MASK" - ], - [ - 566, - 301, - 0, - 314, - 1, - "MASK" - ], - [ - 567, - 14, - 0, - 314, - 0, - "IMAGE" - ], - [ - 570, - 82, - 0, - 14, - 1, - "IMAGE" - ], - [ - 571, - 314, - 0, - 49, - 0, - "IMAGE" - ], - [ - 573, - 49, - 0, - 205, - 1, - "IMAGE" - ], - [ - 574, - 301, - 0, - 318, - 2, - "MASK" - ], - [ - 575, - 301, - 1, - 318, - 1, - "IMAGE" - ], - [ - 576, - 82, - 0, - 318, - 0, - "IMAGE" - ], - [ - 578, - 318, - 0, - 50, - 0, - "IMAGE" - ], - [ - 582, - 314, - 0, - 317, - 0, - "IMAGE" - ], - [ - 583, - 50, - 0, - 319, - 0, - "IMAGE" - ], - [ - 585, - 301, - 0, - 321, - 0, - "*" - ], - [ - 589, - 325, - 0, - 324, - 0, - "SAM_MODEL" - ], - [ - 590, - 323, - 0, - 324, - 1, - "GROUNDING_DINO_MODEL" - ], - [ - 591, - 326, - 0, - 324, - 2, - "IMAGE" - ], - [ - 593, - 327, - 0, - 322, - 1, - "MASK" - ], - [ - 594, - 321, - 0, - 328, - 0, - "MASK" - ], - [ - 596, - 328, - 0, - 283, - 0, - "*" - ], - [ - 600, - 324, - 1, - 332, - 1, - "MASK" - ], - [ - 601, - 332, - 1, - 327, - 0, - "*" - ], - [ - 603, - 206, - 0, - 336, - 0, - "*" - ], - [ - 604, - 206, - 1, - 337, - 0, - "*" - ], - [ - 605, - 336, - 0, - 127, - 1, - "FEATURE" - ], - [ - 606, - 337, - 0, - 127, - 2, - "FEATURE_PIPE" - ], - [ - 607, - 336, - 0, - 335, - 1, - "FEATURE" - ], - [ - 608, - 337, - 0, - 335, - 2, - "FEATURE_PIPE" - ], - [ - 609, - 127, - 0, - 335, - 0, - "MASK" - ], - [ - 610, - 335, - 0, - 25, - 0, - "MASK" - ], - [ - 612, - 335, - 0, - 328, - 1, - "MASK" - ], - [ - 613, - 112, - 0, - 338, - 0, - "IMAGE" - ], - [ - 614, - 338, - 0, - 339, - 0, - "IMAGE" - ] - ], - "groups": [ - { - "title": "Load Image", - "bounding": [ - -4997, - -1133, - 1484, - 1038 - ], - "color": "#3f789e", - "font_size": 24, - "locked": false - }, - { - "title": "Preprocessing", - "bounding": [ - -3467, - -1111, - 1306, - 863 - ], - "color": "#3f789e", - "font_size": 24, - "locked": false - }, - { - "title": "Proximity Feature", - "bounding": [ - -2166, - -1107, - 1793, - 721 - ], - "color": "#3f789e", - "font_size": 24, - "locked": false - }, - { - "title": "Depth Chamber", - "bounding": [ - -365, - -1108, - 2053, - 748 - ], - "color": "#3f789e", - "font_size": 24, - "locked": false - }, - { - "title": "Control net", - "bounding": [ - 952, - 1174, - 1155, - 451 - ], - "color": "#3f789e", - "font_size": 24, - "locked": false - }, - { - "title": "Animate Diff", - "bounding": [ - 3043, - 177, - 978, - 1075 - ], - "color": "#3f789e", - "font_size": 24, - "locked": false - }, - { - "title": "Sampler1", - "bounding": [ - 5166, - 173, - 1290, - 808 - ], - "color": "#3f789e", - "font_size": 24, - "locked": false - }, - { - "title": "Load Model", - "bounding": [ - 949, - 177, - 2062, - 990 - ], - "color": "#3f789e", - "font_size": 24, - "locked": false - }, - { - "title": "IPAdapter", - "bounding": [ - 4036, - 172, - 1111, - 817 - ], - "color": "#3f789e", - "font_size": 24, - "locked": false - }, - { - "title": "Sampler2", - "bounding": [ - 6480, - 176, - 881, - 421 - ], - "color": "#3f789e", - "font_size": 24, - "locked": false - }, - { - "title": "Upscale", - "bounding": [ - 8431, - 174, - 953, - 771 - ], - "color": "#3f789e", - "font_size": 24, - "locked": false - }, - { - "title": "Alternate configuration", - "bounding": [ - -517, - -5817, - 2411, - 1839 - ], - "color": "#3f789e", - "font_size": 24, - "locked": false - }, - { - "title": "Alternate configuration1", - "bounding": [ - 991, - -5410, - 1518, - 463 - ], - "color": "#3f789e", - "font_size": 24, - "locked": false - }, - { - "title": "Paste Orig", - "bounding": [ - 7394, - 175, - 1000, - 279 - ], - "color": "#3f789e", - "font_size": 24, - "locked": false - }, - { - "title": "Mask1", - "bounding": [ - -5072, - -52, - 1790, - 1108 - ], - "color": "#3f789e", - "font_size": 24, - "locked": false - }, - { - "title": "Mask2", - "bounding": [ - -4993, - 1102, - 1336, - 537 - ], - "color": "#3f789e", - "font_size": 24, - "locked": false - } - ], - "config": {}, - "extra": { - "ds": { - "scale": 0.15091133223263858, - "offset": [ - 6301.276164596855, - 2445.0030396651223 - ] - } - }, - "version": 0.4 -} \ No newline at end of file diff --git a/examples/ryanontheinside_audio_classification.json b/examples/ryanontheinside_audio_classification.json deleted file mode 100644 index c4d9b08..0000000 --- a/examples/ryanontheinside_audio_classification.json +++ /dev/null @@ -1,2274 +0,0 @@ -{ - "last_node_id": 109, - "last_link_id": 200, - "nodes": [ - { - "id": 50, - "type": "PreviewAudio", - "pos": [ - -457.3854243971404, - 398.0789760818987 - ], - "size": { - "0": 315, - "1": 76 - }, - "flags": {}, - "order": 20, - "mode": 0, - "inputs": [ - { - "name": "audio", - "type": "AUDIO", - "link": 126 - } - ], - "properties": { - "Node name for S&R": "PreviewAudio" - }, - "widgets_values": [ - null - ] - }, - { - "id": 51, - "type": "PreviewAudio", - "pos": [ - -460.3854243971404, - 539.0789760818983 - ], - "size": { - "0": 315, - "1": 76.00000762939453 - }, - "flags": {}, - "order": 21, - "mode": 0, - "inputs": [ - { - "name": "audio", - "type": "AUDIO", - "link": 127 - } - ], - "properties": { - "Node name for S&R": "PreviewAudio" - }, - "widgets_values": [ - null - ] - }, - { - "id": 52, - "type": "PreviewAudio", - "pos": [ - -448.38542439714047, - 696.0789760818984 - ], - "size": { - "0": 315, - "1": 76 - }, - "flags": {}, - "order": 22, - "mode": 0, - "inputs": [ - { - "name": "audio", - "type": "AUDIO", - "link": 128 - } - ], - "properties": { - "Node name for S&R": "PreviewAudio" - }, - "widgets_values": [ - null - ] - }, - { - "id": 48, - "type": "PreviewAudio", - "pos": [ - -463.3854243971404, - 115.07897608189853 - ], - "size": { - "0": 315, - "1": 76 - }, - "flags": {}, - "order": 16, - "mode": 0, - "inputs": [ - { - "name": "audio", - "type": "AUDIO", - "link": 124 - } - ], - "properties": { - "Node name for S&R": "PreviewAudio" - }, - "widgets_values": [ - null - ] - }, - { - "id": 65, - "type": "FrequencyFilterCustom", - "pos": [ - 540, - 791 - ], - "size": { - "0": 344.3999938964844, - "1": 111.91889190673828 - }, - "flags": {}, - "order": 12, - "mode": 0, - "inputs": [ - { - "name": "previous_filter", - "type": "FREQUENCY_FILTER", - "link": 142, - "slot_index": 0 - } - ], - "outputs": [ - { - "name": "FREQUENCY_FILTER", - "type": "FREQUENCY_FILTER", - "links": [ - 138 - ], - "shape": 3 - } - ], - "properties": { - "Node name for S&R": "FrequencyFilterCustom" - }, - "widgets_values": [ - "lowpass", - 4, - 1000 - ] - }, - { - "id": 68, - "type": "FrequencyFilterPreset", - "pos": [ - 85, - 801 - ], - "size": { - "0": 405.5999755859375, - "1": 58 - }, - "flags": {}, - "order": 0, - "mode": 0, - "inputs": [ - { - "name": "previous_filter", - "type": "FREQUENCY_FILTER", - "link": null - } - ], - "outputs": [ - { - "name": "FREQUENCY_FILTER", - "type": "FREQUENCY_FILTER", - "links": [ - 142 - ], - "shape": 3 - } - ], - "properties": { - "Node name for S&R": "FrequencyFilterPreset" - }, - "widgets_values": [ - "remove_rumble" - ] - }, - { - "id": 64, - "type": "AudioFilter", - "pos": [ - 566, - 683 - ], - "size": { - "0": 252, - "1": 46 - }, - "flags": {}, - "order": 27, - "mode": 0, - "inputs": [ - { - "name": "audio", - "type": "AUDIO", - "link": 137 - }, - { - "name": "filters", - "type": "FREQUENCY_FILTER", - "link": 138, - "slot_index": 1 - } - ], - "outputs": [ - { - "name": "AUDIO", - "type": "AUDIO", - "links": [ - 139 - ], - "shape": 3, - "slot_index": 0 - } - ], - "properties": { - "Node name for S&R": "AudioFilter" - } - }, - { - "id": 62, - "type": "FrequencyFilterPreset", - "pos": [ - 190, - 511 - ], - "size": { - "0": 344.3999938964844, - "1": 58 - }, - "flags": {}, - "order": 1, - "mode": 0, - "inputs": [ - { - "name": "previous_filter", - "type": "FREQUENCY_FILTER", - "link": null - } - ], - "outputs": [ - { - "name": "FREQUENCY_FILTER", - "type": "FREQUENCY_FILTER", - "links": [ - 135 - ], - "shape": 3 - } - ], - "properties": { - "Node name for S&R": "FrequencyFilterPreset" - }, - "widgets_values": [ - "brighten_mix" - ] - }, - { - "id": 63, - "type": "PreviewAudio", - "pos": [ - 951, - 425 - ], - "size": { - "0": 315, - "1": 76.00001525878906 - }, - "flags": {}, - "order": 32, - "mode": 0, - "inputs": [ - { - "name": "audio", - "type": "AUDIO", - "link": 136 - } - ], - "properties": { - "Node name for S&R": "PreviewAudio" - }, - "widgets_values": [ - null - ] - }, - { - "id": 55, - "type": "AudioFilter", - "pos": [ - 559, - 243 - ], - "size": { - "0": 252, - "1": 46 - }, - "flags": {}, - "order": 25, - "mode": 0, - "inputs": [ - { - "name": "audio", - "type": "AUDIO", - "link": 133 - }, - { - "name": "filters", - "type": "FREQUENCY_FILTER", - "link": 130, - "slot_index": 1 - } - ], - "outputs": [ - { - "name": "AUDIO", - "type": "AUDIO", - "links": [ - 131 - ], - "shape": 3, - "slot_index": 0 - } - ], - "properties": { - "Node name for S&R": "AudioFilter" - } - }, - { - "id": 57, - "type": "PreviewAudio", - "pos": [ - 947, - 211 - ], - "size": { - "0": 315, - "1": 76 - }, - "flags": {}, - "order": 31, - "mode": 0, - "inputs": [ - { - "name": "audio", - "type": "AUDIO", - "link": 131 - } - ], - "properties": { - "Node name for S&R": "PreviewAudio" - }, - "widgets_values": [ - null - ] - }, - { - "id": 56, - "type": "FrequencyFilterPreset", - "pos": [ - 125, - 186 - ], - "size": { - "0": 344.3999938964844, - "1": 58 - }, - "flags": {}, - "order": 2, - "mode": 0, - "inputs": [ - { - "name": "previous_filter", - "type": "FREQUENCY_FILTER", - "link": null - } - ], - "outputs": [ - { - "name": "FREQUENCY_FILTER", - "type": "FREQUENCY_FILTER", - "links": [ - 130 - ], - "shape": 3 - } - ], - "properties": { - "Node name for S&R": "FrequencyFilterPreset" - }, - "widgets_values": [ - "isolate_kick_drum" - ] - }, - { - "id": 66, - "type": "PreviewAudio", - "pos": [ - 947, - 685 - ], - "size": { - "0": 315, - "1": 76.00001525878906 - }, - "flags": {}, - "order": 33, - "mode": 0, - "inputs": [ - { - "name": "audio", - "type": "AUDIO", - "link": 139 - } - ], - "properties": { - "Node name for S&R": "PreviewAudio" - }, - "widgets_values": [ - null - ] - }, - { - "id": 60, - "type": "Reroute", - "pos": [ - 56, - 371 - ], - "size": [ - 75, - 26 - ], - "flags": {}, - "order": 17, - "mode": 0, - "inputs": [ - { - "name": "", - "type": "*", - "link": 132 - } - ], - "outputs": [ - { - "name": "", - "type": "AUDIO", - "links": [ - 133, - 134, - 137 - ], - "slot_index": 0 - } - ], - "properties": { - "showOutputText": false, - "horizontal": false - } - }, - { - "id": 78, - "type": "Reroute", - "pos": [ - -522, - 1012 - ], - "size": [ - 75, - 26 - ], - "flags": {}, - "order": 23, - "mode": 0, - "inputs": [ - { - "name": "", - "type": "*", - "link": 153 - } - ], - "outputs": [ - { - "name": "", - "type": "FEATURE_PIPE", - "links": [ - 154 - ], - "slot_index": 0 - } - ], - "properties": { - "showOutputText": false, - "horizontal": false - } - }, - { - "id": 79, - "type": "Reroute", - "pos": [ - 2302, - 1008 - ], - "size": [ - 75, - 26 - ], - "flags": {}, - "order": 29, - "mode": 0, - "inputs": [ - { - "name": "", - "type": "*", - "link": 154 - } - ], - "outputs": [ - { - "name": "", - "type": "FEATURE_PIPE", - "links": [ - 156 - ], - "slot_index": 0 - } - ], - "properties": { - "showOutputText": false, - "horizontal": false - } - }, - { - "id": 61, - "type": "AudioFilter", - "pos": [ - 559, - 448 - ], - "size": { - "0": 252, - "1": 46 - }, - "flags": {}, - "order": 26, - "mode": 0, - "inputs": [ - { - "name": "audio", - "type": "AUDIO", - "link": 134 - }, - { - "name": "filters", - "type": "FREQUENCY_FILTER", - "link": 135, - "slot_index": 1 - } - ], - "outputs": [ - { - "name": "AUDIO", - "type": "AUDIO", - "links": [ - 136 - ], - "shape": 3, - "slot_index": 0 - } - ], - "properties": { - "Node name for S&R": "AudioFilter" - } - }, - { - "id": 49, - "type": "PreviewAudio", - "pos": [ - -455.3854243971404, - 255.07897608189876 - ], - "size": { - "0": 315, - "1": 76 - }, - "flags": {}, - "order": 18, - "mode": 0, - "inputs": [ - { - "name": "audio", - "type": "AUDIO", - "link": 125 - } - ], - "properties": { - "Node name for S&R": "PreviewAudio" - }, - "widgets_values": [ - null - ] - }, - { - "id": 58, - "type": "Note", - "pos": [ - -990.384267683644, - 23.09884316828786 - ], - "size": { - "0": 405.9549865722656, - "1": 185.00900268554688 - }, - "flags": {}, - "order": 3, - "mode": 0, - "properties": { - "text": "" - }, - "widgets_values": [ - "This classifies and separates the audio using a pretrained model.\n\nClick the ?s for more info" - ], - "color": "#432", - "bgcolor": "#653" - }, - { - "id": 70, - "type": "Reroute", - "pos": [ - -519, - 978 - ], - "size": [ - 75, - 26 - ], - "flags": {}, - "order": 19, - "mode": 0, - "inputs": [ - { - "name": "", - "type": "*", - "link": 143 - } - ], - "outputs": [ - { - "name": "", - "type": "AUDIO", - "links": [ - 145 - ], - "slot_index": 0 - } - ], - "title": "Drums", - "properties": { - "showOutputText": false, - "horizontal": false - } - }, - { - "id": 75, - "type": "Reroute", - "pos": [ - -522, - 1047 - ], - "size": [ - 75, - 26 - ], - "flags": {}, - "order": 15, - "mode": 0, - "inputs": [ - { - "name": "", - "type": "*", - "link": 167 - } - ], - "outputs": [ - { - "name": "", - "type": "IMAGE", - "links": [ - 148 - ], - "slot_index": 0 - } - ], - "properties": { - "showOutputText": false, - "horizontal": false - } - }, - { - "id": 81, - "type": "PreviewImage", - "pos": [ - 3027.324109375, - 328.0279923095703 - ], - "size": { - "0": 766.489990234375, - "1": 420.3683166503906 - }, - "flags": {}, - "order": 40, - "mode": 0, - "inputs": [ - { - "name": "images", - "type": "IMAGE", - "link": 158 - } - ], - "properties": { - "Node name for S&R": "PreviewImage" - } - }, - { - "id": 80, - "type": "FeatureMixer", - "pos": [ - 2604.324109375, - 317.0279923095703 - ], - "size": { - "0": 367.79998779296875, - "1": 318 - }, - "flags": {}, - "order": 37, - "mode": 0, - "inputs": [ - { - "name": "feature", - "type": "FEATURE", - "link": 157 - } - ], - "outputs": [ - { - "name": "FEATURE", - "type": "FEATURE", - "links": [ - 170 - ], - "shape": 3, - "slot_index": 0 - }, - { - "name": "FEATURE_VISUALIZATION", - "type": "IMAGE", - "links": [ - 158 - ], - "shape": 3, - "slot_index": 1 - } - ], - "properties": { - "Node name for S&R": "FeatureMixer" - }, - "widgets_values": [ - 1, - 0, - 1, - 1, - 1, - 1, - 1, - 0, - 0, - 1, - 0.1 - ] - }, - { - "id": 43, - "type": "AudioFeatureExtractor", - "pos": [ - 2246.324109375, - 320.0279923095703 - ], - "size": { - "0": 361.20001220703125, - "1": 78 - }, - "flags": {}, - "order": 35, - "mode": 0, - "inputs": [ - { - "name": "audio", - "type": "AUDIO", - "link": 155 - }, - { - "name": "feature_pipe", - "type": "FEATURE_PIPE", - "link": 156 - } - ], - "outputs": [ - { - "name": "FEATURE", - "type": "FEATURE", - "links": [ - 157 - ], - "shape": 3, - "slot_index": 0 - }, - { - "name": "FEATURE_PIPE", - "type": "FEATURE_PIPE", - "links": [ - 172 - ], - "shape": 3, - "slot_index": 1 - } - ], - "properties": { - "Node name for S&R": "AudioFeatureExtractor" - }, - "widgets_values": [ - "amplitude_envelope" - ] - }, - { - "id": 72, - "type": "Reroute", - "pos": [ - 2306, - 974 - ], - "size": [ - 75, - 26 - ], - "flags": {}, - "order": 28, - "mode": 0, - "inputs": [ - { - "name": "", - "type": "*", - "link": 145 - } - ], - "outputs": [ - { - "name": "", - "type": "AUDIO", - "links": [ - 155, - 183 - ], - "slot_index": 0 - } - ], - "properties": { - "showOutputText": false, - "horizontal": false - } - }, - { - "id": 95, - "type": "VHS_VideoCombine", - "pos": [ - 5420, - -240 - ], - "size": [ - 315, - 848.4444444444445 - ], - "flags": {}, - "order": 46, - "mode": 0, - "inputs": [ - { - "name": "images", - "type": "IMAGE", - "link": 181 - }, - { - "name": "audio", - "type": "AUDIO", - "link": 184 - }, - { - "name": "meta_batch", - "type": "VHS_BatchManager", - "link": null - }, - { - "name": "vae", - "type": "VAE", - "link": null - } - ], - "outputs": [ - { - "name": "Filenames", - "type": "VHS_FILENAMES", - "links": null, - "shape": 3 - } - ], - "properties": { - "Node name for S&R": "VHS_VideoCombine" - }, - "widgets_values": { - "frame_rate": 30, - "loop_count": 0, - "filename_prefix": "AnimateDiff", - "format": "video/h264-mp4", - "pix_fmt": "yuv420p", - "crf": 19, - "save_metadata": true, - "pingpong": false, - "save_output": true, - "videopreview": { - "hidden": false, - "paused": false, - "params": { - "filename": "AnimateDiff_00691-audio.mp4", - "subfolder": "", - "type": "output", - "format": "video/h264-mp4", - "frame_rate": 30 - }, - "muted": false - } - } - }, - { - "id": 83, - "type": "FlexMaskMorph", - "pos": [ - 4710, - -230 - ], - "size": { - "0": 315, - "1": 266 - }, - "flags": {}, - "order": 41, - "mode": 0, - "inputs": [ - { - "name": "masks", - "type": "MASK", - "link": 177 - }, - { - "name": "feature", - "type": "FEATURE", - "link": 178 - }, - { - "name": "feature_pipe", - "type": "FEATURE_PIPE", - "link": 179 - } - ], - "outputs": [ - { - "name": "MASK", - "type": "MASK", - "links": [ - 180 - ], - "shape": 3, - "slot_index": 0 - } - ], - "properties": { - "Node name for S&R": "FlexMaskMorph" - }, - "widgets_values": [ - 1, - false, - 0, - 0, - 0, - "erode", - 5, - 10 - ] - }, - { - "id": 98, - "type": "FeatureToWeightsStrategy", - "pos": [ - 4720, - 330 - ], - "size": { - "0": 378, - "1": 28.334583282470703 - }, - "flags": {}, - "order": 42, - "mode": 0, - "inputs": [ - { - "name": "feature", - "type": "FEATURE", - "link": 188 - } - ], - "outputs": [ - { - "name": "WEIGHTS_STRATEGY", - "type": "WEIGHTS_STRATEGY", - "links": [], - "shape": 3, - "slot_index": 0 - } - ], - "properties": { - "Node name for S&R": "FeatureToWeightsStrategy" - } - }, - { - "id": 97, - "type": "VHS_VideoCombine", - "pos": [ - 5520, - 680 - ], - "size": [ - 315, - 848.4444444444445 - ], - "flags": {}, - "order": 45, - "mode": 0, - "inputs": [ - { - "name": "images", - "type": "IMAGE", - "link": 195 - }, - { - "name": "audio", - "type": "AUDIO", - "link": 186 - }, - { - "name": "meta_batch", - "type": "VHS_BatchManager", - "link": null - }, - { - "name": "vae", - "type": "VAE", - "link": null - } - ], - "outputs": [ - { - "name": "Filenames", - "type": "VHS_FILENAMES", - "links": null, - "shape": 3 - } - ], - "properties": { - "Node name for S&R": "VHS_VideoCombine" - }, - "widgets_values": { - "frame_rate": 30, - "loop_count": 0, - "filename_prefix": "AnimateDiff", - "format": "video/h264-mp4", - "pix_fmt": "yuv420p", - "crf": 19, - "save_metadata": true, - "pingpong": false, - "save_output": true, - "videopreview": { - "hidden": false, - "paused": false, - "params": { - "filename": "AnimateDiff_00690-audio.mp4", - "subfolder": "", - "type": "output", - "format": "video/h264-mp4", - "frame_rate": 30 - }, - "muted": false - } - } - }, - { - "id": 102, - "type": "Note", - "pos": [ - 4710, - 210 - ], - "size": { - "0": 430.4454040527344, - "1": 83.45369720458984 - }, - "flags": {}, - "order": 4, - "mode": 0, - "properties": { - "text": "" - }, - "widgets_values": [ - "for the sake of limiting the complexity and number of custom node packs required for this demonstration of audio classification, I am excluding the IPAdapter target. See the other workflows posted on my civit profile to work with Features and IPAdapters" - ], - "color": "#432", - "bgcolor": "#653" - }, - { - "id": 92, - "type": "ImageToMask", - "pos": [ - 4430, - -230 - ], - "size": { - "0": 210, - "1": 58 - }, - "flags": {}, - "order": 36, - "mode": 0, - "inputs": [ - { - "name": "image", - "type": "IMAGE", - "link": 176 - } - ], - "outputs": [ - { - "name": "MASK", - "type": "MASK", - "links": [ - 177 - ], - "shape": 3, - "slot_index": 0 - } - ], - "properties": { - "Node name for S&R": "ImageToMask" - }, - "widgets_values": [ - "red" - ] - }, - { - "id": 96, - "type": "Reroute", - "pos": [ - 5294, - 983 - ], - "size": [ - 75, - 26 - ], - "flags": {}, - "order": 34, - "mode": 0, - "inputs": [ - { - "name": "", - "type": "*", - "link": 183 - } - ], - "outputs": [ - { - "name": "", - "type": "AUDIO", - "links": [ - 184, - 186 - ], - "slot_index": 0 - } - ], - "properties": { - "showOutputText": false, - "horizontal": false - } - }, - { - "id": 76, - "type": "Reroute", - "pos": [ - 4377, - 1045 - ], - "size": [ - 75, - 26 - ], - "flags": {}, - "order": 24, - "mode": 0, - "inputs": [ - { - "name": "", - "type": "*", - "link": 148 - } - ], - "outputs": [ - { - "name": "", - "type": "IMAGE", - "links": [ - 174 - ], - "slot_index": 0 - } - ], - "properties": { - "showOutputText": false, - "horizontal": false - } - }, - { - "id": 45, - "type": "DownloadOpenUnmixModel", - "pos": [ - -1457, - 88 - ], - "size": { - "0": 361.20001220703125, - "1": 58 - }, - "flags": {}, - "order": 5, - "mode": 0, - "outputs": [ - { - "name": "OPEN_UNMIX_MODEL", - "type": "OPEN_UNMIX_MODEL", - "links": [ - 121 - ], - "shape": 3 - } - ], - "properties": { - "Node name for S&R": "DownloadOpenUnmixModel" - }, - "widgets_values": [ - "umxl" - ] - }, - { - "id": 44, - "type": "AudioSeparator", - "pos": [ - -949, - 321 - ], - "size": { - "0": 317.4000244140625, - "1": 158 - }, - "flags": {}, - "order": 14, - "mode": 0, - "inputs": [ - { - "name": "model", - "type": "OPEN_UNMIX_MODEL", - "link": 121, - "slot_index": 0 - }, - { - "name": "audio", - "type": "AUDIO", - "link": 191 - }, - { - "name": "video_frames", - "type": "IMAGE", - "link": 166 - } - ], - "outputs": [ - { - "name": "audio", - "type": "AUDIO", - "links": [ - 124, - 132 - ], - "shape": 3, - "slot_index": 0 - }, - { - "name": "drums_audio", - "type": "AUDIO", - "links": [ - 125, - 143 - ], - "shape": 3, - "slot_index": 1 - }, - { - "name": "vocals_audio", - "type": "AUDIO", - "links": [ - 126 - ], - "shape": 3, - "slot_index": 2 - }, - { - "name": "bass_audio", - "type": "AUDIO", - "links": [ - 127 - ], - "shape": 3, - "slot_index": 3 - }, - { - "name": "other_audio", - "type": "AUDIO", - "links": [ - 128 - ], - "shape": 3, - "slot_index": 4 - }, - { - "name": "feature_pipe", - "type": "FEATURE_PIPE", - "links": [ - 153 - ], - "shape": 3, - "slot_index": 5 - } - ], - "properties": { - "Node name for S&R": "AudioSeparator" - }, - "widgets_values": [ - 30 - ] - }, - { - "id": 89, - "type": "Reroute", - "pos": [ - -1199, - 361 - ], - "size": [ - 75, - 26 - ], - "flags": {}, - "order": 13, - "mode": 0, - "inputs": [ - { - "name": "", - "type": "*", - "link": 190 - } - ], - "outputs": [ - { - "name": "", - "type": "IMAGE", - "links": [ - 166, - 167 - ], - "slot_index": 0 - } - ], - "properties": { - "showOutputText": false, - "horizontal": false - } - }, - { - "id": 105, - "type": "Note", - "pos": [ - -1215, - 655 - ], - "size": { - "0": 210, - "1": 58 - }, - "flags": {}, - "order": 6, - "mode": 0, - "properties": { - "text": "" - }, - "widgets_values": [ - "for expediency I am using a video load, but you can directly load audio as well" - ], - "color": "#432", - "bgcolor": "#653" - }, - { - "id": 106, - "type": "VHS_LoadAudioUpload", - "pos": [ - -1218, - 757 - ], - "size": { - "0": 226.8000030517578, - "1": 130 - }, - "flags": {}, - "order": 7, - "mode": 4, - "outputs": [ - { - "name": "audio", - "type": "AUDIO", - "links": null, - "shape": 3 - } - ], - "properties": { - "Node name for S&R": "VHS_LoadAudioUpload" - }, - "widgets_values": { - "audio": "music_square.mp4", - "start_time": 0, - "duration": 0, - "choose audio to upload": "image" - } - }, - { - "id": 59, - "type": "Note", - "pos": [ - 1349, - 183 - ], - "size": { - "0": 420.59600830078125, - "1": 192.9949951171875 - }, - "flags": {}, - "order": 8, - "mode": 0, - "properties": { - "text": "" - }, - "widgets_values": [ - "The audio can be further manipulated with rudimentary frequency filters.\n\nThere are presets and custom filters, and they can be chained together.\n\nUltimately, we only need to process the audio to extract features from it to drive things in our pipelines, not to actually make it sound good!\n\nThis step will often be unnecessary " - ], - "color": "#432", - "bgcolor": "#653" - }, - { - "id": 82, - "type": "Note", - "pos": [ - 2299, - 24 - ], - "size": { - "0": 771.9349365234375, - "1": 179.70501708984375 - }, - "flags": {}, - "order": 9, - "mode": 0, - "properties": { - "text": "" - }, - "widgets_values": [ - "Here we can extract features from the audio to drive things later.\n\nYou can optionally manipulate the features by fiddling with the feature mixer, and preview your changes. The settings I have left in the mixer will essentially do nothing to the features. " - ], - "color": "#432", - "bgcolor": "#653" - }, - { - "id": 103, - "type": "Note", - "pos": [ - 4700, - -464 - ], - "size": { - "0": 416.1949157714844, - "1": 144.5247344970703 - }, - "flags": {}, - "order": 10, - "mode": 0, - "properties": { - "text": "" - }, - "widgets_values": [ - "We can then use the features to manipulate a target.\n\nAt the time of this demonstration, the targets include masks, images, and IPAdapters. I have picked arbitrary mask and image targets, but there are many of each!\n\nFor more info\nhttps://github.com/ryanontheinside/ComfyUI_RyanOnTheInside/" - ], - "color": "#432", - "bgcolor": "#653" - }, - { - "id": 107, - "type": "FlexImageKaleidoscope", - "pos": [ - 4912, - 734 - ], - "size": { - "0": 344.3999938964844, - "1": 352.36376953125 - }, - "flags": {}, - "order": 43, - "mode": 0, - "inputs": [ - { - "name": "images", - "type": "IMAGE", - "link": 192 - }, - { - "name": "feature", - "type": "FEATURE", - "link": 193 - }, - { - "name": "feature_pipe", - "type": "FEATURE_PIPE", - "link": 194 - } - ], - "outputs": [ - { - "name": "IMAGE", - "type": "IMAGE", - "links": [ - 195 - ], - "shape": 3 - } - ], - "properties": { - "Node name for S&R": "FlexImageKaleidoscope" - }, - "widgets_values": [ - 1, - 0, - "segments", - "relative", - 8, - 0.5, - 0.5, - 1, - 0, - 0, - 1 - ] - }, - { - "id": 93, - "type": "Reroute", - "pos": [ - 4420, - 420 - ], - "size": [ - 75, - 26 - ], - "flags": {}, - "order": 30, - "mode": 0, - "inputs": [ - { - "name": "", - "type": "*", - "link": 174 - } - ], - "outputs": [ - { - "name": "", - "type": "IMAGE", - "links": [ - 176, - 192 - ], - "slot_index": 0 - } - ], - "properties": { - "showOutputText": false, - "horizontal": false - } - }, - { - "id": 90, - "type": "Reroute", - "pos": [ - 4410, - 330 - ], - "size": [ - 75, - 26 - ], - "flags": {}, - "order": 39, - "mode": 0, - "inputs": [ - { - "name": "", - "type": "*", - "link": 170 - } - ], - "outputs": [ - { - "name": "", - "type": "FEATURE", - "links": [ - 178, - 188, - 193 - ], - "slot_index": 0 - } - ], - "properties": { - "showOutputText": false, - "horizontal": false - } - }, - { - "id": 91, - "type": "Reroute", - "pos": [ - 4410, - 370 - ], - "size": [ - 75, - 26 - ], - "flags": {}, - "order": 38, - "mode": 0, - "inputs": [ - { - "name": "", - "type": "*", - "link": 172 - } - ], - "outputs": [ - { - "name": "", - "type": "FEATURE_PIPE", - "links": [ - 179, - 194 - ], - "slot_index": 0 - } - ], - "properties": { - "showOutputText": false, - "horizontal": false - } - }, - { - "id": 104, - "type": "VHS_LoadVideo", - "pos": [ - -1498, - 208 - ], - "size": [ - 235.1999969482422, - 658.5777723524305 - ], - "flags": {}, - "order": 11, - "mode": 0, - "inputs": [ - { - "name": "meta_batch", - "type": "VHS_BatchManager", - "link": null - }, - { - "name": "vae", - "type": "VAE", - "link": null - } - ], - "outputs": [ - { - "name": "IMAGE", - "type": "IMAGE", - "links": [ - 190 - ], - "shape": 3, - "slot_index": 0 - }, - { - "name": "frame_count", - "type": "INT", - "links": null, - "shape": 3 - }, - { - "name": "audio", - "type": "AUDIO", - "links": [ - 191 - ], - "shape": 3, - "slot_index": 2 - }, - { - "name": "video_info", - "type": "VHS_VIDEOINFO", - "links": null, - "shape": 3 - } - ], - "properties": { - "Node name for S&R": "VHS_LoadVideo" - }, - "widgets_values": { - "video": "music_square.mp4", - "force_rate": 30, - "force_size": "Disabled", - "custom_width": 512, - "custom_height": 512, - "frame_load_cap": 90, - "skip_first_frames": 0, - "select_every_nth": 1, - "choose video to upload": "image", - "videopreview": { - "hidden": false, - "paused": false, - "params": { - "frame_load_cap": 90, - "skip_first_frames": 0, - "force_rate": 30, - "filename": "music_square.mp4", - "type": "input", - "format": "video/mp4", - "select_every_nth": 1 - }, - "muted": false - } - } - }, - { - "id": 94, - "type": "MaskToImage", - "pos": [ - 5089, - -228 - ], - "size": { - "0": 210, - "1": 26 - }, - "flags": {}, - "order": 44, - "mode": 0, - "inputs": [ - { - "name": "mask", - "type": "MASK", - "link": 180 - } - ], - "outputs": [ - { - "name": "IMAGE", - "type": "IMAGE", - "links": [ - 181 - ], - "shape": 3, - "slot_index": 0 - } - ], - "properties": { - "Node name for S&R": "MaskToImage" - } - } - ], - "links": [ - [ - 121, - 45, - 0, - 44, - 0, - "OPEN_UNMIX_MODEL" - ], - [ - 124, - 44, - 0, - 48, - 0, - "AUDIO" - ], - [ - 125, - 44, - 1, - 49, - 0, - "AUDIO" - ], - [ - 126, - 44, - 2, - 50, - 0, - "AUDIO" - ], - [ - 127, - 44, - 3, - 51, - 0, - "AUDIO" - ], - [ - 128, - 44, - 4, - 52, - 0, - "AUDIO" - ], - [ - 130, - 56, - 0, - 55, - 1, - "FREQUENCY_FILTER" - ], - [ - 131, - 55, - 0, - 57, - 0, - "AUDIO" - ], - [ - 132, - 44, - 0, - 60, - 0, - "*" - ], - [ - 133, - 60, - 0, - 55, - 0, - "AUDIO" - ], - [ - 134, - 60, - 0, - 61, - 0, - "AUDIO" - ], - [ - 135, - 62, - 0, - 61, - 1, - "FREQUENCY_FILTER" - ], - [ - 136, - 61, - 0, - 63, - 0, - "AUDIO" - ], - [ - 137, - 60, - 0, - 64, - 0, - "AUDIO" - ], - [ - 138, - 65, - 0, - 64, - 1, - "FREQUENCY_FILTER" - ], - [ - 139, - 64, - 0, - 66, - 0, - "AUDIO" - ], - [ - 142, - 68, - 0, - 65, - 0, - "FREQUENCY_FILTER" - ], - [ - 143, - 44, - 1, - 70, - 0, - "*" - ], - [ - 145, - 70, - 0, - 72, - 0, - "*" - ], - [ - 148, - 75, - 0, - 76, - 0, - "*" - ], - [ - 153, - 44, - 5, - 78, - 0, - "*" - ], - [ - 154, - 78, - 0, - 79, - 0, - "*" - ], - [ - 155, - 72, - 0, - 43, - 0, - "AUDIO" - ], - [ - 156, - 79, - 0, - 43, - 1, - "FEATURE_PIPE" - ], - [ - 157, - 43, - 0, - 80, - 0, - "FEATURE" - ], - [ - 158, - 80, - 1, - 81, - 0, - "IMAGE" - ], - [ - 166, - 89, - 0, - 44, - 2, - "IMAGE" - ], - [ - 167, - 89, - 0, - 75, - 0, - "*" - ], - [ - 170, - 80, - 0, - 90, - 0, - "*" - ], - [ - 172, - 43, - 1, - 91, - 0, - "*" - ], - [ - 174, - 76, - 0, - 93, - 0, - "*" - ], - [ - 176, - 93, - 0, - 92, - 0, - "IMAGE" - ], - [ - 177, - 92, - 0, - 83, - 0, - "MASK" - ], - [ - 178, - 90, - 0, - 83, - 1, - "FEATURE" - ], - [ - 179, - 91, - 0, - 83, - 2, - "FEATURE_PIPE" - ], - [ - 180, - 83, - 0, - 94, - 0, - "MASK" - ], - [ - 181, - 94, - 0, - 95, - 0, - "IMAGE" - ], - [ - 183, - 72, - 0, - 96, - 0, - "*" - ], - [ - 184, - 96, - 0, - 95, - 1, - "AUDIO" - ], - [ - 186, - 96, - 0, - 97, - 1, - "AUDIO" - ], - [ - 188, - 90, - 0, - 98, - 0, - "FEATURE" - ], - [ - 190, - 104, - 0, - 89, - 0, - "*" - ], - [ - 191, - 104, - 2, - 44, - 1, - "AUDIO" - ], - [ - 192, - 93, - 0, - 107, - 0, - "IMAGE" - ], - [ - 193, - 90, - 0, - 107, - 1, - "FEATURE" - ], - [ - 194, - 91, - 0, - 107, - 2, - "FEATURE_PIPE" - ], - [ - 195, - 107, - 0, - 97, - 0, - "IMAGE" - ] - ], - "groups": [ - { - "title": "Separate Audio", - "bounding": [ - -1523, - -70, - 1480, - 994 - ], - "color": "#3f789e", - "font_size": 24 - }, - { - "title": "Filter Audio", - "bounding": [ - -17, - -76, - 2121, - 1008 - ], - "color": "#3f789e", - "font_size": 24 - }, - { - "title": "Audio Features", - "bounding": [ - 2167, - -77, - 1666, - 975 - ], - "color": "#3f789e", - "font_size": 24 - }, - { - "title": "Manipulate Target", - "bounding": [ - 4117, - -354, - 1840, - 1504 - ], - "color": "#3f789e", - "font_size": 24 - } - ], - "config": {}, - "extra": { - "ds": { - "scale": 0.19784466890013533, - "offset": [ - 2250.364932192568, - 1936.2073084754438 - ] - } - }, - "version": 0.4 -} \ No newline at end of file diff --git a/examples/seek_tutorial.json b/examples/seek_tutorial.json deleted file mode 100644 index 6c97b3d..0000000 --- a/examples/seek_tutorial.json +++ /dev/null @@ -1,3319 +0,0 @@ -{ - "last_node_id": 359, - "last_link_id": 590, - "nodes": [ - { - "id": 123, - "type": "PreviewImage", - "pos": [ - -50, - -2510 - ], - "size": { - "0": 210, - "1": 246 - }, - "flags": {}, - "order": 48, - "mode": 4, - "inputs": [ - { - "name": "images", - "type": "IMAGE", - "link": 171 - } - ], - "outputs": [], - "properties": { - "Node name for S&R": "PreviewImage" - } - }, - { - "id": 136, - "type": "PreviewAudio", - "pos": [ - -1130, - -2660 - ], - "size": { - "0": 315, - "1": 76 - }, - "flags": {}, - "order": 36, - "mode": 4, - "inputs": [ - { - "name": "audio", - "type": "AUDIO", - "link": 198 - } - ], - "outputs": [], - "properties": { - "Node name for S&R": "PreviewAudio" - }, - "widgets_values": [ - null - ] - }, - { - "id": 152, - "type": "RhythmFeatureExtractor", - "pos": [ - -1930, - -2040 - ], - "size": { - "0": 529.199951171875, - "1": 146 - }, - "flags": {}, - "order": 19, - "mode": 4, - "inputs": [ - { - "name": "video_frames", - "type": "IMAGE", - "link": 251 - }, - { - "name": "audio", - "type": "AUDIO", - "link": 244 - } - ], - "outputs": [ - { - "name": "FEATURE", - "type": "FEATURE", - "links": [ - 245 - ], - "shape": 3 - }, - { - "name": "FEATURE_PIPE", - "type": "FEATURE_PIPE", - "links": [ - 298 - ], - "shape": 3 - } - ], - "properties": { - "Node name for S&R": "RhythmFeatureExtractor" - }, - "widgets_values": [ - "beat_locations", - 30, - 4 - ] - }, - { - "id": 126, - "type": "PreviewImage", - "pos": [ - 630, - -2390 - ], - "size": { - "0": 210, - "1": 246 - }, - "flags": {}, - "order": 33, - "mode": 4, - "inputs": [ - { - "name": "images", - "type": "IMAGE", - "link": 172 - } - ], - "outputs": [], - "properties": { - "Node name for S&R": "PreviewImage" - } - }, - { - "id": 133, - "type": "PreviewAudio", - "pos": [ - -1130, - -2760 - ], - "size": { - "0": 315, - "1": 76 - }, - "flags": {}, - "order": 34, - "mode": 4, - "inputs": [ - { - "name": "audio", - "type": "AUDIO", - "link": 188 - } - ], - "outputs": [], - "properties": { - "Node name for S&R": "PreviewAudio" - }, - "widgets_values": [ - null - ] - }, - { - "id": 175, - "type": "GetImageSizeAndCount", - "pos": [ - -2360, - -2300 - ], - "size": { - "0": 277.20001220703125, - "1": 86 - }, - "flags": {}, - "order": 20, - "mode": 4, - "inputs": [ - { - "name": "image", - "type": "IMAGE", - "link": 287 - } - ], - "outputs": [ - { - "name": "image", - "type": "IMAGE", - "links": [ - 288 - ], - "slot_index": 0, - "shape": 3 - }, - { - "name": "1920 width", - "type": "INT", - "links": null, - "shape": 3 - }, - { - "name": "1072 height", - "type": "INT", - "links": null, - "shape": 3 - }, - { - "name": "676 count", - "type": "INT", - "links": [], - "slot_index": 3, - "shape": 3 - } - ], - "properties": { - "Node name for S&R": "GetImageSizeAndCount" - } - }, - { - "id": 178, - "type": "FlexVideoSeek", - "pos": [ - 50, - -2080 - ], - "size": { - "0": 434.6160888671875, - "1": 194 - }, - "flags": {}, - "order": 47, - "mode": 4, - "inputs": [ - { - "name": "images", - "type": "IMAGE", - "link": 296 - }, - { - "name": "feature", - "type": "FEATURE", - "link": 297 - }, - { - "name": "feature_pipe", - "type": "FEATURE_PIPE", - "link": 298 - } - ], - "outputs": [ - { - "name": "IMAGE", - "type": "IMAGE", - "links": [ - 301 - ], - "shape": 3 - } - ], - "properties": { - "Node name for S&R": "FlexVideoSeek" - }, - "widgets_values": [ - 1, - "relative", - "seek", - 0, - false - ] - }, - { - "id": 110, - "type": "AudioSeparator", - "pos": [ - -1930, - -2250 - ], - "size": { - "0": 415.8000183105469, - "1": 158 - }, - "flags": {}, - "order": 25, - "mode": 4, - "inputs": [ - { - "name": "model", - "type": "OPEN_UNMIX_MODEL", - "link": 385 - }, - { - "name": "audio", - "type": "AUDIO", - "link": 141 - }, - { - "name": "video_frames", - "type": "IMAGE", - "link": 288 - } - ], - "outputs": [ - { - "name": "audio", - "type": "AUDIO", - "links": null, - "slot_index": 0, - "shape": 3 - }, - { - "name": "drums_audio", - "type": "AUDIO", - "links": [ - 188 - ], - "slot_index": 1, - "shape": 3 - }, - { - "name": "vocals_audio", - "type": "AUDIO", - "links": null, - "shape": 3 - }, - { - "name": "bass_audio", - "type": "AUDIO", - "links": [ - 189, - 190 - ], - "slot_index": 3, - "shape": 3 - }, - { - "name": "other_audio", - "type": "AUDIO", - "links": [ - 198 - ], - "slot_index": 4, - "shape": 3 - }, - { - "name": "feature_pipe", - "type": "FEATURE_PIPE", - "links": [ - 146 - ], - "slot_index": 5, - "shape": 3 - } - ], - "properties": { - "Node name for S&R": "AudioSeparator" - }, - "widgets_values": [ - 30 - ] - }, - { - "id": 134, - "type": "PreviewAudio", - "pos": [ - -1630, - -2460 - ], - "size": { - "0": 315, - "1": 76 - }, - "flags": {}, - "order": 35, - "mode": 4, - "inputs": [ - { - "name": "audio", - "type": "AUDIO", - "link": 189 - } - ], - "outputs": [], - "properties": { - "Node name for S&R": "PreviewAudio" - }, - "widgets_values": [ - null - ] - }, - { - "id": 111, - "type": "DownloadOpenUnmixModel", - "pos": [ - -2360, - -2660 - ], - "size": { - "0": 541.800048828125, - "1": 58 - }, - "flags": {}, - "order": 0, - "mode": 4, - "inputs": [], - "outputs": [ - { - "name": "OPEN_UNMIX_MODEL", - "type": "OPEN_UNMIX_MODEL", - "links": [], - "shape": 3 - } - ], - "properties": { - "Node name for S&R": "DownloadOpenUnmixModel" - }, - "widgets_values": [ - "umxl" - ] - }, - { - "id": 154, - "type": "GetImageSizeAndCount", - "pos": [ - -3070, - -2700 - ], - "size": { - "0": 277.20001220703125, - "1": 86 - }, - "flags": {}, - "order": 12, - "mode": 4, - "inputs": [ - { - "name": "image", - "type": "IMAGE", - "link": 253 - } - ], - "outputs": [ - { - "name": "image", - "type": "IMAGE", - "links": null, - "shape": 3 - }, - { - "name": "512 width", - "type": "INT", - "links": null, - "shape": 3 - }, - { - "name": "512 height", - "type": "INT", - "links": null, - "shape": 3 - }, - { - "name": "676 count", - "type": "INT", - "links": [ - 254 - ], - "slot_index": 3, - "shape": 3 - } - ], - "properties": { - "Node name for S&R": "GetImageSizeAndCount" - } - }, - { - "id": 153, - "type": "EmptyImageFromAudio", - "pos": [ - -3610, - -2710 - ], - "size": { - "0": 336, - "1": 106 - }, - "flags": {}, - "order": 9, - "mode": 4, - "inputs": [ - { - "name": "audio", - "type": "AUDIO", - "link": 252 - } - ], - "outputs": [ - { - "name": "IMAGE", - "type": "IMAGE", - "links": [ - 253 - ], - "slot_index": 0, - "shape": 3 - } - ], - "properties": { - "Node name for S&R": "EmptyImageFromAudio" - }, - "widgets_values": [ - 30, - 512, - 512 - ] - }, - { - "id": 125, - "type": "FeatureCombine", - "pos": [ - -580, - -2380 - ], - "size": { - "0": 453.5999755859375, - "1": 150 - }, - "flags": {}, - "order": 42, - "mode": 4, - "inputs": [ - { - "name": "feature1", - "type": "FEATURE", - "link": 191 - }, - { - "name": "feature2", - "type": "FEATURE", - "link": 193 - } - ], - "outputs": [ - { - "name": "FEATURE", - "type": "FEATURE", - "links": [ - 297 - ], - "slot_index": 0, - "shape": 3 - }, - { - "name": "FEATURE_VISUALIZATION", - "type": "IMAGE", - "links": [ - 171 - ], - "slot_index": 1, - "shape": 3 - } - ], - "properties": { - "Node name for S&R": "FeatureCombine" - }, - "widgets_values": [ - "add", - 0.62, - 1, - false - ] - }, - { - "id": 229, - "type": "VHS_LoadAudioUpload", - "pos": [ - -5061, - 998 - ], - "size": { - "0": 243.818359375, - "1": 130 - }, - "flags": {}, - "order": 1, - "mode": 0, - "inputs": [], - "outputs": [ - { - "name": "audio", - "type": "AUDIO", - "links": [], - "slot_index": 0, - "shape": 3 - } - ], - "properties": { - "Node name for S&R": "VHS_LoadAudioUpload" - }, - "widgets_values": { - "audio": "Leakage (Original).mp3", - "start_time": 22.54, - "duration": 5.5, - "choose audio to upload": "image" - } - }, - { - "id": 114, - "type": "AudioFeatureExtractor", - "pos": [ - -1330, - -2350 - ], - "size": { - "0": 541.800048828125, - "1": 78 - }, - "flags": {}, - "order": 37, - "mode": 4, - "inputs": [ - { - "name": "audio", - "type": "AUDIO", - "link": 190 - }, - { - "name": "feature_pipe", - "type": "FEATURE_PIPE", - "link": 146 - } - ], - "outputs": [ - { - "name": "FEATURE", - "type": "FEATURE", - "links": [ - 191 - ], - "slot_index": 0, - "shape": 3 - }, - { - "name": "FEATURE_PIPE", - "type": "FEATURE_PIPE", - "links": [], - "slot_index": 1, - "shape": 3 - } - ], - "properties": { - "Node name for S&R": "AudioFeatureExtractor" - }, - "widgets_values": [ - "amplitude_envelope" - ] - }, - { - "id": 122, - "type": "FeatureMixer", - "pos": [ - -1100, - -2030 - ], - "size": { - "0": 428.4000244140625, - "1": 342 - }, - "flags": { - "collapsed": false - }, - "order": 24, - "mode": 4, - "inputs": [ - { - "name": "feature", - "type": "FEATURE", - "link": 245 - } - ], - "outputs": [ - { - "name": "FEATURE", - "type": "FEATURE", - "links": [ - 193 - ], - "slot_index": 0, - "shape": 3 - }, - { - "name": "FEATURE_VISUALIZATION", - "type": "IMAGE", - "links": [ - 172 - ], - "slot_index": 1, - "shape": 3 - } - ], - "properties": { - "Node name for S&R": "FeatureMixer" - }, - "widgets_values": [ - 1, - 0, - 1, - 1, - 1, - 1, - 1, - 0, - 0, - 0, - 2, - false - ] - }, - { - "id": 320, - "type": "AudioSeparator", - "pos": [ - -1770, - -4640 - ], - "size": { - "0": 415.8000183105469, - "1": 158 - }, - "flags": {}, - "order": 21, - "mode": 0, - "inputs": [ - { - "name": "model", - "type": "OPEN_UNMIX_MODEL", - "link": 526 - }, - { - "name": "audio", - "type": "AUDIO", - "link": 527 - }, - { - "name": "video_frames", - "type": "IMAGE", - "link": 528 - } - ], - "outputs": [ - { - "name": "audio", - "type": "AUDIO", - "links": [], - "slot_index": 0, - "shape": 3 - }, - { - "name": "drums_audio", - "type": "AUDIO", - "links": [ - 537 - ], - "slot_index": 1, - "shape": 3 - }, - { - "name": "vocals_audio", - "type": "AUDIO", - "links": [], - "slot_index": 2, - "shape": 3 - }, - { - "name": "bass_audio", - "type": "AUDIO", - "links": [ - 538 - ], - "slot_index": 3, - "shape": 3 - }, - { - "name": "other_audio", - "type": "AUDIO", - "links": [], - "slot_index": 4, - "shape": 3 - }, - { - "name": "feature_pipe", - "type": "FEATURE_PIPE", - "links": [ - 530 - ], - "slot_index": 5, - "shape": 3 - } - ], - "properties": { - "Node name for S&R": "AudioSeparator" - }, - "widgets_values": [ - 30 - ] - }, - { - "id": 322, - "type": "AudioFeatureExtractor", - "pos": [ - -330, - -4850 - ], - "size": { - "0": 541.800048828125, - "1": 78 - }, - "flags": {}, - "order": 38, - "mode": 0, - "inputs": [ - { - "name": "audio", - "type": "AUDIO", - "link": 529 - }, - { - "name": "feature_pipe", - "type": "FEATURE_PIPE", - "link": 530 - } - ], - "outputs": [ - { - "name": "FEATURE", - "type": "FEATURE", - "links": [ - 533 - ], - "slot_index": 0, - "shape": 3 - }, - { - "name": "FEATURE_PIPE", - "type": "FEATURE_PIPE", - "links": [ - 532 - ], - "slot_index": 1, - "shape": 3 - } - ], - "properties": { - "Node name for S&R": "AudioFeatureExtractor" - }, - "widgets_values": [ - "amplitude_envelope" - ] - }, - { - "id": 324, - "type": "FeatureSmoothing", - "pos": [ - -330, - -4710 - ], - "size": { - "0": 478.8000183105469, - "1": 174 - }, - "flags": { - "collapsed": false - }, - "order": 43, - "mode": 0, - "inputs": [ - { - "name": "feature", - "type": "FEATURE", - "link": 533 - } - ], - "outputs": [ - { - "name": "FEATURE", - "type": "FEATURE", - "links": [ - 531 - ], - "slot_index": 0, - "shape": 3 - }, - { - "name": "FEATURE_VISUALIZATION", - "type": "IMAGE", - "links": [ - 534 - ], - "slot_index": 1, - "shape": 3 - } - ], - "properties": { - "Node name for S&R": "FeatureSmoothing" - }, - "widgets_values": [ - "moving_average", - 7, - 0.3, - 1, - false - ] - }, - { - "id": 328, - "type": "AudioCombine", - "pos": [ - -1050, - -4570 - ], - "size": { - "0": 390.5999755859375, - "1": 102 - }, - "flags": {}, - "order": 26, - "mode": 0, - "inputs": [ - { - "name": "audio1", - "type": "AUDIO", - "link": 537 - }, - { - "name": "audio2", - "type": "AUDIO", - "link": 538 - } - ], - "outputs": [ - { - "name": "AUDIO", - "type": "AUDIO", - "links": [ - 529, - 539 - ], - "slot_index": 0, - "shape": 3 - } - ], - "properties": { - "Node name for S&R": "AudioCombine" - }, - "widgets_values": [ - 0.5, - 0.5 - ] - }, - { - "id": 329, - "type": "PreviewAudio", - "pos": [ - -720, - -4760 - ], - "size": { - "0": 315, - "1": 76.00023651123047 - }, - "flags": {}, - "order": 39, - "mode": 0, - "inputs": [ - { - "name": "audio", - "type": "AUDIO", - "link": 539 - } - ], - "outputs": [], - "properties": { - "Node name for S&R": "PreviewAudio" - }, - "widgets_values": [ - null - ] - }, - { - "id": 321, - "type": "DownloadOpenUnmixModel", - "pos": [ - -1850, - -4750 - ], - "size": { - "0": 541.800048828125, - "1": 58 - }, - "flags": {}, - "order": 2, - "mode": 0, - "inputs": [], - "outputs": [ - { - "name": "OPEN_UNMIX_MODEL", - "type": "OPEN_UNMIX_MODEL", - "links": [ - 526 - ], - "shape": 3 - } - ], - "properties": { - "Node name for S&R": "DownloadOpenUnmixModel" - }, - "widgets_values": [ - "umxl" - ] - }, - { - "id": 330, - "type": "GetImageSizeAndCount", - "pos": [ - -2227, - -4589 - ], - "size": { - "0": 277.20001220703125, - "1": 86 - }, - "flags": {}, - "order": 16, - "mode": 0, - "inputs": [ - { - "name": "image", - "type": "IMAGE", - "link": 540 - } - ], - "outputs": [ - { - "name": "image", - "type": "IMAGE", - "links": [ - 528 - ], - "slot_index": 0, - "shape": 3 - }, - { - "name": "512 width", - "type": "INT", - "links": null, - "shape": 3 - }, - { - "name": "512 height", - "type": "INT", - "links": null, - "shape": 3 - }, - { - "name": "330 count", - "type": "INT", - "links": null, - "shape": 3 - } - ], - "properties": { - "Node name for S&R": "GetImageSizeAndCount" - } - }, - { - "id": 326, - "type": "EmptyImageFromAudio", - "pos": [ - -2495, - -4867 - ], - "size": { - "0": 336, - "1": 113.79998779296875 - }, - "flags": {}, - "order": 13, - "mode": 0, - "inputs": [ - { - "name": "audio", - "type": "AUDIO", - "link": 535 - } - ], - "outputs": [ - { - "name": "IMAGE", - "type": "IMAGE", - "links": [ - 540 - ], - "slot_index": 0, - "shape": 3 - } - ], - "properties": { - "Node name for S&R": "EmptyImageFromAudio" - }, - "widgets_values": [ - 30, - 512, - 512 - ] - }, - { - "id": 323, - "type": "FlexVideoDirection", - "pos": [ - -368, - -4496 - ], - "size": { - "0": 466.279296875, - "1": 170 - }, - "flags": {}, - "order": 49, - "mode": 0, - "inputs": [ - { - "name": "images", - "type": "IMAGE", - "link": 542 - }, - { - "name": "feature", - "type": "FEATURE", - "link": 531 - }, - { - "name": "feature_pipe", - "type": "FEATURE_PIPE", - "link": 532 - } - ], - "outputs": [ - { - "name": "IMAGE", - "type": "IMAGE", - "links": [ - 543 - ], - "slot_index": 0, - "shape": 3 - } - ], - "properties": { - "Node name for S&R": "FlexVideoDirection" - }, - "widgets_values": [ - 0.99, - "relative", - "direction", - 0 - ] - }, - { - "id": 325, - "type": "PreviewImage", - "pos": [ - 389, - -4940 - ], - "size": { - "0": 210, - "1": 246 - }, - "flags": {}, - "order": 50, - "mode": 0, - "inputs": [ - { - "name": "images", - "type": "IMAGE", - "link": 534 - } - ], - "outputs": [], - "properties": { - "Node name for S&R": "PreviewImage" - } - }, - { - "id": 327, - "type": "Reroute", - "pos": [ - -2570, - -4690 - ], - "size": [ - 75, - 26 - ], - "flags": {}, - "order": 10, - "mode": 0, - "inputs": [ - { - "name": "", - "type": "*", - "link": 536 - } - ], - "outputs": [ - { - "name": "", - "type": "AUDIO", - "links": [ - 527, - 535, - 547 - ], - "slot_index": 0 - } - ], - "properties": { - "showOutputText": false, - "horizontal": false - } - }, - { - "id": 346, - "type": "PreviewAudio", - "pos": [ - -690, - -6310 - ], - "size": { - "0": 315, - "1": 76 - }, - "flags": {}, - "order": 31, - "mode": 4, - "inputs": [ - { - "name": "audio", - "type": "AUDIO", - "link": 564 - } - ], - "outputs": [], - "properties": { - "Node name for S&R": "PreviewAudio" - }, - "widgets_values": [ - null - ] - }, - { - "id": 349, - "type": "EmptyImageFromAudio", - "pos": [ - -3170, - -6360 - ], - "size": { - "0": 336, - "1": 106 - }, - "flags": {}, - "order": 8, - "mode": 4, - "inputs": [ - { - "name": "audio", - "type": "AUDIO", - "link": 570 - } - ], - "outputs": [ - { - "name": "IMAGE", - "type": "IMAGE", - "links": [ - 571 - ], - "slot_index": 0, - "shape": 3 - } - ], - "properties": { - "Node name for S&R": "EmptyImageFromAudio" - }, - "widgets_values": [ - 30, - 512, - 512 - ] - }, - { - "id": 350, - "type": "GetImageSizeAndCount", - "pos": [ - -2630, - -6350 - ], - "size": { - "0": 277.20001220703125, - "1": 86 - }, - "flags": {}, - "order": 11, - "mode": 4, - "inputs": [ - { - "name": "image", - "type": "IMAGE", - "link": 571 - } - ], - "outputs": [ - { - "name": "image", - "type": "IMAGE", - "links": null, - "shape": 3 - }, - { - "name": "512 width", - "type": "INT", - "links": null, - "shape": 3 - }, - { - "name": "512 height", - "type": "INT", - "links": null, - "shape": 3 - }, - { - "name": "330 count", - "type": "INT", - "links": [ - 548 - ], - "slot_index": 3, - "shape": 3 - } - ], - "properties": { - "Node name for S&R": "GetImageSizeAndCount" - } - }, - { - "id": 351, - "type": "GetImageSizeAndCount", - "pos": [ - -1920, - -5950 - ], - "size": { - "0": 277.20001220703125, - "1": 86 - }, - "flags": {}, - "order": 18, - "mode": 4, - "inputs": [ - { - "name": "image", - "type": "IMAGE", - "link": 572 - } - ], - "outputs": [ - { - "name": "image", - "type": "IMAGE", - "links": [ - 553 - ], - "slot_index": 0, - "shape": 3 - }, - { - "name": "1920 width", - "type": "INT", - "links": null, - "shape": 3 - }, - { - "name": "1072 height", - "type": "INT", - "links": null, - "shape": 3 - }, - { - "name": "330 count", - "type": "INT", - "links": [], - "slot_index": 3, - "shape": 3 - } - ], - "properties": { - "Node name for S&R": "GetImageSizeAndCount" - } - }, - { - "id": 338, - "type": "AudioFeatureExtractor", - "pos": [ - -830, - -6080 - ], - "size": { - "0": 541.800048828125, - "1": 78 - }, - "flags": {}, - "order": 32, - "mode": 4, - "inputs": [ - { - "name": "audio", - "type": "AUDIO", - "link": 554 - }, - { - "name": "feature_pipe", - "type": "FEATURE_PIPE", - "link": 555 - } - ], - "outputs": [ - { - "name": "FEATURE", - "type": "FEATURE", - "links": [ - 558 - ], - "slot_index": 0, - "shape": 3 - }, - { - "name": "FEATURE_PIPE", - "type": "FEATURE_PIPE", - "links": [], - "slot_index": 1, - "shape": 3 - } - ], - "properties": { - "Node name for S&R": "AudioFeatureExtractor" - }, - "widgets_values": [ - "amplitude_envelope" - ] - }, - { - "id": 342, - "type": "PreviewImage", - "pos": [ - -120, - -5670 - ], - "size": { - "0": 210, - "1": 246 - }, - "flags": {}, - "order": 27, - "mode": 4, - "inputs": [ - { - "name": "images", - "type": "IMAGE", - "link": 560 - } - ], - "outputs": [], - "properties": { - "Node name for S&R": "PreviewImage" - } - }, - { - "id": 348, - "type": "RhythmFeatureExtractor", - "pos": [ - -1520, - -5680 - ], - "size": { - "0": 529.199951171875, - "1": 146 - }, - "flags": {}, - "order": 17, - "mode": 4, - "inputs": [ - { - "name": "video_frames", - "type": "IMAGE", - "link": 568 - }, - { - "name": "audio", - "type": "AUDIO", - "link": 569 - } - ], - "outputs": [ - { - "name": "FEATURE", - "type": "FEATURE", - "links": [ - 556 - ], - "shape": 3 - }, - { - "name": "FEATURE_PIPE", - "type": "FEATURE_PIPE", - "links": [ - 575 - ], - "shape": 3 - } - ], - "properties": { - "Node name for S&R": "RhythmFeatureExtractor" - }, - "widgets_values": [ - "beat_locations", - 30, - 4 - ] - }, - { - "id": 336, - "type": "AudioSeparator", - "pos": [ - -1560, - -6140 - ], - "size": { - "0": 415.8000183105469, - "1": 158 - }, - "flags": {}, - "order": 23, - "mode": 4, - "inputs": [ - { - "name": "model", - "type": "OPEN_UNMIX_MODEL", - "link": 551 - }, - { - "name": "audio", - "type": "AUDIO", - "link": 552 - }, - { - "name": "video_frames", - "type": "IMAGE", - "link": 553 - } - ], - "outputs": [ - { - "name": "audio", - "type": "AUDIO", - "links": null, - "slot_index": 0, - "shape": 3 - }, - { - "name": "drums_audio", - "type": "AUDIO", - "links": [ - 562 - ], - "slot_index": 1, - "shape": 3 - }, - { - "name": "vocals_audio", - "type": "AUDIO", - "links": null, - "shape": 3 - }, - { - "name": "bass_audio", - "type": "AUDIO", - "links": [ - 554, - 563, - 580 - ], - "slot_index": 3, - "shape": 3 - }, - { - "name": "other_audio", - "type": "AUDIO", - "links": [ - 564 - ], - "slot_index": 4, - "shape": 3 - }, - { - "name": "feature_pipe", - "type": "FEATURE_PIPE", - "links": [ - 555 - ], - "slot_index": 5, - "shape": 3 - } - ], - "properties": { - "Node name for S&R": "AudioSeparator" - }, - "widgets_values": [ - 30 - ] - }, - { - "id": 355, - "type": "RhythmFeatureExtractor", - "pos": [ - -1710, - -6450 - ], - "size": { - "0": 529.199951171875, - "1": 146 - }, - "flags": {}, - "order": 30, - "mode": 4, - "inputs": [ - { - "name": "video_frames", - "type": "IMAGE", - "link": 578 - }, - { - "name": "audio", - "type": "AUDIO", - "link": 580 - } - ], - "outputs": [ - { - "name": "FEATURE", - "type": "FEATURE", - "links": [ - 576 - ], - "shape": 3 - }, - { - "name": "FEATURE_PIPE", - "type": "FEATURE_PIPE", - "links": [], - "shape": 3 - } - ], - "properties": { - "Node name for S&R": "RhythmFeatureExtractor" - }, - "widgets_values": [ - "onset_strength", - 30, - 4 - ] - }, - { - "id": 354, - "type": "PreviewImage", - "pos": [ - 330, - -7100 - ], - "size": { - "0": 210, - "1": 246 - }, - "flags": {}, - "order": 51, - "mode": 4, - "inputs": [ - { - "name": "images", - "type": "IMAGE", - "link": 582 - } - ], - "outputs": [], - "properties": { - "Node name for S&R": "PreviewImage" - } - }, - { - "id": 356, - "type": "FeatureSmoothing", - "pos": [ - -250, - -6910 - ], - "size": { - "0": 367.79998779296875, - "1": 174 - }, - "flags": {}, - "order": 44, - "mode": 4, - "inputs": [ - { - "name": "feature", - "type": "FEATURE", - "link": 581 - } - ], - "outputs": [ - { - "name": "FEATURE", - "type": "FEATURE", - "links": null, - "shape": 3 - }, - { - "name": "FEATURE_VISUALIZATION", - "type": "IMAGE", - "links": [ - 582 - ], - "shape": 3, - "slot_index": 1 - } - ], - "properties": { - "Node name for S&R": "FeatureSmoothing" - }, - "widgets_values": [ - "moving_average", - 5, - 0.3, - 1, - false - ] - }, - { - "id": 353, - "type": "FeatureMixer", - "pos": [ - -870, - -6940 - ], - "size": { - "0": 428.4000244140625, - "1": 342 - }, - "flags": { - "collapsed": false - }, - "order": 40, - "mode": 4, - "inputs": [ - { - "name": "feature", - "type": "FEATURE", - "link": 576 - } - ], - "outputs": [ - { - "name": "FEATURE", - "type": "FEATURE", - "links": [ - 581 - ], - "slot_index": 0, - "shape": 3 - }, - { - "name": "FEATURE_VISUALIZATION", - "type": "IMAGE", - "links": [], - "slot_index": 1, - "shape": 3 - } - ], - "properties": { - "Node name for S&R": "FeatureMixer" - }, - "widgets_values": [ - 1.31, - 0, - 1, - 1, - 1, - 1, - 1, - 0, - 0, - 0, - 5, - false - ] - }, - { - "id": 335, - "type": "VHS_VideoCombine", - "pos": [ - 1040, - -6180 - ], - "size": [ - 214.7587890625, - 433.14502831780203 - ], - "flags": {}, - "order": 52, - "mode": 4, - "inputs": [ - { - "name": "images", - "type": "IMAGE", - "link": 549 - }, - { - "name": "audio", - "type": "AUDIO", - "link": 550 - }, - { - "name": "meta_batch", - "type": "VHS_BatchManager", - "link": null - }, - { - "name": "vae", - "type": "VAE", - "link": null - } - ], - "outputs": [ - { - "name": "Filenames", - "type": "VHS_FILENAMES", - "links": null, - "shape": 3 - } - ], - "properties": { - "Node name for S&R": "VHS_VideoCombine" - }, - "widgets_values": { - "frame_rate": 30, - "loop_count": 0, - "filename_prefix": "AnimateDiff", - "format": "video/h264-mp4", - "pix_fmt": "yuv420p", - "crf": 19, - "save_metadata": true, - "pingpong": false, - "save_output": true, - "videopreview": { - "hidden": false, - "paused": false, - "params": { - "filename": "AnimateDiff_03125-audio.mp4", - "subfolder": "", - "type": "output", - "format": "video/h264-mp4", - "frame_rate": 30 - }, - "muted": false - } - } - }, - { - "id": 339, - "type": "FeatureMixer", - "pos": [ - -660, - -5680 - ], - "size": { - "0": 428.4000244140625, - "1": 342 - }, - "flags": { - "collapsed": false - }, - "order": 22, - "mode": 4, - "inputs": [ - { - "name": "feature", - "type": "FEATURE", - "link": 556 - } - ], - "outputs": [ - { - "name": "FEATURE", - "type": "FEATURE", - "links": [ - 559 - ], - "slot_index": 0, - "shape": 3 - }, - { - "name": "FEATURE_VISUALIZATION", - "type": "IMAGE", - "links": [ - 560 - ], - "slot_index": 1, - "shape": 3 - } - ], - "properties": { - "Node name for S&R": "FeatureMixer" - }, - "widgets_values": [ - 1.31, - 0, - 1, - 1, - 1, - 1, - 1, - 0, - 0, - 0, - 5, - false - ] - }, - { - "id": 341, - "type": "FeatureCombine", - "pos": [ - -140, - -6030 - ], - "size": { - "0": 453.5999755859375, - "1": 150 - }, - "flags": {}, - "order": 41, - "mode": 4, - "inputs": [ - { - "name": "feature1", - "type": "FEATURE", - "link": 558 - }, - { - "name": "feature2", - "type": "FEATURE", - "link": 559 - } - ], - "outputs": [ - { - "name": "FEATURE", - "type": "FEATURE", - "links": [ - 574 - ], - "slot_index": 0, - "shape": 3 - }, - { - "name": "FEATURE_VISUALIZATION", - "type": "IMAGE", - "links": [ - 557 - ], - "slot_index": 1, - "shape": 3 - } - ], - "properties": { - "Node name for S&R": "FeatureCombine" - }, - "widgets_values": [ - "subtract", - 0.62, - 1, - false - ] - }, - { - "id": 340, - "type": "PreviewImage", - "pos": [ - 460, - -5900 - ], - "size": { - "0": 210, - "1": 246 - }, - "flags": {}, - "order": 46, - "mode": 4, - "inputs": [ - { - "name": "images", - "type": "IMAGE", - "link": 557 - } - ], - "outputs": [], - "properties": { - "Node name for S&R": "PreviewImage" - } - }, - { - "id": 332, - "type": "VHS_VideoCombine", - "pos": [ - 863, - -4147 - ], - "size": [ - 315, - 490 - ], - "flags": {}, - "order": 54, - "mode": 0, - "inputs": [ - { - "name": "images", - "type": "IMAGE", - "link": 543 - }, - { - "name": "audio", - "type": "AUDIO", - "link": 547 - }, - { - "name": "meta_batch", - "type": "VHS_BatchManager", - "link": null - }, - { - "name": "vae", - "type": "VAE", - "link": null - } - ], - "outputs": [ - { - "name": "Filenames", - "type": "VHS_FILENAMES", - "links": null, - "shape": 3 - } - ], - "properties": { - "Node name for S&R": "VHS_VideoCombine" - }, - "widgets_values": { - "frame_rate": 30, - "loop_count": 0, - "filename_prefix": "AnimateDiff", - "format": "video/h264-mp4", - "pix_fmt": "yuv420p", - "crf": 19, - "save_metadata": true, - "pingpong": false, - "save_output": true, - "videopreview": { - "hidden": false, - "paused": false, - "params": { - "filename": "AnimateDiff_03100-audio.mp4", - "subfolder": "", - "type": "output", - "format": "video/h264-mp4", - "frame_rate": 30 - } - } - } - }, - { - "id": 352, - "type": "FlexVideoSeek", - "pos": [ - 480, - -6170 - ], - "size": { - "0": 434.6160888671875, - "1": 194 - }, - "flags": {}, - "order": 45, - "mode": 4, - "inputs": [ - { - "name": "images", - "type": "IMAGE", - "link": 573 - }, - { - "name": "feature", - "type": "FEATURE", - "link": 574 - }, - { - "name": "feature_pipe", - "type": "FEATURE_PIPE", - "link": 575 - } - ], - "outputs": [ - { - "name": "IMAGE", - "type": "IMAGE", - "links": [ - 549 - ], - "shape": 3 - } - ], - "properties": { - "Node name for S&R": "FlexVideoSeek" - }, - "widgets_values": [ - 1, - "relative", - "seek", - 0, - false - ] - }, - { - "id": 333, - "type": "VHS_LoadAudioUpload", - "pos": [ - -4632, - -5627 - ], - "size": { - "0": 243.818359375, - "1": 130 - }, - "flags": {}, - "order": 3, - "mode": 4, - "inputs": [], - "outputs": [ - { - "name": "audio", - "type": "AUDIO", - "links": [ - 550, - 552, - 569, - 570 - ], - "slot_index": 0, - "shape": 3 - } - ], - "properties": { - "Node name for S&R": "VHS_LoadAudioUpload" - }, - "widgets_values": { - "audio": "Leakage (Original).mp3", - "start_time": 33.54, - "duration": 11, - "choose audio to upload": "image" - } - }, - { - "id": 36, - "type": "VHS_LoadAudioUpload", - "pos": [ - -5412, - -2735 - ], - "size": { - "0": 243.818359375, - "1": 130 - }, - "flags": {}, - "order": 4, - "mode": 4, - "inputs": [], - "outputs": [ - { - "name": "audio", - "type": "AUDIO", - "links": [ - 141, - 195, - 244, - 252 - ], - "slot_index": 0, - "shape": 3 - } - ], - "properties": { - "Node name for S&R": "VHS_LoadAudioUpload" - }, - "widgets_values": { - "audio": "Leakage (Original).mp3", - "start_time": 0, - "duration": 22.54, - "choose audio to upload": "image" - } - }, - { - "id": 218, - "type": "DownloadOpenUnmixModel", - "pos": [ - -6039, - -2003 - ], - "size": { - "0": 541.800048828125, - "1": 58 - }, - "flags": {}, - "order": 5, - "mode": 0, - "inputs": [], - "outputs": [ - { - "name": "OPEN_UNMIX_MODEL", - "type": "OPEN_UNMIX_MODEL", - "links": [ - 385, - 551 - ], - "shape": 3, - "slot_index": 0 - } - ], - "properties": { - "Node name for S&R": "DownloadOpenUnmixModel" - }, - "widgets_values": [ - "umxl" - ] - }, - { - "id": 104, - "type": "VHS_VideoCombine", - "pos": [ - 1142, - -2652 - ], - "size": [ - 214.7587890625, - 433.14502831780203 - ], - "flags": {}, - "order": 53, - "mode": 4, - "inputs": [ - { - "name": "images", - "type": "IMAGE", - "link": 301 - }, - { - "name": "audio", - "type": "AUDIO", - "link": 195 - }, - { - "name": "meta_batch", - "type": "VHS_BatchManager", - "link": null - }, - { - "name": "vae", - "type": "VAE", - "link": null - } - ], - "outputs": [ - { - "name": "Filenames", - "type": "VHS_FILENAMES", - "links": null, - "shape": 3 - } - ], - "properties": { - "Node name for S&R": "VHS_VideoCombine" - }, - "widgets_values": { - "frame_rate": 30, - "loop_count": 0, - "filename_prefix": "AnimateDiff", - "format": "video/h264-mp4", - "pix_fmt": "yuv420p", - "crf": 19, - "save_metadata": true, - "pingpong": false, - "save_output": true, - "videopreview": { - "hidden": false, - "paused": false, - "params": { - "filename": "AnimateDiff_03123-audio.mp4", - "subfolder": "", - "type": "output", - "format": "video/h264-mp4", - "frame_rate": 30 - }, - "muted": false - } - } - }, - { - "id": 102, - "type": "VHS_LoadVideo", - "pos": [ - -2738, - -2162 - ], - "size": [ - 247.455078125, - 379.25460318006606 - ], - "flags": {}, - "order": 15, - "mode": 4, - "inputs": [ - { - "name": "meta_batch", - "type": "VHS_BatchManager", - "link": null - }, - { - "name": "vae", - "type": "VAE", - "link": null - }, - { - "name": "frame_load_cap", - "type": "INT", - "link": 254, - "widget": { - "name": "frame_load_cap" - } - } - ], - "outputs": [ - { - "name": "IMAGE", - "type": "IMAGE", - "links": [ - 251, - 287, - 296 - ], - "slot_index": 0, - "shape": 3 - }, - { - "name": "frame_count", - "type": "INT", - "links": null, - "slot_index": 1, - "shape": 3 - }, - { - "name": "audio", - "type": "AUDIO", - "links": [], - "slot_index": 2, - "shape": 3 - }, - { - "name": "video_info", - "type": "VHS_VIDEOINFO", - "links": null, - "shape": 3 - } - ], - "properties": { - "Node name for S&R": "VHS_LoadVideo" - }, - "widgets_values": { - "video": "1.2.mp4", - "force_rate": 30, - "force_size": "Disabled", - "custom_width": 512, - "custom_height": 512, - "frame_load_cap": 1500, - "skip_first_frames": 0, - "select_every_nth": 1, - "choose video to upload": "image", - "videopreview": { - "hidden": false, - "paused": false, - "params": { - "frame_load_cap": 1500, - "skip_first_frames": 0, - "force_rate": 30, - "filename": "1.2.mp4", - "type": "input", - "format": "video/mp4", - "select_every_nth": 1 - }, - "muted": false - } - } - }, - { - "id": 334, - "type": "VHS_LoadVideo", - "pos": [ - -2290, - -5840 - ], - "size": [ - 247.455078125, - 379.25460318006606 - ], - "flags": {}, - "order": 14, - "mode": 4, - "inputs": [ - { - "name": "meta_batch", - "type": "VHS_BatchManager", - "link": null - }, - { - "name": "vae", - "type": "VAE", - "link": null - }, - { - "name": "frame_load_cap", - "type": "INT", - "link": 548, - "widget": { - "name": "frame_load_cap" - } - } - ], - "outputs": [ - { - "name": "IMAGE", - "type": "IMAGE", - "links": [ - 568, - 572, - 573, - 578 - ], - "slot_index": 0, - "shape": 3 - }, - { - "name": "frame_count", - "type": "INT", - "links": null, - "slot_index": 1, - "shape": 3 - }, - { - "name": "audio", - "type": "AUDIO", - "links": [], - "slot_index": 2, - "shape": 3 - }, - { - "name": "video_info", - "type": "VHS_VIDEOINFO", - "links": null, - "shape": 3 - } - ], - "properties": { - "Node name for S&R": "VHS_LoadVideo" - }, - "widgets_values": { - "video": "22.2.mp4", - "force_rate": 30, - "force_size": "Disabled", - "custom_width": 512, - "custom_height": 512, - "frame_load_cap": 1500, - "skip_first_frames": 0, - "select_every_nth": 1, - "choose video to upload": "image", - "videopreview": { - "hidden": false, - "paused": false, - "params": { - "frame_load_cap": 1500, - "skip_first_frames": 0, - "force_rate": 30, - "filename": "22.2.mp4", - "type": "input", - "format": "video/mp4", - "select_every_nth": 1 - }, - "muted": false - } - } - }, - { - "id": 345, - "type": "PreviewAudio", - "pos": [ - -712, - -6201 - ], - "size": { - "0": 315, - "1": 76 - }, - "flags": {}, - "order": 29, - "mode": 4, - "inputs": [ - { - "name": "audio", - "type": "AUDIO", - "link": 563 - } - ], - "outputs": [], - "properties": { - "Node name for S&R": "PreviewAudio" - }, - "widgets_values": [ - null - ] - }, - { - "id": 344, - "type": "PreviewAudio", - "pos": [ - -680, - -6476 - ], - "size": { - "0": 315, - "1": 76 - }, - "flags": {}, - "order": 28, - "mode": 4, - "inputs": [ - { - "name": "audio", - "type": "AUDIO", - "link": 562 - } - ], - "outputs": [], - "properties": { - "Node name for S&R": "PreviewAudio" - }, - "widgets_values": [ - null - ] - }, - { - "id": 301, - "type": "VHS_LoadVideo", - "pos": [ - -2853, - -4364 - ], - "size": [ - 247.455078125, - 403.25460318006606 - ], - "flags": {}, - "order": 6, - "mode": 0, - "inputs": [ - { - "name": "meta_batch", - "type": "VHS_BatchManager", - "link": null - }, - { - "name": "vae", - "type": "VAE", - "link": null - } - ], - "outputs": [ - { - "name": "IMAGE", - "type": "IMAGE", - "links": [ - 542 - ], - "slot_index": 0, - "shape": 3 - }, - { - "name": "frame_count", - "type": "INT", - "links": null, - "slot_index": 1, - "shape": 3 - }, - { - "name": "audio", - "type": "AUDIO", - "links": [], - "slot_index": 2, - "shape": 3 - }, - { - "name": "video_info", - "type": "VHS_VIDEOINFO", - "links": null, - "shape": 3 - } - ], - "properties": { - "Node name for S&R": "VHS_LoadVideo" - }, - "widgets_values": { - "video": "3.1.mp4", - "force_rate": 30, - "force_size": "Disabled", - "custom_width": 512, - "custom_height": 512, - "frame_load_cap": 0, - "skip_first_frames": 0, - "select_every_nth": 1, - "choose video to upload": "image", - "videopreview": { - "hidden": false, - "paused": false, - "params": { - "frame_load_cap": 0, - "skip_first_frames": 0, - "force_rate": 30, - "filename": "3.1.mp4", - "type": "input", - "format": "video/mp4", - "select_every_nth": 1 - }, - "muted": false - } - } - }, - { - "id": 331, - "type": "VHS_LoadAudioUpload", - "pos": [ - -3402, - -4667 - ], - "size": { - "0": 243.818359375, - "1": 130 - }, - "flags": {}, - "order": 7, - "mode": 0, - "inputs": [], - "outputs": [ - { - "name": "audio", - "type": "AUDIO", - "links": [ - 536 - ], - "slot_index": 0, - "shape": 3 - } - ], - "properties": { - "Node name for S&R": "VHS_LoadAudioUpload" - }, - "widgets_values": { - "audio": "Leakage (Original).mp3", - "start_time": 22.54, - "duration": 11, - "choose audio to upload": "image" - } - } - ], - "links": [ - [ - 141, - 36, - 0, - 110, - 1, - "AUDIO" - ], - [ - 146, - 110, - 5, - 114, - 1, - "FEATURE_PIPE" - ], - [ - 171, - 125, - 1, - 123, - 0, - "IMAGE" - ], - [ - 172, - 122, - 1, - 126, - 0, - "IMAGE" - ], - [ - 188, - 110, - 1, - 133, - 0, - "AUDIO" - ], - [ - 189, - 110, - 3, - 134, - 0, - "AUDIO" - ], - [ - 190, - 110, - 3, - 114, - 0, - "AUDIO" - ], - [ - 191, - 114, - 0, - 125, - 0, - "FEATURE" - ], - [ - 193, - 122, - 0, - 125, - 1, - "FEATURE" - ], - [ - 195, - 36, - 0, - 104, - 1, - "AUDIO" - ], - [ - 198, - 110, - 4, - 136, - 0, - "AUDIO" - ], - [ - 244, - 36, - 0, - 152, - 1, - "AUDIO" - ], - [ - 245, - 152, - 0, - 122, - 0, - "FEATURE" - ], - [ - 251, - 102, - 0, - 152, - 0, - "IMAGE" - ], - [ - 252, - 36, - 0, - 153, - 0, - "AUDIO" - ], - [ - 253, - 153, - 0, - 154, - 0, - "IMAGE" - ], - [ - 254, - 154, - 3, - 102, - 2, - "INT" - ], - [ - 287, - 102, - 0, - 175, - 0, - "IMAGE" - ], - [ - 288, - 175, - 0, - 110, - 2, - "IMAGE" - ], - [ - 296, - 102, - 0, - 178, - 0, - "IMAGE" - ], - [ - 297, - 125, - 0, - 178, - 1, - "FEATURE" - ], - [ - 298, - 152, - 1, - 178, - 2, - "FEATURE_PIPE" - ], - [ - 301, - 178, - 0, - 104, - 0, - "IMAGE" - ], - [ - 385, - 218, - 0, - 110, - 0, - "OPEN_UNMIX_MODEL" - ], - [ - 526, - 321, - 0, - 320, - 0, - "OPEN_UNMIX_MODEL" - ], - [ - 527, - 327, - 0, - 320, - 1, - "AUDIO" - ], - [ - 528, - 330, - 0, - 320, - 2, - "IMAGE" - ], - [ - 529, - 328, - 0, - 322, - 0, - "AUDIO" - ], - [ - 530, - 320, - 5, - 322, - 1, - "FEATURE_PIPE" - ], - [ - 531, - 324, - 0, - 323, - 1, - "FEATURE" - ], - [ - 532, - 322, - 1, - 323, - 2, - "FEATURE_PIPE" - ], - [ - 533, - 322, - 0, - 324, - 0, - "FEATURE" - ], - [ - 534, - 324, - 1, - 325, - 0, - "IMAGE" - ], - [ - 535, - 327, - 0, - 326, - 0, - "AUDIO" - ], - [ - 536, - 331, - 0, - 327, - 0, - "*" - ], - [ - 537, - 320, - 1, - 328, - 0, - "AUDIO" - ], - [ - 538, - 320, - 3, - 328, - 1, - "AUDIO" - ], - [ - 539, - 328, - 0, - 329, - 0, - "AUDIO" - ], - [ - 540, - 326, - 0, - 330, - 0, - "IMAGE" - ], - [ - 542, - 301, - 0, - 323, - 0, - "IMAGE" - ], - [ - 543, - 323, - 0, - 332, - 0, - "IMAGE" - ], - [ - 547, - 327, - 0, - 332, - 1, - "AUDIO" - ], - [ - 548, - 350, - 3, - 334, - 2, - "INT" - ], - [ - 549, - 352, - 0, - 335, - 0, - "IMAGE" - ], - [ - 550, - 333, - 0, - 335, - 1, - "AUDIO" - ], - [ - 551, - 218, - 0, - 336, - 0, - "OPEN_UNMIX_MODEL" - ], - [ - 552, - 333, - 0, - 336, - 1, - "AUDIO" - ], - [ - 553, - 351, - 0, - 336, - 2, - "IMAGE" - ], - [ - 554, - 336, - 3, - 338, - 0, - "AUDIO" - ], - [ - 555, - 336, - 5, - 338, - 1, - "FEATURE_PIPE" - ], - [ - 556, - 348, - 0, - 339, - 0, - "FEATURE" - ], - [ - 557, - 341, - 1, - 340, - 0, - "IMAGE" - ], - [ - 558, - 338, - 0, - 341, - 0, - "FEATURE" - ], - [ - 559, - 339, - 0, - 341, - 1, - "FEATURE" - ], - [ - 560, - 339, - 1, - 342, - 0, - "IMAGE" - ], - [ - 562, - 336, - 1, - 344, - 0, - "AUDIO" - ], - [ - 563, - 336, - 3, - 345, - 0, - "AUDIO" - ], - [ - 564, - 336, - 4, - 346, - 0, - "AUDIO" - ], - [ - 568, - 334, - 0, - 348, - 0, - "IMAGE" - ], - [ - 569, - 333, - 0, - 348, - 1, - "AUDIO" - ], - [ - 570, - 333, - 0, - 349, - 0, - "AUDIO" - ], - [ - 571, - 349, - 0, - 350, - 0, - "IMAGE" - ], - [ - 572, - 334, - 0, - 351, - 0, - "IMAGE" - ], - [ - 573, - 334, - 0, - 352, - 0, - "IMAGE" - ], - [ - 574, - 341, - 0, - 352, - 1, - "FEATURE" - ], - [ - 575, - 348, - 1, - 352, - 2, - "FEATURE_PIPE" - ], - [ - 576, - 355, - 0, - 353, - 0, - "FEATURE" - ], - [ - 578, - 334, - 0, - 355, - 0, - "IMAGE" - ], - [ - 580, - 336, - 3, - 355, - 1, - "AUDIO" - ], - [ - 581, - 353, - 0, - 356, - 0, - "FEATURE" - ], - [ - 582, - 356, - 1, - 354, - 0, - "IMAGE" - ] - ], - "groups": [ - { - "title": "Audio Utility", - "bounding": [ - 3893, - 3111, - 1610, - 1406 - ], - "color": "#3f789e", - "font_size": 24, - "locked": false - }, - { - "title": "Audio Effects", - "bounding": [ - 2196, - -1799, - 1352, - 968 - ], - "color": "#3f789e", - "font_size": 24, - "locked": false - } - ], - "config": {}, - "extra": { - "ds": { - "scale": 0.1, - "offset": [ - 7430.396765572208, - 6945.398232376904 - ] - } - }, - "version": 0.4 -} \ No newline at end of file diff --git a/examples/slilme_tutorial.json b/examples/slilme_tutorialVERSION2.json similarity index 80% rename from examples/slilme_tutorial.json rename to examples/slilme_tutorialVERSION2.json index 73c6a77..4e43cbb 100644 --- a/examples/slilme_tutorial.json +++ b/examples/slilme_tutorialVERSION2.json @@ -1,18 +1,18 @@ { - "last_node_id": 201, - "last_link_id": 366, + "last_node_id": 209, + "last_link_id": 380, "nodes": [ { "id": 70, "type": "ADE_AnimateDiffSamplingSettings", "pos": [ - 5110.983725773823, - 2768.9627533500015 + 5110.98388671875, + 2768.962646484375 + ], + "size": [ + 273.3500061035156, + 274 ], - "size": { - "0": 273.3500061035156, - "1": 254 - }, "flags": {}, "order": 19, "mode": 0, @@ -21,24 +21,28 @@ "name": "noise_layers", "type": "NOISE_LAYERS", "link": null, - "slot_index": 0 + "slot_index": 0, + "shape": 7 }, { "name": "iteration_opts", "type": "ITERATION_OPTS", - "link": null + "link": null, + "shape": 7 }, { "name": "custom_cfg", "type": "CUSTOM_CFG", "link": 127, - "slot_index": 2 + "slot_index": 2, + "shape": 7 }, { "name": "sigma_schedule", "type": "SIGMA_SCHEDULE", "link": 128, - "slot_index": 3 + "slot_index": 3, + "shape": 7 }, { "name": "seed_override", @@ -55,6 +59,12 @@ "widget": { "name": "seed_override" } + }, + { + "name": "image_inject", + "type": "IMAGE_INJECT", + "link": null, + "shape": 7 } ], "outputs": [ @@ -64,8 +74,8 @@ "links": [ 124 ], - "shape": 3, - "slot_index": 0 + "slot_index": 0, + "shape": 3 } ], "properties": { @@ -82,21 +92,20 @@ "comfy", 0, 0, - false, - "" + false ] }, { "id": 72, "type": "ADE_MultivalDynamic", "pos": [ - 4760.983725773823, - 2568.9627533500015 + 4760.98388671875, + 2568.962646484375 + ], + "size": [ + 259.9388122558594, + 63.332008361816406 ], - "size": { - "0": 259.9388122558594, - "1": 63.332008361816406 - }, "flags": {}, "order": 0, "mode": 0, @@ -104,7 +113,8 @@ { "name": "mask_optional", "type": "MASK", - "link": null + "link": null, + "shape": 7 } ], "outputs": [ @@ -114,8 +124,8 @@ "links": [ 125 ], - "shape": 3, - "slot_index": 0 + "slot_index": 0, + "shape": 3 } ], "title": "Scale 🎭🅐🅓", @@ -128,21 +138,20 @@ } }, "widgets_values": [ - 1.1400000000000001, - "" + 1.1400000000000001 ] }, { "id": 73, "type": "ADE_AnimateDiffUniformContextOptions", "pos": [ - 5110.983725773823, - 2458.9627533500015 + 5110.98388671875, + 2458.962646484375 + ], + "size": [ + 273.269775390625, + 270 ], - "size": { - "0": 273.269775390625, - "1": 270 - }, "flags": {}, "order": 1, "mode": 0, @@ -150,12 +159,14 @@ { "name": "prev_context", "type": "CONTEXT_OPTIONS", - "link": null + "link": null, + "shape": 7 }, { "name": "view_opts", "type": "VIEW_OPTS", - "link": null + "link": null, + "shape": 7 } ], "outputs": [ @@ -165,8 +176,8 @@ "links": [ 121 ], - "shape": 3, - "slot_index": 0 + "slot_index": 0, + "shape": 3 } ], "title": "Context Options 🎭🅐🅓", @@ -195,13 +206,13 @@ "id": 74, "type": "ADE_MultivalDynamic", "pos": [ - 4760.983725773823, - 2458.9627533500015 + 4760.98388671875, + 2458.962646484375 + ], + "size": [ + 265.1632385253906, + 58 ], - "size": { - "0": 265.1632385253906, - "1": 58 - }, "flags": {}, "order": 2, "mode": 0, @@ -209,7 +220,8 @@ { "name": "mask_optional", "type": "MASK", - "link": null + "link": null, + "shape": 7 } ], "outputs": [ @@ -232,21 +244,20 @@ } }, "widgets_values": [ - 1.1, - "" + 1.1 ] }, { "id": 75, "type": "ADE_CustomCFGSimple", "pos": [ - 4760.983725773823, - 2668.9627533500015 + 4760.98388671875, + 2668.962646484375 + ], + "size": [ + 257.2469787597656, + 60.893348693847656 ], - "size": { - "0": 257.2469787597656, - "1": 60.893348693847656 - }, "flags": {}, "order": 3, "mode": 0, @@ -254,7 +265,8 @@ { "name": "cfg_extras", "type": "CFG_EXTRAS", - "link": null + "link": null, + "shape": 7 } ], "outputs": [ @@ -276,21 +288,20 @@ } }, "widgets_values": [ - 2, - "" + 2 ] }, { "id": 77, "type": "ADE_AdjustPESweetspotStretch", "pos": [ - 4760.983725773823, - 2768.9627533500015 + 4760.98388671875, + 2768.962646484375 + ], + "size": [ + 253.07310485839844, + 106 ], - "size": { - "0": 253.07310485839844, - "1": 106 - }, "flags": {}, "order": 4, "mode": 0, @@ -298,7 +309,8 @@ { "name": "prev_pe_adjust", "type": "PE_ADJUST", - "link": null + "link": null, + "shape": 7 } ], "outputs": [ @@ -322,21 +334,20 @@ "widgets_values": [ 16, 18, - false, - "" + false ] }, { "id": 78, "type": "ADE_AdjustWeightAllMult", "pos": [ - 4740.983725773823, - 2298.9627533500015 + 4740.98388671875, + 2298.962646484375 + ], + "size": [ + 270.3999938964844, + 82 ], - "size": { - "0": 270.3999938964844, - "1": 82 - }, "flags": {}, "order": 5, "mode": 0, @@ -344,7 +355,8 @@ { "name": "prev_weight_adjust", "type": "WEIGHT_ADJUST", - "link": null + "link": null, + "shape": 7 } ], "outputs": [ @@ -367,21 +379,20 @@ }, "widgets_values": [ 1.01, - false, - "" + false ] }, { "id": 79, "type": "ADE_AnimateDiffLoRALoader", "pos": [ - 4788.983725773823, - 2133.9627533500015 + 4788.98388671875, + 2133.962646484375 + ], + "size": [ + 261.19134521484375, + 82 ], - "size": { - "0": 261.19134521484375, - "1": 82 - }, "flags": {}, "order": 6, "mode": 0, @@ -389,7 +400,8 @@ { "name": "prev_motion_lora", "type": "MOTION_LORA", - "link": null + "link": null, + "shape": 7 } ], "outputs": [ @@ -399,8 +411,8 @@ "links": [ 122 ], - "shape": 3, - "slot_index": 0 + "slot_index": 0, + "shape": 3 } ], "title": "AnimateDiff LoRA", @@ -414,23 +426,22 @@ }, "widgets_values": [ "LiquidAF-0-1.safetensors", - 0.8, - "" + 0.8 ] }, { "id": 69, "type": "ADE_AnimateDiffLoaderGen1", "pos": [ - 5110.983725773823, - 2158.9627533500015 + 5110.98388671875, + 2158.962646484375 + ], + "size": [ + 271.7644958496094, + 242 ], - "size": { - "0": 271.7644958496094, - "1": 242 - }, "flags": {}, - "order": 29, + "order": 33, "mode": 0, "inputs": [ { @@ -442,47 +453,55 @@ "name": "context_options", "type": "CONTEXT_OPTIONS", "link": 121, - "slot_index": 1 + "slot_index": 1, + "shape": 7 }, { "name": "motion_lora", "type": "MOTION_LORA", "link": 122, - "slot_index": 2 + "slot_index": 2, + "shape": 7 }, { "name": "ad_settings", "type": "AD_SETTINGS", "link": 123, - "slot_index": 3 + "slot_index": 3, + "shape": 7 }, { "name": "ad_keyframes", "type": "AD_KEYFRAMES", - "link": null + "link": null, + "shape": 7 }, { "name": "sample_settings", "type": "SAMPLE_SETTINGS", "link": 124, - "slot_index": 5 + "slot_index": 5, + "shape": 7 }, { "name": "scale_multival", "type": "MULTIVAL", "link": 125, - "slot_index": 6 + "slot_index": 6, + "shape": 7 }, { "name": "effect_multival", "type": "MULTIVAL", "link": 126, - "slot_index": 7 + "slot_index": 7, + "shape": 7 }, { "name": "per_block", "type": "PER_BLOCK", - "link": null + "link": null, + "shape": 7 } ], "outputs": [ @@ -493,8 +512,8 @@ 132, 192 ], - "shape": 3, - "slot_index": 0 + "slot_index": 0, + "shape": 3 } ], "properties": { @@ -510,58 +529,19 @@ "lcm avg(sqrt_linear,linear)" ] }, - { - "id": 129, - "type": "LoadImage", - "pos": [ - 8057.064797627498, - 2216.240312695332 - ], - "size": { - "0": 315, - "1": 314.00006103515625 - }, - "flags": {}, - "order": 7, - "mode": 0, - "outputs": [ - { - "name": "IMAGE", - "type": "IMAGE", - "links": [ - 289 - ], - "shape": 3, - "slot_index": 0 - }, - { - "name": "MASK", - "type": "MASK", - "links": null, - "shape": 3 - } - ], - "properties": { - "Node name for S&R": "LoadImage" - }, - "widgets_values": [ - "pasted/image (115).png", - "image" - ] - }, { "id": 165, "type": "Reroute", "pos": [ - 7114.3663594199315, - 2396.2375429897693 + 7114.3662109375, + 2396.237548828125 ], "size": [ 75, 26 ], "flags": {}, - "order": 31, + "order": 35, "mode": 0, "inputs": [ { @@ -590,16 +570,17 @@ "id": 71, "type": "ADE_SigmaSchedule", "pos": [ - 4788.983725773823, - 2893.9627533500015 + 4788.98388671875, + 2893.962646484375 + ], + "size": [ + 244.73928833007812, + 58 ], - "size": { - "0": 244.73928833007812, - "1": 58 - }, "flags": {}, - "order": 8, + "order": 7, "mode": 0, + "inputs": [], "outputs": [ { "name": "SIGMA_SCHEDULE", @@ -607,8 +588,8 @@ "links": [ 128 ], - "shape": 3, - "slot_index": 0 + "slot_index": 0, + "shape": 3 } ], "title": "Sigma Schedule 🎭🅐🅓", @@ -628,13 +609,13 @@ "id": 76, "type": "ADE_AnimateDiffSettings", "pos": [ - 4811.983725773823, - 2997.9627533500015 + 4811.98388671875, + 2997.962646484375 + ], + "size": [ + 226.8000030517578, + 54 ], - "size": { - "0": 226.8000030517578, - "1": 54 - }, "flags": { "collapsed": true }, @@ -645,13 +626,15 @@ "name": "pe_adjust", "type": "PE_ADJUST", "link": 129, - "slot_index": 0 + "slot_index": 0, + "shape": 7 }, { "name": "weight_adjust", "type": "WEIGHT_ADJUST", "link": 130, - "slot_index": 1 + "slot_index": 1, + "shape": 7 } ], "outputs": [ @@ -672,23 +655,21 @@ "groupcolor": "#3f789e" } }, - "widgets_values": [ - "" - ] + "widgets_values": [] }, { "id": 51, "type": "CLIPTextEncode", "pos": [ - 4077.063944939706, - 2490.602859208382 + 4077.06396484375, + 2490.602783203125 + ], + "size": [ + 425.27801513671875, + 180.6060791015625 ], - "size": { - "0": 425.27801513671875, - "1": 180.6060791015625 - }, "flags": {}, - "order": 25, + "order": 26, "mode": 0, "inputs": [ { @@ -719,13 +700,13 @@ "id": 67, "type": "Display Int (rgthree)", "pos": [ - 1146.5720319404418, - 2718.602859208382 + 1146.572021484375, + 2718.602783203125 + ], + "size": [ + 315, + 76 ], - "size": { - "0": 315, - "1": 76 - }, "flags": {}, "order": 28, "mode": 0, @@ -740,6 +721,7 @@ "dir": 3 } ], + "outputs": [], "properties": { "Node name for S&R": "Display Int (rgthree)" }, @@ -751,22 +733,14 @@ { "id": 16, "type": "SetNode", - "pos": { - "0": 1436.572265625, - "1": 2378.60302734375, - "2": 0, - "3": 0, - "4": 0, - "5": 0, - "6": 0, - "7": 0, - "8": 0, - "9": 0 - }, - "size": { - "0": 210, - "1": 58 - }, + "pos": [ + 1436.572265625, + 2378.60302734375 + ], + "size": [ + 210, + 58 + ], "flags": {}, "order": 20, "mode": 0, @@ -795,24 +769,16 @@ { "id": 64, "type": "GetNode", - "pos": { - "0": 2836.5732421875, - "1": 2128.60302734375, - "2": 0, - "3": 0, - "4": 0, - "5": 0, - "6": 0, - "7": 0, - "8": 0, - "9": 0 - }, - "size": { - "0": 210, - "1": 58 - }, + "pos": [ + 2836.5732421875, + 2128.60302734375 + ], + "size": [ + 210, + 58 + ], "flags": {}, - "order": 9, + "order": 8, "mode": 0, "inputs": [], "outputs": [ @@ -834,24 +800,16 @@ { "id": 68, "type": "GetNode", - "pos": { - "0": 5596.7412109375, - "1": 2687.58642578125, - "2": 0, - "3": 0, - "4": 0, - "5": 0, - "6": 0, - "7": 0, - "8": 0, - "9": 0 - }, - "size": { - "0": 210, - "1": 58 - }, + "pos": [ + 5596.7412109375, + 2687.58642578125 + ], + "size": [ + 210, + 58 + ], "flags": {}, - "order": 10, + "order": 9, "mode": 0, "inputs": [], "outputs": [ @@ -874,15 +832,15 @@ "id": 166, "type": "Reroute", "pos": [ - 7111.180051242829, - 2291.0893731453525 + 7111.18017578125, + 2291.08935546875 ], "size": [ 75, 26 ], "flags": {}, - "order": 30, + "order": 34, "mode": 0, "inputs": [ { @@ -910,15 +868,15 @@ "id": 134, "type": "KSampler", "pos": [ - 10475.850399830004, - 2188.299429387806 + 10475.8505859375, + 2188.29931640625 + ], + "size": [ + 303.4075622558594, + 262 ], - "size": { - "0": 303.4075622558594, - "1": 262 - }, "flags": {}, - "order": 60, + "order": 59, "mode": 0, "inputs": [ { @@ -969,15 +927,15 @@ "id": 135, "type": "VAEDecode", "pos": [ - 10529.186265257058, - 2499.059174984508 + 10529.1865234375, + 2499.05908203125 + ], + "size": [ + 210, + 46 ], - "size": { - "0": 210, - "1": 46 - }, "flags": {}, - "order": 61, + "order": 60, "mode": 0, "inputs": [ { @@ -1003,21 +961,22 @@ ], "properties": { "Node name for S&R": "VAEDecode" - } + }, + "widgets_values": [] }, { "id": 116, "type": "GetImageSizeAndCount", "pos": [ - 5623.739027487058, - 2504.5866225556706 + 5623.7392578125, + 2504.586669921875 + ], + "size": [ + 210, + 86 ], - "size": { - "0": 210, - "1": 86 - }, "flags": {}, - "order": 54, + "order": 53, "mode": 0, "inputs": [ { @@ -1033,23 +992,23 @@ "links": [ 204 ], - "shape": 3, - "slot_index": 0 + "slot_index": 0, + "shape": 3 }, { - "name": "800 width", + "name": "width", "type": "INT", "links": null, "shape": 3 }, { - "name": "448 height", + "name": "height", "type": "INT", "links": null, "shape": 3 }, { - "name": "360 count", + "name": "count", "type": "INT", "links": null, "shape": 3 @@ -1057,29 +1016,22 @@ ], "properties": { "Node name for S&R": "GetImageSizeAndCount" - } + }, + "widgets_values": [] }, { "id": 122, "type": "GetNode", - "pos": { - "0": 9353.1953125, - "1": 2024, - "2": 0, - "3": 0, - "4": 0, - "5": 0, - "6": 0, - "7": 0, - "8": 0, - "9": 0 - }, - "size": { - "0": 210, - "1": 58 - }, + "pos": [ + 9353.1953125, + 2024 + ], + "size": [ + 210, + 58 + ], "flags": {}, - "order": 11, + "order": 10, "mode": 0, "inputs": [], "outputs": [ @@ -1103,15 +1055,15 @@ "id": 127, "type": "DifferentialDiffusion", "pos": [ - 8483.071650605185, - 2431.000244140624 + 8483.0712890625, + 2431.000244140625 + ], + "size": [ + 210, + 26 ], - "size": { - "0": 210, - "1": 26 - }, "flags": {}, - "order": 45, + "order": 46, "mode": 4, "inputs": [ { @@ -1128,27 +1080,28 @@ 232, 241 ], - "shape": 3, - "slot_index": 0 + "slot_index": 0, + "shape": 3 } ], "properties": { "Node name for S&R": "DifferentialDiffusion" - } + }, + "widgets_values": [] }, { "id": 121, "type": "VHS_VideoCombine", "pos": [ - 9754.194827497888, + 9754.1953125, 2061 ], "size": [ 565.05419921875, - 629.2303515625 + 334 ], "flags": {}, - "order": 59, + "order": 58, "mode": 0, "inputs": [ { @@ -1158,18 +1111,21 @@ }, { "name": "audio", - "type": "*", - "link": 219 + "type": "AUDIO", + "link": 219, + "shape": 7 }, { "name": "meta_batch", "type": "VHS_BatchManager", - "link": null + "link": null, + "shape": 7 }, { "name": "vae", "type": "VAE", - "link": null + "link": null, + "shape": 7 } ], "outputs": [ @@ -1191,6 +1147,7 @@ "pix_fmt": "yuv420p", "crf": 19, "save_metadata": true, + "trim_to_audio": false, "pingpong": false, "save_output": true, "videopreview": { @@ -1210,24 +1167,16 @@ { "id": 167, "type": "SetNode", - "pos": { - "0": 2410, - "1": 2363, - "2": 0, - "3": 0, - "4": 0, - "5": 0, - "6": 0, - "7": 0, - "8": 0, - "9": 0 - }, - "size": { - "0": 210, - "1": 58 - }, + "pos": [ + 2410, + 2363 + ], + "size": [ + 210, + 58 + ], "flags": {}, - "order": 38, + "order": 36, "mode": 0, "inputs": [ { @@ -1249,44 +1198,21 @@ }, "widgets_values": [ "waveforem" - ] - }, - { - "id": 184, - "type": "PreviewImage", - "pos": [ - 2173, - 3668 - ], - "size": { - "0": 210, - "1": 246 - }, - "flags": {}, - "order": 47, - "mode": 0, - "inputs": [ - { - "name": "images", - "type": "IMAGE", - "link": 336 - } ], - "properties": { - "Node name for S&R": "PreviewImage" - } + "color": "#2a363b", + "bgcolor": "#3f5159" }, { "id": 86, "type": "PreviewAudio", "pos": [ - 1456.5720319404418, - 2248.602859208382 + 1456.572021484375, + 2248.602783203125 + ], + "size": [ + 315, + 76 ], - "size": { - "0": 315, - "1": 76 - }, "flags": {}, "order": 22, "mode": 0, @@ -1297,6 +1223,7 @@ "link": 144 } ], + "outputs": [], "properties": { "Node name for S&R": "PreviewAudio" }, @@ -1311,20 +1238,21 @@ 2434, 2126 ], - "size": { - "0": 315, - "1": 75.99998474121094 - }, + "size": [ + 315, + 76 + ], "flags": {}, - "order": 34, + "order": 31, "mode": 0, "inputs": [ { "name": "audio", "type": "AUDIO", - "link": 366 + "link": 372 } ], + "outputs": [], "properties": { "Node name for S&R": "PreviewAudio" }, @@ -1336,16 +1264,18 @@ "id": 80, "type": "Note", "pos": [ - 4846.983725773823, - 2022.9627533500015 + 4846.98388671875, + 2022.9627685546875 + ], + "size": [ + 210, + 58 ], - "size": { - "0": 210, - "1": 58 - }, "flags": {}, - "order": 12, + "order": 11, "mode": 0, + "inputs": [], + "outputs": [], "properties": { "text": "" }, @@ -1359,15 +1289,15 @@ "id": 85, "type": "NNLatentUpscale", "pos": [ - 8864.194827497888, + 8864.1953125, 2028 ], - "size": { - "0": 315, - "1": 82 - }, - "flags": {}, - "order": 53, + "size": [ + 315, + 82 + ], + "flags": {}, + "order": 52, "mode": 4, "inputs": [ { @@ -1383,8 +1313,8 @@ "links": [ 240 ], - "shape": 3, - "slot_index": 0 + "slot_index": 0, + "shape": 3 } ], "properties": { @@ -1402,12 +1332,12 @@ 1845, 2025 ], - "size": { - "0": 541.800048828125, - "1": 58 - }, + "size": [ + 541.800048828125, + 58 + ], "flags": {}, - "order": 13, + "order": 12, "mode": 0, "inputs": [], "outputs": [ @@ -1415,7 +1345,7 @@ "name": "OPEN_UNMIX_MODEL", "type": "OPEN_UNMIX_MODEL", "links": [ - 10 + 367 ], "shape": 3 } @@ -1427,100 +1357,6 @@ "umxl" ] }, - { - "id": 140, - "type": "SetNode", - "pos": { - "0": 2153, - "1": 2761, - "2": 0, - "3": 0, - "4": 0, - "5": 0, - "6": 0, - "7": 0, - "8": 0, - "9": 0 - }, - "size": { - "0": 211.60000610351562, - "1": 58 - }, - "flags": {}, - "order": 42, - "mode": 0, - "inputs": [ - { - "name": "FEATURE_PIPE", - "type": "FEATURE_PIPE", - "link": 253 - } - ], - "outputs": [ - { - "name": "FEATURE_PIPE", - "type": "FEATURE_PIPE", - "links": [ - 354 - ], - "slot_index": 0 - } - ], - "title": "Set_featurepiupr", - "properties": { - "previousName": "featurepiupr" - }, - "widgets_values": [ - "featurepiupr" - ] - }, - { - "id": 141, - "type": "SetNode", - "pos": { - "0": 2135, - "1": 2875, - "2": 0, - "3": 0, - "4": 0, - "5": 0, - "6": 0, - "7": 0, - "8": 0, - "9": 0 - }, - "size": { - "0": 210, - "1": 58 - }, - "flags": {}, - "order": 41, - "mode": 0, - "inputs": [ - { - "name": "FEATURE", - "type": "FEATURE", - "link": 252 - } - ], - "outputs": [ - { - "name": "FEATURE", - "type": "FEATURE", - "links": [ - 339 - ], - "slot_index": 0 - } - ], - "title": "Set_drumfeature", - "properties": { - "previousName": "drumfeature" - }, - "widgets_values": [ - "drumfeature" - ] - }, { "id": 53, "type": "VAEEncode", @@ -1528,12 +1364,12 @@ 4137, 2144 ], - "size": { - "0": 210, - "1": 46 - }, + "size": [ + 210, + 46 + ], "flags": {}, - "order": 50, + "order": 49, "mode": 0, "inputs": [ { @@ -1560,7 +1396,8 @@ ], "properties": { "Node name for S&R": "VAEEncode" - } + }, + "widgets_values": [] }, { "id": 52, @@ -1569,12 +1406,12 @@ 5596, 2368 ], - "size": { - "0": 210, - "1": 46 - }, + "size": [ + 210, + 46 + ], "flags": {}, - "order": 52, + "order": 51, "mode": 0, "inputs": [ { @@ -1600,7 +1437,8 @@ ], "properties": { "Node name for S&R": "VAEDecode" - } + }, + "widgets_values": [] }, { "id": 56, @@ -1611,10 +1449,10 @@ ], "size": [ 370, - 520 + 544 ], "flags": {}, - "order": 56, + "order": 55, "mode": 0, "inputs": [ { @@ -1625,17 +1463,20 @@ { "name": "audio", "type": "AUDIO", - "link": 120 + "link": 120, + "shape": 7 }, { "name": "meta_batch", "type": "VHS_BatchManager", - "link": null + "link": null, + "shape": 7 }, { "name": "vae", "type": "VAE", - "link": null + "link": null, + "shape": 7 } ], "outputs": [ @@ -1657,17 +1498,20 @@ "pix_fmt": "yuv420p", "crf": 19, "save_metadata": true, + "trim_to_audio": false, "pingpong": false, "save_output": true, "videopreview": { "hidden": false, "paused": false, "params": { - "filename": "AnimateDiff_05582-audio.mp4", + "filename": "AnimateDiff_02410-audio.mp4", "subfolder": "", "type": "output", "format": "video/h264-mp4", - "frame_rate": 30 + "frame_rate": 30, + "workflow": "AnimateDiff_02410.png", + "fullpath": "/runpod-volume/ComfyUI_rv/output/AnimateDiff_02410-audio.mp4" }, "muted": false } @@ -1682,11 +1526,12 @@ ], "size": [ 315, - 313.9999084472656 + 314 ], "flags": {}, - "order": 14, + "order": 13, "mode": 0, + "inputs": [], "outputs": [ { "name": "IMAGE", @@ -1713,15 +1558,15 @@ "id": 119, "type": "KSampler", "pos": [ - 8889.194827497888, + 8889.1953125, 2171 ], - "size": { - "0": 303.4075622558594, - "1": 262 - }, + "size": [ + 303.4075622558594, + 262 + ], "flags": {}, - "order": 55, + "order": 54, "mode": 0, "inputs": [ { @@ -1773,15 +1618,15 @@ "id": 120, "type": "VAEDecode", "pos": [ - 9050.194827497888, + 9050.1953125, 2515 ], - "size": { - "0": 210, - "1": 46 - }, + "size": [ + 210, + 46 + ], "flags": {}, - "order": 57, + "order": 56, "mode": 0, "inputs": [ { @@ -1807,7 +1652,8 @@ ], "properties": { "Node name for S&R": "VAEDecode" - } + }, + "widgets_values": [] }, { "id": 47, @@ -1816,12 +1662,12 @@ 5553, 2025 ], - "size": { - "0": 303.4075622558594, - "1": 262 - }, + "size": [ + 303.4075622558594, + 262 + ], "flags": {}, - "order": 51, + "order": 50, "mode": 0, "inputs": [ { @@ -1876,10 +1722,10 @@ 1130, 2488 ], - "size": { - "0": 617.4000244140625, - "1": 146 - }, + "size": [ + 617.4000244140625, + 146 + ], "flags": {}, "order": 21, "mode": 0, @@ -1895,7 +1741,6 @@ "name": "empty_image", "type": "IMAGE", "links": [ - 72, 110 ], "slot_index": 0, @@ -1934,12 +1779,12 @@ 1141, 2029 ], - "size": { - "0": 243.818359375, - "1": 130 - }, + "size": [ + 243.818359375, + 130 + ], "flags": {}, - "order": 15, + "order": 14, "mode": 0, "inputs": [], "outputs": [ @@ -1947,10 +1792,10 @@ "name": "audio", "type": "AUDIO", "links": [ - 11, 18, 52, - 144 + 144, + 368 ], "slot_index": 0, "shape": 3 @@ -1967,629 +1812,472 @@ } }, { - "id": 11, - "type": "AudioSeparator", + "id": 170, + "type": "PreviewAudio", "pos": [ - 1879, - 2135 + 2832, + 2428 + ], + "size": [ + 315, + 76.00003051757812 ], - "size": { - "0": 415.8000183105469, - "1": 158 - }, "flags": {}, - "order": 27, + "order": 29, "mode": 0, "inputs": [ - { - "name": "model", - "type": "OPEN_UNMIX_MODEL", - "link": 10 - }, - { - "name": "audio", - "type": "AUDIO", - "link": 11 - }, - { - "name": "video_frames", - "type": "IMAGE", - "link": 72 - } - ], - "outputs": [ { "name": "audio", "type": "AUDIO", - "links": [], - "slot_index": 0, - "shape": 3 - }, - { - "name": "drums_audio", - "type": "AUDIO", - "links": [ - 238, - 321, - 322, - 366 - ], - "slot_index": 1, - "shape": 3 - }, - { - "name": "vocals_audio", - "type": "AUDIO", - "links": null, - "shape": 3 - }, - { - "name": "bass_audio", - "type": "AUDIO", - "links": [], - "slot_index": 3, - "shape": 3 - }, - { - "name": "other_audio", - "type": "AUDIO", - "links": null, - "shape": 3 - }, - { - "name": "feature_pipe", - "type": "FEATURE_PIPE", - "links": [ - 162 - ], - "slot_index": 5, - "shape": 3 + "link": 370 } ], + "outputs": [], "properties": { - "Node name for S&R": "AudioSeparator" + "Node name for S&R": "PreviewAudio" }, "widgets_values": [ - 30 + null ] }, { - "id": 87, - "type": "AudioFeatureExtractor", + "id": 191, + "type": "ImageToMask", "pos": [ - 1844, - 2619 + 2678, + 3215 + ], + "size": [ + 315, + 58 ], - "size": { - "0": 541.800048828125, - "1": 78 - }, "flags": {}, - "order": 35, + "order": 38, "mode": 0, "inputs": [ { - "name": "audio", - "type": "AUDIO", - "link": 238 - }, - { - "name": "feature_pipe", - "type": "FEATURE_PIPE", - "link": 162 + "name": "image", + "type": "IMAGE", + "link": 351 } ], "outputs": [ { - "name": "FEATURE", - "type": "FEATURE", + "name": "MASK", + "type": "MASK", "links": [ - 252 + 378 ], "slot_index": 0, "shape": 3 - }, - { - "name": "FEATURE_PIPE", - "type": "FEATURE_PIPE", - "links": [ - 253 - ], - "shape": 3, - "slot_index": 1 } ], "properties": { - "Node name for S&R": "AudioFeatureExtractor" + "Node name for S&R": "ImageToMask" }, "widgets_values": [ - "amplitude_envelope" + "red" ] }, { - "id": 170, - "type": "PreviewAudio", + "id": 185, + "type": "VHS_VideoCombine", "pos": [ - 2832, - 2428 + 3244, + 3227 + ], + "size": [ + 214.7587890625, + 459.01251220703125 ], - "size": { - "0": 315, - "1": 76.00003051757812 - }, "flags": {}, - "order": 32, + "order": 37, "mode": 0, "inputs": [ + { + "name": "images", + "type": "IMAGE", + "link": 338 + }, { "name": "audio", "type": "AUDIO", - "link": 321 + "link": null, + "shape": 7 + }, + { + "name": "meta_batch", + "type": "VHS_BatchManager", + "link": null, + "shape": 7 + }, + { + "name": "vae", + "type": "VAE", + "link": null, + "shape": 7 + } + ], + "outputs": [ + { + "name": "Filenames", + "type": "VHS_FILENAMES", + "links": null, + "shape": 3 } ], "properties": { - "Node name for S&R": "PreviewAudio" + "Node name for S&R": "VHS_VideoCombine" }, - "widgets_values": [ - null - ] - }, + "widgets_values": { + "frame_rate": 30, + "loop_count": 0, + "filename_prefix": "AnimateDiff", + "format": "video/h264-mp4", + "pix_fmt": "yuv420p", + "crf": 19, + "save_metadata": true, + "trim_to_audio": false, + "pingpong": false, + "save_output": true, + "videopreview": { + "hidden": false, + "paused": false, + "params": { + "filename": "AnimateDiff_02408.mp4", + "subfolder": "", + "type": "output", + "format": "video/h264-mp4", + "frame_rate": 30, + "workflow": "AnimateDiff_02408.png", + "fullpath": "/runpod-volume/ComfyUI_rv/output/AnimateDiff_02408.mp4" + }, + "muted": false + } + } + }, { - "id": 62, - "type": "AudioFeatureVisualizer", + "id": 48, + "type": "CheckpointLoaderSimple", "pos": [ - 1838, - 2357 + 3547, + 2222 + ], + "size": [ + 315, + 98 ], - "size": { - "0": 529.199951171875, - "1": 198 - }, "flags": {}, - "order": 33, + "order": 15, "mode": 0, - "inputs": [ + "inputs": [], + "outputs": [ { - "name": "audio", - "type": "AUDIO", - "link": 322 + "name": "MODEL", + "type": "MODEL", + "links": [ + 107 + ], + "slot_index": 0 }, { - "name": "video_frames", - "type": "IMAGE", - "link": 110 - } - ], - "outputs": [ + "name": "CLIP", + "type": "CLIP", + "links": [ + 86, + 87, + 225 + ], + "slot_index": 1 + }, { - "name": "IMAGE", - "type": "IMAGE", + "name": "VAE", + "type": "VAE", "links": [ - 319, - 338, - 351 + 89, + 90, + 217, + 246 ], - "slot_index": 0, - "shape": 3 + "slot_index": 2 } ], "properties": { - "Node name for S&R": "AudioFeatureVisualizer" + "Node name for S&R": "CheckpointLoaderSimple" }, "widgets_values": [ - "waveform", - 30, - "time", - "linear", - "inferno", - "pygame" + "photonLCM_v10.safetensors" ] }, { - "id": 191, - "type": "ImageToMask", + "id": 61, + "type": "LoraLoaderModelOnly", "pos": [ - 2678, - 3215 + 3536, + 2381 + ], + "size": [ + 315, + 82 ], - "size": { - "0": 315, - "1": 58 - }, "flags": {}, - "order": 40, + "order": 24, "mode": 0, "inputs": [ { - "name": "image", - "type": "IMAGE", - "link": 351 + "name": "model", + "type": "MODEL", + "link": 107 } ], "outputs": [ { - "name": "MASK", - "type": "MASK", + "name": "MODEL", + "type": "MODEL", "links": [ - 352 + 315 ], - "shape": 3, - "slot_index": 0 + "slot_index": 0, + "shape": 3 } ], "properties": { - "Node name for S&R": "ImageToMask" + "Node name for S&R": "LoraLoaderModelOnly" }, "widgets_values": [ - "red" + "ral-acidzlime-sd15.safetensors", + 1 ] }, { - "id": 183, - "type": "FeatureMixer", + "id": 50, + "type": "CLIPTextEncode", "pos": [ - 2120, - 3224 + 4065, + 2245 + ], + "size": [ + 422.84503173828125, + 164.31304931640625 ], - "size": { - "0": 367.79998779296875, - "1": 342 - }, "flags": {}, - "order": 44, + "order": 25, "mode": 0, "inputs": [ { - "name": "feature", - "type": "FEATURE", - "link": 339 + "name": "clip", + "type": "CLIP", + "link": 86 } ], "outputs": [ { - "name": "FEATURE", - "type": "FEATURE", + "name": "CONDITIONING", + "type": "CONDITIONING", "links": [ - 358 + 303, + 307 ], - "shape": 3, "slot_index": 0 - }, - { - "name": "FEATURE_VISUALIZATION", - "type": "IMAGE", - "links": [ - 336 - ], - "shape": 3, - "slot_index": 1 } ], "properties": { - "Node name for S&R": "FeatureMixer" + "Node name for S&R": "CLIPTextEncode" }, "widgets_values": [ - 1, - 0, - 0.25, - 1, - 1, - 1, - 1, - 0, - 0.2, - 1, - 0.5, - true + "acidzlime" ] }, { - "id": 192, - "type": "FlexMaskMorph", + "id": 125, + "type": "ConditioningCombine", "pos": [ - 2676, - 3350 + 7458, + 2247 + ], + "size": [ + 342.5999755859375, + 46 ], - "size": { - "0": 315, - "1": 266 - }, "flags": {}, - "order": 46, + "order": 42, "mode": 0, "inputs": [ { - "name": "masks", - "type": "MASK", - "link": 352 - }, - { - "name": "feature", - "type": "FEATURE", - "link": 358 + "name": "conditioning_1", + "type": "CONDITIONING", + "link": 308 }, { - "name": "feature_pipe", - "type": "FEATURE_PIPE", - "link": 354 + "name": "conditioning_2", + "type": "CONDITIONING", + "link": 229 } ], "outputs": [ { - "name": "MASK", - "type": "MASK", + "name": "CONDITIONING", + "type": "CONDITIONING", "links": [ - 356 + 242, + 311 ], - "shape": 3, - "slot_index": 0 + "slot_index": 0, + "shape": 3 } ], "properties": { - "Node name for S&R": "FlexMaskMorph" + "Node name for S&R": "ConditioningCombine" }, - "widgets_values": [ - 1, - false, - 0, - 0, - 0, - "dilate", - 3, - 3 - ] + "widgets_values": [] }, { - "id": 193, - "type": "MaskToImage", + "id": 126, + "type": "CLIPTextEncode", "pos": [ - 2746, - 3662 + 7092, + 1975 + ], + "size": [ + 422.84503173828125, + 164.31304931640625 ], - "size": { - "0": 210, - "1": 26 - }, "flags": {}, - "order": 48, + "order": 27, "mode": 0, "inputs": [ { - "name": "mask", - "type": "MASK", - "link": 356 + "name": "clip", + "type": "CLIP", + "link": 225 } ], "outputs": [ { - "name": "IMAGE", - "type": "IMAGE", + "name": "CONDITIONING", + "type": "CONDITIONING", "links": [ - 357, - 360 + 229 ], - "shape": 3, "slot_index": 0 } ], "properties": { - "Node name for S&R": "MaskToImage" - } + "Node name for S&R": "CLIPTextEncode" + }, + "widgets_values": [ + "kamala harris, terrified, sobbing" + ] }, { - "id": 185, - "type": "VHS_VideoCombine", + "id": 150, + "type": "IPAAdapterFaceIDBatch", "pos": [ - 3244, - 3227 + 8437, + 1998 ], "size": [ - 214.7587890625, - 435.14768938785346 + 317.4000244140625, + 322 ], "flags": {}, - "order": 39, + "order": 44, "mode": 0, "inputs": [ { - "name": "images", - "type": "IMAGE", - "link": 338 + "name": "model", + "type": "MODEL", + "link": 267 }, { - "name": "audio", - "type": "*", - "link": null + "name": "ipadapter", + "type": "IPADAPTER", + "link": 268 }, { - "name": "meta_batch", - "type": "VHS_BatchManager", - "link": null + "name": "image", + "type": "IMAGE", + "link": 289 }, { - "name": "vae", - "type": "VAE", - "link": null - } - ], - "outputs": [ - { - "name": "Filenames", - "type": "VHS_FILENAMES", - "links": null, - "shape": 3 - } - ], - "properties": { - "Node name for S&R": "VHS_VideoCombine" - }, - "widgets_values": { - "frame_rate": 30, - "loop_count": 0, - "filename_prefix": "AnimateDiff", - "format": "video/h264-mp4", - "pix_fmt": "yuv420p", - "crf": 19, - "save_metadata": true, - "pingpong": false, - "save_output": true, - "videopreview": { - "hidden": false, - "paused": false, - "params": { - "filename": "AnimateDiff_05580.mp4", - "subfolder": "", - "type": "output", - "format": "video/h264-mp4", - "frame_rate": 30 - }, - "muted": false - } - } - }, - { - "id": 63, - "type": "VHS_VideoCombine", - "pos": [ - 3473, - 3187 - ], - "size": [ - 214.7587890625, - 435.14768938785346 - ], - "flags": {}, - "order": 49, - "mode": 0, - "inputs": [ - { - "name": "images", + "name": "image_negative", "type": "IMAGE", - "link": 357 + "link": null, + "shape": 7 }, { - "name": "audio", - "type": "AUDIO", - "link": 111 + "name": "attn_mask", + "type": "MASK", + "link": null, + "shape": 7 }, { - "name": "meta_batch", - "type": "VHS_BatchManager", - "link": null + "name": "clip_vision", + "type": "CLIP_VISION", + "link": null, + "shape": 7 }, { - "name": "vae", - "type": "VAE", - "link": null - } - ], - "outputs": [ - { - "name": "Filenames", - "type": "VHS_FILENAMES", - "links": null, - "shape": 3 - } - ], - "properties": { - "Node name for S&R": "VHS_VideoCombine" - }, - "widgets_values": { - "frame_rate": 30, - "loop_count": 0, - "filename_prefix": "AnimateDiff", - "format": "video/h264-mp4", - "pix_fmt": "yuv420p", - "crf": 19, - "save_metadata": true, - "pingpong": false, - "save_output": true, - "videopreview": { - "hidden": false, - "paused": false, - "params": { - "filename": "AnimateDiff_05581-audio.mp4", - "subfolder": "", - "type": "output", - "format": "video/h264-mp4", - "frame_rate": 30 - }, - "muted": false + "name": "insightface", + "type": "INSIGHTFACE", + "link": null, + "shape": 7 } - } - }, - { - "id": 48, - "type": "CheckpointLoaderSimple", - "pos": [ - 3547, - 2222 ], - "size": { - "0": 315, - "1": 98 - }, - "flags": {}, - "order": 16, - "mode": 0, - "inputs": [], "outputs": [ { "name": "MODEL", "type": "MODEL", "links": [ - 107 - ], - "slot_index": 0 - }, - { - "name": "CLIP", - "type": "CLIP", - "links": [ - 86, - 87, - 225 + 270 ], - "slot_index": 1 + "shape": 3 }, { - "name": "VAE", - "type": "VAE", - "links": [ - 89, - 90, - 217, - 246 - ], - "slot_index": 2 + "name": "face_image", + "type": "IMAGE", + "links": null, + "shape": 3 } ], "properties": { - "Node name for S&R": "CheckpointLoaderSimple" + "Node name for S&R": "IPAAdapterFaceIDBatch" }, "widgets_values": [ - "photonLCM_v10.safetensors" + 1, + 1, + "linear", + "concat", + 0, + 1, + "V only" ] }, { - "id": 61, - "type": "LoraLoaderModelOnly", + "id": 110, + "type": "IPAdapterUnifiedLoaderFaceID", "pos": [ - 3536, - 2381 + 8044, + 2003 + ], + "size": [ + 315, + 126 ], - "size": { - "0": 315, - "1": 82 - }, "flags": {}, - "order": 23, + "order": 41, "mode": 0, "inputs": [ { "name": "model", "type": "MODEL", - "link": 107 + "link": 192 + }, + { + "name": "ipadapter", + "type": "IPADAPTER", + "link": null, + "shape": 7 } ], "outputs": [ @@ -2597,93 +2285,107 @@ "name": "MODEL", "type": "MODEL", "links": [ - 315 + 267 ], "slot_index": 0, "shape": 3 + }, + { + "name": "ipadapter", + "type": "IPADAPTER", + "links": [ + 268 + ], + "slot_index": 1, + "shape": 3 } ], "properties": { - "Node name for S&R": "LoraLoaderModelOnly" + "Node name for S&R": "IPAdapterUnifiedLoaderFaceID" }, "widgets_values": [ - "ral-acidzlime-sd15.safetensors", - 1 + "FACEID PLUS V2", + 0.6, + "CUDA" ] }, { - "id": 50, - "type": "CLIPTextEncode", + "id": 137, + "type": "NNLatentUpscale", "pos": [ - 4065, - 2245 + 10440, + 2022 + ], + "size": [ + 315, + 82 ], - "size": { - "0": 422.84503173828125, - "1": 164.31304931640625 - }, "flags": {}, - "order": 24, + "order": 57, "mode": 0, "inputs": [ { - "name": "clip", - "type": "CLIP", - "link": 86 + "name": "latent", + "type": "LATENT", + "link": 249 } ], "outputs": [ { - "name": "CONDITIONING", - "type": "CONDITIONING", + "name": "LATENT", + "type": "LATENT", "links": [ - 303, - 307 + 250 ], - "slot_index": 0 + "slot_index": 0, + "shape": 3 } ], "properties": { - "Node name for S&R": "CLIPTextEncode" + "Node name for S&R": "NNLatentUpscale" }, "widgets_values": [ - "acidzlime" + "SD 1.x", + 1.5 ] }, { - "id": 194, + "id": 136, "type": "VHS_VideoCombine", "pos": [ - 6512, - 2058 + 10869.6943359375, + 2046.0330810546875 ], "size": [ - 370, - 520 + 565.05419921875, + 334 ], "flags": {}, - "order": 17, + "order": 61, "mode": 0, "inputs": [ { "name": "images", "type": "IMAGE", - "link": null + "link": 247 }, { "name": "audio", "type": "AUDIO", - "link": null + "link": 248, + "shape": 7 }, { "name": "meta_batch", "type": "VHS_BatchManager", - "link": null + "link": null, + "shape": 7 }, { "name": "vae", "type": "VAE", - "link": null + "link": null, + "shape": 7 } ], "outputs": [ @@ -2704,14 +2406,15 @@ "format": "video/h264-mp4", "pix_fmt": "yuv420p", "crf": 19, - "save_metadata": true, + "save_metadata": false, + "trim_to_audio": false, "pingpong": false, "save_output": true, "videopreview": { "hidden": false, "paused": false, "params": { - "filename": "AnimateDiff_05563-audio.mp4", + "filename": "AnimateDiff_05588-audio.mp4", "subfolder": "", "type": "output", "format": "video/h264-mp4", @@ -2722,294 +2425,421 @@ } }, { - "id": 125, - "type": "ConditioningCombine", + "id": 193, + "type": "MaskToImage", "pos": [ - 7458, - 2247 + 3012.575927734375, + 3754.134033203125 + ], + "size": [ + 210, + 26 ], - "size": { - "0": 342.5999755859375, - "1": 46 - }, "flags": {}, - "order": 37, + "order": 47, "mode": 0, "inputs": [ { - "name": "conditioning_1", - "type": "CONDITIONING", - "link": 308 - }, - { - "name": "conditioning_2", - "type": "CONDITIONING", - "link": 229 + "name": "mask", + "type": "MASK", + "link": 380 } ], "outputs": [ { - "name": "CONDITIONING", - "type": "CONDITIONING", + "name": "IMAGE", + "type": "IMAGE", "links": [ - 242, - 311 + 357, + 360 ], - "shape": 3, - "slot_index": 0 + "slot_index": 0, + "shape": 3 } ], "properties": { - "Node name for S&R": "ConditioningCombine" - } + "Node name for S&R": "MaskToImage" + }, + "widgets_values": [] }, { - "id": 126, - "type": "CLIPTextEncode", + "id": 203, + "type": "AudioSeparatorSimple", "pos": [ - 7092, - 1975 + 1941.595703125, + 2161.7919921875 + ], + "size": [ + 315, + 106 ], - "size": { - "0": 422.84503173828125, - "1": 164.31304931640625 - }, "flags": {}, - "order": 26, + "order": 23, "mode": 0, "inputs": [ { - "name": "clip", - "type": "CLIP", - "link": 225 + "name": "model", + "type": "OPEN_UNMIX_MODEL", + "link": 367 + }, + { + "name": "audio", + "type": "AUDIO", + "link": 368 } ], "outputs": [ { - "name": "CONDITIONING", - "type": "CONDITIONING", + "name": "audio", + "type": "AUDIO", + "links": null + }, + { + "name": "drums_audio", + "type": "AUDIO", "links": [ - 229 - ], - "slot_index": 0 + 370, + 371, + 372, + 373 + ] + }, + { + "name": "vocals_audio", + "type": "AUDIO", + "links": null + }, + { + "name": "bass_audio", + "type": "AUDIO", + "links": null + }, + { + "name": "other_audio", + "type": "AUDIO", + "links": null } ], "properties": { - "Node name for S&R": "CLIPTextEncode" + "Node name for S&R": "AudioSeparatorSimple" }, - "widgets_values": [ - "kamala harris, terrified, sobbing" - ] + "widgets_values": [] }, { - "id": 150, - "type": "IPAAdapterFaceIDBatch", + "id": 204, + "type": "AudioFeatureExtractor", "pos": [ - 8437, - 1998 + 1844, + 2619 + ], + "size": [ + 415.8000183105469, + 174 ], - "size": { - "0": 317.4000244140625, - "1": 322 - }, "flags": {}, - "order": 43, + "order": 32, "mode": 0, "inputs": [ { - "name": "model", - "type": "MODEL", - "link": 267 - }, - { - "name": "ipadapter", - "type": "IPADAPTER", - "link": 268 - }, + "name": "audio", + "type": "AUDIO", + "link": 373 + } + ], + "outputs": [ { - "name": "image", - "type": "IMAGE", - "link": 289 + "name": "feature", + "type": "FEATURE", + "links": [ + 374 + ] }, { - "name": "image_negative", - "type": "IMAGE", - "link": null - }, + "name": "frame_count", + "type": "INT", + "links": [ + 375 + ] + } + ], + "properties": { + "Node name for S&R": "AudioFeatureExtractor" + }, + "widgets_values": [ + "amplitude_envelope", + 30, + 0, + 512, + 512 + ] + }, + { + "id": 140, + "type": "SetNode", + "pos": [ + 2309.075439453125, + 2778.837158203125 + ], + "size": [ + 211.60000610351562, + 58 + ], + "flags": {}, + "order": 40, + "mode": 0, + "inputs": [ { - "name": "attn_mask", - "type": "MASK", - "link": null - }, + "name": "INT", + "type": "INT", + "link": 375 + } + ], + "outputs": [ { - "name": "clip_vision", - "type": "CLIP_VISION", - "link": null - }, + "name": "*", + "type": "*", + "links": [], + "slot_index": 0 + } + ], + "title": "Set_featurepiupr", + "properties": { + "previousName": "featurepiupr" + }, + "widgets_values": [ + "featurepiupr" + ], + "color": "#1b4669", + "bgcolor": "#29699c" + }, + { + "id": 141, + "type": "SetNode", + "pos": [ + 2262.83349609375, + 2921.079833984375 + ], + "size": [ + 210, + 58 + ], + "flags": {}, + "order": 39, + "mode": 0, + "inputs": [ { - "name": "insightface", - "type": "INSIGHTFACE", - "link": null + "name": "FEATURE", + "type": "FEATURE", + "link": 374 } ], "outputs": [ { - "name": "MODEL", - "type": "MODEL", + "name": "FEATURE", + "type": "FEATURE", "links": [ - 270 + 376 ], - "shape": 3 - }, + "slot_index": 0 + } + ], + "title": "Set_drumfeature", + "properties": { + "previousName": "drumfeature" + }, + "widgets_values": [ + "drumfeature" + ] + }, + { + "id": 206, + "type": "FeatureMixer", + "pos": [ + 2120, + 3224 + ], + "size": [ + 315, + 322 + ], + "flags": {}, + "order": 43, + "mode": 0, + "inputs": [ { - "name": "face_image", - "type": "IMAGE", - "links": null, - "shape": 3 + "name": "feature", + "type": "FEATURE", + "link": 376 + } + ], + "outputs": [ + { + "name": "FEATURE", + "type": "FEATURE", + "links": [ + 379 + ] } ], "properties": { - "Node name for S&R": "IPAAdapterFaceIDBatch" + "Node name for S&R": "FeatureMixer" }, "widgets_values": [ + 1, + 0, + 0.25, + 1, + 1, 1, 1, - "linear", - "concat", 0, + 0.2, 1, - "V only" + 0.5, + false ] }, { - "id": 110, - "type": "IPAdapterUnifiedLoaderFaceID", + "id": 207, + "type": "FlexMaskMorph", "pos": [ - 8044, - 2003 + 2676, + 3350 + ], + "size": [ + 315, + 318 ], - "size": { - "0": 315, - "1": 126 - }, "flags": {}, - "order": 36, + "order": 45, "mode": 0, "inputs": [ { - "name": "model", - "type": "MODEL", - "link": 192 + "name": "masks", + "type": "MASK", + "link": 378 }, { - "name": "ipadapter", - "type": "IPADAPTER", - "link": null + "name": "opt_feature", + "type": "FEATURE", + "link": 379, + "shape": 7 } ], "outputs": [ { - "name": "MODEL", - "type": "MODEL", - "links": [ - 267 - ], - "shape": 3, - "slot_index": 0 - }, - { - "name": "ipadapter", - "type": "IPADAPTER", + "name": "MASK", + "type": "MASK", "links": [ - 268 - ], - "shape": 3, - "slot_index": 1 + 380 + ] } ], "properties": { - "Node name for S&R": "IPAdapterUnifiedLoaderFaceID" + "Node name for S&R": "FlexMaskMorph" }, "widgets_values": [ - "FACEID PLUS V2", - 0.6, - "CUDA" + 1, + 0, + "max_kernel_size", + "relative", + false, + 0, + 0, + 1, + "dilate", + 3, + 3 ] }, { - "id": 137, - "type": "NNLatentUpscale", + "id": 62, + "type": "AudioFeatureVisualizer", "pos": [ - 10440, - 2022 + 1818.8599853515625, + 2347.552978515625 + ], + "size": [ + 529.199951171875, + 198 ], - "size": { - "0": 315, - "1": 82 - }, "flags": {}, - "order": 58, + "order": 30, "mode": 0, "inputs": [ { - "name": "latent", - "type": "LATENT", - "link": 249 + "name": "audio", + "type": "AUDIO", + "link": 371 + }, + { + "name": "video_frames", + "type": "IMAGE", + "link": 110 } ], "outputs": [ { - "name": "LATENT", - "type": "LATENT", + "name": "IMAGE", + "type": "IMAGE", "links": [ - 250 + 319, + 338, + 351 ], - "shape": 3, - "slot_index": 0 + "slot_index": 0, + "shape": 3 } ], "properties": { - "Node name for S&R": "NNLatentUpscale" + "Node name for S&R": "AudioFeatureVisualizer" }, "widgets_values": [ - "SD 1.x", - 1.5 + "waveform", + 30, + "time", + "linear", + "inferno", + "pygame" ] }, { - "id": 136, + "id": 63, "type": "VHS_VideoCombine", "pos": [ - 10869.694002435086, - 2046.033112080377 + 3782.592041015625, + 3276.060791015625 ], "size": [ - 565.05419921875, - 629.0303316728784 + 214.7587890625, + 459.01251220703125 ], "flags": {}, - "order": 62, + "order": 48, "mode": 0, "inputs": [ { "name": "images", "type": "IMAGE", - "link": 247 + "link": 357 }, { "name": "audio", - "type": "*", - "link": 248 + "type": "AUDIO", + "link": 111, + "shape": 7 }, { "name": "meta_batch", "type": "VHS_BatchManager", - "link": null + "link": null, + "shape": 7 }, { "name": "vae", "type": "VAE", - "link": null + "link": null, + "shape": 7 } ], "outputs": [ @@ -3030,41 +2860,122 @@ "format": "video/h264-mp4", "pix_fmt": "yuv420p", "crf": 19, - "save_metadata": false, + "save_metadata": true, + "trim_to_audio": false, "pingpong": false, "save_output": true, "videopreview": { "hidden": false, "paused": false, "params": { - "filename": "AnimateDiff_05588-audio.mp4", + "filename": "AnimateDiff_02409-audio.mp4", "subfolder": "", "type": "output", "format": "video/h264-mp4", - "frame_rate": 30 + "frame_rate": 30, + "workflow": "AnimateDiff_02409.png", + "fullpath": "/runpod-volume/ComfyUI_rv/output/AnimateDiff_02409-audio.mp4" }, "muted": false } } + }, + { + "id": 129, + "type": "LoadImage", + "pos": [ + 8037.478515625, + 2181.419921875 + ], + "size": [ + 315, + 314.00006103515625 + ], + "flags": {}, + "order": 16, + "mode": 0, + "inputs": [], + "outputs": [ + { + "name": "IMAGE", + "type": "IMAGE", + "links": [ + 289 + ], + "slot_index": 0, + "shape": 3 + }, + { + "name": "MASK", + "type": "MASK", + "links": null, + "shape": 3 + } + ], + "properties": { + "Node name for S&R": "LoadImage" + }, + "widgets_values": [ + "pasted/image (115).png", + "image" + ] + }, + { + "id": 208, + "type": "AdvancedLivePortrait", + "pos": [ + 8115.21875, + 816.7516479492188 + ], + "size": [ + 400, + 260 + ], + "flags": {}, + "order": 17, + "mode": 0, + "inputs": [ + { + "name": "src_images", + "type": "IMAGE", + "link": null, + "shape": 7 + }, + { + "name": "motion_link", + "type": "EDITOR_LINK", + "link": null, + "shape": 7 + }, + { + "name": "driving_images", + "type": "IMAGE", + "link": null, + "shape": 7 + } + ], + "outputs": [ + { + "name": "images", + "type": "IMAGE", + "links": null + } + ], + "properties": { + "Node name for S&R": "AdvancedLivePortrait" + }, + "widgets_values": [ + 0, + 0, + 1.7, + true, + false, + false, + "" + ] } ], "links": [ - [ - 10, - 12, - 0, - 11, - 0, - "OPEN_UNMIX_MODEL" - ], - [ - 11, - 10, - 0, - 11, - 1, - "AUDIO" - ], [ 18, 10, @@ -3081,14 +2992,6 @@ 0, "AUDIO" ], - [ - 72, - 37, - 0, - 11, - 2, - "IMAGE" - ], [ 86, 48, @@ -3273,14 +3176,6 @@ 0, "AUDIO" ], - [ - 162, - 11, - 5, - 87, - 1, - "FEATURE_PIPE" - ], [ 192, 69, @@ -3361,14 +3256,6 @@ 0, "MODEL" ], - [ - 238, - 11, - 1, - 87, - 0, - "AUDIO" - ], [ 240, 85, @@ -3441,22 +3328,6 @@ 3, "LATENT" ], - [ - 252, - 87, - 0, - 141, - 0, - "*" - ], - [ - 253, - 87, - 1, - 140, - 0, - "*" - ], [ 267, 110, @@ -3570,120 +3441,145 @@ "*" ], [ - 321, - 11, - 1, - 170, + 338, + 62, 0, - "AUDIO" + 185, + 0, + "IMAGE" ], [ - 322, - 11, - 1, + 351, 62, 0, - "AUDIO" - ], - [ - 336, - 183, - 1, - 184, + 191, 0, "IMAGE" ], [ - 338, - 62, + 357, + 193, 0, - 185, + 63, 0, "IMAGE" ], [ - 339, - 141, + 359, + 47, 0, - 183, + 85, 0, - "FEATURE" + "LATENT" ], [ - 351, - 62, + 360, + 193, 0, - 191, + 53, 0, "IMAGE" ], [ - 352, - 191, + 367, + 12, 0, - 192, + 203, 0, - "MASK" + "OPEN_UNMIX_MODEL" ], [ - 354, - 140, + 368, + 10, 0, - 192, - 2, - "FEATURE_PIPE" + 203, + 1, + "AUDIO" ], [ - 356, - 192, + 370, + 203, + 1, + 170, 0, - 193, + "AUDIO" + ], + [ + 371, + 203, + 1, + 62, 0, - "MASK" + "AUDIO" ], [ - 357, - 193, + 372, + 203, + 1, + 201, 0, - 63, + "AUDIO" + ], + [ + 373, + 203, + 1, + 204, 0, - "IMAGE" + "AUDIO" ], [ - 358, - 183, + 374, + 204, + 0, + 141, 0, - 192, - 1, "FEATURE" ], [ - 359, - 47, + 375, + 204, + 1, + 140, 0, - 85, + "INT" + ], + [ + 376, + 141, 0, - "LATENT" + 206, + 0, + "FEATURE" ], [ - 360, - 193, + 378, + 191, 0, - 53, + 207, 0, - "IMAGE" + "MASK" ], [ - 366, - 11, + 379, + 206, + 0, + 207, 1, - 201, + "FEATURE" + ], + [ + 380, + 207, 0, - "AUDIO" + 193, + 0, + "MASK" ] ], "groups": [ { + "id": 1, "title": "goo", "bounding": [ 5467, @@ -3693,9 +3589,10 @@ ], "color": "#3f789e", "font_size": 24, - "locked": false + "flags": {} }, { + "id": 2, "title": "ipadapter", "bounding": [ 7949, @@ -3705,9 +3602,10 @@ ], "color": "#3f789e", "font_size": 24, - "locked": false + "flags": {} }, { + "id": 3, "title": "Samp2", "bounding": [ 8850, @@ -3717,9 +3615,10 @@ ], "color": "#3f789e", "font_size": 24, - "locked": false + "flags": {} }, { + "id": 4, "title": "Samp3", "bounding": [ 10407, @@ -3729,9 +3628,10 @@ ], "color": "#3f789e", "font_size": 24, - "locked": false + "flags": {} }, { + "id": 5, "title": "Add condition", "bounding": [ 7047, @@ -3741,9 +3641,10 @@ ], "color": "#3f789e", "font_size": 24, - "locked": false + "flags": {} }, { + "id": 6, "title": "Model", "bounding": [ 3477, @@ -3753,9 +3654,10 @@ ], "color": "#3f789e", "font_size": 24, - "locked": false + "flags": {} }, { + "id": 7, "title": "AnimDiff", "bounding": [ 4741, @@ -3765,9 +3667,10 @@ ], "color": "#3f789e", "font_size": 24, - "locked": false + "flags": {} }, { + "id": 8, "title": "Audio", "bounding": [ 1105, @@ -3777,9 +3680,10 @@ ], "color": "#3f789e", "font_size": 24, - "locked": false + "flags": {} }, { + "id": 9, "title": "Fatten up for winter", "bounding": [ 2060, @@ -3789,18 +3693,30 @@ ], "color": "#3f789e", "font_size": 24, - "locked": false + "flags": {} } ], "config": {}, "extra": { "ds": { - "scale": 0.11338191753015442, + "scale": 0.6727499949325646, "offset": [ - 2426.25474100263, - 2384.853044971122 + -1463.3519301979481, + -2756.847429359734 ] - } + }, + "node_versions": { + "ComfyUI-AnimateDiff-Evolved": "7ec46937095048a77342aeada964e9823a2102f0", + "comfy-core": "0.3.12", + "rgthree-comfy": "5f2d8a1d19fcb2cac6dbc933085b20c1c0a8bb9f", + "ComfyUI-KJNodes": "973ceb6ca8b7525d54873805888ad690090d6b1e", + "ComfyUI-VideoHelperSuite": "6953fa21443cf55f7c3b61ed3f4c87c5d3677fe1", + "ComfyUi_NNLatentUpscale": "08105da31dbd7a54569661e135835e73bd8064b0", + "ComfyUI_RyanOnTheInside": "0507092b2c3f5c51b45989c6c4fd51c1add26513", + "ComfyUI_IPAdapter_plus": "b188a6cb39b512a9c6da7235b880af42c78ccd0d", + "ComfyUI-AdvancedLivePortrait": "3bba732915e22f18af0d221b9c5c282990181f1b" + }, + "ue_links": [] }, "version": 0.4 } \ No newline at end of file diff --git a/examples/smiley_interp_tutoprial.json b/examples/smiley_interp_tutoprial_VERSION2.json similarity index 58% rename from examples/smiley_interp_tutoprial.json rename to examples/smiley_interp_tutoprial_VERSION2.json index 8f1a30e..3149db6 100644 --- a/examples/smiley_interp_tutoprial.json +++ b/examples/smiley_interp_tutoprial_VERSION2.json @@ -1,87 +1,39 @@ { - "last_node_id": 201, - "last_link_id": 315, + "last_node_id": 245, + "last_link_id": 433, "nodes": [ { - "id": 18, - "type": "ADE_AnimateDiffLoaderGen1", - "pos": { - "0": 5267.17529296875, - "1": 1352.8338623046875 - }, - "size": { - "0": 271.7644958496094, - "1": 242 - }, + "id": 25, + "type": "ADE_AdjustWeightAllMult", + "pos": [ + 4907.17529296875, + 1492.8338623046875 + ], + "size": [ + 270.3999938964844, + 82 + ], "flags": {}, - "order": 69, + "order": 0, "mode": 0, "inputs": [ { - "name": "model", - "type": "MODEL", - "link": 20 - }, - { - "name": "context_options", - "type": "CONTEXT_OPTIONS", - "link": 21, - "slot_index": 1 - }, - { - "name": "motion_lora", - "type": "MOTION_LORA", - "link": 22, - "slot_index": 2 - }, - { - "name": "ad_settings", - "type": "AD_SETTINGS", + "name": "prev_weight_adjust", + "type": "WEIGHT_ADJUST", "link": null, - "slot_index": 3 - }, - { - "name": "ad_keyframes", - "type": "AD_KEYFRAMES", - "link": null - }, - { - "name": "sample_settings", - "type": "SAMPLE_SETTINGS", - "link": 23, - "slot_index": 5 - }, - { - "name": "scale_multival", - "type": "MULTIVAL", - "link": 24, - "slot_index": 6 - }, - { - "name": "effect_multival", - "type": "MULTIVAL", - "link": 25, - "slot_index": 7 - }, - { - "name": "per_block", - "type": "PER_BLOCK", - "link": null + "shape": 7 } ], "outputs": [ { - "name": "MODEL", - "type": "MODEL", - "links": [ - 27 - ], - "slot_index": 0, + "name": "WEIGHT_ADJUST", + "type": "WEIGHT_ADJUST", + "links": [], "shape": 3 } ], "properties": { - "Node name for S&R": "ADE_AnimateDiffLoaderGen1", + "Node name for S&R": "ADE_AdjustWeightAllMult", "ttNbgOverride": { "color": "#2a363b", "bgcolor": "#3f5159", @@ -89,552 +41,429 @@ } }, "widgets_values": [ - "ALCM_sd15_t2v_beta.ckpt", - "lcm avg(sqrt_linear,linear)" + 1.01, + false ] }, { - "id": 19, - "type": "ADE_AnimateDiffSamplingSettings", - "pos": { - "0": 5267.17529296875, - "1": 1962.8338623046875 - }, - "size": { - "0": 273.3500061035156, - "1": 254 + "id": 36, + "type": "Note", + "pos": [ + 2650, + 1790 + ], + "size": [ + 380.91632080078125, + 230.8916015625 + ], + "flags": {}, + "order": 1, + "mode": 0, + "inputs": [], + "outputs": [], + "properties": { + "text": "" }, + "widgets_values": [ + "5. finally we do all this " + ], + "color": "#432", + "bgcolor": "#653" + }, + { + "id": 64, + "type": "IPAdapterClipVisionEnhancerBatch", + "pos": [ + 6169.6884765625, + 1321.1038818359375 + ], + "size": [ + 316.3516845703125, + 326 + ], "flags": {}, - "order": 46, + "order": 80, "mode": 0, "inputs": [ { - "name": "noise_layers", - "type": "NOISE_LAYERS", - "link": null, - "slot_index": 0 + "name": "model", + "type": "MODEL", + "link": 86 }, { - "name": "iteration_opts", - "type": "ITERATION_OPTS", - "link": null + "name": "ipadapter", + "type": "IPADAPTER", + "link": 87 }, { - "name": "custom_cfg", - "type": "CUSTOM_CFG", - "link": 26, - "slot_index": 2 + "name": "image", + "type": "IMAGE", + "link": 290 }, { - "name": "sigma_schedule", - "type": "SIGMA_SCHEDULE", + "name": "image_negative", + "type": "IMAGE", "link": null, - "slot_index": 3 + "shape": 7 }, { - "name": "seed_override", - "type": "INT", - "link": null, - "widget": { - "name": "seed_override" - } + "name": "attn_mask", + "type": "MASK", + "link": 289, + "shape": 7 }, { - "name": "seed_override", - "type": "INT", + "name": "clip_vision", + "type": "CLIP_VISION", "link": null, - "widget": { - "name": "seed_override" - } + "shape": 7 } ], "outputs": [ { - "name": "settings", - "type": "SAMPLE_SETTINGS", + "name": "MODEL", + "type": "MODEL", "links": [ - 23 + 90, + 91 ], - "slot_index": 0, "shape": 3 } ], "properties": { - "Node name for S&R": "ADE_AnimateDiffSamplingSettings", - "ttNbgOverride": { - "color": "#2a363b", - "bgcolor": "#3f5159", - "groupcolor": "#3f789e" - } + "Node name for S&R": "IPAdapterClipVisionEnhancerBatch" }, "widgets_values": [ + 1, + "linear", 0, - "FreeNoise", - "comfy", - 0, - 0, - false, - "" + 1, + "V only", + 2, + 0.5, + 0 ] }, { - "id": 20, - "type": "ADE_MultivalDynamic", - "pos": { - "0": 4917.17529296875, - "1": 1762.8338623046875 - }, - "size": { - "0": 259.9388122558594, - "1": 63.332008361816406 - }, + "id": 16, + "type": "VHS_VideoCombine", + "pos": [ + 7371.005859375, + 1315.6671142578125 + ], + "size": [ + 214.7587890625, + 465.6667785644531 + ], "flags": {}, - "order": 0, + "order": 93, "mode": 0, "inputs": [ { - "name": "mask_optional", - "type": "MASK", - "link": null + "name": "images", + "type": "IMAGE", + "link": 16 + }, + { + "name": "audio", + "type": "AUDIO", + "link": 49, + "shape": 7 + }, + { + "name": "meta_batch", + "type": "VHS_BatchManager", + "link": null, + "shape": 7 + }, + { + "name": "vae", + "type": "VAE", + "link": null, + "shape": 7 } ], "outputs": [ { - "name": "MULTIVAL", - "type": "MULTIVAL", - "links": [ - 24 - ], - "slot_index": 0, + "name": "Filenames", + "type": "VHS_FILENAMES", + "links": null, "shape": 3 } ], - "title": "Scale 🎭🅐🅓", "properties": { - "Node name for S&R": "ADE_MultivalDynamic", - "ttNbgOverride": { - "color": "#2a363b", - "bgcolor": "#3f5159", - "groupcolor": "#3f789e" - } + "Node name for S&R": "VHS_VideoCombine" }, - "widgets_values": [ - 1.1400000000000001, - "" - ] + "widgets_values": { + "frame_rate": 30, + "loop_count": 0, + "filename_prefix": "AnimateDiff", + "format": "video/h264-mp4", + "pix_fmt": "yuv420p", + "crf": 19, + "save_metadata": true, + "trim_to_audio": false, + "pingpong": false, + "save_output": true, + "videopreview": { + "hidden": false, + "paused": false, + "params": { + "filename": "AnimateDiff_02335-audio.mp4", + "subfolder": "", + "type": "output", + "format": "video/h264-mp4", + "frame_rate": 30, + "workflow": "AnimateDiff_02335.png", + "fullpath": "/runpod-volume/ComfyUI_rv/output/AnimateDiff_02335-audio.mp4" + } + } + } }, { - "id": 21, - "type": "ADE_AnimateDiffUniformContextOptions", - "pos": { - "0": 5267.17529296875, - "1": 1652.8338623046875 - }, - "size": { - "0": 273.269775390625, - "1": 270 - }, + "id": 101, + "type": "SetNode", + "pos": [ + -733.66259765625, + 1513.5509033203125 + ], + "size": [ + 210, + 58 + ], "flags": {}, - "order": 1, + "order": 48, "mode": 0, "inputs": [ { - "name": "prev_context", - "type": "CONTEXT_OPTIONS", - "link": null - }, - { - "name": "view_opts", - "type": "VIEW_OPTS", - "link": null + "name": "IMAGE", + "type": "IMAGE", + "link": 162 } ], "outputs": [ { - "name": "CONTEXT_OPTS", - "type": "CONTEXT_OPTIONS", - "links": [ - 21 - ], - "slot_index": 0, - "shape": 3 + "name": "*", + "type": "*", + "links": null } ], - "title": "Context Options 🎭🅐🅓", + "title": "Set_emptyimg", "properties": { - "Node name for S&R": "ADE_AnimateDiffUniformContextOptions", - "ttNbgOverride": { - "color": "#2a363b", - "bgcolor": "#3f5159", - "groupcolor": "#3f789e" - } + "previousName": "emptyimg" }, "widgets_values": [ - 16, - 1, - 4, - "uniform", - false, - "pyramid", - false, - 0, - 1, - "" - ] + "emptyimg" + ], + "color": "#2a363b", + "bgcolor": "#3f5159" }, { - "id": 22, - "type": "ADE_MultivalDynamic", - "pos": { - "0": 4917.17529296875, - "1": 1652.8338623046875 - }, - "size": { - "0": 265.1632385253906, - "1": 58 - }, + "id": 13, + "type": "CLIPTextEncode", + "pos": [ + 3110, + 1720 + ], + "size": [ + 425.27801513671875, + 180.6060791015625 + ], "flags": {}, - "order": 2, + "order": 64, "mode": 0, "inputs": [ { - "name": "mask_optional", - "type": "MASK", - "link": null + "name": "clip", + "type": "CLIP", + "link": 13 } ], "outputs": [ { - "name": "MULTIVAL", - "type": "MULTIVAL", + "name": "CONDITIONING", + "type": "CONDITIONING", "links": [ - 25 + 182 ], - "shape": 3 + "slot_index": 0 } ], - "title": "Effect 🎭🅐🅓", "properties": { - "Node name for S&R": "ADE_MultivalDynamic", - "ttNbgOverride": { - "color": "#2a363b", - "bgcolor": "#3f5159", - "groupcolor": "#3f789e" - } + "Node name for S&R": "CLIPTextEncode" }, "widgets_values": [ - 1.1, - "" + "text, watermark" ] }, { - "id": 23, - "type": "ADE_CustomCFGSimple", - "pos": { - "0": 4917.17529296875, - "1": 1862.8338623046875 - }, - "size": { - "0": 257.2469787597656, - "1": 60.893348693847656 - }, + "id": 12, + "type": "CLIPTextEncode", + "pos": [ + 3100, + 1470 + ], + "size": [ + 422.84503173828125, + 164.31304931640625 + ], "flags": {}, - "order": 3, + "order": 63, "mode": 0, "inputs": [ { - "name": "cfg_extras", - "type": "CFG_EXTRAS", - "link": null + "name": "clip", + "type": "CLIP", + "link": 12 } ], "outputs": [ { - "name": "CUSTOM_CFG", - "type": "CUSTOM_CFG", + "name": "CONDITIONING", + "type": "CONDITIONING", "links": [ - 26 + 181 ], - "shape": 3 + "slot_index": 0 } ], "properties": { - "Node name for S&R": "ADE_CustomCFGSimple", - "ttNbgOverride": { - "color": "#2a363b", - "bgcolor": "#3f5159", - "groupcolor": "#3f789e" - } + "Node name for S&R": "CLIPTextEncode" }, "widgets_values": [ - 2, - "" + "ral-acidzlime, spooky dripping slime" ] }, { - "id": 24, - "type": "ADE_AdjustPESweetspotStretch", - "pos": { - "0": 4917.17529296875, - "1": 1962.8338623046875 - }, - "size": { - "0": 253.07310485839844, - "1": 106 - }, - "flags": {}, - "order": 4, - "mode": 0, - "inputs": [ - { - "name": "prev_pe_adjust", - "type": "PE_ADJUST", - "link": null - } + "id": 111, + "type": "CR LoRA Stack", + "pos": [ + 1880, + 1682 ], - "outputs": [ - { - "name": "PE_ADJUST", - "type": "PE_ADJUST", - "links": [], - "shape": 3 - } + "size": [ + 315, + 342 ], - "properties": { - "Node name for S&R": "ADE_AdjustPESweetspotStretch", - "ttNbgOverride": { - "color": "#2a363b", - "bgcolor": "#3f5159", - "groupcolor": "#3f789e" - } - }, - "widgets_values": [ - 16, - 18, - false, - "" - ] - }, - { - "id": 25, - "type": "ADE_AdjustWeightAllMult", - "pos": { - "0": 4907.17529296875, - "1": 1492.8338623046875 - }, - "size": { - "0": 270.3999938964844, - "1": 82 - }, "flags": {}, - "order": 5, + "order": 2, "mode": 0, "inputs": [ { - "name": "prev_weight_adjust", - "type": "WEIGHT_ADJUST", - "link": null + "name": "lora_stack", + "type": "LORA_STACK", + "link": null, + "shape": 7 } ], "outputs": [ { - "name": "WEIGHT_ADJUST", - "type": "WEIGHT_ADJUST", - "links": [], + "name": "LORA_STACK", + "type": "LORA_STACK", + "links": [ + 184 + ], + "slot_index": 0, + "shape": 3 + }, + { + "name": "show_help", + "type": "STRING", + "links": null, "shape": 3 } ], "properties": { - "Node name for S&R": "ADE_AdjustWeightAllMult", - "ttNbgOverride": { - "color": "#2a363b", - "bgcolor": "#3f5159", - "groupcolor": "#3f789e" - } + "Node name for S&R": "CR LoRA Stack" }, "widgets_values": [ - 1.01, - false, - "" + "Off", + "halloweenTech-202.safetensors", + 0.58, + 0.46, + "Off", + "add_detail.safetensors", + 1, + 1, + "Off", + "ral-acidzlime-sd15.safetensors", + 1, + 1 ] }, { - "id": 26, - "type": "ADE_AnimateDiffLoRALoader", - "pos": { - "0": 4907.17529296875, - "1": 1352.8338623046875 - }, - "size": { - "0": 261.19134521484375, - "1": 82 - }, + "id": 143, + "type": "SetNode", + "pos": [ + -485.37115478515625, + 1859.334228515625 + ], + "size": [ + 210, + 58 + ], "flags": {}, - "order": 6, + "order": 70, "mode": 0, "inputs": [ { - "name": "prev_motion_lora", - "type": "MOTION_LORA", - "link": null + "name": "FEATURE", + "type": "FEATURE", + "link": 331 } ], "outputs": [ { - "name": "MOTION_LORA", - "type": "MOTION_LORA", - "links": [ - 22 - ], - "slot_index": 0, - "shape": 3 + "name": "*", + "type": "*", + "links": null } ], - "title": "AnimateDiff LoRA", + "title": "Set_vocal_feature", "properties": { - "Node name for S&R": "ADE_AnimateDiffLoRALoader", - "ttNbgOverride": { - "color": "#2a363b", - "bgcolor": "#3f5159", - "groupcolor": "#3f789e" - } + "previousName": "vocal_feature" }, "widgets_values": [ - "LiquidAF-0-1.safetensors", - 0.8, - "" + "vocal_feature" ] }, { - "id": 36, - "type": "Note", - "pos": { - "0": 2650, - "1": 1790 - }, - "size": { - "0": 380.91632080078125, - "1": 230.8916015625 - }, - "flags": {}, - "order": 7, - "mode": 0, - "inputs": [], - "outputs": [], - "properties": { - "text": "" - }, - "widgets_values": [ - "5. finally we do all this " + "id": 63, + "type": "VHS_VideoCombine", + "pos": [ + 9257.8388671875, + 1364.7005615234375 + ], + "size": [ + 214.7587890625, + 466.072509765625 ], - "color": "#432", - "bgcolor": "#653" - }, - { - "id": 64, - "type": "IPAdapterClipVisionEnhancerBatch", - "pos": { - "0": 6169.6884765625, - "1": 1321.1038818359375 - }, - "size": { - "0": 316.3516845703125, - "1": 326 - }, "flags": {}, - "order": 96, + "order": 97, "mode": 0, "inputs": [ { - "name": "model", - "type": "MODEL", - "link": 86 - }, - { - "name": "ipadapter", - "type": "IPADAPTER", - "link": 87 - }, - { - "name": "image", + "name": "images", "type": "IMAGE", - "link": 290 + "link": 251 }, { - "name": "image_negative", - "type": "IMAGE", - "link": null + "name": "audio", + "type": "AUDIO", + "link": 314, + "shape": 7 }, { - "name": "attn_mask", - "type": "MASK", - "link": 289 + "name": "meta_batch", + "type": "VHS_BatchManager", + "link": null, + "shape": 7 }, { - "name": "clip_vision", - "type": "CLIP_VISION", - "link": null - } - ], - "outputs": [ - { - "name": "MODEL", - "type": "MODEL", - "links": [ - 90, - 91 - ], - "shape": 3 - } - ], - "properties": { - "Node name for S&R": "IPAdapterClipVisionEnhancerBatch" - }, - "widgets_values": [ - 1, - "linear", - 0, - 1, - "V only", - 2, - 0.5, - 0 - ] - }, - { - "id": 16, - "type": "VHS_VideoCombine", - "pos": { - "0": 7371.005859375, - "1": 1315.6671142578125 - }, - "size": [ - 214.7587890625, - 310 - ], - "flags": {}, - "order": 114, - "mode": 0, - "inputs": [ - { - "name": "images", - "type": "IMAGE", - "link": 16 - }, - { - "name": "audio", - "type": "*", - "link": 49 - }, - { - "name": "meta_batch", - "type": "VHS_BatchManager", - "link": null - }, - { - "name": "vae", - "type": "VAE", - "link": null + "name": "vae", + "type": "VAE", + "link": null, + "shape": 7 } ], "outputs": [ @@ -656,40 +485,43 @@ "pix_fmt": "yuv420p", "crf": 19, "save_metadata": true, + "trim_to_audio": false, "pingpong": false, "save_output": true, "videopreview": { "hidden": false, "paused": false, "params": { - "filename": "AnimateDiff_07445-audio.mp4", + "filename": "AnimateDiff_02334-audio.mp4", "subfolder": "", "type": "output", "format": "video/h264-mp4", - "frame_rate": 30 + "frame_rate": 30, + "workflow": "AnimateDiff_02334.png", + "fullpath": "/runpod-volume/ComfyUI_rv/output/AnimateDiff_02334-audio.mp4" } } } }, { - "id": 101, + "id": 153, "type": "SetNode", - "pos": { - "0": -3236.29248046875, - "1": 1459.73095703125 - }, - "size": { - "0": 210, - "1": 58 - }, + "pos": [ + -475.73345947265625, + 2093.8203125 + ], + "size": [ + 210, + 58 + ], "flags": {}, - "order": 62, + "order": 71, "mode": 0, "inputs": [ { - "name": "IMAGE", - "type": "IMAGE", - "link": 162 + "name": "FEATURE", + "type": "FEATURE", + "link": 333 } ], "outputs": [ @@ -699,1872 +531,1139 @@ "links": null } ], - "title": "Set_emptyimg", + "title": "Set_vocal_feature_rms", "properties": { - "previousName": "emptyimg" + "previousName": "vocal_feature_rms" }, "widgets_values": [ - "emptyimg" + "vocal_feature_rms" ] }, { - "id": 13, - "type": "CLIPTextEncode", - "pos": { - "0": 3110, - "1": 1720 - }, - "size": { - "0": 425.27801513671875, - "1": 180.6060791015625 - }, + "id": 155, + "type": "SetNode", + "pos": [ + -435.7334899902344, + 2293.82080078125 + ], + "size": [ + 252, + 58 + ], "flags": {}, - "order": 71, + "order": 72, "mode": 0, "inputs": [ { - "name": "clip", - "type": "CLIP", - "link": 13 + "name": "FEATURE", + "type": "FEATURE", + "link": 335 } ], "outputs": [ { - "name": "CONDITIONING", - "type": "CONDITIONING", - "links": [ - 182 - ], - "slot_index": 0 + "name": "*", + "type": "*", + "links": null } ], + "title": "Set_vocal_feature_rms_centroid", "properties": { - "Node name for S&R": "CLIPTextEncode" + "previousName": "vocal_feature_rms_centroid" }, "widgets_values": [ - "text, watermark" + "vocal_feature_rms_centroid" ] }, { - "id": 12, - "type": "CLIPTextEncode", - "pos": { - "0": 3100, - "1": 1470 - }, - "size": { - "0": 422.84503173828125, - "1": 164.31304931640625 - }, + "id": 41, + "type": "DownloadOpenUnmixModel", + "pos": [ + -2044.7327880859375, + 2200.820068359375 + ], + "size": [ + 361.20001220703125, + 58 + ], "flags": {}, - "order": 70, + "order": 3, "mode": 0, - "inputs": [ - { - "name": "clip", - "type": "CLIP", - "link": 12 - } - ], + "inputs": [], "outputs": [ { - "name": "CONDITIONING", - "type": "CONDITIONING", + "name": "OPEN_UNMIX_MODEL", + "type": "OPEN_UNMIX_MODEL", "links": [ - 181 + 316 ], - "slot_index": 0 + "slot_index": 0, + "shape": 3 } ], "properties": { - "Node name for S&R": "CLIPTextEncode" + "Node name for S&R": "DownloadOpenUnmixModel" }, "widgets_values": [ - "ral-acidzlime, spooky dripping slime" + "umxl" ] }, { - "id": 111, - "type": "CR LoRA Stack", - "pos": { - "0": 1880, - "1": 1682 - }, - "size": { - "0": 315, - "1": 342 + "id": 49, + "type": "PreviewAudio", + "pos": [ + -1741.7332763671875, + 1669.8201904296875 + ], + "size": [ + 315, + 76 + ], + "flags": {}, + "order": 37, + "mode": 0, + "inputs": [ + { + "name": "audio", + "type": "AUDIO", + "link": 56 + } + ], + "outputs": [], + "properties": { + "Node name for S&R": "PreviewAudio" }, + "widgets_values": [ + null + ] + }, + { + "id": 45, + "type": "SetNode", + "pos": [ + -1713.7332763671875, + 1525.8204345703125 + ], + "size": [ + 210, + 58 + ], "flags": {}, - "order": 8, + "order": 36, "mode": 0, "inputs": [ { - "name": "lora_stack", - "type": "LORA_STACK", - "link": null + "name": "AUDIO", + "type": "AUDIO", + "link": 48 } ], "outputs": [ { - "name": "LORA_STACK", - "type": "LORA_STACK", - "links": [ - 184 - ], - "slot_index": 0, - "shape": 3 - }, - { - "name": "show_help", - "type": "STRING", - "links": null, - "shape": 3 + "name": "*", + "type": "*", + "links": null } ], + "title": "Set_audio", "properties": { - "Node name for S&R": "CR LoRA Stack" + "previousName": "audio" }, "widgets_values": [ - "Off", - "halloweenTech-202.safetensors", - 0.58, - 0.46, - "Off", - "add_detail.safetensors", - 1, - 1, - "Off", - "ral-acidzlime-sd15.safetensors", - 1, - 1 + "audio" ] }, { - "id": 114, - "type": "CLIPTextEncode", - "pos": { - "0": 2480, - "1": 3750 - }, - "size": { - "0": 425.27801513671875, - "1": 180.6060791015625 - }, + "id": 173, + "type": "SetNode", + "pos": [ + 2083, + 1200 + ], + "size": [ + 210, + 58 + ], "flags": {}, - "order": 68, + "order": 34, "mode": 0, "inputs": [ { - "name": "clip", - "type": "CLIP", - "link": 192 + "name": "VAE", + "type": "VAE", + "link": 291 } ], "outputs": [ { - "name": "CONDITIONING", - "type": "CONDITIONING", - "links": [ - 217 - ], - "slot_index": 0 + "name": "*", + "type": "*", + "links": null } ], + "title": "Set_vae", "properties": { - "Node name for S&R": "CLIPTextEncode" + "previousName": "vae" }, "widgets_values": [ - "text, watermark" - ] + "vae" + ], + "color": "#322", + "bgcolor": "#533" }, { - "id": 119, - "type": "ADE_AnimateDiffSamplingSettings", - "pos": { - "0": 4524.482421875, - "1": 3989.747314453125 - }, - "size": { - "0": 273.3500061035156, - "1": 254 - }, + "id": 174, + "type": "SetNode", + "pos": [ + 2053, + 1068 + ], + "size": [ + 210, + 58 + ], "flags": {}, - "order": 48, + "order": 32, "mode": 0, "inputs": [ { - "name": "noise_layers", - "type": "NOISE_LAYERS", - "link": null, - "slot_index": 0 - }, + "name": "MODEL", + "type": "MODEL", + "link": 292 + } + ], + "outputs": [ { - "name": "iteration_opts", - "type": "ITERATION_OPTS", - "link": null - }, - { - "name": "custom_cfg", - "type": "CUSTOM_CFG", - "link": 205, - "slot_index": 2 - }, - { - "name": "sigma_schedule", - "type": "SIGMA_SCHEDULE", - "link": null, - "slot_index": 3 - }, - { - "name": "seed_override", - "type": "INT", - "link": null, - "widget": { - "name": "seed_override" - } - }, - { - "name": "seed_override", - "type": "INT", - "link": null, - "widget": { - "name": "seed_override" - } - } - ], - "outputs": [ - { - "name": "settings", - "type": "SAMPLE_SETTINGS", - "links": [ - 202 - ], - "slot_index": 0, - "shape": 3 + "name": "*", + "type": "*", + "links": null } ], + "title": "Set_model", "properties": { - "Node name for S&R": "ADE_AnimateDiffSamplingSettings", - "ttNbgOverride": { - "color": "#2a363b", - "bgcolor": "#3f5159", - "groupcolor": "#3f789e" - } + "previousName": "model" }, "widgets_values": [ - 0, - "FreeNoise", - "comfy", - 0, - 0, - false, - "" - ] + "model" + ], + "color": "#223", + "bgcolor": "#335" }, { - "id": 120, - "type": "ADE_MultivalDynamic", - "pos": { - "0": 4174.482421875, - "1": 3789.747314453125 - }, - "size": { - "0": 259.9388122558594, - "1": 63.332008361816406 - }, + "id": 175, + "type": "SetNode", + "pos": [ + 2037, + 967 + ], + "size": [ + 210, + 58 + ], "flags": {}, - "order": 9, + "order": 33, "mode": 0, "inputs": [ { - "name": "mask_optional", - "type": "MASK", - "link": null + "name": "CLIP", + "type": "CLIP", + "link": 293 } ], "outputs": [ { - "name": "MULTIVAL", - "type": "MULTIVAL", - "links": [ - 203 - ], - "slot_index": 0, - "shape": 3 + "name": "*", + "type": "*", + "links": null } ], - "title": "Scale 🎭🅐🅓", + "title": "Set_clip", "properties": { - "Node name for S&R": "ADE_MultivalDynamic", - "ttNbgOverride": { - "color": "#2a363b", - "bgcolor": "#3f5159", - "groupcolor": "#3f789e" - } + "previousName": "clip" }, "widgets_values": [ - 1.1400000000000001, - "" - ] + "clip" + ], + "color": "#432", + "bgcolor": "#653" }, { - "id": 121, - "type": "ADE_AnimateDiffUniformContextOptions", - "pos": { - "0": 4524.482421875, - "1": 3679.747314453125 - }, - "size": { - "0": 273.269775390625, - "1": 270 - }, + "id": 30, + "type": "CR Apply LoRA Stack", + "pos": [ + 2528, + 1486 + ], + "size": [ + 254.40000915527344, + 66 + ], "flags": {}, - "order": 10, + "order": 46, "mode": 0, "inputs": [ { - "name": "prev_context", - "type": "CONTEXT_OPTIONS", - "link": null + "name": "model", + "type": "MODEL", + "link": 28 }, { - "name": "view_opts", - "type": "VIEW_OPTS", - "link": null + "name": "clip", + "type": "CLIP", + "link": 29 + }, + { + "name": "lora_stack", + "type": "LORA_STACK", + "link": 30 } ], "outputs": [ { - "name": "CONTEXT_OPTS", - "type": "CONTEXT_OPTIONS", + "name": "MODEL", + "type": "MODEL", "links": [ - 200 + 392 ], "slot_index": 0, "shape": 3 + }, + { + "name": "CLIP", + "type": "CLIP", + "links": [ + 12, + 13 + ], + "slot_index": 1, + "shape": 3 + }, + { + "name": "show_help", + "type": "STRING", + "links": null, + "shape": 3 } ], - "title": "Context Options 🎭🅐🅓", "properties": { - "Node name for S&R": "ADE_AnimateDiffUniformContextOptions", - "ttNbgOverride": { - "color": "#2a363b", - "bgcolor": "#3f5159", - "groupcolor": "#3f789e" - } + "Node name for S&R": "CR Apply LoRA Stack" }, - "widgets_values": [ - 16, - 1, - 4, - "uniform", - false, - "pyramid", - false, - 0, - 1, - "" - ] + "widgets_values": [] }, { - "id": 122, - "type": "ADE_MultivalDynamic", - "pos": { - "0": 4174.482421875, - "1": 3679.747314453125 - }, - "size": { - "0": 265.1632385253906, - "1": 58 - }, + "id": 29, + "type": "CR LoRA Stack", + "pos": [ + 2270, + 1670 + ], + "size": [ + 315, + 342 + ], "flags": {}, - "order": 11, + "order": 31, "mode": 0, "inputs": [ { - "name": "mask_optional", - "type": "MASK", - "link": null + "name": "lora_stack", + "type": "LORA_STACK", + "link": 184, + "shape": 7 } ], "outputs": [ { - "name": "MULTIVAL", - "type": "MULTIVAL", + "name": "LORA_STACK", + "type": "LORA_STACK", "links": [ - 204 + 30, + 297 ], + "slot_index": 0, + "shape": 3 + }, + { + "name": "show_help", + "type": "STRING", + "links": null, "shape": 3 } ], - "title": "Effect 🎭🅐🅓", "properties": { - "Node name for S&R": "ADE_MultivalDynamic", - "ttNbgOverride": { - "color": "#2a363b", - "bgcolor": "#3f5159", - "groupcolor": "#3f789e" - } + "Node name for S&R": "CR LoRA Stack" }, "widgets_values": [ - 1.1, - "" + "On", + "AnimateLCM_sd15_t2v_lora.safetensors", + 1, + 1, + "On", + "add_detail.safetensors", + 1, + 1, + "On", + "ral-acidzlime-sd15.safetensors", + 1, + 1 ] }, { - "id": 123, - "type": "ADE_CustomCFGSimple", - "pos": { - "0": 4174.482421875, - "1": 3889.747314453125 - }, - "size": { - "0": 257.2469787597656, - "1": 60.893348693847656 - }, + "id": 184, + "type": "SetNode", + "pos": [ + 1373.0858154296875, + 1622.4879150390625 + ], + "size": [ + 210, + 58 + ], "flags": {}, - "order": 12, + "order": 83, "mode": 0, "inputs": [ { - "name": "cfg_extras", - "type": "CFG_EXTRAS", - "link": null + "name": "IMAGE", + "type": "IMAGE", + "link": 299 } ], "outputs": [ { - "name": "CUSTOM_CFG", - "type": "CUSTOM_CFG", - "links": [ - 205 - ], - "shape": 3 + "name": "*", + "type": "*", + "links": null } ], + "title": "Set_freq_ball_img", "properties": { - "Node name for S&R": "ADE_CustomCFGSimple", - "ttNbgOverride": { - "color": "#2a363b", - "bgcolor": "#3f5159", - "groupcolor": "#3f789e" - } + "previousName": "freq_ball_img" }, "widgets_values": [ - 2, - "" - ] + "freq_ball_img" + ], + "color": "#2a363b", + "bgcolor": "#3f5159" }, { - "id": 124, - "type": "ADE_AdjustPESweetspotStretch", - "pos": { - "0": 4174.482421875, - "1": 3989.747314453125 - }, - "size": { - "0": 253.07310485839844, - "1": 106 - }, + "id": 27, + "type": "IPAdapterUnifiedLoader", + "pos": [ + 5784.337890625, + 1308.1993408203125 + ], + "size": [ + 315, + 78 + ], "flags": {}, - "order": 13, + "order": 75, "mode": 0, "inputs": [ { - "name": "prev_pe_adjust", - "type": "PE_ADJUST", - "link": null - } - ], - "outputs": [ - { - "name": "PE_ADJUST", - "type": "PE_ADJUST", - "links": [], - "shape": 3 - } - ], - "properties": { - "Node name for S&R": "ADE_AdjustPESweetspotStretch", - "ttNbgOverride": { - "color": "#2a363b", - "bgcolor": "#3f5159", - "groupcolor": "#3f789e" - } - }, - "widgets_values": [ - 16, - 18, - false, - "" - ] - }, - { - "id": 125, - "type": "ADE_AdjustWeightAllMult", - "pos": { - "0": 4164.482421875, - "1": 3519.747314453125 - }, - "size": { - "0": 270.3999938964844, - "1": 82 - }, - "flags": {}, - "order": 14, - "mode": 0, - "inputs": [ + "name": "model", + "type": "MODEL", + "link": 393 + }, { - "name": "prev_weight_adjust", - "type": "WEIGHT_ADJUST", - "link": null + "name": "ipadapter", + "type": "IPADAPTER", + "link": null, + "shape": 7 } ], "outputs": [ { - "name": "WEIGHT_ADJUST", - "type": "WEIGHT_ADJUST", - "links": [], + "name": "model", + "type": "MODEL", + "links": [ + 86 + ], + "slot_index": 0, + "shape": 3 + }, + { + "name": "ipadapter", + "type": "IPADAPTER", + "links": [ + 87 + ], + "slot_index": 1, "shape": 3 } ], "properties": { - "Node name for S&R": "ADE_AdjustWeightAllMult", - "ttNbgOverride": { - "color": "#2a363b", - "bgcolor": "#3f5159", - "groupcolor": "#3f789e" - } + "Node name for S&R": "IPAdapterUnifiedLoader" }, "widgets_values": [ - 1.01, - false, - "" + "PLUS (high strength)" ] }, { - "id": 126, - "type": "ADE_AnimateDiffLoRALoader", - "pos": { - "0": 4164.482421875, - "1": 3379.747314453125 - }, - "size": { - "0": 261.19134521484375, - "1": 82 - }, + "id": 193, + "type": "GetNode", + "pos": [ + 7873.8388671875, + 1662.7003173828125 + ], + "size": [ + 210, + 58 + ], "flags": {}, - "order": 15, + "order": 4, "mode": 0, - "inputs": [ - { - "name": "prev_motion_lora", - "type": "MOTION_LORA", - "link": null - } - ], + "inputs": [], "outputs": [ { - "name": "MOTION_LORA", - "type": "MOTION_LORA", + "name": "VAE", + "type": "VAE", "links": [ - 201 + 308 ], - "slot_index": 0, - "shape": 3 + "slot_index": 0 } ], - "title": "AnimateDiff LoRA", - "properties": { - "Node name for S&R": "ADE_AnimateDiffLoRALoader", - "ttNbgOverride": { - "color": "#2a363b", - "bgcolor": "#3f5159", - "groupcolor": "#3f789e" - } - }, + "title": "Get_vae", + "properties": {}, "widgets_values": [ - "LiquidAF-0-1.safetensors", - 0.8, - "" + "vae" ] }, { - "id": 128, - "type": "CR Apply LoRA Stack", - "pos": { - "0": 2060, - "1": 3620 - }, - "size": { - "0": 254.40000915527344, - "1": 66 - }, + "id": 14, + "type": "VAEDecode", + "pos": [ + 7055, + 1328 + ], + "size": [ + 210, + 46 + ], "flags": {}, - "order": 58, + "order": 91, "mode": 0, "inputs": [ { - "name": "model", - "type": "MODEL", - "link": 295 - }, - { - "name": "clip", - "type": "CLIP", - "link": 296 + "name": "samples", + "type": "LATENT", + "link": 14 }, { - "name": "lora_stack", - "type": "LORA_STACK", - "link": 315 + "name": "vae", + "type": "VAE", + "link": 309 } ], "outputs": [ { - "name": "MODEL", - "type": "MODEL", - "links": [ - 199 - ], - "slot_index": 0, - "shape": 3 - }, - { - "name": "CLIP", - "type": "CLIP", + "name": "IMAGE", + "type": "IMAGE", "links": [ - 191, - 192 + 16 ], - "slot_index": 1, - "shape": 3 - }, - { - "name": "show_help", - "type": "STRING", - "links": null, - "shape": 3 + "slot_index": 0 } ], "properties": { - "Node name for S&R": "CR Apply LoRA Stack" + "Node name for S&R": "VAEDecode" }, "widgets_values": [] }, { - "id": 113, - "type": "CLIPTextEncode", - "pos": { - "0": 2470, - "1": 3500 - }, - "size": { - "0": 422.84503173828125, - "1": 164.31304931640625 - }, + "id": 199, + "type": "GetNode", + "pos": [ + 8823.8388671875, + 1339.7005615234375 + ], + "size": [ + 210, + 58 + ], "flags": {}, - "order": 67, + "order": 5, "mode": 0, - "inputs": [ - { - "name": "clip", - "type": "CLIP", - "link": 191 - } - ], + "inputs": [], "outputs": [ { - "name": "CONDITIONING", - "type": "CONDITIONING", + "name": "AUDIO", + "type": "AUDIO", "links": [ - 216 + 314 ], "slot_index": 0 } ], - "properties": { - "Node name for S&R": "CLIPTextEncode" - }, + "title": "Get_audio", + "properties": {}, "widgets_values": [ - "ral-acidzlime, spooky dripping slime" + "audio" ] }, { - "id": 142, - "type": "AudioFeatureExtractor", - "pos": { - "0": -3373.123291015625, - "1": 1782.5416259765625 - }, - "size": { - "0": 361.20001220703125, - "1": 78 - }, + "id": 62, + "type": "VAEDecode", + "pos": [ + 8544.8388671875, + 1747.7003173828125 + ], + "size": [ + 210, + 46 + ], "flags": {}, - "order": 74, + "order": 95, "mode": 0, "inputs": [ { - "name": "audio", - "type": "AUDIO", - "link": 238 + "name": "samples", + "type": "LATENT", + "link": 80 }, { - "name": "feature_pipe", - "type": "FEATURE_PIPE", - "link": 239 + "name": "vae", + "type": "VAE", + "link": 308 } ], "outputs": [ { - "name": "FEATURE", - "type": "FEATURE", + "name": "IMAGE", + "type": "IMAGE", "links": [ - 240 + 250 ], - "slot_index": 0, - "shape": 3 - }, - { - "name": "FEATURE_PIPE", - "type": "FEATURE_PIPE", - "links": null, - "shape": 3 + "slot_index": 0 } ], "properties": { - "Node name for S&R": "AudioFeatureExtractor" + "Node name for S&R": "VAEDecode" }, - "widgets_values": [ - "amplitude_envelope" - ] + "widgets_values": [] }, { - "id": 143, - "type": "SetNode", - "pos": { - "0": -2988.001220703125, - "1": 1805.5142822265625 - }, - "size": { - "0": 210, - "1": 58 - }, + "id": 78, + "type": "GetNode", + "pos": [ + 1046.962646484375, + 2702.70654296875 + ], + "size": [ + 210, + 58 + ], "flags": {}, - "order": 86, + "order": 6, "mode": 0, - "inputs": [ - { - "name": "FEATURE", - "type": "FEATURE", - "link": 240 - } - ], + "inputs": [], "outputs": [ { - "name": "*", - "type": "*", - "links": null + "name": "AUDIO", + "type": "AUDIO", + "links": [ + 124 + ], + "slot_index": 0 } ], - "title": "Set_vocal_feature", - "properties": { - "previousName": "vocal_feature" - }, + "title": "Get_audio", + "properties": {}, "widgets_values": [ - "vocal_feature" + "audio" ] }, { - "id": 63, - "type": "VHS_VideoCombine", - "pos": { - "0": 11303, - "1": 2172 - }, + "id": 192, + "type": "GetNode", + "pos": [ + 724.9510498046875, + 1365.8663330078125 + ], "size": [ - 214.7587890625, - 310 + 210, + 58 ], "flags": {}, - "order": 121, + "order": 7, "mode": 0, - "inputs": [ - { - "name": "images", - "type": "IMAGE", - "link": 251 - }, - { - "name": "audio", - "type": "*", - "link": 314 - }, - { - "name": "meta_batch", - "type": "VHS_BatchManager", - "link": null - }, - { - "name": "vae", - "type": "VAE", - "link": null - } - ], + "inputs": [], "outputs": [ { - "name": "Filenames", - "type": "VHS_FILENAMES", - "links": null, - "shape": 3 + "name": "AUDIO", + "type": "AUDIO", + "links": [ + 307 + ], + "slot_index": 0 } ], - "properties": { - "Node name for S&R": "VHS_VideoCombine" - }, - "widgets_values": { - "frame_rate": 30, - "loop_count": 0, - "filename_prefix": "AnimateDiff", - "format": "video/h264-mp4", - "pix_fmt": "yuv420p", - "crf": 19, - "save_metadata": true, - "pingpong": false, - "save_output": true, - "videopreview": { - "hidden": false, - "paused": false, - "params": { - "filename": "AnimateDiff_07447-audio.mp4", - "subfolder": "", - "type": "output", - "format": "video/h264-mp4", - "frame_rate": 30 - } - } - } + "title": "Get_audio", + "properties": {}, + "widgets_values": [ + "audio" + ] }, { - "id": 152, - "type": "AudioFeatureExtractor", - "pos": { - "0": -3358.363525390625, - "1": 2010.000244140625 - }, - "size": { - "0": 361.20001220703125, - "1": 78 - }, + "id": 11, + "type": "CheckpointLoaderSimple", + "pos": [ + 1825, + 1488 + ], + "size": [ + 315, + 98 + ], "flags": {}, - "order": 75, + "order": 8, "mode": 0, - "inputs": [ + "inputs": [], + "outputs": [ { - "name": "audio", - "type": "AUDIO", - "link": 257 + "name": "MODEL", + "type": "MODEL", + "links": [ + 28, + 292 + ], + "slot_index": 0 }, { - "name": "feature_pipe", - "type": "FEATURE_PIPE", - "link": 258 - } - ], - "outputs": [ - { - "name": "FEATURE", - "type": "FEATURE", + "name": "CLIP", + "type": "CLIP", "links": [ - 259 + 29, + 293 ], - "slot_index": 0, - "shape": 3 + "slot_index": 1 }, { - "name": "FEATURE_PIPE", - "type": "FEATURE_PIPE", - "links": null, - "shape": 3 + "name": "VAE", + "type": "VAE", + "links": [ + 15, + 291 + ], + "slot_index": 2 } ], "properties": { - "Node name for S&R": "AudioFeatureExtractor" + "Node name for S&R": "CheckpointLoaderSimple" }, "widgets_values": [ - "rms_energy" + "photon_v1.safetensors" ] }, { - "id": 153, - "type": "SetNode", - "pos": { - "0": -2978.363525390625, - "1": 2040.00048828125 - }, - "size": { - "0": 210, - "1": 58 - }, - "flags": {}, - "order": 87, - "mode": 0, - "inputs": [ - { - "name": "FEATURE", - "type": "FEATURE", - "link": 259 - } + "id": 172, + "type": "GetNode", + "pos": [ + 5806.3388671875, + 1436.19921875 ], - "outputs": [ - { - "name": "*", - "type": "*", - "links": null - } + "size": [ + 210, + 58 ], - "title": "Set_vocal_feature_rms", - "properties": { - "previousName": "vocal_feature_rms" - }, - "widgets_values": [ - "vocal_feature_rms" - ] - }, - { - "id": 154, - "type": "AudioFeatureExtractor", - "pos": { - "0": -3318.363525390625, - "1": 2210.000244140625 - }, - "size": { - "0": 361.20001220703125, - "1": 78 - }, "flags": {}, - "order": 76, + "order": 9, "mode": 0, - "inputs": [ - { - "name": "audio", - "type": "AUDIO", - "link": 260 - }, - { - "name": "feature_pipe", - "type": "FEATURE_PIPE", - "link": 261 - } - ], + "inputs": [], "outputs": [ { - "name": "FEATURE", - "type": "FEATURE", + "name": "IMAGE", + "type": "IMAGE", "links": [ - 262 + 290 ], - "slot_index": 0, - "shape": 3 - }, - { - "name": "FEATURE_PIPE", - "type": "FEATURE_PIPE", - "links": null, - "shape": 3 + "slot_index": 0 } ], - "properties": { - "Node name for S&R": "AudioFeatureExtractor" - }, + "title": "Get_img_ball", + "properties": {}, "widgets_values": [ - "spectral_centroid" + "img_ball" ] }, { - "id": 155, - "type": "SetNode", - "pos": { - "0": -2938.363525390625, - "1": 2240.0009765625 - }, - "size": { - "0": 252, - "1": 58 - }, + "id": 194, + "type": "GetNode", + "pos": [ + 6811, + 1218 + ], + "size": [ + 210, + 58 + ], "flags": {}, - "order": 88, + "order": 10, "mode": 0, - "inputs": [ - { - "name": "FEATURE", - "type": "FEATURE", - "link": 262 - } - ], + "inputs": [], "outputs": [ { - "name": "*", - "type": "*", - "links": null + "name": "VAE", + "type": "VAE", + "links": [ + 309 + ], + "slot_index": 0 } ], - "title": "Set_vocal_feature_rms_centroid", - "properties": { - "previousName": "vocal_feature_rms_centroid" - }, + "title": "Get_vae", + "properties": {}, "widgets_values": [ - "vocal_feature_rms_centroid" + "vae" ] }, { - "id": 156, - "type": "AudioFeatureExtractor", - "pos": { - "0": -3278.363525390625, - "1": 2410.000244140625 - }, - "size": { - "0": 361.20001220703125, - "1": 78 - }, + "id": 57, + "type": "VHS_LoadVideo", + "pos": [ + 398.9504699707031, + 1895.8665771484375 + ], + "size": [ + 247.455078125, + 262 + ], "flags": {}, - "order": 77, + "order": 50, "mode": 0, "inputs": [ { - "name": "audio", - "type": "AUDIO", - "link": 263 + "name": "meta_batch", + "type": "VHS_BatchManager", + "link": null, + "shape": 7 }, { - "name": "feature_pipe", - "type": "FEATURE_PIPE", - "link": 264 + "name": "vae", + "type": "VAE", + "link": null, + "shape": 7 + }, + { + "name": "frame_load_cap", + "type": "INT", + "link": 67, + "widget": { + "name": "frame_load_cap" + } } ], "outputs": [ { - "name": "FEATURE", - "type": "FEATURE", + "name": "IMAGE", + "type": "IMAGE", "links": [ - 265 + 68 ], "slot_index": 0, "shape": 3 }, { - "name": "FEATURE_PIPE", - "type": "FEATURE_PIPE", + "name": "frame_count", + "type": "INT", "links": null, "shape": 3 - } - ], - "properties": { - "Node name for S&R": "AudioFeatureExtractor" - }, - "widgets_values": [ - "onset_strength" - ] - }, - { - "id": 157, - "type": "SetNode", - "pos": { - "0": -2898.363525390625, - "1": 2440.000732421875 - }, - "size": { - "0": 252, - "1": 58 - }, - "flags": {}, - "order": 89, - "mode": 0, - "inputs": [ + }, { - "name": "FEATURE", - "type": "FEATURE", - "link": 265 - } - ], - "outputs": [ + "name": "audio", + "type": "AUDIO", + "links": null, + "shape": 3 + }, { - "name": "*", - "type": "*", - "links": null + "name": "video_info", + "type": "VHS_VIDEOINFO", + "links": null, + "shape": 3 } ], - "title": "Set_vocal_feature_onsetr", "properties": { - "previousName": "vocal_feature_onsetr" + "Node name for S&R": "VHS_LoadVideo" }, - "widgets_values": [ - "vocal_feature_onsetr" - ] + "widgets_values": { + "video": "floating_in_pool_768_ball_MASK.mp4", + "force_rate": 0, + "force_size": "Disabled", + "custom_width": 512, + "custom_height": 512, + "frame_load_cap": 0, + "skip_first_frames": 0, + "select_every_nth": 1, + "choose video to upload": "image", + "videopreview": { + "hidden": false, + "paused": false, + "params": { + "frame_load_cap": 0, + "skip_first_frames": 0, + "force_rate": 0, + "filename": "floating_in_pool_768_ball_MASK.mp4", + "type": "input", + "format": "video/mp4", + "select_every_nth": 1 + } + } + } }, { - "id": 158, - "type": "AudioFeatureExtractor", - "pos": { - "0": -3308.363525390625, - "1": 2610.000244140625 - }, - "size": { - "0": 361.20001220703125, - "1": 78 - }, + "id": 58, + "type": "_mfc", + "pos": [ + 686.9510498046875, + 1858.866455078125 + ], + "size": [ + 315, + 150 + ], "flags": {}, - "order": 78, + "order": 65, "mode": 0, "inputs": [ { - "name": "audio", - "type": "AUDIO", - "link": 266 - }, - { - "name": "feature_pipe", - "type": "FEATURE_PIPE", - "link": 267 + "name": "image", + "type": "IMAGE", + "link": 68 } ], "outputs": [ { - "name": "FEATURE", - "type": "FEATURE", + "name": "MASK", + "type": "MASK", "links": [ - 268 + 69, + 100, + 287 ], "slot_index": 0, "shape": 3 }, { - "name": "FEATURE_PIPE", - "type": "FEATURE_PIPE", - "links": null, + "name": "IMAGE", + "type": "IMAGE", + "links": [ + 288 + ], + "slot_index": 1, "shape": 3 } ], "properties": { - "Node name for S&R": "AudioFeatureExtractor" + "Node name for S&R": "_mfc" }, "widgets_values": [ - "chroma_features" + 255, + 255, + 255, + 11 ] }, { - "id": 159, - "type": "SetNode", - "pos": { - "0": -2928.363525390625, - "1": 2640.00048828125 - }, - "size": { - "0": 252, - "1": 58 - }, + "id": 55, + "type": "ImageCompositeMasked", + "pos": [ + 1029.9508056640625, + 1455.8663330078125 + ], + "size": [ + 315, + 146 + ], "flags": {}, - "order": 90, + "order": 76, "mode": 0, "inputs": [ { - "name": "FEATURE", - "type": "FEATURE", - "link": 268 - } - ], - "outputs": [ + "name": "destination", + "type": "IMAGE", + "link": 183 + }, { - "name": "*", - "type": "*", - "links": null + "name": "source", + "type": "IMAGE", + "link": 65 + }, + { + "name": "mask", + "type": "MASK", + "link": 69, + "shape": 7 } ], - "title": "Set_vocal_feature_rms_chroma", - "properties": { - "previousName": "vocal_feature_rms_chroma" - }, - "widgets_values": [ - "vocal_feature_rms_chroma" - ] - }, - { - "id": 41, - "type": "DownloadOpenUnmixModel", - "pos": { - "0": -4547.36328125, - "1": 2147.000244140625 - }, - "size": { - "0": 361.20001220703125, - "1": 58 - }, - "flags": {}, - "order": 16, - "mode": 0, - "inputs": [], "outputs": [ { - "name": "OPEN_UNMIX_MODEL", - "type": "OPEN_UNMIX_MODEL", + "name": "IMAGE", + "type": "IMAGE", "links": [ - 36 + 73, + 186, + 299 ], "slot_index": 0, "shape": 3 } ], "properties": { - "Node name for S&R": "DownloadOpenUnmixModel" + "Node name for S&R": "ImageCompositeMasked" }, "widgets_values": [ - "umxl" + 15, + 0, + false ] }, { - "id": 49, - "type": "PreviewAudio", - "pos": { - "0": -4244.36328125, - "1": 1616.000244140625 - }, - "size": { - "0": 315, - "1": 76 - }, + "id": 110, + "type": "GetNode", + "pos": [ + 795.9510498046875, + 1475.8663330078125 + ], + "size": [ + 210, + 58 + ], "flags": {}, - "order": 55, + "order": 11, "mode": 0, - "inputs": [ + "inputs": [], + "outputs": [ { - "name": "audio", - "type": "AUDIO", - "link": 56 + "name": "IMAGE", + "type": "IMAGE", + "links": [ + 183 + ], + "slot_index": 0 } ], - "outputs": [], - "properties": { - "Node name for S&R": "PreviewAudio" - }, + "title": "Get_freq", + "properties": {}, "widgets_values": [ - null - ] + "freq" + ], + "color": "#2a363b", + "bgcolor": "#3f5159" }, { - "id": 45, - "type": "SetNode", - "pos": { - "0": -4216.36328125, - "1": 1472.00048828125 - }, - "size": { - "0": 210, - "1": 58 - }, + "id": 54, + "type": "VHS_LoadVideo", + "pos": [ + 416.9507141113281, + 1403.8663330078125 + ], + "size": [ + 247.455078125, + 262 + ], "flags": {}, - "order": 54, + "order": 49, "mode": 0, "inputs": [ { - "name": "AUDIO", - "type": "AUDIO", - "link": 48 + "name": "meta_batch", + "type": "VHS_BatchManager", + "link": null, + "shape": 7 + }, + { + "name": "vae", + "type": "VAE", + "link": null, + "shape": 7 + }, + { + "name": "frame_load_cap", + "type": "INT", + "link": 66, + "widget": { + "name": "frame_load_cap" + } } ], "outputs": [ { - "name": "*", - "type": "*", - "links": null + "name": "IMAGE", + "type": "IMAGE", + "links": [ + 65 + ], + "slot_index": 0, + "shape": 3 + }, + { + "name": "frame_count", + "type": "INT", + "links": null, + "shape": 3 + }, + { + "name": "audio", + "type": "AUDIO", + "links": null, + "shape": 3 + }, + { + "name": "video_info", + "type": "VHS_VIDEOINFO", + "links": null, + "shape": 3 } ], - "title": "Set_audio", "properties": { - "previousName": "audio" - }, - "widgets_values": [ - "audio" - ] - }, - { - "id": 50, - "type": "PreviewAudio", - "pos": { - "0": -3355.363525390625, - "1": 1601.000244140625 - }, - "size": { - "0": 315, - "1": 76 - }, - "flags": {}, - "order": 72, - "mode": 0, - "inputs": [ - { - "name": "audio", - "type": "AUDIO", - "link": 57 - } - ], - "outputs": [], - "properties": { - "Node name for S&R": "PreviewAudio" - }, - "widgets_values": [ - null - ] - }, - { - "id": 167, - "type": "SetNode", - "pos": { - "0": 1137, - "1": 1802 - }, - "size": { - "0": 210, - "1": 58 - }, - "flags": {}, - "order": 92, - "mode": 0, - "inputs": [ - { - "name": "MASK", - "type": "MASK", - "link": 287 - } - ], - "outputs": [ - { - "name": "*", - "type": "*", - "links": null - } - ], - "title": "Set_mask_ball", - "properties": { - "previousName": "mask_ball" - }, - "widgets_values": [ - "mask_ball" - ] - }, - { - "id": 170, - "type": "SetNode", - "pos": { - "0": 1115.43310546875, - "1": 2059.093505859375 - }, - "size": { - "0": 210, - "1": 58 - }, - "flags": {}, - "order": 93, - "mode": 0, - "inputs": [ - { - "name": "IMAGE", - "type": "IMAGE", - "link": 288 - } - ], - "outputs": [ - { - "name": "*", - "type": "*", - "links": null - } - ], - "title": "Set_img_ball", - "properties": { - "previousName": "img_ball" - }, - "widgets_values": [ - "img_ball" - ] - }, - { - "id": 173, - "type": "SetNode", - "pos": { - "0": 2083, - "1": 1200 - }, - "size": { - "0": 210, - "1": 58 - }, - "flags": {}, - "order": 52, - "mode": 0, - "inputs": [ - { - "name": "VAE", - "type": "VAE", - "link": 291 - } - ], - "outputs": [ - { - "name": "*", - "type": "*", - "links": null - } - ], - "title": "Set_vae", - "properties": { - "previousName": "vae" - }, - "widgets_values": [ - "vae" - ] - }, - { - "id": 174, - "type": "SetNode", - "pos": { - "0": 2053, - "1": 1068 - }, - "size": { - "0": 210, - "1": 58 - }, - "flags": {}, - "order": 50, - "mode": 0, - "inputs": [ - { - "name": "MODEL", - "type": "MODEL", - "link": 292 - } - ], - "outputs": [ - { - "name": "*", - "type": "*", - "links": null - } - ], - "title": "Set_model", - "properties": { - "previousName": "model" - }, - "widgets_values": [ - "model" - ] - }, - { - "id": 175, - "type": "SetNode", - "pos": { - "0": 2037, - "1": 967 - }, - "size": { - "0": 210, - "1": 58 - }, - "flags": {}, - "order": 51, - "mode": 0, - "inputs": [ - { - "name": "CLIP", - "type": "CLIP", - "link": 293 - } - ], - "outputs": [ - { - "name": "*", - "type": "*", - "links": null - } - ], - "title": "Set_clip", - "properties": { - "previousName": "clip" - }, - "widgets_values": [ - "clip" - ] - }, - { - "id": 30, - "type": "CR Apply LoRA Stack", - "pos": { - "0": 2528, - "1": 1486 - }, - "size": { - "0": 254.40000915527344, - "1": 66 - }, - "flags": {}, - "order": 59, - "mode": 0, - "inputs": [ - { - "name": "model", - "type": "MODEL", - "link": 28 - }, - { - "name": "clip", - "type": "CLIP", - "link": 29 - }, - { - "name": "lora_stack", - "type": "LORA_STACK", - "link": 30 - } - ], - "outputs": [ - { - "name": "MODEL", - "type": "MODEL", - "links": [ - 20 - ], - "slot_index": 0, - "shape": 3 - }, - { - "name": "CLIP", - "type": "CLIP", - "links": [ - 12, - 13 - ], - "slot_index": 1, - "shape": 3 - }, - { - "name": "show_help", - "type": "STRING", - "links": null, - "shape": 3 - } - ], - "properties": { - "Node name for S&R": "CR Apply LoRA Stack" - }, - "widgets_values": [] - }, - { - "id": 177, - "type": "GetNode", - "pos": { - "0": 1790, - "1": 3620 - }, - "size": { - "0": 210, - "1": 58 - }, - "flags": {}, - "order": 17, - "mode": 0, - "inputs": [], - "outputs": [ - { - "name": "MODEL", - "type": "MODEL", - "links": [ - 295 - ], - "slot_index": 0 - } - ], - "title": "Get_model", - "properties": {}, - "widgets_values": [ - "model" - ] - }, - { - "id": 29, - "type": "CR LoRA Stack", - "pos": { - "0": 2270, - "1": 1670 - }, - "size": { - "0": 315, - "1": 342 - }, - "flags": {}, - "order": 47, - "mode": 0, - "inputs": [ - { - "name": "lora_stack", - "type": "LORA_STACK", - "link": 184 - } - ], - "outputs": [ - { - "name": "LORA_STACK", - "type": "LORA_STACK", - "links": [ - 30, - 297 - ], - "slot_index": 0, - "shape": 3 - }, - { - "name": "show_help", - "type": "STRING", - "links": null, - "shape": 3 - } - ], - "properties": { - "Node name for S&R": "CR LoRA Stack" - }, - "widgets_values": [ - "On", - "AnimateLCM_sd15_t2v_lora.safetensors", - 1, - 1, - "On", - "add_detail.safetensors", - 1, - 1, - "On", - "ral-acidzlime-sd15.safetensors", - 1, - 1 - ] - }, - { - "id": 178, - "type": "GetNode", - "pos": { - "0": 1750, - "1": 3750 - }, - "size": { - "0": 210, - "1": 58 - }, - "flags": {}, - "order": 18, - "mode": 0, - "inputs": [], - "outputs": [ - { - "name": "CLIP", - "type": "CLIP", - "links": [ - 296 - ], - "slot_index": 0 - } - ], - "title": "Get_clip", - "properties": {}, - "widgets_values": [ - "clip" - ] - }, - { - "id": 180, - "type": "GetNode", - "pos": { - "0": 1830, - "1": 3890 - }, - "size": { - "0": 210, - "1": 58 - }, - "flags": {}, - "order": 19, - "mode": 0, - "inputs": [], - "outputs": [ - { - "name": "LORA_STACK", - "type": "LORA_STACK", - "links": null - } - ], - "title": "Get_lora_stack", - "properties": {}, - "widgets_values": [ - "lora_stack" - ] - }, - { - "id": 176, - "type": "GetNode", - "pos": { - "0": 1800, - "1": 3550 - }, - "size": { - "0": 210, - "1": 58 + "Node name for S&R": "VHS_LoadVideo" }, - "flags": {}, - "order": 20, - "mode": 0, - "inputs": [], - "outputs": [ - { - "name": "VAE", - "type": "VAE", - "links": [ - 294 - ], - "slot_index": 0 + "widgets_values": { + "video": "floating_in_pool_768.mp4", + "force_rate": 0, + "force_size": "Disabled", + "custom_width": 512, + "custom_height": 512, + "frame_load_cap": 0, + "skip_first_frames": 0, + "select_every_nth": 1, + "choose video to upload": "image", + "videopreview": { + "hidden": false, + "paused": false, + "params": { + "frame_load_cap": 0, + "skip_first_frames": 0, + "force_rate": 0, + "filename": "floating_in_pool_768.mp4", + "type": "input", + "format": "video/mp4", + "select_every_nth": 1 + } } - ], - "title": "Get_vae", - "properties": {}, - "widgets_values": [ - "vae" - ] + } }, { - "id": 184, + "id": 179, "type": "SetNode", - "pos": { - "0": 1219.13427734375, - "1": 1531.6217041015625 - }, - "size": { - "0": 210, - "1": 58 - }, - "flags": {}, - "order": 103, - "mode": 0, - "inputs": [ - { - "name": "IMAGE", - "type": "IMAGE", - "link": 299 - } - ], - "outputs": [ - { - "name": "*", - "type": "*", - "links": null - } + "pos": [ + 2697, + 1636 + ], + "size": [ + 210, + 58 ], - "title": "Set_freq_ball_img", - "properties": { - "previousName": "freq_ball_img" - }, - "widgets_values": [ - "freq_ball_img" - ] - }, - { - "id": 146, - "type": "VAEDecode", - "pos": { - "0": 8563.564453125, - "1": 2168.303955078125 - }, - "size": { - "0": 210, - "1": 46 - }, - "flags": {}, - "order": 115, - "mode": 0, - "inputs": [ - { - "name": "samples", - "type": "LATENT", - "link": 249 - }, - { - "name": "vae", - "type": "VAE", - "link": 303 - } - ], - "outputs": [ - { - "name": "IMAGE", - "type": "IMAGE", - "links": [ - 247 - ], - "slot_index": 0 - } - ], - "properties": { - "Node name for S&R": "VAEDecode" - }, - "widgets_values": [] - }, - { - "id": 189, - "type": "GetNode", - "pos": { - "0": 8553.5625, - "1": 2048.30419921875 - }, - "size": { - "0": 210, - "1": 58 - }, - "flags": {}, - "order": 21, - "mode": 0, - "inputs": [], - "outputs": [ - { - "name": "VAE", - "type": "VAE", - "links": [ - 303 - ], - "slot_index": 0 - } - ], - "title": "Get_vae", - "properties": {}, - "widgets_values": [ - "vae" - ] - }, - { - "id": 191, - "type": "SetNode", - "pos": { - "0": -3664.36328125, - "1": 2473.00048828125 - }, - "size": { - "0": 210, - "1": 58 - }, "flags": {}, - "order": 79, + "order": 47, "mode": 0, "inputs": [ { - "name": "FEATURE_PIPE", - "type": "FEATURE_PIPE", - "link": 305 + "name": "LORA_STACK", + "type": "LORA_STACK", + "link": 297 } ], "outputs": [ @@ -2574,342 +1673,239 @@ "links": null } ], - "title": "Set_feature_pipe", + "title": "Set_lora_stack", "properties": { - "previousName": "feature_pipe" + "previousName": "lora_stack" }, "widgets_values": [ - "feature_pipe" + "lora_stack" ] }, { - "id": 27, - "type": "IPAdapterUnifiedLoader", - "pos": { - "0": 5784.337890625, - "1": 1308.1993408203125 - }, - "size": { - "0": 315, - "1": 78 - }, + "id": 65, + "type": "ACN_AdvancedControlNetApply", + "pos": [ + 4358, + 1400 + ], + "size": [ + 285.6000061035156, + 286 + ], "flags": {}, - "order": 83, + "order": 88, "mode": 0, "inputs": [ { - "name": "model", + "name": "positive", + "type": "CONDITIONING", + "link": 181 + }, + { + "name": "negative", + "type": "CONDITIONING", + "link": 182 + }, + { + "name": "control_net", + "type": "CONTROL_NET", + "link": 98, + "slot_index": 2 + }, + { + "name": "image", + "type": "IMAGE", + "link": 101 + }, + { + "name": "mask_optional", + "type": "MASK", + "link": 100, + "shape": 7 + }, + { + "name": "timestep_kf", + "type": "TIMESTEP_KEYFRAME", + "link": null, + "shape": 7 + }, + { + "name": "latent_kf_override", + "type": "LATENT_KEYFRAME", + "link": null, + "shape": 7 + }, + { + "name": "weights_override", + "type": "CONTROL_NET_WEIGHTS", + "link": null, + "shape": 7 + }, + { + "name": "model_optional", "type": "MODEL", - "link": 27 + "link": null, + "shape": 7 }, { - "name": "ipadapter", - "type": "IPADAPTER", - "link": null + "name": "vae_optional", + "type": "VAE", + "link": null, + "shape": 7 } ], "outputs": [ { - "name": "model", - "type": "MODEL", + "name": "positive", + "type": "CONDITIONING", "links": [ - 86 + 97 ], "slot_index": 0, "shape": 3 }, { - "name": "ipadapter", - "type": "IPADAPTER", + "name": "negative", + "type": "CONDITIONING", "links": [ - 87 + 96 ], "slot_index": 1, "shape": 3 + }, + { + "name": "model_opt", + "type": "MODEL", + "links": null, + "shape": 3 } ], "properties": { - "Node name for S&R": "IPAdapterUnifiedLoader" - }, - "widgets_values": [ - "PLUS (high strength)" - ] - }, - { - "id": 193, - "type": "GetNode", - "pos": { - "0": 9919, - "1": 2470 - }, - "size": { - "0": 210, - "1": 58 + "Node name for S&R": "ACN_AdvancedControlNetApply" }, - "flags": {}, - "order": 22, - "mode": 0, - "inputs": [], - "outputs": [ - { - "name": "VAE", - "type": "VAE", - "links": [ - 308 - ], - "slot_index": 0 - } - ], - "title": "Get_vae", - "properties": {}, "widgets_values": [ - "vae" + 0.5, + 0, + 0.5 ] }, { - "id": 14, - "type": "VAEDecode", - "pos": { - "0": 7055, - "1": 1328 - }, - "size": { - "0": 210, - "1": 46 - }, - "flags": {}, - "order": 112, - "mode": 0, - "inputs": [ - { - "name": "samples", - "type": "LATENT", - "link": 14 - }, - { - "name": "vae", - "type": "VAE", - "link": 309 - } + "id": 32, + "type": "Apply ControlNet Stack", + "pos": [ + 4367, + 1753 ], - "outputs": [ - { - "name": "IMAGE", - "type": "IMAGE", - "links": [ - 16 - ], - "slot_index": 0 - } + "size": [ + 304.79998779296875, + 66 ], - "properties": { - "Node name for S&R": "VAEDecode" - }, - "widgets_values": [] - }, - { - "id": 118, - "type": "ADE_AnimateDiffLoaderGen1", - "pos": { - "0": 4524.482421875, - "1": 3379.747314453125 - }, - "size": { - "0": 271.7644958496094, - "1": 242 - }, "flags": {}, - "order": 66, + "order": 89, "mode": 0, "inputs": [ { - "name": "model", - "type": "MODEL", - "link": 199 - }, - { - "name": "context_options", - "type": "CONTEXT_OPTIONS", - "link": 200, - "slot_index": 1 + "name": "positive", + "type": "CONDITIONING", + "link": 97 }, { - "name": "motion_lora", - "type": "MOTION_LORA", - "link": 201, - "slot_index": 2 + "name": "negative", + "type": "CONDITIONING", + "link": 96 }, { - "name": "ad_settings", - "type": "AD_SETTINGS", + "name": "cnet_stack", + "type": "CONTROL_NET_STACK", "link": null, - "slot_index": 3 - }, - { - "name": "ad_keyframes", - "type": "AD_KEYFRAMES", - "link": null - }, - { - "name": "sample_settings", - "type": "SAMPLE_SETTINGS", - "link": 202, - "slot_index": 5 - }, - { - "name": "scale_multival", - "type": "MULTIVAL", - "link": 203, - "slot_index": 6 - }, - { - "name": "effect_multival", - "type": "MULTIVAL", - "link": 204, - "slot_index": 7 - }, - { - "name": "per_block", - "type": "PER_BLOCK", - "link": null + "slot_index": 2, + "shape": 7 } ], "outputs": [ { - "name": "MODEL", - "type": "MODEL", + "name": "CONDITIONING+", + "type": "CONDITIONING", "links": [ - 206 + 46, + 77 ], "slot_index": 0, "shape": 3 - } - ], - "properties": { - "Node name for S&R": "ADE_AnimateDiffLoaderGen1", - "ttNbgOverride": { - "color": "#2a363b", - "bgcolor": "#3f5159", - "groupcolor": "#3f789e" - } - }, - "widgets_values": [ - "ALCM_sd15_t2v_beta.ckpt", - "lcm avg(sqrt_linear,linear)" - ] - }, - { - "id": 196, - "type": "GetNode", - "pos": { - "0": 5029.1181640625, - "1": 3590.9638671875 - }, - "size": { - "0": 210, - "1": 58 - }, - "flags": {}, - "order": 23, - "mode": 0, - "inputs": [], - "outputs": [ - { - "name": "MASK", - "type": "MASK", - "links": [ - 310 - ], - "slot_index": 0 - } - ], - "title": "Get_mask_ball", - "properties": {}, - "widgets_values": [ - "mask_ball" - ] - }, - { - "id": 195, - "type": "GetNode", - "pos": { - "0": 5033.1220703125, - "1": 3449.7607421875 - }, - "size": { - "0": 210, - "1": 58 - }, - "flags": {}, - "order": 24, - "mode": 0, - "inputs": [], - "outputs": [ + }, { - "name": "IMAGE", - "type": "IMAGE", + "name": "CONDITIONING-", + "type": "CONDITIONING", "links": [ - 311 + 47, + 78 ], - "slot_index": 0 + "slot_index": 1, + "shape": 3 } ], - "title": "Get_img_ball", - "properties": {}, - "widgets_values": [ - "img_ball" - ] + "properties": { + "Node name for S&R": "Apply ControlNet Stack", + "ttNbgOverride": { + "color": "#2a363b", + "bgcolor": "#3f5159", + "groupcolor": "#3f789e" + } + }, + "widgets_values": [], + "shape": 1 }, { - "id": 185, - "type": "GetNode", - "pos": { - "0": 3071, - "1": 3300 - }, - "size": { - "0": 210, - "1": 58 - }, + "id": 66, + "type": "ControlNetLoader", + "pos": [ + 3884, + 1648 + ], + "size": [ + 355.7056884765625, + 58 + ], "flags": {}, - "order": 25, + "order": 12, "mode": 0, "inputs": [], "outputs": [ { - "name": "IMAGE", - "type": "IMAGE", + "name": "CONTROL_NET", + "type": "CONTROL_NET", "links": [ - 300 + 98 ], - "slot_index": 0 + "shape": 3 } ], - "title": "Get_freq_ball_img", - "properties": {}, + "properties": { + "Node name for S&R": "ControlNetLoader" + }, "widgets_values": [ - "freq_ball_img" + "control_v11f1p_sd15_depth.pth" ] }, { - "id": 134, + "id": 67, "type": "LineArtPreprocessor", - "pos": { - "0": 3301, - "1": 3338 - }, - "size": { - "0": 315, - "1": 82 - }, + "pos": [ + 3908, + 1446 + ], + "size": [ + 315, + 82 + ], "flags": {}, - "order": 49, + "order": 87, "mode": 0, "inputs": [ { "name": "image", "type": "IMAGE", - "link": 300 + "link": 383 } ], "outputs": [ @@ -2917,7 +1913,7 @@ "name": "IMAGE", "type": "IMAGE", "links": [ - 219 + 101 ], "slot_index": 0, "shape": 3 @@ -2932,18 +1928,18 @@ ] }, { - "id": 187, + "id": 171, "type": "GetNode", - "pos": { - "0": 3387, - "1": 3678 - }, - "size": { - "0": 210, - "1": 58 - }, + "pos": [ + 5804, + 1547 + ], + "size": [ + 210, + 58 + ], "flags": {}, - "order": 26, + "order": 13, "mode": 0, "inputs": [], "outputs": [ @@ -2951,7 +1947,7 @@ "name": "MASK", "type": "MASK", "links": [ - 301 + 289 ], "slot_index": 0 } @@ -2963,961 +1959,1028 @@ ] }, { - "id": 197, + "id": 183, "type": "GetNode", - "pos": { - "0": 6711.1376953125, - "1": 3278.64892578125 - }, - "size": { - "0": 210, - "1": 58 - }, - "flags": {}, - "order": 27, - "mode": 0, - "inputs": [], - "outputs": [ - { - "name": "AUDIO", - "type": "AUDIO", - "links": [ - 312 - ], - "slot_index": 0 - } + "pos": [ + 1870.277099609375, + 2293.146728515625 ], - "title": "Get_audio", - "properties": {}, - "widgets_values": [ - "audio" - ] - }, - { - "id": 188, - "type": "GetNode", - "pos": { - "0": 6070.1376953125, - "1": 3306.64892578125 - }, - "size": { - "0": 210, - "1": 58 - }, - "flags": {}, - "order": 28, - "mode": 0, - "inputs": [], - "outputs": [ - { - "name": "VAE", - "type": "VAE", - "links": [ - 302 - ], - "slot_index": 0 - } + "size": [ + 210, + 58 ], - "title": "Get_vae", - "properties": {}, - "widgets_values": [ - "vae" - ] - }, - { - "id": 46, - "type": "GetNode", - "pos": { - "0": 6608, - "1": 2041 - }, - "size": { - "0": 210, - "1": 58 - }, "flags": {}, - "order": 29, + "order": 14, "mode": 0, "inputs": [], "outputs": [ { - "name": "AUDIO", - "type": "AUDIO", + "name": "IMAGE", + "type": "IMAGE", "links": [ - 49 + 298 ], "slot_index": 0 } ], - "title": "Get_audio", + "title": "Get_freq", "properties": {}, "widgets_values": [ - "audio" - ] - }, - { - "id": 198, - "type": "GetNode", - "pos": { - "0": 8591.5625, - "1": 2391.30419921875 - }, - "size": { - "0": 210, - "1": 58 - }, - "flags": {}, - "order": 30, - "mode": 0, - "inputs": [], - "outputs": [ - { - "name": "AUDIO", - "type": "AUDIO", - "links": [ - 313 - ], - "slot_index": 0 - } + "freq" ], - "title": "Get_audio", - "properties": {}, - "widgets_values": [ - "audio" - ] + "color": "#2a363b", + "bgcolor": "#3f5159" }, { - "id": 199, - "type": "GetNode", - "pos": { - "0": 10869, - "1": 2147 - }, - "size": { - "0": 210, - "1": 58 - }, - "flags": {}, - "order": 31, - "mode": 0, - "inputs": [], - "outputs": [ - { - "name": "AUDIO", - "type": "AUDIO", - "links": [ - 314 - ], - "slot_index": 0 - } + "id": 77, + "type": "VHS_VideoCombine", + "pos": [ + 1400.9627685546875, + 2619.70654296875 + ], + "size": [ + 214.7587890625, + 467.69549560546875 ], - "title": "Get_audio", - "properties": {}, - "widgets_values": [ - "audio" - ] - }, - { - "id": 62, - "type": "VAEDecode", - "pos": { - "0": 10590, - "1": 2555 - }, - "size": { - "0": 210, - "1": 46 - }, "flags": {}, - "order": 119, + "order": 68, "mode": 0, "inputs": [ { - "name": "samples", - "type": "LATENT", - "link": 80 + "name": "images", + "type": "IMAGE", + "link": 378 + }, + { + "name": "audio", + "type": "AUDIO", + "link": 124, + "shape": 7 + }, + { + "name": "meta_batch", + "type": "VHS_BatchManager", + "link": null, + "shape": 7 }, { "name": "vae", "type": "VAE", - "link": 308 + "link": null, + "shape": 7 } ], "outputs": [ { - "name": "IMAGE", - "type": "IMAGE", - "links": [ - 250 - ], - "slot_index": 0 + "name": "Filenames", + "type": "VHS_FILENAMES", + "links": null, + "shape": 3 } ], "properties": { - "Node name for S&R": "VAEDecode" - }, - "widgets_values": [] - }, - { - "id": 78, - "type": "GetNode", - "pos": { - "0": -1442, - "1": 2188 - }, - "size": { - "0": 210, - "1": 58 + "Node name for S&R": "VHS_VideoCombine" }, - "flags": {}, - "order": 32, - "mode": 0, - "inputs": [], - "outputs": [ - { - "name": "AUDIO", - "type": "AUDIO", - "links": [ - 124 - ], - "slot_index": 0 + "widgets_values": { + "frame_rate": 30, + "loop_count": 0, + "filename_prefix": "AnimateDiff", + "format": "video/h264-mp4", + "pix_fmt": "yuv420p", + "crf": 19, + "save_metadata": true, + "trim_to_audio": false, + "pingpong": false, + "save_output": true, + "videopreview": { + "hidden": false, + "paused": false, + "params": { + "filename": "AnimateDiff_02330-audio.mp4", + "subfolder": "", + "type": "output", + "format": "video/h264-mp4", + "frame_rate": 30, + "workflow": "AnimateDiff_02330.png", + "fullpath": "/runpod-volume/ComfyUI_rv/output/AnimateDiff_02330-audio.mp4" + } } - ], - "title": "Get_audio", - "properties": {}, - "widgets_values": [ - "audio" - ] - }, - { - "id": 192, - "type": "GetNode", - "pos": { - "0": 571, - "1": 1275 - }, - "size": { - "0": 210, - "1": 58 - }, + } + }, + { + "id": 35, + "type": "NNLatentUpscale", + "pos": [ + 7805.8388671875, + 1362.7005615234375 + ], + "size": [ + 315, + 82 + ], "flags": {}, - "order": 33, + "order": 92, "mode": 0, - "inputs": [], + "inputs": [ + { + "name": "latent", + "type": "LATENT", + "link": 381 + } + ], "outputs": [ { - "name": "AUDIO", - "type": "AUDIO", + "name": "LATENT", + "type": "LATENT", "links": [ - 307 + 84 ], - "slot_index": 0 + "slot_index": 0, + "shape": 3 } ], - "title": "Get_audio", - "properties": {}, + "properties": { + "Node name for S&R": "NNLatentUpscale" + }, "widgets_values": [ - "audio" + "SD 1.x", + 1.67 ] }, { - "id": 11, - "type": "CheckpointLoaderSimple", - "pos": { - "0": 1825, - "1": 1488 - }, - "size": { - "0": 315, - "1": 98 - }, + "id": 61, + "type": "KSampler", + "pos": [ + 8213.8388671875, + 1327.7005615234375 + ], + "size": [ + 315, + 262 + ], "flags": {}, - "order": 34, + "order": 94, "mode": 0, - "inputs": [], - "outputs": [ + "inputs": [ { - "name": "MODEL", + "name": "model", "type": "MODEL", - "links": [ - 28, - 292 - ], - "slot_index": 0 + "link": 91 }, { - "name": "CLIP", - "type": "CLIP", - "links": [ - 29, - 293 - ], - "slot_index": 1 + "name": "positive", + "type": "CONDITIONING", + "link": 77 }, { - "name": "VAE", - "type": "VAE", + "name": "negative", + "type": "CONDITIONING", + "link": 78 + }, + { + "name": "latent_image", + "type": "LATENT", + "link": 84 + } + ], + "outputs": [ + { + "name": "LATENT", + "type": "LATENT", "links": [ - 15, - 291 + 80 ], - "slot_index": 2 + "slot_index": 0 } ], "properties": { - "Node name for S&R": "CheckpointLoaderSimple" + "Node name for S&R": "KSampler" }, "widgets_values": [ - "photon_v1.safetensors" + 156680208700286, + "fixed", + 4, + 1, + "lcm", + "sgm_uniform", + 0.55 ] }, { - "id": 15, - "type": "VAEEncode", - "pos": { - "0": 2552, - "1": 1399 - }, - "size": { - "0": 210, - "1": 46 - }, + "id": 148, + "type": "ImageCASBatch", + "pos": [ + 8604.8388671875, + 1493.700439453125 + ], + "size": [ + 462, + 82 + ], "flags": {}, - "order": 102, + "order": 96, "mode": 0, "inputs": [ { - "name": "pixels", + "name": "image", "type": "IMAGE", - "link": 186 - }, - { - "name": "vae", - "type": "VAE", - "link": 15 + "link": 250 } ], "outputs": [ { - "name": "LATENT", - "type": "LATENT", + "name": "IMAGE", + "type": "IMAGE", "links": [ - 63 + 251 ], "slot_index": 0, "shape": 3 } ], "properties": { - "Node name for S&R": "VAEEncode" + "Node name for S&R": "ImageCASBatch" }, - "widgets_values": [] + "widgets_values": [ + 0.8, + 4 + ] }, { - "id": 172, - "type": "GetNode", - "pos": { - "0": 5806.3388671875, - "1": 1436.19921875 - }, - "size": { - "0": 210, - "1": 58 - }, + "id": 205, + "type": "Anything Everywhere?", + "pos": [ + -1786.6722412109375, + 2857.204345703125 + ], + "size": [ + 315, + 106 + ], "flags": {}, - "order": 35, + "order": 43, "mode": 0, - "inputs": [], - "outputs": [ + "inputs": [ { - "name": "IMAGE", - "type": "IMAGE", - "links": [ - 290 - ], - "slot_index": 0 + "name": "FLOAT", + "type": "*", + "link": 328, + "shape": 7, + "color_on": "" } ], - "title": "Get_img_ball", - "properties": {}, + "outputs": [], + "properties": { + "Node name for S&R": "Anything Everywhere?", + "group_restricted": 0, + "color_restricted": 0 + }, "widgets_values": [ - "img_ball" + ".*", + "frame_rate", + ".*" ] }, { - "id": 194, - "type": "GetNode", - "pos": { - "0": 6811, - "1": 1218 - }, - "size": { - "0": 210, - "1": 58 - }, + "id": 39, + "type": "VHS_LoadAudioUpload", + "pos": [ + -2139.452880859375, + 1568.8199462890625 + ], + "size": [ + 243.818359375, + 130 + ], "flags": {}, - "order": 36, + "order": 15, "mode": 0, "inputs": [], "outputs": [ { - "name": "VAE", - "type": "VAE", + "name": "audio", + "type": "AUDIO", "links": [ - 309 + 38, + 48, + 56, + 317 ], - "slot_index": 0 + "slot_index": 0, + "shape": 3 } ], - "title": "Get_vae", - "properties": {}, + "properties": { + "Node name for S&R": "VHS_LoadAudioUpload" + }, + "widgets_values": { + "audio": "Delta Deez - Songfinch - Out the Mud.mp3", + "start_time": 75, + "duration": 2.64, + "choose audio to upload": "image" + } + }, + { + "id": 209, + "type": "Anything Everywhere?", + "pos": [ + -1438.9710693359375, + 2404.482421875 + ], + "size": [ + 315, + 106 + ], + "flags": {}, + "order": 51, + "mode": 0, + "inputs": [ + { + "name": "INT", + "type": "*", + "link": 329, + "shape": 7, + "color_on": "" + } + ], + "outputs": [], + "properties": { + "Node name for S&R": "Anything Everywhere?", + "group_restricted": 0, + "color_restricted": 0 + }, "widgets_values": [ - "vae" + ".*", + "frame_count", + ".*" ] }, { - "id": 133, - "type": "ControlNetLoader", - "pos": { - "0": 3074, - "1": 3529 - }, - "size": { - "0": 315, - "1": 58 - }, + "id": 159, + "type": "SetNode", + "pos": [ + -359.7027282714844, + 2643.89501953125 + ], + "size": [ + 252, + 58 + ], "flags": {}, - "order": 37, + "order": 74, "mode": 0, - "inputs": [], + "inputs": [ + { + "name": "FEATURE", + "type": "FEATURE", + "link": 339 + } + ], "outputs": [ { - "name": "CONTROL_NET", - "type": "CONTROL_NET", - "links": [ - 218 - ], - "shape": 3 + "name": "*", + "type": "*", + "links": null } ], + "title": "Set_vocal_feature_rms_chroma", "properties": { - "Node name for S&R": "ControlNetLoader" + "previousName": "vocal_feature_rms_chroma" }, "widgets_values": [ - "control_v11f1p_sd15_depth.pth" + "vocal_feature_rms_chroma" ] }, { - "id": 127, - "type": "IPAdapterUnifiedLoader", - "pos": { - "0": 5024, - "1": 3322 - }, - "size": { - "0": 315, - "1": 78 - }, + "id": 207, + "type": "INTConstant", + "pos": [ + -2064.801025390625, + 2396.430419921875 + ], + "size": [ + 210, + 58 + ], "flags": {}, - "order": 81, + "order": 16, "mode": 0, - "inputs": [ - { - "name": "model", - "type": "MODEL", - "link": 206 - }, + "inputs": [], + "outputs": [ { - "name": "ipadapter", - "type": "IPADAPTER", - "link": null + "name": "value", + "type": "INT", + "links": [ + 326 + ], + "slot_index": 0 } ], + "properties": { + "Node name for S&R": "INTConstant" + }, + "widgets_values": [ + 768 + ], + "color": "#1b4669", + "bgcolor": "#29699c" + }, + { + "id": 206, + "type": "INTConstant", + "pos": [ + -2033.1053466796875, + 2627.87255859375 + ], + "size": [ + 210, + 58 + ], + "flags": {}, + "order": 17, + "mode": 0, + "inputs": [], "outputs": [ { - "name": "model", - "type": "MODEL", - "links": [ - 212 - ], - "slot_index": 0, - "shape": 3 - }, - { - "name": "ipadapter", - "type": "IPADAPTER", + "name": "value", + "type": "INT", "links": [ - 213 + 327 ], - "slot_index": 1, - "shape": 3 + "slot_index": 0 } ], "properties": { - "Node name for S&R": "IPAdapterUnifiedLoader" + "Node name for S&R": "INTConstant" }, "widgets_values": [ - "PLUS (high strength)" - ] + 468 + ], + "color": "#1b4669", + "bgcolor": "#29699c" }, { - "id": 115, - "type": "VAEDecode", - "pos": { - "0": 6449, - "1": 3520 - }, - "size": { - "0": 210, - "1": 46 - }, + "id": 157, + "type": "SetNode", + "pos": [ + -389.0782165527344, + 2456.552490234375 + ], + "size": [ + 252, + 58 + ], "flags": {}, - "order": 108, + "order": 73, "mode": 0, "inputs": [ { - "name": "samples", - "type": "LATENT", - "link": 193 - }, - { - "name": "vae", - "type": "VAE", - "link": 302 + "name": "FEATURE", + "type": "FEATURE", + "link": 337 } ], "outputs": [ { - "name": "IMAGE", - "type": "IMAGE", - "links": [ - 197 - ], - "slot_index": 0 + "name": "*", + "type": "*", + "links": null } ], + "title": "Set_vocal_feature_onsetr", "properties": { - "Node name for S&R": "VAEDecode" + "previousName": "vocal_feature_onsetr" }, - "widgets_values": [] + "widgets_values": [ + "vocal_feature_onsetr" + ] }, { - "id": 129, - "type": "Apply ControlNet Stack", - "pos": { - "0": 3741, - "1": 3805 - }, - "size": { - "0": 304.79998779296875, - "1": 66 + "id": 214, + "type": "AudioFeatureExtractor", + "pos": [ + -875.0494995117188, + 2562.256103515625 + ], + "size": [ + 415.8000183105469, + 174 + ], + "flags": { + "collapsed": true }, - "flags": {}, - "order": 95, - "mode": 4, + "order": 60, + "mode": 0, "inputs": [ { - "name": "positive", - "type": "CONDITIONING", - "link": 210 + "name": "audio", + "type": "AUDIO", + "link": 338 }, { - "name": "negative", - "type": "CONDITIONING", - "link": 211 + "name": "frame_rate", + "type": "FLOAT", + "link": null, + "widget": { + "name": "frame_rate" + } }, { - "name": "cnet_stack", - "type": "CONTROL_NET_STACK", + "name": "frame_count", + "type": "INT", "link": null, - "slot_index": 2 + "widget": { + "name": "frame_count" + } + }, + { + "name": "width", + "type": "INT", + "link": null, + "widget": { + "name": "width" + } + }, + { + "name": "height", + "type": "INT", + "link": null, + "widget": { + "name": "height" + } } ], "outputs": [ { - "name": "CONDITIONING+", - "type": "CONDITIONING", + "name": "feature", + "type": "FEATURE", "links": [ - 188 - ], - "slot_index": 0, - "shape": 3 + 339 + ] }, { - "name": "CONDITIONING-", - "type": "CONDITIONING", - "links": [ - 189 - ], - "slot_index": 1, - "shape": 3 + "name": "frame_count", + "type": "INT", + "links": null } ], "properties": { - "Node name for S&R": "Apply ControlNet Stack", - "ttNbgOverride": { - "color": "#2a363b", - "bgcolor": "#3f5159", - "groupcolor": "#3f789e" - } + "Node name for S&R": "AudioFeatureExtractor" }, - "widgets_values": [], - "shape": 1 + "widgets_values": [ + "chroma_features", + 30, + 0, + 512, + 512 + ] }, { - "id": 132, - "type": "ACN_AdvancedControlNetApply", - "pos": { - "0": 3733, - "1": 3444 - }, - "size": { - "0": 285.6000061035156, - "1": 286 + "id": 211, + "type": "AudioFeatureExtractor", + "pos": [ + -918.2208862304688, + 2033.1798095703125 + ], + "size": [ + 415.8000183105469, + 174 + ], + "flags": { + "collapsed": true }, - "flags": {}, - "order": 82, + "order": 57, "mode": 0, "inputs": [ { - "name": "positive", - "type": "CONDITIONING", - "link": 216 + "name": "audio", + "type": "AUDIO", + "link": 332 }, { - "name": "negative", - "type": "CONDITIONING", - "link": 217 + "name": "frame_rate", + "type": "FLOAT", + "link": null, + "widget": { + "name": "frame_rate" + } }, { - "name": "control_net", - "type": "CONTROL_NET", - "link": 218, - "slot_index": 2 + "name": "frame_count", + "type": "INT", + "link": null, + "widget": { + "name": "frame_count" + } }, { - "name": "image", - "type": "IMAGE", - "link": 219 + "name": "width", + "type": "INT", + "link": null, + "widget": { + "name": "width" + } }, { - "name": "mask_optional", - "type": "MASK", - "link": 301 + "name": "height", + "type": "INT", + "link": null, + "widget": { + "name": "height" + } + } + ], + "outputs": [ + { + "name": "feature", + "type": "FEATURE", + "links": [ + 333 + ] }, { - "name": "timestep_kf", - "type": "TIMESTEP_KEYFRAME", - "link": null + "name": "frame_count", + "type": "INT", + "links": null + } + ], + "properties": { + "Node name for S&R": "AudioFeatureExtractor" + }, + "widgets_values": [ + "rms_energy", + 30, + 0, + 512, + 512 + ] + }, + { + "id": 213, + "type": "AudioFeatureExtractor", + "pos": [ + -904.9750366210938, + 2272.69140625 + ], + "size": [ + 415.8000183105469, + 174 + ], + "flags": { + "collapsed": true + }, + "order": 59, + "mode": 0, + "inputs": [ + { + "name": "audio", + "type": "AUDIO", + "link": 336 }, { - "name": "latent_kf_override", - "type": "LATENT_KEYFRAME", - "link": null + "name": "frame_rate", + "type": "FLOAT", + "link": null, + "widget": { + "name": "frame_rate" + } }, { - "name": "weights_override", - "type": "CONTROL_NET_WEIGHTS", - "link": null + "name": "frame_count", + "type": "INT", + "link": null, + "widget": { + "name": "frame_count" + } }, { - "name": "model_optional", - "type": "MODEL", - "link": null + "name": "width", + "type": "INT", + "link": null, + "widget": { + "name": "width" + } }, { - "name": "vae_optional", - "type": "VAE", - "link": null + "name": "height", + "type": "INT", + "link": null, + "widget": { + "name": "height" + } } ], "outputs": [ { - "name": "positive", - "type": "CONDITIONING", + "name": "feature", + "type": "FEATURE", "links": [ - 210 - ], - "slot_index": 0, - "shape": 3 + 337 + ] }, { - "name": "negative", - "type": "CONDITIONING", + "name": "frame_count", + "type": "INT", + "links": null + } + ], + "properties": { + "Node name for S&R": "AudioFeatureExtractor" + }, + "widgets_values": [ + "onset_strength", + 30, + 0, + 512, + 512 + ] + }, + { + "id": 226, + "type": "GetNode", + "pos": [ + 3010, + 2830 + ], + "size": [ + 210, + 58 + ], + "flags": {}, + "order": 18, + "mode": 0, + "inputs": [], + "outputs": [ + { + "name": "AUDIO", + "type": "AUDIO", "links": [ - 211 + 356 ], - "slot_index": 1, - "shape": 3 - }, - { - "name": "model_opt", - "type": "MODEL", - "links": null, - "shape": 3 + "slot_index": 0 } ], - "properties": { - "Node name for S&R": "ACN_AdvancedControlNetApply" - }, + "title": "Get_audio", + "properties": {}, "widgets_values": [ - 0.5, - 0, - 0.5, - "" + "audio" ] }, { - "id": 116, - "type": "VAEEncode", - "pos": { - "0": 2112, - "1": 3372 - }, - "size": { - "0": 210, - "1": 46 - }, + "id": 228, + "type": "VHS_VideoCombine", + "pos": [ + 3320, + 2580 + ], + "size": [ + 214.7587890625, + 465.6667785644531 + ], "flags": {}, - "order": 56, + "order": 86, "mode": 0, "inputs": [ { - "name": "pixels", + "name": "images", "type": "IMAGE", - "link": 298 + "link": 355 + }, + { + "name": "audio", + "type": "AUDIO", + "link": 356, + "shape": 7 + }, + { + "name": "meta_batch", + "type": "VHS_BatchManager", + "link": null, + "shape": 7 }, { "name": "vae", "type": "VAE", - "link": 294 + "link": null, + "shape": 7 } ], "outputs": [ { - "name": "LATENT", - "type": "LATENT", - "links": [ - 190 - ], - "slot_index": 0, + "name": "Filenames", + "type": "VHS_FILENAMES", + "links": null, "shape": 3 } ], "properties": { - "Node name for S&R": "VAEEncode" + "Node name for S&R": "VHS_VideoCombine" }, - "widgets_values": [] + "widgets_values": { + "frame_rate": 30, + "loop_count": 0, + "filename_prefix": "AnimateDiff", + "format": "video/h264-mp4", + "pix_fmt": "yuv420p", + "crf": 19, + "save_metadata": true, + "trim_to_audio": false, + "pingpong": false, + "save_output": true, + "videopreview": { + "hidden": false, + "paused": false, + "params": { + "filename": "AnimateDiff_02332-audio.mp4", + "subfolder": "", + "type": "output", + "format": "video/h264-mp4", + "frame_rate": 30, + "workflow": "AnimateDiff_02332.png", + "fullpath": "/runpod-volume/ComfyUI_rv/output/AnimateDiff_02332-audio.mp4" + } + } + } }, { - "id": 39, - "type": "VHS_LoadAudioUpload", - "pos": { - "0": -4568, - "1": 1515 - }, - "size": { - "0": 243.818359375, - "1": 130 - }, + "id": 230, + "type": "GetNode", + "pos": [ + 1860, + 2580 + ], + "size": [ + 252, + 58 + ], "flags": {}, - "order": 38, + "order": 19, "mode": 0, "inputs": [], "outputs": [ { - "name": "audio", - "type": "AUDIO", + "name": "FEATURE", + "type": "FEATURE", "links": [ - 37, - 38, - 48, - 56 + 358 ], - "slot_index": 0, - "shape": 3 + "slot_index": 0 } ], - "properties": { - "Node name for S&R": "VHS_LoadAudioUpload" - }, - "widgets_values": { - "audio": "Delta Deez - Songfinch - Out the Mud.mp3", - "start_time": 75, - "duration": 15, - "choose audio to upload": "image" - } + "title": "Get_vocal_feature_rms_centroid", + "properties": {}, + "widgets_values": [ + "vocal_feature_rms_centroid" + ] }, { - "id": 40, - "type": "AudioSeparator", - "pos": { - "0": -3949, - "1": 2099 - }, - "size": { - "0": 317.4000244140625, - "1": 158 - }, + "id": 231, + "type": "PreviewFeature", + "pos": [ + 2440, + 2940 + ], + "size": [ + 315, + 246 + ], "flags": {}, "order": 61, "mode": 0, "inputs": [ { - "name": "model", - "type": "OPEN_UNMIX_MODEL", - "link": 36, - "slot_index": 0 - }, - { - "name": "audio", - "type": "AUDIO", - "link": 37 - }, - { - "name": "video_frames", - "type": "IMAGE", - "link": 39 + "name": "feature", + "type": "FEATURE", + "link": 357 } ], + "outputs": [], + "properties": { + "Node name for S&R": "PreviewFeature" + }, + "widgets_values": [] + }, + { + "id": 176, + "type": "GetNode", + "pos": [ + 1902.3026123046875, + 2424.309814453125 + ], + "size": [ + 210, + 58 + ], + "flags": {}, + "order": 20, + "mode": 0, + "inputs": [], "outputs": [ { - "name": "audio", - "type": "AUDIO", - "links": [ - 57 - ], - "slot_index": 0, - "shape": 3 - }, - { - "name": "drums_audio", - "type": "AUDIO", - "links": [ - 41, - 283 - ], - "slot_index": 1, - "shape": 3 - }, - { - "name": "vocals_audio", - "type": "AUDIO", - "links": [ - 238, - 257, - 260, - 263, - 266 - ], - "slot_index": 2, - "shape": 3 - }, - { - "name": "bass_audio", - "type": "AUDIO", - "links": null, - "shape": 3 - }, - { - "name": "other_audio", - "type": "AUDIO", - "links": null, - "shape": 3 - }, - { - "name": "feature_pipe", - "type": "FEATURE_PIPE", + "name": "VAE", + "type": "VAE", "links": [ - 42, - 239, - 258, - 261, - 264, - 267, - 305 + 294 ], - "slot_index": 5, - "shape": 3 + "slot_index": 0 } ], - "properties": { - "Node name for S&R": "AudioSeparator" - }, + "title": "Get_vae", + "properties": {}, "widgets_values": [ - 30 + "vae" ] }, { - "id": 43, - "type": "AudioFeatureExtractor", - "pos": { - "0": -3306, - "1": 2831 - }, - "size": { - "0": 361.20001220703125, - "1": 78 - }, + "id": 116, + "type": "VAEEncode", + "pos": [ + 2253.27783203125, + 2356.146728515625 + ], + "size": [ + 210, + 46 + ], "flags": {}, - "order": 73, + "order": 42, "mode": 0, "inputs": [ { - "name": "audio", - "type": "AUDIO", - "link": 41 + "name": "pixels", + "type": "IMAGE", + "link": 298 }, { - "name": "feature_pipe", - "type": "FEATURE_PIPE", - "link": 42 + "name": "vae", + "type": "VAE", + "link": 294 } ], "outputs": [ { - "name": "FEATURE", - "type": "FEATURE", + "name": "LATENT", + "type": "LATENT", "links": [ - 58, - 110 + 362 ], "slot_index": 0, "shape": 3 - }, + } + ], + "properties": { + "Node name for S&R": "VAEEncode" + }, + "widgets_values": [] + }, + { + "id": 227, + "type": "GetNode", + "pos": [ + 2260, + 2580 + ], + "size": [ + 210, + 58 + ], + "flags": {}, + "order": 21, + "mode": 0, + "inputs": [], + "outputs": [ { "name": "FEATURE_PIPE", "type": "FEATURE_PIPE", - "links": null, - "shape": 3 + "links": [], + "slot_index": 0 } ], - "properties": { - "Node name for S&R": "AudioFeatureExtractor" - }, + "title": "Get_feature_pipe", + "properties": {}, "widgets_values": [ - "amplitude_envelope" + "feature_pipe" ] }, { - "id": 70, + "id": 232, "type": "FeatureMixer", - "pos": { - "0": -2861, - "1": 2784 - }, - "size": { - "0": 367.79998779296875, - "1": 342 - }, + "pos": [ + 1930, + 2730 + ], + "size": [ + 315, + 322 + ], "flags": {}, - "order": 85, + "order": 41, "mode": 0, "inputs": [ { "name": "feature", "type": "FEATURE", - "link": 110 + "link": 358 } ], "outputs": [ @@ -3925,19 +2988,10 @@ "name": "FEATURE", "type": "FEATURE", "links": [ - 284 - ], - "slot_index": 0, - "shape": 3 - }, - { - "name": "FEATURE_VISUALIZATION", - "type": "IMAGE", - "links": [ - 111 + 357, + 361 ], - "slot_index": 1, - "shape": 3 + "slot_index": 0 } ], "properties": { @@ -3953,1101 +3007,1093 @@ 1, 0, 0.3, - 1, - 0.5, + 0, + 5, false ] }, { - "id": 51, - "type": "PreviewFeature", - "pos": { - "0": -2844, - "1": 3248 - }, - "size": { - "0": 315, - "1": 58 - }, + "id": 225, + "type": "GetNode", + "pos": [ + 2990, + 2700 + ], + "size": [ + 210, + 58 + ], "flags": {}, - "order": 84, + "order": 22, + "mode": 0, + "inputs": [], + "outputs": [ + { + "name": "VAE", + "type": "VAE", + "links": [ + 354 + ], + "slot_index": 0 + } + ], + "title": "Get_vae", + "properties": {}, + "widgets_values": [ + "vae" + ] + }, + { + "id": 50, + "type": "PreviewAudio", + "pos": [ + -852.733642578125, + 1654.8201904296875 + ], + "size": [ + 315, + 76 + ], + "flags": {}, + "order": 52, "mode": 0, "inputs": [ { - "name": "feature", - "type": "FEATURE", - "link": 58 + "name": "audio", + "type": "AUDIO", + "link": 318 } ], + "outputs": [], + "properties": { + "Node name for S&R": "PreviewAudio" + }, + "widgets_values": [ + null + ] + }, + { + "id": 208, + "type": "FloatConstant", + "pos": [ + -2022.41015625, + 2867.3837890625 + ], + "size": [ + 210, + 58 + ], + "flags": {}, + "order": 23, + "mode": 0, + "inputs": [], "outputs": [ { - "name": "FEATURE_PREVIEW", - "type": "IMAGE", + "name": "value", + "type": "FLOAT", "links": [ - 59 + 328 ], - "slot_index": 0, - "shape": 3 + "slot_index": 0 } ], "properties": { - "Node name for S&R": "PreviewFeature" + "Node name for S&R": "FloatConstant" }, "widgets_values": [ - false - ] + 30.000000000000004 + ], + "color": "#232", + "bgcolor": "#353" }, { - "id": 52, - "type": "PreviewImage", - "pos": { - "0": -2448, - "1": 2947 - }, - "size": { - "0": 210, - "1": 246 - }, + "id": 203, + "type": "Anything Everywhere?", + "pos": [ + -1833.7139892578125, + 2394.65087890625 + ], + "size": [ + 315, + 106 + ], "flags": {}, - "order": 97, + "order": 39, "mode": 0, "inputs": [ { - "name": "images", - "type": "IMAGE", - "link": 59 + "name": "INT", + "type": "*", + "link": 326, + "shape": 7, + "color_on": "" } ], "outputs": [], "properties": { - "Node name for S&R": "PreviewImage" + "Node name for S&R": "Anything Everywhere?", + "group_restricted": 0, + "color_restricted": 0 }, - "widgets_values": [] + "widgets_values": [ + ".*", + "width", + ".*" + ] }, { - "id": 71, - "type": "PreviewImage", - "pos": { - "0": -2189, - "1": 2834 - }, - "size": { - "0": 210, - "1": 246 - }, + "id": 204, + "type": "Anything Everywhere?", + "pos": [ + -1801.3350830078125, + 2631.564453125 + ], + "size": [ + 315, + 106 + ], "flags": {}, - "order": 99, + "order": 40, "mode": 0, "inputs": [ { - "name": "images", - "type": "IMAGE", - "link": 111 + "name": "INT", + "type": "*", + "link": 327, + "shape": 7, + "color_on": "" } ], "outputs": [], "properties": { - "Node name for S&R": "PreviewImage" + "Node name for S&R": "Anything Everywhere?", + "group_restricted": 0, + "color_restricted": 0 }, - "widgets_values": [] + "widgets_values": [ + ".*", + "height", + ".*" + ] }, { - "id": 42, - "type": "EmptyImageAndMaskFromAudio", - "pos": { - "0": -4410, - "1": 1817 - }, - "size": { - "0": 411.6000061035156, - "1": 146 + "id": 212, + "type": "AudioFeatureExtractor", + "pos": [ + -912.0160522460938, + 2217.921630859375 + ], + "size": [ + 415.8000183105469, + 174 + ], + "flags": { + "collapsed": true }, - "flags": {}, - "order": 53, + "order": 58, "mode": 0, "inputs": [ { "name": "audio", "type": "AUDIO", - "link": 38 + "link": 334 + }, + { + "name": "frame_rate", + "type": "FLOAT", + "link": null, + "widget": { + "name": "frame_rate" + } + }, + { + "name": "frame_count", + "type": "INT", + "link": null, + "widget": { + "name": "frame_count" + } + }, + { + "name": "width", + "type": "INT", + "link": null, + "widget": { + "name": "width" + } + }, + { + "name": "height", + "type": "INT", + "link": null, + "widget": { + "name": "height" + } } ], "outputs": [ { - "name": "empty_image", - "type": "IMAGE", + "name": "feature", + "type": "FEATURE", "links": [ - 39, - 162 - ], - "slot_index": 0, - "shape": 3 - }, - { - "name": "empty_mask", - "type": "MASK", - "links": null, - "shape": 3 + 335 + ] }, { "name": "frame_count", "type": "INT", - "links": [ - 66, - 67 - ], - "slot_index": 2, - "shape": 3 + "links": null } ], "properties": { - "Node name for S&R": "EmptyImageAndMaskFromAudio" + "Node name for S&R": "AudioFeatureExtractor" }, "widgets_values": [ + "spectral_centroid", 30, - 768, - 464 + 0, + 512, + 512 ] }, { - "id": 57, - "type": "VHS_LoadVideo", - "pos": { - "0": 245, - "1": 1805 - }, + "id": 42, + "type": "EmptyImageAndMaskFromAudio", + "pos": [ + -1794.7305908203125, + 1870.947509765625 + ], "size": [ - 247.455078125, - 389.27465067455944 + 411.6000061035156, + 146 ], "flags": {}, - "order": 64, + "order": 35, "mode": 0, "inputs": [ { - "name": "meta_batch", - "type": "VHS_BatchManager", - "link": null + "name": "audio", + "type": "AUDIO", + "link": 38 }, { - "name": "vae", - "type": "VAE", - "link": null + "name": "frame_rate", + "type": "FLOAT", + "link": null, + "widget": { + "name": "frame_rate" + } }, { - "name": "frame_load_cap", + "name": "width", "type": "INT", - "link": 67, + "link": null, "widget": { - "name": "frame_load_cap" + "name": "width" } - } - ], - "outputs": [ - { - "name": "IMAGE", - "type": "IMAGE", - "links": [ - 68 - ], - "slot_index": 0, - "shape": 3 }, { - "name": "frame_count", + "name": "height", "type": "INT", - "links": null, - "shape": 3 - }, - { - "name": "audio", - "type": "AUDIO", - "links": null, - "shape": 3 - }, - { - "name": "video_info", - "type": "VHS_VIDEOINFO", - "links": null, - "shape": 3 - } - ], - "properties": { - "Node name for S&R": "VHS_LoadVideo" - }, - "widgets_values": { - "video": "floating_in_pool_768_ball_MASK.mp4", - "force_rate": 0, - "force_size": "Disabled", - "custom_width": 512, - "custom_height": 512, - "frame_load_cap": 0, - "skip_first_frames": 0, - "select_every_nth": 1, - "choose video to upload": "image", - "videopreview": { - "hidden": false, - "paused": false, - "params": { - "frame_load_cap": 0, - "skip_first_frames": 0, - "force_rate": 0, - "filename": "floating_in_pool_768_ball_MASK.mp4", - "type": "input", - "format": "video/mp4", - "select_every_nth": 1 + "link": null, + "widget": { + "name": "height" } } - } - }, - { - "id": 58, - "type": "_mfc", - "pos": { - "0": 533, - "1": 1768 - }, - "size": { - "0": 315, - "1": 150 - }, - "flags": {}, - "order": 80, - "mode": 0, - "inputs": [ - { - "name": "image", - "type": "IMAGE", - "link": 68 - } ], "outputs": [ { - "name": "MASK", - "type": "MASK", - "links": [ - 69, - 100, - 287 + "name": "empty_image", + "type": "IMAGE", + "links": [ + 162 ], "slot_index": 0, "shape": 3 }, { - "name": "IMAGE", - "type": "IMAGE", + "name": "empty_mask", + "type": "MASK", + "links": null, + "shape": 3 + }, + { + "name": "frame_count", + "type": "INT", "links": [ - 288 + 66, + 67, + 329 ], - "slot_index": 1, + "slot_index": 2, "shape": 3 } ], "properties": { - "Node name for S&R": "_mfc" + "Node name for S&R": "EmptyImageAndMaskFromAudio" }, "widgets_values": [ - 255, - 255, - 255, - 11 + 30, + 768, + 464 ] }, { - "id": 55, - "type": "ImageCompositeMasked", - "pos": { - "0": 876, - "1": 1365 - }, - "size": { - "0": 315, - "1": 146 + "id": 210, + "type": "AudioFeatureExtractor", + "pos": [ + -905.7296752929688, + 1810.003173828125 + ], + "size": [ + 415.8000183105469, + 174 + ], + "flags": { + "collapsed": false }, - "flags": {}, - "order": 91, + "order": 56, "mode": 0, "inputs": [ { - "name": "destination", - "type": "IMAGE", - "link": 183 + "name": "audio", + "type": "AUDIO", + "link": 330 }, { - "name": "source", - "type": "IMAGE", - "link": 65 + "name": "frame_rate", + "type": "FLOAT", + "link": null, + "widget": { + "name": "frame_rate" + } }, { - "name": "mask", - "type": "MASK", - "link": 69 + "name": "frame_count", + "type": "INT", + "link": null, + "widget": { + "name": "frame_count" + } + }, + { + "name": "width", + "type": "INT", + "link": null, + "widget": { + "name": "width" + } + }, + { + "name": "height", + "type": "INT", + "link": null, + "widget": { + "name": "height" + } } ], "outputs": [ { - "name": "IMAGE", - "type": "IMAGE", + "name": "feature", + "type": "FEATURE", "links": [ - 73, - 99, - 186, - 299 - ], - "slot_index": 0, - "shape": 3 + 331 + ] + }, + { + "name": "frame_count", + "type": "INT", + "links": null } ], "properties": { - "Node name for S&R": "ImageCompositeMasked" + "Node name for S&R": "AudioFeatureExtractor" }, "widgets_values": [ - 15, + "amplitude_envelope", + 30, 0, - false + 512, + 512 ] }, { - "id": 44, - "type": "SetNode", - "pos": { - "0": -1559, - "1": 1886 - }, - "size": { - "0": 210, - "1": 58 - }, + "id": 202, + "type": "AudioSeparatorSimple", + "pos": [ + -1434.3082275390625, + 2124.085205078125 + ], + "size": [ + 315, + 106 + ], "flags": {}, - "order": 106, + "order": 38, "mode": 0, "inputs": [ { - "name": "IMAGE", - "type": "IMAGE", - "link": 286 + "name": "model", + "type": "OPEN_UNMIX_MODEL", + "link": 316 + }, + { + "name": "audio", + "type": "AUDIO", + "link": 317 } ], "outputs": [ { - "name": "*", - "type": "*", + "name": "audio", + "type": "AUDIO", + "links": [ + 318 + ] + }, + { + "name": "drums_audio", + "type": "AUDIO", + "links": [ + 340, + 376, + 380 + ], + "slot_index": 1 + }, + { + "name": "vocals_audio", + "type": "AUDIO", + "links": [ + 330, + 332, + 334, + 336, + 338 + ], + "slot_index": 2 + }, + { + "name": "bass_audio", + "type": "AUDIO", "links": [], - "slot_index": 0 + "slot_index": 3 + }, + { + "name": "other_audio", + "type": "AUDIO", + "links": null } ], - "title": "Set_freq", "properties": { - "previousName": "freq" + "Node name for S&R": "AudioSeparatorSimple" }, - "widgets_values": [ - "freq" - ] + "widgets_values": [] }, { - "id": 110, - "type": "GetNode", - "pos": { - "0": 642, - "1": 1385 - }, - "size": { - "0": 210, - "1": 58 - }, + "id": 240, + "type": "PreviewAudio", + "pos": [ + -909.0541381835938, + 2377.963134765625 + ], + "size": [ + 315, + 76 + ], "flags": {}, - "order": 39, + "order": 55, "mode": 0, - "inputs": [], - "outputs": [ + "inputs": [ { - "name": "IMAGE", - "type": "IMAGE", - "links": [ - 183 - ], - "slot_index": 0 + "name": "audio", + "type": "AUDIO", + "link": 380 } ], - "title": "Get_freq", - "properties": {}, + "outputs": [], + "properties": { + "Node name for S&R": "PreviewAudio" + }, "widgets_values": [ - "freq" + null ] }, { - "id": 54, - "type": "VHS_LoadVideo", - "pos": { - "0": 263, - "1": 1313 - }, + "id": 239, + "type": "FlexAudioVisualizerCircular", + "pos": [ + 409.053466796875, + 2576.251953125 + ], "size": [ - 247.455078125, - 389.27465067455944 + 504, + 558 ], "flags": {}, - "order": 63, + "order": 54, "mode": 0, "inputs": [ { - "name": "meta_batch", - "type": "VHS_BatchManager", - "link": null + "name": "audio", + "type": "AUDIO", + "link": 376 }, { - "name": "vae", - "type": "VAE", - "link": null + "name": "opt_feature", + "type": "FEATURE", + "link": null, + "shape": 7 }, { - "name": "frame_load_cap", + "name": "screen_width", "type": "INT", - "link": 66, + "link": null, "widget": { - "name": "frame_load_cap" - } - } - ], - "outputs": [ - { - "name": "IMAGE", - "type": "IMAGE", - "links": [ - 65 - ], - "slot_index": 0, - "shape": 3 - }, - { - "name": "frame_count", - "type": "INT", - "links": null, - "shape": 3 - }, - { - "name": "audio", - "type": "AUDIO", - "links": null, - "shape": 3 - }, - { - "name": "video_info", - "type": "VHS_VIDEOINFO", - "links": null, - "shape": 3 - } - ], - "properties": { - "Node name for S&R": "VHS_LoadVideo" - }, - "widgets_values": { - "video": "floating_in_pool_768.mp4", - "force_rate": 0, - "force_size": "Disabled", - "custom_width": 512, - "custom_height": 512, - "frame_load_cap": 0, - "skip_first_frames": 0, - "select_every_nth": 1, - "choose video to upload": "image", - "videopreview": { - "hidden": false, - "paused": false, - "params": { - "frame_load_cap": 0, - "skip_first_frames": 0, - "force_rate": 0, - "filename": "floating_in_pool_768.mp4", - "type": "input", - "format": "video/mp4", - "select_every_nth": 1 + "name": "screen_width" } - } - } - }, - { - "id": 179, - "type": "SetNode", - "pos": { - "0": 2697, - "1": 1636 - }, - "size": { - "0": 210, - "1": 58 - }, - "flags": {}, - "order": 60, - "mode": 0, - "inputs": [ + }, { - "name": "LORA_STACK", - "type": "LORA_STACK", - "link": 297 + "name": "screen_height", + "type": "INT", + "link": null, + "widget": { + "name": "screen_height" + } + }, + { + "name": "frame_rate", + "type": "FLOAT", + "link": null, + "widget": { + "name": "frame_rate" + } } ], "outputs": [ { - "name": "*", - "type": "*", + "name": "IMAGE", + "type": "IMAGE", + "links": [ + 378, + 379 + ] + }, + { + "name": "MASK", + "type": "MASK", "links": null } ], - "title": "Set_lora_stack", "properties": { - "previousName": "lora_stack" + "Node name for S&R": "FlexAudioVisualizerCircular" }, "widgets_values": [ - "lora_stack" + 1, + 0, + "None", + "relative", + 30, + 768, + 464, + 0.5, + 0.5, + "bar", + "frequency", + 0.5, + 90, + 360, + 2048, + 20, + 8000, + 170, + 2, + 100, + 170 ] }, { - "id": 65, - "type": "ACN_AdvancedControlNetApply", - "pos": { - "0": 4358, - "1": 1400 - }, - "size": { - "0": 285.6000061035156, - "1": 286 - }, + "id": 10, + "type": "KSampler", + "pos": [ + 6925, + 1507 + ], + "size": [ + 315, + 262 + ], "flags": {}, - "order": 107, + "order": 90, "mode": 0, "inputs": [ + { + "name": "model", + "type": "MODEL", + "link": 90 + }, { "name": "positive", "type": "CONDITIONING", - "link": 181 + "link": 46 }, { "name": "negative", "type": "CONDITIONING", - "link": 182 - }, - { - "name": "control_net", - "type": "CONTROL_NET", - "link": 98, - "slot_index": 2 - }, - { - "name": "image", - "type": "IMAGE", - "link": 101 - }, - { - "name": "mask_optional", - "type": "MASK", - "link": 100 - }, - { - "name": "timestep_kf", - "type": "TIMESTEP_KEYFRAME", - "link": null - }, - { - "name": "latent_kf_override", - "type": "LATENT_KEYFRAME", - "link": null - }, - { - "name": "weights_override", - "type": "CONTROL_NET_WEIGHTS", - "link": null - }, - { - "name": "model_optional", - "type": "MODEL", - "link": null + "link": 47 }, { - "name": "vae_optional", - "type": "VAE", - "link": null + "name": "latent_image", + "type": "LATENT", + "link": 382 } ], "outputs": [ { - "name": "positive", - "type": "CONDITIONING", - "links": [ - 97 - ], - "slot_index": 0, - "shape": 3 - }, - { - "name": "negative", - "type": "CONDITIONING", + "name": "LATENT", + "type": "LATENT", "links": [ - 96 + 14, + 381 ], - "slot_index": 1, - "shape": 3 - }, - { - "name": "model_opt", - "type": "MODEL", - "links": null, - "shape": 3 + "slot_index": 0 } ], "properties": { - "Node name for S&R": "ACN_AdvancedControlNetApply" + "Node name for S&R": "KSampler" }, "widgets_values": [ - 0.5, - 0, - 0.5, - "" + 156680208700286, + "fixed", + 4, + 1, + "lcm", + "sgm_uniform", + 0.6 ] }, { - "id": 32, - "type": "Apply ControlNet Stack", - "pos": { - "0": 4367, - "1": 1753 - }, - "size": { - "0": 304.79998779296875, - "1": 66 - }, + "id": 15, + "type": "VAEEncode", + "pos": [ + 2552, + 1399 + ], + "size": [ + 210, + 46 + ], "flags": {}, - "order": 109, + "order": 82, "mode": 0, "inputs": [ { - "name": "positive", - "type": "CONDITIONING", - "link": 97 - }, - { - "name": "negative", - "type": "CONDITIONING", - "link": 96 + "name": "pixels", + "type": "IMAGE", + "link": 186 }, { - "name": "cnet_stack", - "type": "CONTROL_NET_STACK", - "link": null, - "slot_index": 2 + "name": "vae", + "type": "VAE", + "link": 15 } ], "outputs": [ { - "name": "CONDITIONING+", - "type": "CONDITIONING", + "name": "LATENT", + "type": "LATENT", "links": [ - 46, - 77 + 364 ], "slot_index": 0, "shape": 3 + } + ], + "properties": { + "Node name for S&R": "VAEEncode" + }, + "widgets_values": [] + }, + { + "id": 224, + "type": "VAEDecode", + "pos": [ + 2980, + 2610 + ], + "size": [ + 210, + 46 + ], + "flags": {}, + "order": 85, + "mode": 0, + "inputs": [ + { + "name": "samples", + "type": "LATENT", + "link": 363 }, { - "name": "CONDITIONING-", - "type": "CONDITIONING", + "name": "vae", + "type": "VAE", + "link": 354 + } + ], + "outputs": [ + { + "name": "IMAGE", + "type": "IMAGE", "links": [ - 47, - 78 + 355, + 383 ], - "slot_index": 1, - "shape": 3 + "slot_index": 0 } ], "properties": { - "Node name for S&R": "Apply ControlNet Stack", - "ttNbgOverride": { - "color": "#2a363b", - "bgcolor": "#3f5159", - "groupcolor": "#3f789e" - } + "Node name for S&R": "VAEDecode" }, - "widgets_values": [], - "shape": 1 + "widgets_values": [] }, { - "id": 66, - "type": "ControlNetLoader", - "pos": { - "0": 3884, - "1": 1648 - }, - "size": { - "0": 355.7056884765625, - "1": 58 - }, + "id": 44, + "type": "SetNode", + "pos": [ + 1091.2005615234375, + 2823.260498046875 + ], + "size": [ + 210, + 58 + ], "flags": {}, - "order": 40, + "order": 69, "mode": 0, - "inputs": [], + "inputs": [ + { + "name": "IMAGE", + "type": "IMAGE", + "link": 379 + } + ], "outputs": [ { - "name": "CONTROL_NET", - "type": "CONTROL_NET", - "links": [ - 98 - ], - "shape": 3 + "name": "*", + "type": "*", + "links": [], + "slot_index": 0 } ], + "title": "Set_freq", "properties": { - "Node name for S&R": "ControlNetLoader" + "previousName": "freq" }, "widgets_values": [ - "control_v11f1p_sd15_depth.pth" - ] + "freq" + ], + "color": "#2a363b", + "bgcolor": "#3f5159" }, { - "id": 67, - "type": "LineArtPreprocessor", - "pos": { - "0": 3908, - "1": 1446 - }, - "size": { - "0": 315, - "1": 82 + "id": 215, + "type": "AudioFeatureExtractor", + "pos": [ + -1122.3336181640625, + 2777.022216796875 + ], + "size": [ + 415.8000183105469, + 174 + ], + "flags": { + "collapsed": false }, - "flags": {}, - "order": 101, + "order": 53, "mode": 0, "inputs": [ { - "name": "image", - "type": "IMAGE", - "link": 99 + "name": "audio", + "type": "AUDIO", + "link": 340 + }, + { + "name": "frame_rate", + "type": "FLOAT", + "link": null, + "widget": { + "name": "frame_rate" + } + }, + { + "name": "frame_count", + "type": "INT", + "link": null, + "widget": { + "name": "frame_count" + } + }, + { + "name": "width", + "type": "INT", + "link": null, + "widget": { + "name": "width" + } + }, + { + "name": "height", + "type": "INT", + "link": null, + "widget": { + "name": "height" + } } ], "outputs": [ { - "name": "IMAGE", - "type": "IMAGE", + "name": "feature", + "type": "FEATURE", "links": [ - 101 + 343, + 345 ], - "slot_index": 0, - "shape": 3 + "slot_index": 0 + }, + { + "name": "frame_count", + "type": "INT", + "links": null } ], "properties": { - "Node name for S&R": "LineArtPreprocessor" + "Node name for S&R": "AudioFeatureExtractor" }, "widgets_values": [ - "disable", + "amplitude_envelope", + 30, + 0, + 512, 512 ] }, { - "id": 171, - "type": "GetNode", - "pos": { - "0": 5804, - "1": 1547 - }, - "size": { - "0": 210, - "1": 58 - }, + "id": 217, + "type": "FeatureMixer", + "pos": [ + -599.2960205078125, + 2792.25439453125 + ], + "size": [ + 315, + 322 + ], "flags": {}, - "order": 41, + "order": 66, "mode": 0, - "inputs": [], + "inputs": [ + { + "name": "feature", + "type": "FEATURE", + "link": 343 + } + ], "outputs": [ { - "name": "MASK", - "type": "MASK", + "name": "FEATURE", + "type": "FEATURE", "links": [ - 289 + 346 ], "slot_index": 0 } ], - "title": "Get_mask_ball", - "properties": {}, + "properties": { + "Node name for S&R": "FeatureMixer" + }, "widgets_values": [ - "mask_ball" + 1, + 0, + 1, + 1, + 1, + 1, + 1, + 0, + 0.3, + 1, + 0.5, + false ] }, { - "id": 183, - "type": "GetNode", - "pos": { - "0": 1729, - "1": 3309 - }, - "size": { - "0": 210, - "1": 58 - }, + "id": 219, + "type": "PreviewFeature", + "pos": [ + -181.15213012695312, + 2830.769287109375 + ], + "size": [ + 315, + 246 + ], "flags": {}, - "order": 42, + "order": 79, "mode": 0, - "inputs": [], - "outputs": [ + "inputs": [ { - "name": "IMAGE", - "type": "IMAGE", - "links": [ - 298 - ], - "slot_index": 0 + "name": "feature", + "type": "FEATURE", + "link": 346 } ], - "title": "Get_freq", - "properties": {}, - "widgets_values": [ - "freq" - ] + "outputs": [], + "properties": { + "Node name for S&R": "PreviewFeature" + }, + "widgets_values": [] }, { - "id": 60, - "type": "VHS_VideoCombine", - "pos": { - "0": 1533, - "1": 2104 - }, + "id": 218, + "type": "PreviewFeature", + "pos": [ + -192.9978485107422, + 3147.65869140625 + ], "size": [ - 214.7587890625, - 442.1570031330334 + 315, + 246 ], "flags": {}, - "order": 100, + "order": 67, "mode": 0, "inputs": [ { - "name": "images", - "type": "IMAGE", - "link": 73 - }, - { - "name": "audio", - "type": "AUDIO", - "link": 307 - }, - { - "name": "meta_batch", - "type": "VHS_BatchManager", - "link": null - }, - { - "name": "vae", - "type": "VAE", - "link": null - } - ], - "outputs": [ - { - "name": "Filenames", - "type": "VHS_FILENAMES", - "links": null, - "shape": 3 + "name": "feature", + "type": "FEATURE", + "link": 345 } ], + "outputs": [], "properties": { - "Node name for S&R": "VHS_VideoCombine" + "Node name for S&R": "PreviewFeature" }, - "widgets_values": { - "frame_rate": 30, - "loop_count": 0, - "filename_prefix": "AnimateDiff", - "format": "video/h264-mp4", - "pix_fmt": "yuv420p", - "crf": 19, - "save_metadata": true, - "pingpong": false, - "save_output": true, - "videopreview": { - "hidden": false, - "paused": false, - "params": { - "filename": "AnimateDiff_01231-audio.mp4", - "subfolder": "", - "type": "output", - "format": "video/h264-mp4", - "frame_rate": 30 - } - } - } + "widgets_values": [] }, { - "id": 77, - "type": "VHS_VideoCombine", - "pos": { - "0": -1088, - "1": 2105 - }, + "id": 167, + "type": "SetNode", + "pos": [ + 1127.6591796875, + 1835.9041748046875 + ], "size": [ - 214.7587890625, - 442.1570031330334 + 210, + 58 ], "flags": {}, - "order": 105, + "order": 77, "mode": 0, "inputs": [ { - "name": "images", - "type": "IMAGE", - "link": 285 - }, - { - "name": "audio", - "type": "AUDIO", - "link": 124 - }, - { - "name": "meta_batch", - "type": "VHS_BatchManager", - "link": null - }, - { - "name": "vae", - "type": "VAE", - "link": null + "name": "MASK", + "type": "MASK", + "link": 287 } ], "outputs": [ { - "name": "Filenames", - "type": "VHS_FILENAMES", - "links": null, - "shape": 3 + "name": "*", + "type": "*", + "links": null } ], + "title": "Set_mask_ball", "properties": { - "Node name for S&R": "VHS_VideoCombine" + "previousName": "mask_ball" }, - "widgets_values": { - "frame_rate": 30, - "loop_count": 0, - "filename_prefix": "AnimateDiff", - "format": "video/h264-mp4", - "pix_fmt": "yuv420p", - "crf": 19, - "save_metadata": true, - "pingpong": false, - "save_output": true, - "videopreview": { - "hidden": false, - "paused": false, - "params": { - "filename": "AnimateDiff_01230-audio.mp4", - "subfolder": "", - "type": "output", - "format": "video/h264-mp4", - "frame_rate": 30 - } - } - } + "widgets_values": [ + "mask_ball" + ], + "color": "#1c5715", + "bgcolor": "#1f401b" }, { - "id": 131, - "type": "IPAdapterClipVisionEnhancerBatch", - "pos": { - "0": 5453, - "1": 3366 - }, - "size": { - "0": 316.3516845703125, - "1": 326 - }, + "id": 170, + "type": "SetNode", + "pos": [ + 1064.319580078125, + 2047.427001953125 + ], + "size": [ + 210, + 58 + ], "flags": {}, - "order": 94, - "mode": 0, - "inputs": [ - { - "name": "model", - "type": "MODEL", - "link": 212 - }, - { - "name": "ipadapter", - "type": "IPADAPTER", - "link": 213 - }, - { - "name": "image", - "type": "IMAGE", - "link": 311 - }, + "order": 78, + "mode": 0, + "inputs": [ { - "name": "image_negative", + "name": "IMAGE", "type": "IMAGE", - "link": null - }, - { - "name": "attn_mask", - "type": "MASK", - "link": 310 - }, - { - "name": "clip_vision", - "type": "CLIP_VISION", - "link": null + "link": 288 } ], "outputs": [ { - "name": "MODEL", - "type": "MODEL", - "links": [ - 187 - ], - "shape": 3 + "name": "*", + "type": "*", + "links": null } ], + "title": "Set_img_ball", "properties": { - "Node name for S&R": "IPAdapterClipVisionEnhancerBatch" + "previousName": "img_ball" }, "widgets_values": [ - 1, - "linear", - 0, - 1, - "V only", - 2, - 0.5, - 0 - ] + "img_ball" + ], + "color": "#2a363b", + "bgcolor": "#3f5159" }, { - "id": 117, + "id": 60, "type": "VHS_VideoCombine", - "pos": { - "0": 6930, - "1": 3369 - }, + "pos": [ + 1400.9998779296875, + 1849.674072265625 + ], "size": [ 214.7587890625, - 310 + 467.69549560546875 ], "flags": {}, - "order": 110, + "order": 81, "mode": 0, "inputs": [ { "name": "images", "type": "IMAGE", - "link": 197 + "link": 73 }, { "name": "audio", "type": "AUDIO", - "link": 312 + "link": 307, + "shape": 7 }, { "name": "meta_batch", "type": "VHS_BatchManager", - "link": null + "link": null, + "shape": 7 }, { "name": "vae", "type": "VAE", - "link": null + "link": null, + "shape": 7 } ], "outputs": [ @@ -5069,656 +4115,604 @@ "pix_fmt": "yuv420p", "crf": 19, "save_metadata": true, + "trim_to_audio": false, "pingpong": false, "save_output": true, "videopreview": { "hidden": false, "paused": false, "params": { - "filename": "AnimateDiff_07439-audio.mp4", + "filename": "AnimateDiff_02331-audio.mp4", "subfolder": "", "type": "output", "format": "video/h264-mp4", - "frame_rate": 30 + "frame_rate": 30, + "workflow": "AnimateDiff_02331.png", + "fullpath": "/runpod-volume/ComfyUI_rv/output/AnimateDiff_02331-audio.mp4" } } } }, { - "id": 112, - "type": "KSampler", - "pos": { - "0": 6026, - "1": 3421 - }, - "size": { - "0": 315, - "1": 262 - }, + "id": 46, + "type": "GetNode", + "pos": [ + 6881.419921875, + 1418.210205078125 + ], + "size": [ + 210, + 58 + ], "flags": {}, - "order": 104, + "order": 24, "mode": 0, - "inputs": [ - { - "name": "model", - "type": "MODEL", - "link": 187 - }, - { - "name": "positive", - "type": "CONDITIONING", - "link": 188 - }, - { - "name": "negative", - "type": "CONDITIONING", - "link": 189 - }, - { - "name": "latent_image", - "type": "LATENT", - "link": 190 - } - ], + "inputs": [], "outputs": [ { - "name": "LATENT", - "type": "LATENT", + "name": "AUDIO", + "type": "AUDIO", "links": [ - 193, - 244 + 49 ], "slot_index": 0 } ], - "properties": { - "Node name for S&R": "KSampler" - }, + "title": "Get_audio", + "properties": {}, "widgets_values": [ - 156680208700286, - "fixed", - 4, - 1, - "lcm", - "sgm_uniform", - 0.6 + "audio" ] }, { - "id": 10, - "type": "KSampler", - "pos": { - "0": 6925, - "1": 1507 - }, - "size": { - "0": 315, - "1": 262 - }, + "id": 26, + "type": "ADE_AnimateDiffLoRALoader", + "pos": [ + 4907.17529296875, + 1352.8338623046875 + ], + "size": [ + 261.19134521484375, + 82 + ], "flags": {}, - "order": 111, + "order": 25, "mode": 0, "inputs": [ { - "name": "model", - "type": "MODEL", - "link": 90 - }, - { - "name": "positive", - "type": "CONDITIONING", - "link": 46 - }, - { - "name": "negative", - "type": "CONDITIONING", - "link": 47 - }, - { - "name": "latent_image", - "type": "LATENT", - "link": 63 + "name": "prev_motion_lora", + "type": "MOTION_LORA", + "link": null, + "shape": 7 } ], "outputs": [ { - "name": "LATENT", - "type": "LATENT", + "name": "MOTION_LORA", + "type": "MOTION_LORA", "links": [ - 14, - 241 + 386 ], - "slot_index": 0 + "slot_index": 0, + "shape": 3 } ], + "title": "AnimateDiff LoRA", "properties": { - "Node name for S&R": "KSampler" + "Node name for S&R": "ADE_AnimateDiffLoRALoader", + "ttNbgOverride": { + "color": "#2a363b", + "bgcolor": "#3f5159", + "groupcolor": "#3f789e" + } }, "widgets_values": [ - 156680208700286, - "fixed", - 4, - 1, - "lcm", - "sgm_uniform", - 0.6 + "LiquidAF-0-1.safetensors", + 0.8 ] }, { - "id": 190, - "type": "GetNode", - "pos": { - "0": 7841, - "1": 2135 - }, - "size": { - "0": 210, - "1": 58 - }, + "id": 22, + "type": "ADE_MultivalDynamic", + "pos": [ + 4917.17529296875, + 1652.8338623046875 + ], + "size": [ + 265.1632385253906, + 58 + ], "flags": {}, - "order": 43, + "order": 26, "mode": 0, - "inputs": [], - "outputs": [ + "inputs": [ { - "name": "FEATURE_PIPE", - "type": "FEATURE_PIPE", - "links": [ - 306 - ], - "slot_index": 0 + "name": "mask_optional", + "type": "MASK", + "link": null, + "shape": 7 } ], - "title": "Get_feature_pipe", - "properties": {}, - "widgets_values": [ - "feature_pipe" - ] - }, - { - "id": 144, - "type": "GetNode", - "pos": { - "0": 7351, - "1": 2146 - }, - "size": { - "0": 328.3037109375, - "1": 58 - }, - "flags": {}, - "order": 44, - "mode": 0, - "inputs": [], "outputs": [ { - "name": "FEATURE", - "type": "FEATURE", + "name": "MULTIVAL", + "type": "MULTIVAL", "links": [ - 252 + 388 ], + "shape": 3, "slot_index": 0 } ], - "title": "Get_vocal_feature_rms_centroid", - "properties": {}, + "title": "Effect 🎭🅐🅓", + "properties": { + "Node name for S&R": "ADE_MultivalDynamic", + "ttNbgOverride": { + "color": "#2a363b", + "bgcolor": "#3f5159", + "groupcolor": "#3f789e" + } + }, "widgets_values": [ - "vocal_feature_rms_centroid" + 1.1 ] }, { - "id": 149, - "type": "FeatureMixer", - "pos": { - "0": 7509, - "1": 2269 - }, - "size": { - "0": 367.79998779296875, - "1": 342 - }, + "id": 20, + "type": "ADE_MultivalDynamic", + "pos": [ + 4917.17529296875, + 1762.8338623046875 + ], + "size": [ + 259.9388122558594, + 63.332008361816406 + ], "flags": {}, - "order": 57, + "order": 27, "mode": 0, "inputs": [ { - "name": "feature", - "type": "FEATURE", - "link": 252 + "name": "mask_optional", + "type": "MASK", + "link": null, + "shape": 7 } ], "outputs": [ { - "name": "FEATURE", - "type": "FEATURE", + "name": "MULTIVAL", + "type": "MULTIVAL", "links": [ - 280 + 389 ], "slot_index": 0, "shape": 3 - }, - { - "name": "FEATURE_VISUALIZATION", - "type": "IMAGE", - "links": [ - 269 - ], - "slot_index": 1, - "shape": 3 } ], + "title": "Scale 🎭🅐🅓", "properties": { - "Node name for S&R": "FeatureMixer" + "Node name for S&R": "ADE_MultivalDynamic", + "ttNbgOverride": { + "color": "#2a363b", + "bgcolor": "#3f5159", + "groupcolor": "#3f789e" + } }, "widgets_values": [ - 1, - 0, - 1, - 1, - 1, - 1, - 1, - 0, - 0.3, - 0, - 5, - false + 1.1400000000000001 ] }, { - "id": 150, - "type": "PreviewImage", - "pos": { - "0": 7920, - "1": 2410 - }, - "size": { - "0": 210, - "1": 246 - }, + "id": 23, + "type": "ADE_CustomCFGSimple", + "pos": [ + 4917.17529296875, + 1862.8338623046875 + ], + "size": [ + 257.2469787597656, + 60.893348693847656 + ], "flags": {}, - "order": 65, + "order": 28, "mode": 0, "inputs": [ { - "name": "images", - "type": "IMAGE", - "link": 269 + "name": "cfg_extras", + "type": "CFG_EXTRAS", + "link": null, + "shape": 7 + } + ], + "outputs": [ + { + "name": "CUSTOM_CFG", + "type": "CUSTOM_CFG", + "links": [ + 394 + ], + "shape": 3, + "slot_index": 0 } ], - "outputs": [], "properties": { - "Node name for S&R": "PreviewImage" + "Node name for S&R": "ADE_CustomCFGSimple", + "ttNbgOverride": { + "color": "#2a363b", + "bgcolor": "#3f5159", + "groupcolor": "#3f789e" + } }, - "widgets_values": [] + "widgets_values": [ + 2 + ] }, { - "id": 147, - "type": "VHS_VideoCombine", - "pos": { - "0": 8907, - "1": 2142 - }, + "id": 243, + "type": "ADE_AnimateDiffSamplingSettings", + "pos": [ + 4933.60888671875, + 1965.2379150390625 + ], "size": [ - 214.7587890625, - 310 + 273.3500061035156, + 274 ], "flags": {}, - "order": 117, + "order": 44, "mode": 0, "inputs": [ { - "name": "images", - "type": "IMAGE", - "link": 247 + "name": "noise_layers", + "type": "NOISE_LAYERS", + "link": null, + "slot_index": 0, + "shape": 7 }, { - "name": "audio", - "type": "AUDIO", - "link": 313 + "name": "iteration_opts", + "type": "ITERATION_OPTS", + "link": null, + "shape": 7 }, { - "name": "meta_batch", - "type": "VHS_BatchManager", - "link": null + "name": "custom_cfg", + "type": "CUSTOM_CFG", + "link": 394, + "slot_index": 2, + "shape": 7 }, { - "name": "vae", - "type": "VAE", - "link": null + "name": "sigma_schedule", + "type": "SIGMA_SCHEDULE", + "link": null, + "slot_index": 3, + "shape": 7 + }, + { + "name": "seed_override", + "type": "INT", + "link": null, + "widget": { + "name": "seed_override" + } + }, + { + "name": "seed_override", + "type": "INT", + "link": null, + "widget": { + "name": "seed_override" + }, + "shape": 7 + }, + { + "name": "image_inject", + "type": "IMAGE_INJECT", + "link": null, + "shape": 7 } ], "outputs": [ { - "name": "Filenames", - "type": "VHS_FILENAMES", - "links": null, + "name": "settings", + "type": "SAMPLE_SETTINGS", + "links": [ + 391 + ], + "slot_index": 0, "shape": 3 } ], "properties": { - "Node name for S&R": "VHS_VideoCombine" - }, - "widgets_values": { - "frame_rate": 30, - "loop_count": 0, - "filename_prefix": "AnimateDiff", - "format": "video/h264-mp4", - "pix_fmt": "yuv420p", - "crf": 19, - "save_metadata": true, - "pingpong": false, - "save_output": true, - "videopreview": { - "hidden": false, - "paused": false, - "params": { - "filename": "AnimateDiff_07446-audio.mp4", - "subfolder": "", - "type": "output", - "format": "video/h264-mp4", - "frame_rate": 30 - } + "Node name for S&R": "ADE_AnimateDiffSamplingSettings", + "ttNbgOverride": { + "color": "#2a363b", + "bgcolor": "#3f5159", + "groupcolor": "#3f789e" } - } + }, + "widgets_values": [ + 0, + "FreeNoise", + "comfy", + 0, + 0, + false + ] }, { - "id": 145, - "type": "FlexLatentInterpolate", - "pos": { - "0": 8195, - "1": 2117 - }, - "size": { - "0": 344.3999938964844, - "1": 214 - }, + "id": 244, + "type": "ADE_ApplyAnimateDiffModelSimple", + "pos": [ + 5312.76025390625, + 1431.6883544921875 + ], + "size": [ + 260.3999938964844, + 126 + ], "flags": {}, - "order": 113, + "order": 45, "mode": 0, "inputs": [ { - "name": "latents", - "type": "LATENT", - "link": 241 + "name": "motion_model", + "type": "MOTION_MODEL_ADE", + "link": 387 }, { - "name": "feature", - "type": "FEATURE", - "link": 280 + "name": "motion_lora", + "type": "MOTION_LORA", + "link": 386, + "shape": 7 }, { - "name": "feature_pipe", - "type": "FEATURE_PIPE", - "link": 306 + "name": "scale_multival", + "type": "MULTIVAL", + "link": 389, + "shape": 7 }, { - "name": "latent_2", - "type": "LATENT", - "link": 244 + "name": "effect_multival", + "type": "MULTIVAL", + "link": 388, + "shape": 7 + }, + { + "name": "ad_keyframes", + "type": "AD_KEYFRAMES", + "link": null, + "shape": 7 + }, + { + "name": "per_block", + "type": "PER_BLOCK", + "link": null, + "shape": 7 } ], "outputs": [ { - "name": "LATENT", - "type": "LATENT", + "name": "M_MODELS", + "type": "M_MODELS", "links": [ - 249, - 282 - ], - "slot_index": 0, - "shape": 3 + 384 + ] } ], "properties": { - "Node name for S&R": "FlexLatentInterpolate" - }, - "widgets_values": [ - 1, - 0, - "None", - "relative", - "Spherical" - ] + "Node name for S&R": "ADE_ApplyAnimateDiffModelSimple" + } }, { - "id": 35, - "type": "NNLatentUpscale", - "pos": { - "0": 9851, - "1": 2170 - }, - "size": { - "0": 315, - "1": 82 - }, + "id": 245, + "type": "ADE_LoadAnimateDiffModel", + "pos": [ + 5212.91162109375, + 1288.619384765625 + ], + "size": [ + 302, + 58 + ], "flags": {}, - "order": 116, + "order": 29, "mode": 0, "inputs": [ { - "name": "latent", - "type": "LATENT", - "link": 282 + "name": "ad_settings", + "type": "AD_SETTINGS", + "link": null, + "shape": 7 } ], "outputs": [ { - "name": "LATENT", - "type": "LATENT", + "name": "MOTION_MODEL", + "type": "MOTION_MODEL_ADE", "links": [ - 84 - ], - "slot_index": 0, - "shape": 3 + 387 + ] } ], "properties": { - "Node name for S&R": "NNLatentUpscale" + "Node name for S&R": "ADE_LoadAnimateDiffModel" }, "widgets_values": [ - "SD 1.x", - 1.67 + "ALCM_sd15_t2v_beta.ckpt" ] }, { - "id": 61, - "type": "KSampler", - "pos": { - "0": 10259, - "1": 2135 - }, - "size": { - "0": 315, - "1": 262 - }, + "id": 241, + "type": "ADE_UseEvolvedSampling", + "pos": [ + 5303.85888671875, + 1615.7391357421875 + ], + "size": [ + 315, + 118 + ], "flags": {}, - "order": 118, + "order": 62, "mode": 0, "inputs": [ { "name": "model", "type": "MODEL", - "link": 91 + "link": 392 }, { - "name": "positive", - "type": "CONDITIONING", - "link": 77 + "name": "m_models", + "type": "M_MODELS", + "link": 384, + "shape": 7 }, { - "name": "negative", - "type": "CONDITIONING", - "link": 78 + "name": "context_options", + "type": "CONTEXT_OPTIONS", + "link": 390, + "shape": 7 }, { - "name": "latent_image", - "type": "LATENT", - "link": 84 + "name": "sample_settings", + "type": "SAMPLE_SETTINGS", + "link": 391, + "shape": 7 } ], "outputs": [ { - "name": "LATENT", - "type": "LATENT", + "name": "MODEL", + "type": "MODEL", "links": [ - 80 + 393 ], "slot_index": 0 } ], "properties": { - "Node name for S&R": "KSampler" + "Node name for S&R": "ADE_UseEvolvedSampling" }, "widgets_values": [ - 156680208700286, - "fixed", - 4, - 1, - "lcm", - "sgm_uniform", - 0.55 + "autoselect" ] }, { - "id": 148, - "type": "ImageCASBatch", - "pos": { - "0": 10650, - "1": 2301 - }, - "size": { - "0": 462, - "1": 82 - }, + "id": 242, + "type": "ADE_AnimateDiffUniformContextOptions", + "pos": [ + 5269.7255859375, + 1863.7127685546875 + ], + "size": [ + 273.269775390625, + 270 + ], "flags": {}, - "order": 120, + "order": 30, "mode": 0, "inputs": [ { - "name": "image", - "type": "IMAGE", - "link": 250 + "name": "prev_context", + "type": "CONTEXT_OPTIONS", + "link": null, + "shape": 7 + }, + { + "name": "view_opts", + "type": "VIEW_OPTS", + "link": null, + "shape": 7 } ], "outputs": [ { - "name": "IMAGE", - "type": "IMAGE", + "name": "CONTEXT_OPTS", + "type": "CONTEXT_OPTIONS", "links": [ - 251 + 390 ], "slot_index": 0, "shape": 3 } ], + "title": "Context Options 🎭🅐🅓", "properties": { - "Node name for S&R": "ImageCASBatch" - }, - "widgets_values": [ - 0.8, - 4 - ] - }, - { - "id": 201, - "type": "GetNode", - "pos": { - "0": 2078, - "1": 3833 - }, - "size": { - "0": 210, - "1": 58 - }, - "flags": {}, - "order": 45, - "mode": 0, - "inputs": [], - "outputs": [ - { - "name": "LORA_STACK", - "type": "LORA_STACK", - "links": [ - 315 - ], - "slot_index": 0 + "Node name for S&R": "ADE_AnimateDiffUniformContextOptions", + "ttNbgOverride": { + "color": "#2a363b", + "bgcolor": "#3f5159", + "groupcolor": "#3f789e" } - ], - "title": "Get_lora_stack", - "properties": {}, + }, "widgets_values": [ - "lora_stack" + 16, + 1, + 4, + "uniform", + false, + "pyramid", + false, + 0, + 1, + "" ] }, { - "id": 166, - "type": "FlexAudioVisualizerCircular", - "pos": { - "0": -2046, - "1": 2063 - }, - "size": { - "0": 478.79998779296875, - "1": 558 - }, + "id": 233, + "type": "FlexLatentInterpolate", + "pos": [ + 2540, + 2560 + ], + "size": [ + 415.8000183105469, + 194 + ], "flags": {}, - "order": 98, + "order": 84, "mode": 0, "inputs": [ { - "name": "audio", - "type": "AUDIO", - "link": 283 + "name": "latents", + "type": "LATENT", + "link": 364 + }, + { + "name": "latent_2", + "type": "LATENT", + "link": 362 }, { "name": "opt_feature", "type": "FEATURE", - "link": 284 + "link": 361, + "shape": 7 } ], "outputs": [ { - "name": "IMAGE", - "type": "IMAGE", + "name": "LATENT", + "type": "LATENT", "links": [ - 285, - 286 + 363, + 382 ], - "shape": 3 - }, - { - "name": "MASK", - "type": "MASK", - "links": null, - "shape": 3 + "slot_index": 0 } ], "properties": { - "Node name for S&R": "FlexAudioVisualizerCircular" + "Node name for S&R": "FlexLatentInterpolate" }, "widgets_values": [ - 30, - 768, - 464, 1, - "max_frequency", - "relative", + 0, "None", - 0.5, - 0.5, - "bar", - "frequency", - 0.5, - 90, - 360, - 2048, - 20, - 8000, - 150, - 2, - 100, - 150 + "relative", + "Spherical" ] } ], @@ -5763,70 +4757,6 @@ 0, "IMAGE" ], - [ - 20, - 30, - 0, - 18, - 0, - "MODEL" - ], - [ - 21, - 21, - 0, - 18, - 1, - "CONTEXT_OPTIONS" - ], - [ - 22, - 26, - 0, - 18, - 2, - "MOTION_LORA" - ], - [ - 23, - 19, - 0, - 18, - 5, - "SAMPLE_SETTINGS" - ], - [ - 24, - 20, - 0, - 18, - 6, - "MULTIVAL" - ], - [ - 25, - 22, - 0, - 18, - 7, - "MULTIVAL" - ], - [ - 26, - 23, - 0, - 19, - 2, - "CUSTOM_CFG" - ], - [ - 27, - 18, - 0, - 27, - 0, - "MODEL" - ], [ 28, 11, @@ -5851,22 +4781,6 @@ 2, "LORA_STACK" ], - [ - 36, - 41, - 0, - 40, - 0, - "OPEN_UNMIX_MODEL" - ], - [ - 37, - 39, - 0, - 40, - 1, - "AUDIO" - ], [ 38, 39, @@ -5875,30 +4789,6 @@ 0, "AUDIO" ], - [ - 39, - 42, - 0, - 40, - 2, - "IMAGE" - ], - [ - 41, - 40, - 1, - 43, - 0, - "AUDIO" - ], - [ - 42, - 40, - 5, - 43, - 1, - "FEATURE_PIPE" - ], [ 46, 32, @@ -5939,38 +4829,6 @@ 0, "AUDIO" ], - [ - 57, - 40, - 0, - 50, - 0, - "AUDIO" - ], - [ - 58, - 43, - 0, - 51, - 0, - "FEATURE" - ], - [ - 59, - 51, - 0, - 52, - 0, - "IMAGE" - ], - [ - 63, - 15, - 0, - 10, - 3, - "LATENT" - ], [ 65, 54, @@ -6107,14 +4965,6 @@ 2, "CONTROL_NET" ], - [ - 99, - 55, - 0, - 67, - 0, - "IMAGE" - ], [ 100, 58, @@ -6131,22 +4981,6 @@ 3, "IMAGE" ], - [ - 110, - 43, - 0, - 70, - 0, - "FEATURE" - ], - [ - 111, - 70, - 1, - 71, - 0, - "IMAGE" - ], [ 124, 78, @@ -6204,656 +5038,761 @@ "IMAGE" ], [ - 187, - 131, + 250, + 62, + 0, + 148, + 0, + "IMAGE" + ], + [ + 251, + 148, + 0, + 63, + 0, + "IMAGE" + ], + [ + 287, + 58, + 0, + 167, + 0, + "*" + ], + [ + 288, + 58, + 1, + 170, + 0, + "*" + ], + [ + 289, + 171, + 0, + 64, + 4, + "MASK" + ], + [ + 290, + 172, + 0, + 64, + 2, + "IMAGE" + ], + [ + 291, + 11, + 2, + 173, + 0, + "*" + ], + [ + 292, + 11, 0, - 112, + 174, + 0, + "*" + ], + [ + 293, + 11, + 1, + 175, 0, - "MODEL" + "*" ], [ - 188, - 129, + 294, + 176, 0, - 112, + 116, 1, - "CONDITIONING" + "VAE" ], [ - 189, - 129, - 1, - 112, - 2, - "CONDITIONING" + 297, + 29, + 0, + 179, + 0, + "*" ], [ - 190, + 298, + 183, + 0, 116, 0, - 112, - 3, - "LATENT" + "IMAGE" ], [ - 191, - 128, - 1, - 113, + 299, + 55, 0, - "CLIP" + 184, + 0, + "*" ], [ + 307, 192, - 128, - 1, - 114, 0, - "CLIP" + 60, + 1, + "AUDIO" ], [ + 308, 193, - 112, - 0, - 115, 0, - "LATENT" + 62, + 1, + "VAE" ], [ - 197, - 115, - 0, - 117, + 309, + 194, 0, - "IMAGE" + 14, + 1, + "VAE" ], [ + 314, 199, - 128, 0, - 118, - 0, - "MODEL" + 63, + 1, + "AUDIO" ], [ - 200, - 121, + 316, + 41, 0, - 118, - 1, - "CONTEXT_OPTIONS" + 202, + 0, + "OPEN_UNMIX_MODEL" ], [ - 201, - 126, + 317, + 39, 0, - 118, - 2, - "MOTION_LORA" + 202, + 1, + "AUDIO" ], [ + 318, 202, - 119, 0, - 118, - 5, - "SAMPLE_SETTINGS" + 50, + 0, + "AUDIO" ], [ + 326, + 207, + 0, 203, - 120, 0, - 118, - 6, - "MULTIVAL" + "INT" ], [ + 327, + 206, + 0, 204, - 122, 0, - 118, - 7, - "MULTIVAL" + "INT" ], [ + 328, + 208, + 0, 205, - 123, 0, - 119, - 2, - "CUSTOM_CFG" + "FLOAT" ], [ - 206, - 118, + 329, + 42, + 2, + 209, 0, - 127, + "INT" + ], + [ + 330, + 202, + 2, + 210, 0, - "MODEL" + "AUDIO" ], [ + 331, 210, - 132, 0, - 129, + 143, 0, - "CONDITIONING" + "FEATURE" ], [ + 332, + 202, + 2, 211, - 132, - 1, - 129, - 1, - "CONDITIONING" + 0, + "AUDIO" ], [ - 212, - 127, + 333, + 211, 0, - 131, + 153, 0, - "MODEL" + "FEATURE" ], [ - 213, - 127, - 1, - 131, - 1, - "IPADAPTER" + 334, + 202, + 2, + 212, + 0, + "AUDIO" ], [ - 216, - 113, + 335, + 212, 0, - 132, + 155, 0, - "CONDITIONING" + "FEATURE" ], [ - 217, - 114, + 336, + 202, + 2, + 213, 0, - 132, - 1, - "CONDITIONING" + "AUDIO" ], [ - 218, - 133, + 337, + 213, 0, - 132, - 2, - "CONTROL_NET" - ], - [ - 219, - 134, + 157, 0, - 132, - 3, - "IMAGE" + "FEATURE" ], [ - 238, - 40, + 338, + 202, 2, - 142, + 214, 0, "AUDIO" ], [ - 239, - 40, - 5, - 142, - 1, - "FEATURE_PIPE" + 339, + 214, + 0, + 159, + 0, + "FEATURE" ], [ - 240, - 142, - 0, - 143, + 340, + 202, + 1, + 215, 0, - "*" + "AUDIO" ], [ - 241, - 10, + 343, + 215, 0, - 145, + 217, 0, - "LATENT" + "FEATURE" ], [ - 244, - 112, + 345, + 215, 0, - 145, - 3, - "LATENT" + 218, + 0, + "FEATURE" ], [ - 247, - 146, + 346, + 217, 0, - 147, + 219, 0, - "IMAGE" + "FEATURE" ], [ - 249, - 145, - 0, - 146, + 354, + 225, 0, - "LATENT" + 224, + 1, + "VAE" ], [ - 250, - 62, + 355, + 224, 0, - 148, + 228, 0, "IMAGE" ], [ - 251, - 148, + 356, + 226, 0, - 63, + 228, + 1, + "AUDIO" + ], + [ + 357, + 232, 0, - "IMAGE" + 231, + 0, + "FEATURE" ], [ - 252, - 144, + 358, + 230, 0, - 149, + 232, 0, "FEATURE" ], [ - 257, - 40, - 2, - 152, + 361, + 232, 0, - "AUDIO" + 233, + 2, + "FEATURE" ], [ - 258, - 40, - 5, - 152, + 362, + 116, + 0, + 233, 1, - "FEATURE_PIPE" + "LATENT" ], [ - 259, - 152, + 363, + 233, 0, - 153, + 224, 0, - "*" + "LATENT" ], [ - 260, - 40, - 2, - 154, + 364, + 15, 0, - "AUDIO" + 233, + 0, + "LATENT" ], [ - 261, - 40, - 5, - 154, + 376, + 202, 1, - "FEATURE_PIPE" + 239, + 0, + "AUDIO" ], [ - 262, - 154, + 378, + 239, 0, - 155, + 77, 0, - "*" + "IMAGE" ], [ - 263, - 40, - 2, - 156, + 379, + 239, 0, - "AUDIO" + 44, + 0, + "IMAGE" ], [ - 264, - 40, - 5, - 156, + 380, + 202, 1, - "FEATURE_PIPE" + 240, + 0, + "AUDIO" ], [ - 265, - 156, + 381, + 10, 0, - 157, + 35, 0, - "*" + "LATENT" ], [ - 266, - 40, - 2, - 158, + 382, + 233, 0, - "AUDIO" - ], - [ - 267, - 40, - 5, - 158, - 1, - "FEATURE_PIPE" + 10, + 3, + "LATENT" ], [ - 268, - 158, + 383, + 224, 0, - 159, + 67, 0, - "*" + "IMAGE" ], [ - 269, - 149, - 1, - 150, + 384, + 244, 0, - "IMAGE" + 241, + 1, + "M_MODELS" ], [ - 280, - 149, + 386, + 26, 0, - 145, + 244, 1, - "FEATURE" + "MOTION_LORA" ], [ - 282, - 145, + 387, + 245, 0, - 35, + 244, + 0, + "MOTION_MODEL_ADE" + ], + [ + 388, + 22, + 0, + 244, + 3, + "MULTIVAL" + ], + [ + 389, + 20, 0, - "LATENT" + 244, + 2, + "MULTIVAL" ], [ - 283, - 40, - 1, - 166, + 390, + 242, 0, - "AUDIO" + 241, + 2, + "CONTEXT_OPTIONS" ], [ - 284, - 70, + 391, + 243, 0, - 166, - 1, - "FEATURE" + 241, + 3, + "SAMPLE_SETTINGS" ], [ - 285, - 166, + 392, + 30, 0, - 77, + 241, 0, - "IMAGE" + "MODEL" ], [ - 286, - 166, + 393, + 241, 0, - 44, + 27, 0, - "IMAGE" + "MODEL" ], [ - 287, - 58, - 0, - 167, + 394, + 23, 0, - "*" + 243, + 2, + "CUSTOM_CFG" ], [ - 288, - 58, + 404, + 208, + 0, + 214, 1, - 170, + "FLOAT" + ], + [ + 405, + 42, + 2, + 214, + 2, + "INT" + ], + [ + 406, + 207, 0, - "*" + 214, + 3, + "INT" ], [ - 289, - 171, + 407, + 206, 0, - 64, + 214, 4, - "MASK" + "INT" ], [ - 290, - 172, + 408, + 208, 0, - 64, - 2, - "IMAGE" + 211, + 1, + "FLOAT" ], [ - 291, - 11, + 409, + 42, 2, - 173, - 0, - "*" + 211, + 2, + "INT" ], [ - 292, - 11, + 410, + 207, 0, - 174, - 0, - "*" + 211, + 3, + "INT" ], [ - 293, - 11, - 1, - 175, + 411, + 206, 0, - "*" + 211, + 4, + "INT" ], [ - 294, - 176, + 412, + 208, 0, - 116, + 213, 1, - "VAE" + "FLOAT" ], [ - 295, - 177, - 0, - 128, - 0, - "MODEL" + 413, + 42, + 2, + 213, + 2, + "INT" ], [ - 296, - 178, + 414, + 207, 0, - 128, - 1, - "CLIP" + 213, + 3, + "INT" ], [ - 297, - 29, - 0, - 179, + 415, + 206, 0, - "*" + 213, + 4, + "INT" ], [ - 298, - 183, + 416, + 208, 0, - 116, - 0, - "IMAGE" + 212, + 1, + "FLOAT" ], [ - 299, - 55, - 0, - 184, - 0, - "*" + 417, + 42, + 2, + 212, + 2, + "INT" ], [ - 300, - 185, + 418, + 207, 0, - 134, - 0, - "IMAGE" + 212, + 3, + "INT" ], [ - 301, - 187, + 419, + 206, 0, - 132, + 212, 4, - "MASK" + "INT" ], [ - 302, - 188, + 420, + 208, 0, - 115, + 42, 1, - "VAE" + "FLOAT" ], [ - 303, - 189, + 421, + 207, 0, - 146, - 1, - "VAE" + 42, + 2, + "INT" ], [ - 305, - 40, - 5, - 191, + 422, + 206, 0, - "*" + 42, + 3, + "INT" ], [ - 306, - 190, + 423, + 208, 0, - 145, + 210, + 1, + "FLOAT" + ], + [ + 424, + 42, + 2, + 210, 2, - "FEATURE_PIPE" + "INT" ], [ - 307, - 192, + 425, + 207, 0, - 60, - 1, - "AUDIO" + 210, + 3, + "INT" ], [ - 308, - 193, + 426, + 206, 0, - 62, - 1, - "VAE" + 210, + 4, + "INT" ], [ - 309, - 194, + 427, + 207, 0, - 14, - 1, - "VAE" + 239, + 2, + "INT" ], [ - 310, - 196, + 428, + 206, 0, - 131, - 4, - "MASK" + 239, + 3, + "INT" ], [ - 311, - 195, + 429, + 208, 0, - 131, - 2, - "IMAGE" + 239, + 4, + "FLOAT" ], [ - 312, - 197, + 430, + 208, 0, - 117, + 215, 1, - "AUDIO" + "FLOAT" ], [ - 313, - 198, - 0, - 147, - 1, - "AUDIO" + 431, + 42, + 2, + 215, + 2, + "INT" ], [ - 314, - 199, + 432, + 207, 0, - 63, - 1, - "AUDIO" + 215, + 3, + "INT" ], [ - 315, - 201, + 433, + 206, 0, - 128, - 2, - "LORA_STACK" + 215, + 4, + "INT" ] ], "groups": [ { + "id": 1, "title": "ipadap", "bounding": [ 5762, @@ -6866,6 +5805,7 @@ "flags": {} }, { + "id": 2, "title": "samp", "bounding": [ 6868, @@ -6878,10 +5818,11 @@ "flags": {} }, { + "id": 3, "title": "samp22", "bounding": [ - 9860, - 2028, + 7814.8388671875, + 1220.700439453125, 1775, 718 ], @@ -6890,6 +5831,7 @@ "flags": {} }, { + "id": 4, "title": "adiff", "bounding": [ 4850, @@ -6902,6 +5844,7 @@ "flags": {} }, { + "id": 5, "title": "model", "bounding": [ 1783, @@ -6914,6 +5857,7 @@ "flags": {} }, { + "id": 6, "title": "controlnet", "bounding": [ 3830, @@ -6926,10 +5870,11 @@ "flags": {} }, { - "title": "Load Audio\\", + "id": 7, + "title": "Variables", "bounding": [ - -4607, - 1227, + -2104.369384765625, + 1280.8199462890625, 2400, 2155 ], @@ -6938,22 +5883,24 @@ "flags": {} }, { + "id": 8, "title": "Load Images", "bounding": [ - 196, - 1189, - 1570, - 1136 + 349.9508056640625, + 1279.8662109375, + 1307.97265625, + 1120.81005859375 ], "color": "#3f789e", "font_size": 24, "flags": {} }, { + "id": 9, "title": "Visualizer", "bounding": [ - -2107, - 1980, + 381.96240234375, + 2494.70654296875, 1316, 674 ], @@ -6962,72 +5909,13 @@ "flags": {} }, { + "id": 10, "title": "Setup 2", "bounding": [ - 1652, - 3179, - 1323, - 1047 - ], - "color": "#3f789e", - "font_size": 24, - "flags": {} - }, - { - "title": "Controlnet", - "bounding": [ - 3017, - 3188, - 1082, - 784 - ], - "color": "#3f789e", - "font_size": 24, - "flags": {} - }, - { - "title": "Adiff2", - "bounding": [ - 4141, - 3192, - 785, - 1120 - ], - "color": "#3f789e", - "font_size": 24, - "flags": {} - }, - { - "title": "Ipadapter", - "bounding": [ - 4964, - 3209, - 891, - 611 - ], - "color": "#3f789e", - "font_size": 24, - "flags": {} - }, - { - "title": "Sampler", - "bounding": [ - 5884, - 3192, - 1247, - 670 - ], - "color": "#3f789e", - "font_size": 24, - "flags": {} - }, - { - "title": "Combine them", - "bounding": [ - 7317, - 1931, - 1842, - 888 + 1793.277099609375, + 2163.146728515625, + 1807.3800048828125, + 1094.092529296875 ], "color": "#3f789e", "font_size": 24, @@ -7037,12 +5925,268 @@ "config": {}, "extra": { "ds": { - "scale": 0.13310000000000746, + "scale": 0.11167815779424767, "offset": [ - 2529.5159878152917, - 2335.702455576461 + 3374.530744673751, + 1401.0853789567884 ] - } + }, + "node_versions": { + "ComfyUI-AnimateDiff-Evolved": "7ec46937095048a77342aeada964e9823a2102f0", + "ComfyUI_IPAdapter_plus": "b188a6cb39b512a9c6da7235b880af42c78ccd0d", + "ComfyUI-VideoHelperSuite": "6953fa21443cf55f7c3b61ed3f4c87c5d3677fe1", + "comfy-core": "0.3.12", + "ComfyUI_Comfyroll_CustomNodes": "d78b780ae43fcf8c6b7c6505e6ffb4584281ceca", + "ComfyUI_RyanOnTheInside": "e2382fa6e72d3aa18cbb4d558eb468cc14c54afc", + "ComfyUI-Advanced-ControlNet": "9632af9dc8f9abe28431c0027411d7a6d4f6cd3e", + "efficiency-nodes-comfyui": "3ead4afd120833f3bffdefeca0d6545df8051798", + "comfyui_controlnet_aux": "5a049bde9cc117dafc327cded156459289097ea1", + "ComfyUi_NNLatentUpscale": "08105da31dbd7a54569661e135835e73bd8064b0", + "cg-use-everywhere": "cd06259166a6af4c054c62f540871ca09a359b50", + "ComfyUI-KJNodes": "973ceb6ca8b7525d54873805888ad690090d6b1e" + }, + "ue_links": [ + { + "downstream": 214, + "downstream_slot": 1, + "upstream": "208", + "upstream_slot": 0, + "controller": 205, + "type": "FLOAT" + }, + { + "downstream": 214, + "downstream_slot": 2, + "upstream": "42", + "upstream_slot": 2, + "controller": 209, + "type": "INT" + }, + { + "downstream": 214, + "downstream_slot": 3, + "upstream": "207", + "upstream_slot": 0, + "controller": 203, + "type": "INT" + }, + { + "downstream": 214, + "downstream_slot": 4, + "upstream": "206", + "upstream_slot": 0, + "controller": 204, + "type": "INT" + }, + { + "downstream": 211, + "downstream_slot": 1, + "upstream": "208", + "upstream_slot": 0, + "controller": 205, + "type": "FLOAT" + }, + { + "downstream": 211, + "downstream_slot": 2, + "upstream": "42", + "upstream_slot": 2, + "controller": 209, + "type": "INT" + }, + { + "downstream": 211, + "downstream_slot": 3, + "upstream": "207", + "upstream_slot": 0, + "controller": 203, + "type": "INT" + }, + { + "downstream": 211, + "downstream_slot": 4, + "upstream": "206", + "upstream_slot": 0, + "controller": 204, + "type": "INT" + }, + { + "downstream": 213, + "downstream_slot": 1, + "upstream": "208", + "upstream_slot": 0, + "controller": 205, + "type": "FLOAT" + }, + { + "downstream": 213, + "downstream_slot": 2, + "upstream": "42", + "upstream_slot": 2, + "controller": 209, + "type": "INT" + }, + { + "downstream": 213, + "downstream_slot": 3, + "upstream": "207", + "upstream_slot": 0, + "controller": 203, + "type": "INT" + }, + { + "downstream": 213, + "downstream_slot": 4, + "upstream": "206", + "upstream_slot": 0, + "controller": 204, + "type": "INT" + }, + { + "downstream": 212, + "downstream_slot": 1, + "upstream": "208", + "upstream_slot": 0, + "controller": 205, + "type": "FLOAT" + }, + { + "downstream": 212, + "downstream_slot": 2, + "upstream": "42", + "upstream_slot": 2, + "controller": 209, + "type": "INT" + }, + { + "downstream": 212, + "downstream_slot": 3, + "upstream": "207", + "upstream_slot": 0, + "controller": 203, + "type": "INT" + }, + { + "downstream": 212, + "downstream_slot": 4, + "upstream": "206", + "upstream_slot": 0, + "controller": 204, + "type": "INT" + }, + { + "downstream": 42, + "downstream_slot": 1, + "upstream": "208", + "upstream_slot": 0, + "controller": 205, + "type": "FLOAT" + }, + { + "downstream": 42, + "downstream_slot": 2, + "upstream": "207", + "upstream_slot": 0, + "controller": 203, + "type": "INT" + }, + { + "downstream": 42, + "downstream_slot": 3, + "upstream": "206", + "upstream_slot": 0, + "controller": 204, + "type": "INT" + }, + { + "downstream": 210, + "downstream_slot": 1, + "upstream": "208", + "upstream_slot": 0, + "controller": 205, + "type": "FLOAT" + }, + { + "downstream": 210, + "downstream_slot": 2, + "upstream": "42", + "upstream_slot": 2, + "controller": 209, + "type": "INT" + }, + { + "downstream": 210, + "downstream_slot": 3, + "upstream": "207", + "upstream_slot": 0, + "controller": 203, + "type": "INT" + }, + { + "downstream": 210, + "downstream_slot": 4, + "upstream": "206", + "upstream_slot": 0, + "controller": 204, + "type": "INT" + }, + { + "downstream": 239, + "downstream_slot": 2, + "upstream": "207", + "upstream_slot": 0, + "controller": 203, + "type": "INT" + }, + { + "downstream": 239, + "downstream_slot": 3, + "upstream": "206", + "upstream_slot": 0, + "controller": 204, + "type": "INT" + }, + { + "downstream": 239, + "downstream_slot": 4, + "upstream": "208", + "upstream_slot": 0, + "controller": 205, + "type": "FLOAT" + }, + { + "downstream": 215, + "downstream_slot": 1, + "upstream": "208", + "upstream_slot": 0, + "controller": 205, + "type": "FLOAT" + }, + { + "downstream": 215, + "downstream_slot": 2, + "upstream": "42", + "upstream_slot": 2, + "controller": 209, + "type": "INT" + }, + { + "downstream": 215, + "downstream_slot": 3, + "upstream": "207", + "upstream_slot": 0, + "controller": 203, + "type": "INT" + }, + { + "downstream": 215, + "downstream_slot": 4, + "upstream": "206", + "upstream_slot": 0, + "controller": 204, + "type": "INT" + } + ] }, "version": 0.4 } \ No newline at end of file diff --git a/examples/spinnyvis/part2_animatediffVERSION2.json b/examples/spinnyvis/part2_animatediffVERSION2.json new file mode 100644 index 0000000..310094a --- /dev/null +++ b/examples/spinnyvis/part2_animatediffVERSION2.json @@ -0,0 +1,2141 @@ +{ + "last_node_id": 302, + "last_link_id": 525, + "nodes": [ + { + "id": 165, + "type": "ADE_AnimateDiffSamplingSettings", + "pos": [ + 5707.480888441229, + -528.7132590696225 + ], + "size": { + "0": 273.3500061035156, + "1": 254 + }, + "flags": {}, + "order": 11, + "mode": 0, + "inputs": [ + { + "name": "noise_layers", + "type": "NOISE_LAYERS", + "link": null, + "slot_index": 0 + }, + { + "name": "iteration_opts", + "type": "ITERATION_OPTS", + "link": null + }, + { + "name": "custom_cfg", + "type": "CUSTOM_CFG", + "link": 285, + "slot_index": 2 + }, + { + "name": "sigma_schedule", + "type": "SIGMA_SCHEDULE", + "link": null, + "slot_index": 3 + }, + { + "name": "seed_override", + "type": "INT", + "link": null, + "widget": { + "name": "seed_override" + } + }, + { + "name": "seed_override", + "type": "INT", + "link": null, + "widget": { + "name": "seed_override" + } + } + ], + "outputs": [ + { + "name": "settings", + "type": "SAMPLE_SETTINGS", + "links": [ + 282 + ], + "shape": 3, + "slot_index": 0 + } + ], + "properties": { + "Node name for S&R": "ADE_AnimateDiffSamplingSettings", + "ttNbgOverride": { + "color": "#2a363b", + "bgcolor": "#3f5159", + "groupcolor": "#3f789e" + } + }, + "widgets_values": [ + 0, + "FreeNoise", + "comfy", + 0, + 0, + false, + "" + ] + }, + { + "id": 166, + "type": "ADE_MultivalDynamic", + "pos": [ + 5357.480888441229, + -728.7132590696225 + ], + "size": { + "0": 259.9388122558594, + "1": 63.332008361816406 + }, + "flags": {}, + "order": 0, + "mode": 0, + "inputs": [ + { + "name": "mask_optional", + "type": "MASK", + "link": null + } + ], + "outputs": [ + { + "name": "MULTIVAL", + "type": "MULTIVAL", + "links": [ + 283 + ], + "shape": 3, + "slot_index": 0 + } + ], + "title": "Scale 🎭🅐🅓", + "properties": { + "Node name for S&R": "ADE_MultivalDynamic", + "ttNbgOverride": { + "color": "#2a363b", + "bgcolor": "#3f5159", + "groupcolor": "#3f789e" + } + }, + "widgets_values": [ + 1.1400000000000001, + "" + ] + }, + { + "id": 167, + "type": "ADE_AnimateDiffUniformContextOptions", + "pos": [ + 5707.480888441229, + -838.7132590696225 + ], + "size": { + "0": 273.269775390625, + "1": 270 + }, + "flags": {}, + "order": 1, + "mode": 0, + "inputs": [ + { + "name": "prev_context", + "type": "CONTEXT_OPTIONS", + "link": null + }, + { + "name": "view_opts", + "type": "VIEW_OPTS", + "link": null + } + ], + "outputs": [ + { + "name": "CONTEXT_OPTS", + "type": "CONTEXT_OPTIONS", + "links": [ + 280 + ], + "shape": 3, + "slot_index": 0 + } + ], + "title": "Context Options 🎭🅐🅓", + "properties": { + "Node name for S&R": "ADE_AnimateDiffUniformContextOptions", + "ttNbgOverride": { + "color": "#2a363b", + "bgcolor": "#3f5159", + "groupcolor": "#3f789e" + } + }, + "widgets_values": [ + 16, + 1, + 4, + "uniform", + false, + "pyramid", + false, + 0, + 1, + "" + ] + }, + { + "id": 168, + "type": "ADE_MultivalDynamic", + "pos": [ + 5357.480888441229, + -838.7132590696225 + ], + "size": { + "0": 265.1632385253906, + "1": 58 + }, + "flags": {}, + "order": 2, + "mode": 0, + "inputs": [ + { + "name": "mask_optional", + "type": "MASK", + "link": null + } + ], + "outputs": [ + { + "name": "MULTIVAL", + "type": "MULTIVAL", + "links": [ + 284 + ], + "shape": 3 + } + ], + "title": "Effect 🎭🅐🅓", + "properties": { + "Node name for S&R": "ADE_MultivalDynamic", + "ttNbgOverride": { + "color": "#2a363b", + "bgcolor": "#3f5159", + "groupcolor": "#3f789e" + } + }, + "widgets_values": [ + 1.1, + "" + ] + }, + { + "id": 169, + "type": "ADE_CustomCFGSimple", + "pos": [ + 5357.480888441229, + -628.7132590696225 + ], + "size": { + "0": 257.2469787597656, + "1": 60.893348693847656 + }, + "flags": {}, + "order": 3, + "mode": 0, + "inputs": [ + { + "name": "cfg_extras", + "type": "CFG_EXTRAS", + "link": null + } + ], + "outputs": [ + { + "name": "CUSTOM_CFG", + "type": "CUSTOM_CFG", + "links": [ + 285 + ], + "shape": 3 + } + ], + "properties": { + "Node name for S&R": "ADE_CustomCFGSimple", + "ttNbgOverride": { + "color": "#2a363b", + "bgcolor": "#3f5159", + "groupcolor": "#3f789e" + } + }, + "widgets_values": [ + 2, + "" + ] + }, + { + "id": 170, + "type": "ADE_AdjustPESweetspotStretch", + "pos": [ + 5357.480888441229, + -528.7132590696225 + ], + "size": { + "0": 253.07310485839844, + "1": 106 + }, + "flags": {}, + "order": 4, + "mode": 0, + "inputs": [ + { + "name": "prev_pe_adjust", + "type": "PE_ADJUST", + "link": null + } + ], + "outputs": [ + { + "name": "PE_ADJUST", + "type": "PE_ADJUST", + "links": [], + "shape": 3 + } + ], + "properties": { + "Node name for S&R": "ADE_AdjustPESweetspotStretch", + "ttNbgOverride": { + "color": "#2a363b", + "bgcolor": "#3f5159", + "groupcolor": "#3f789e" + } + }, + "widgets_values": [ + 16, + 18, + false, + "" + ] + }, + { + "id": 171, + "type": "ADE_AdjustWeightAllMult", + "pos": [ + 5347.480888441229, + -998.7132590696226 + ], + "size": { + "0": 270.3999938964844, + "1": 82 + }, + "flags": {}, + "order": 5, + "mode": 0, + "inputs": [ + { + "name": "prev_weight_adjust", + "type": "WEIGHT_ADJUST", + "link": null + } + ], + "outputs": [ + { + "name": "WEIGHT_ADJUST", + "type": "WEIGHT_ADJUST", + "links": [], + "shape": 3 + } + ], + "properties": { + "Node name for S&R": "ADE_AdjustWeightAllMult", + "ttNbgOverride": { + "color": "#2a363b", + "bgcolor": "#3f5159", + "groupcolor": "#3f789e" + } + }, + "widgets_values": [ + 1.01, + false, + "" + ] + }, + { + "id": 172, + "type": "ADE_AnimateDiffLoRALoader", + "pos": [ + 5347.480888441229, + -1138.7132590696226 + ], + "size": { + "0": 261.19134521484375, + "1": 82 + }, + "flags": {}, + "order": 6, + "mode": 0, + "inputs": [ + { + "name": "prev_motion_lora", + "type": "MOTION_LORA", + "link": null + } + ], + "outputs": [ + { + "name": "MOTION_LORA", + "type": "MOTION_LORA", + "links": [ + 281 + ], + "shape": 3, + "slot_index": 0 + } + ], + "title": "AnimateDiff LoRA", + "properties": { + "Node name for S&R": "ADE_AnimateDiffLoRALoader", + "ttNbgOverride": { + "color": "#2a363b", + "bgcolor": "#3f5159", + "groupcolor": "#3f789e" + } + }, + "widgets_values": [ + "LiquidAF-0-1.safetensors", + 0.8, + "" + ] + }, + { + "id": 174, + "type": "CR Apply LoRA Stack", + "pos": [ + 3835.344952087443, + -904.6115589012819 + ], + "size": { + "0": 254.40000915527344, + "1": 66 + }, + "flags": {}, + "order": 16, + "mode": 0, + "inputs": [ + { + "name": "model", + "type": "MODEL", + "link": 287 + }, + { + "name": "clip", + "type": "CLIP", + "link": 288 + }, + { + "name": "lora_stack", + "type": "LORA_STACK", + "link": 289 + } + ], + "outputs": [ + { + "name": "MODEL", + "type": "MODEL", + "links": [ + 279 + ], + "shape": 3, + "slot_index": 0 + }, + { + "name": "CLIP", + "type": "CLIP", + "links": [ + 271, + 272 + ], + "shape": 3, + "slot_index": 1 + }, + { + "name": "show_help", + "type": "STRING", + "links": null, + "shape": 3 + } + ], + "properties": { + "Node name for S&R": "CR Apply LoRA Stack" + } + }, + { + "id": 211, + "type": "VAEDecode", + "pos": [ + 7993.507143276098, + -1005.2179548397995 + ], + "size": { + "0": 210, + "1": 46 + }, + "flags": {}, + "order": 28, + "mode": 0, + "inputs": [ + { + "name": "samples", + "type": "LATENT", + "link": 347 + }, + { + "name": "vae", + "type": "VAE", + "link": 338 + } + ], + "outputs": [ + { + "name": "IMAGE", + "type": "IMAGE", + "links": [ + 417 + ], + "slot_index": 0 + } + ], + "properties": { + "Node name for S&R": "VAEDecode" + } + }, + { + "id": 160, + "type": "CLIPTextEncode", + "pos": [ + 4255.344952087442, + -774.6115589012819 + ], + "size": { + "0": 425.27801513671875, + "1": 180.6060791015625 + }, + "flags": {}, + "order": 20, + "mode": 0, + "inputs": [ + { + "name": "clip", + "type": "CLIP", + "link": 272 + } + ], + "outputs": [ + { + "name": "CONDITIONING", + "type": "CONDITIONING", + "links": [ + 445 + ], + "slot_index": 0 + } + ], + "properties": { + "Node name for S&R": "CLIPTextEncode" + }, + "widgets_values": [ + "text, watermark" + ] + }, + { + "id": 164, + "type": "ADE_AnimateDiffLoaderGen1", + "pos": [ + 5707.480888441229, + -1138.7132590696226 + ], + "size": { + "0": 271.7644958496094, + "1": 242 + }, + "flags": {}, + "order": 18, + "mode": 0, + "inputs": [ + { + "name": "model", + "type": "MODEL", + "link": 279 + }, + { + "name": "context_options", + "type": "CONTEXT_OPTIONS", + "link": 280, + "slot_index": 1 + }, + { + "name": "motion_lora", + "type": "MOTION_LORA", + "link": 281, + "slot_index": 2 + }, + { + "name": "ad_settings", + "type": "AD_SETTINGS", + "link": null, + "slot_index": 3 + }, + { + "name": "ad_keyframes", + "type": "AD_KEYFRAMES", + "link": null + }, + { + "name": "sample_settings", + "type": "SAMPLE_SETTINGS", + "link": 282, + "slot_index": 5 + }, + { + "name": "scale_multival", + "type": "MULTIVAL", + "link": 283, + "slot_index": 6 + }, + { + "name": "effect_multival", + "type": "MULTIVAL", + "link": 284, + "slot_index": 7 + }, + { + "name": "per_block", + "type": "PER_BLOCK", + "link": null + } + ], + "outputs": [ + { + "name": "MODEL", + "type": "MODEL", + "links": [ + 451 + ], + "shape": 3, + "slot_index": 0 + } + ], + "properties": { + "Node name for S&R": "ADE_AnimateDiffLoaderGen1", + "ttNbgOverride": { + "color": "#2a363b", + "bgcolor": "#3f5159", + "groupcolor": "#3f789e" + } + }, + "widgets_values": [ + "ALCM_sd15_t2v_beta.ckpt", + "lcm avg(sqrt_linear,linear)" + ] + }, + { + "id": 263, + "type": "ModelSamplingDiscrete", + "pos": [ + 5669.480888441229, + -1253.7132590696226 + ], + "size": { + "0": 315, + "1": 82 + }, + "flags": {}, + "order": 21, + "mode": 0, + "inputs": [ + { + "name": "model", + "type": "MODEL", + "link": 451 + } + ], + "outputs": [ + { + "name": "MODEL", + "type": "MODEL", + "links": [ + 452, + 453 + ], + "shape": 3, + "slot_index": 0 + } + ], + "properties": { + "Node name for S&R": "ModelSamplingDiscrete" + }, + "widgets_values": [ + "lcm", + false + ] + }, + { + "id": 162, + "type": "VAEEncode", + "pos": [ + 3890.67190821065, + -1085.2910114736687 + ], + "size": { + "0": 210, + "1": 46 + }, + "flags": {}, + "order": 17, + "mode": 0, + "inputs": [ + { + "name": "pixels", + "type": "IMAGE", + "link": 521 + }, + { + "name": "vae", + "type": "VAE", + "link": 276 + } + ], + "outputs": [ + { + "name": "LATENT", + "type": "LATENT", + "links": [ + 270 + ], + "shape": 3, + "slot_index": 0 + } + ], + "properties": { + "Node name for S&R": "VAEEncode" + } + }, + { + "id": 161, + "type": "VAEDecode", + "pos": [ + 6714.121918788901, + -1120.3067361056192 + ], + "size": { + "0": 210, + "1": 46 + }, + "flags": {}, + "order": 24, + "mode": 0, + "inputs": [ + { + "name": "samples", + "type": "LATENT", + "link": 273 + }, + { + "name": "vae", + "type": "VAE", + "link": 274 + } + ], + "outputs": [ + { + "name": "IMAGE", + "type": "IMAGE", + "links": [ + 483 + ], + "slot_index": 0 + } + ], + "properties": { + "Node name for S&R": "VAEDecode" + } + }, + { + "id": 285, + "type": "Reroute", + "pos": [ + 6816.536100405279, + -1256.5018636629773 + ], + "size": [ + 75, + 26 + ], + "flags": {}, + "order": 13, + "mode": 0, + "inputs": [ + { + "name": "", + "type": "*", + "link": 499 + } + ], + "outputs": [ + { + "name": "", + "type": "AUDIO", + "links": [ + 500, + 501, + 518 + ], + "slot_index": 0 + } + ], + "properties": { + "showOutputText": false, + "horizontal": false + } + }, + { + "id": 276, + "type": "VHS_VideoCombine", + "pos": [ + 7049.121918788901, + -1241.3067361056192 + ], + "size": [ + 452.57537841796875, + 1039.9868332435344 + ], + "flags": {}, + "order": 26, + "mode": 0, + "inputs": [ + { + "name": "images", + "type": "IMAGE", + "link": 483 + }, + { + "name": "audio", + "type": "AUDIO", + "link": 500 + }, + { + "name": "meta_batch", + "type": "VHS_BatchManager", + "link": null + }, + { + "name": "vae", + "type": "VAE", + "link": null + } + ], + "outputs": [ + { + "name": "Filenames", + "type": "VHS_FILENAMES", + "links": null, + "shape": 3 + } + ], + "properties": { + "Node name for S&R": "VHS_VideoCombine" + }, + "widgets_values": { + "frame_rate": 30, + "loop_count": 0, + "filename_prefix": "AnimateDiff", + "format": "video/h264-mp4", + "pix_fmt": "yuv420p", + "crf": 19, + "save_metadata": true, + "pingpong": false, + "save_output": true, + "videopreview": { + "hidden": false, + "paused": false, + "params": { + "filename": "AnimateDiff_08190-audio.mp4", + "subfolder": "", + "type": "output", + "format": "video/h264-mp4", + "frame_rate": 30 + } + } + } + }, + { + "id": 158, + "type": "KSampler", + "pos": [ + 6304.121918788901, + -1119.3067361056192 + ], + "size": { + "0": 315, + "1": 262 + }, + "flags": {}, + "order": 23, + "mode": 0, + "inputs": [ + { + "name": "model", + "type": "MODEL", + "link": 453 + }, + { + "name": "positive", + "type": "CONDITIONING", + "link": 522 + }, + { + "name": "negative", + "type": "CONDITIONING", + "link": 523 + }, + { + "name": "latent_image", + "type": "LATENT", + "link": 270 + } + ], + "outputs": [ + { + "name": "LATENT", + "type": "LATENT", + "links": [ + 273, + 475 + ], + "slot_index": 0 + } + ], + "properties": { + "Node name for S&R": "KSampler" + }, + "widgets_values": [ + 156680208700286, + "fixed", + 6, + 1, + "lcm", + "sgm_uniform", + 0.43 + ] + }, + { + "id": 209, + "type": "NNLatentUpscale", + "pos": [ + 7620.748864651938, + -1224.193900138928 + ], + "size": { + "0": 315, + "1": 82 + }, + "flags": {}, + "order": 25, + "mode": 0, + "inputs": [ + { + "name": "latent", + "type": "LATENT", + "link": 475 + } + ], + "outputs": [ + { + "name": "LATENT", + "type": "LATENT", + "links": [ + 411 + ], + "shape": 3, + "slot_index": 0 + } + ], + "properties": { + "Node name for S&R": "NNLatentUpscale" + }, + "widgets_values": [ + "SD 1.x", + 2 + ] + }, + { + "id": 159, + "type": "CLIPTextEncode", + "pos": [ + 4250.671908210652, + -1031.2910114736687 + ], + "size": { + "0": 422.84503173828125, + "1": 164.31304931640625 + }, + "flags": {}, + "order": 19, + "mode": 0, + "inputs": [ + { + "name": "clip", + "type": "CLIP", + "link": 271 + } + ], + "outputs": [ + { + "name": "CONDITIONING", + "type": "CONDITIONING", + "links": [ + 444 + ], + "slot_index": 0 + } + ], + "properties": { + "Node name for S&R": "CLIPTextEncode" + }, + "widgets_values": [ + "ral-crystals, molten crystal music visualizer made out of mechanical ral-polygon" + ] + }, + { + "id": 213, + "type": "KSampler", + "pos": [ + 7634.748864651938, + -1069.193900138928 + ], + "size": { + "0": 315, + "1": 262 + }, + "flags": {}, + "order": 27, + "mode": 0, + "inputs": [ + { + "name": "model", + "type": "MODEL", + "link": 452 + }, + { + "name": "positive", + "type": "CONDITIONING", + "link": 524 + }, + { + "name": "negative", + "type": "CONDITIONING", + "link": 525 + }, + { + "name": "latent_image", + "type": "LATENT", + "link": 411 + } + ], + "outputs": [ + { + "name": "LATENT", + "type": "LATENT", + "links": [ + 347 + ], + "slot_index": 0 + } + ], + "properties": { + "Node name for S&R": "KSampler" + }, + "widgets_values": [ + 156680208700286, + "fixed", + 8, + 1, + "lcm", + "sgm_uniform", + 0.19 + ] + }, + { + "id": 256, + "type": "ImageCASBatch", + "pos": [ + 8014.748864651934, + -1185.193900138928 + ], + "size": { + "0": 462, + "1": 82 + }, + "flags": {}, + "order": 29, + "mode": 0, + "inputs": [ + { + "name": "image", + "type": "IMAGE", + "link": 417 + } + ], + "outputs": [ + { + "name": "IMAGE", + "type": "IMAGE", + "links": [ + 478, + 517 + ], + "shape": 3, + "slot_index": 0 + } + ], + "properties": { + "Node name for S&R": "ImageCASBatch" + }, + "widgets_values": [ + 0.8, + 4 + ] + }, + { + "id": 212, + "type": "VHS_VideoCombine", + "pos": [ + 8571.121918788902, + -1234.2432533161223 + ], + "size": [ + 452.57537841796875, + 1039.9868332435344 + ], + "flags": {}, + "order": 30, + "mode": 0, + "inputs": [ + { + "name": "images", + "type": "IMAGE", + "link": 478 + }, + { + "name": "audio", + "type": "AUDIO", + "link": 501 + }, + { + "name": "meta_batch", + "type": "VHS_BatchManager", + "link": null + }, + { + "name": "vae", + "type": "VAE", + "link": null + } + ], + "outputs": [ + { + "name": "Filenames", + "type": "VHS_FILENAMES", + "links": null, + "shape": 3 + } + ], + "properties": { + "Node name for S&R": "VHS_VideoCombine" + }, + "widgets_values": { + "frame_rate": 30, + "loop_count": 0, + "filename_prefix": "AnimateDiff", + "format": "video/h264-mp4", + "pix_fmt": "yuv420p", + "crf": 19, + "save_metadata": true, + "pingpong": false, + "save_output": true, + "videopreview": { + "hidden": false, + "paused": false, + "params": { + "filename": "AnimateDiff_08191-audio.mp4", + "subfolder": "", + "type": "output", + "format": "video/h264-mp4", + "frame_rate": 30 + } + } + } + }, + { + "id": 216, + "type": "Reroute", + "pos": [ + 3712.67190821065, + -1084.2910114736687 + ], + "size": [ + 75, + 26 + ], + "flags": {}, + "order": 15, + "mode": 0, + "inputs": [ + { + "name": "", + "type": "*", + "link": 489 + } + ], + "outputs": [ + { + "name": "", + "type": "IMAGE", + "links": [ + 521 + ], + "slot_index": 0 + } + ], + "properties": { + "showOutputText": false, + "horizontal": false + } + }, + { + "id": 280, + "type": "VHS_LoadVideo", + "pos": [ + 2454.8252762634597, + -1063.2910114736687 + ], + "size": [ + 235.1999969482422, + 632.4249949455261 + ], + "flags": {}, + "order": 7, + "mode": 0, + "inputs": [ + { + "name": "meta_batch", + "type": "VHS_BatchManager", + "link": null + }, + { + "name": "vae", + "type": "VAE", + "link": null + } + ], + "outputs": [ + { + "name": "IMAGE", + "type": "IMAGE", + "links": [ + 488 + ], + "shape": 3, + "slot_index": 0 + }, + { + "name": "frame_count", + "type": "INT", + "links": null, + "shape": 3, + "slot_index": 1 + }, + { + "name": "audio", + "type": "AUDIO", + "links": [ + 499 + ], + "shape": 3, + "slot_index": 2 + }, + { + "name": "video_info", + "type": "VHS_VIDEOINFO", + "links": null, + "shape": 3 + } + ], + "properties": { + "Node name for S&R": "VHS_LoadVideo" + }, + "widgets_values": { + "video": "spinny_vis_swirl1.mp4", + "force_rate": 0, + "force_size": "Disabled", + "custom_width": 512, + "custom_height": 512, + "frame_load_cap": 0, + "skip_first_frames": 0, + "select_every_nth": 1, + "choose video to upload": "image", + "videopreview": { + "hidden": false, + "paused": false, + "params": { + "frame_load_cap": 0, + "skip_first_frames": 0, + "force_rate": 0, + "filename": "spinny_vis_swirl1.mp4", + "type": "input", + "format": "video/mp4", + "select_every_nth": 1 + } + } + } + }, + { + "id": 282, + "type": "ImageScaleBy", + "pos": [ + 2783.8252762634597, + -1057.2910114736687 + ], + "size": { + "0": 315, + "1": 82 + }, + "flags": {}, + "order": 12, + "mode": 0, + "inputs": [ + { + "name": "image", + "type": "IMAGE", + "link": 488 + } + ], + "outputs": [ + { + "name": "IMAGE", + "type": "IMAGE", + "links": [ + 489 + ], + "shape": 3, + "slot_index": 0 + } + ], + "properties": { + "Node name for S&R": "ImageScaleBy" + }, + "widgets_values": [ + "nearest-exact", + 0.5 + ] + }, + { + "id": 11, + "type": "CheckpointLoaderSimple", + "pos": [ + 3309.67190821065, + -1047.2910114736687 + ], + "size": { + "0": 315, + "1": 98 + }, + "flags": {}, + "order": 8, + "mode": 0, + "outputs": [ + { + "name": "MODEL", + "type": "MODEL", + "links": [ + 287 + ], + "slot_index": 0 + }, + { + "name": "CLIP", + "type": "CLIP", + "links": [ + 288 + ], + "slot_index": 1 + }, + { + "name": "VAE", + "type": "VAE", + "links": [ + 274, + 276, + 338 + ], + "slot_index": 2 + } + ], + "properties": { + "Node name for S&R": "CheckpointLoaderSimple" + }, + "widgets_values": [ + "photonLCM_v10.safetensors" + ] + }, + { + "id": 29, + "type": "CR LoRA Stack", + "pos": [ + 3469.67190821065, + -886.2910114736687 + ], + "size": { + "0": 315, + "1": 342 + }, + "flags": {}, + "order": 14, + "mode": 0, + "inputs": [ + { + "name": "lora_stack", + "type": "LORA_STACK", + "link": 515 + } + ], + "outputs": [ + { + "name": "LORA_STACK", + "type": "LORA_STACK", + "links": [ + 289 + ], + "shape": 3, + "slot_index": 0 + }, + { + "name": "show_help", + "type": "STRING", + "links": null, + "shape": 3 + } + ], + "properties": { + "Node name for S&R": "CR LoRA Stack" + }, + "widgets_values": [ + "On", + "ral-polygon-sd15.safetensors", + 1, + 1, + "On", + "add_detail.safetensors", + 1, + 1, + "On", + "ral-crystals-sd15.safetensors", + 1, + 1 + ] + }, + { + "id": 299, + "type": "CR LoRA Stack", + "pos": [ + 3469.67190821065, + -499.29101147366873 + ], + "size": { + "0": 315, + "1": 342 + }, + "flags": {}, + "order": 9, + "mode": 4, + "inputs": [ + { + "name": "lora_stack", + "type": "LORA_STACK", + "link": null + } + ], + "outputs": [ + { + "name": "LORA_STACK", + "type": "LORA_STACK", + "links": [ + 515 + ], + "shape": 3, + "slot_index": 0 + }, + { + "name": "show_help", + "type": "STRING", + "links": null, + "shape": 3 + } + ], + "properties": { + "Node name for S&R": "CR LoRA Stack" + }, + "widgets_values": [ + "On", + "ral-copperwire-sd15.safetensors", + 1, + 1, + "Off", + "add_detail.safetensors", + 1, + 1, + "Off", + "ral-crystals-sd15.safetensors", + 1, + 1 + ] + }, + { + "id": 175, + "type": "Apply ControlNet Stack", + "pos": [ + 4974.671908210652, + -929.2910114736687 + ], + "size": { + "0": 304.79998779296875, + "1": 66 + }, + "flags": {}, + "order": 22, + "mode": 4, + "inputs": [ + { + "name": "positive", + "type": "CONDITIONING", + "link": 444 + }, + { + "name": "negative", + "type": "CONDITIONING", + "link": 445 + }, + { + "name": "cnet_stack", + "type": "CONTROL_NET_STACK", + "link": null, + "slot_index": 2 + } + ], + "outputs": [ + { + "name": "CONDITIONING+", + "type": "CONDITIONING", + "links": [ + 522, + 524 + ], + "shape": 3, + "slot_index": 0 + }, + { + "name": "CONDITIONING-", + "type": "CONDITIONING", + "links": [ + 523, + 525 + ], + "shape": 3, + "slot_index": 1 + } + ], + "properties": { + "Node name for S&R": "Apply ControlNet Stack", + "ttNbgOverride": { + "color": "#2a363b", + "bgcolor": "#3f5159", + "groupcolor": "#3f789e" + } + }, + "shape": 1 + }, + { + "id": 301, + "type": "UpscaleModelLoader", + "pos": [ + 9195, + -1249 + ], + "size": { + "0": 315, + "1": 58 + }, + "flags": {}, + "order": 10, + "mode": 0, + "outputs": [ + { + "name": "UPSCALE_MODEL", + "type": "UPSCALE_MODEL", + "links": [ + 516 + ], + "shape": 3 + } + ], + "properties": { + "Node name for S&R": "UpscaleModelLoader" + }, + "widgets_values": [ + "RealESRGAN_x2.pth" + ] + }, + { + "id": 300, + "type": "ImageUpscaleWithModel", + "pos": [ + 9234, + -1141 + ], + "size": { + "0": 241.79998779296875, + "1": 46 + }, + "flags": {}, + "order": 31, + "mode": 0, + "inputs": [ + { + "name": "upscale_model", + "type": "UPSCALE_MODEL", + "link": 516, + "slot_index": 0 + }, + { + "name": "image", + "type": "IMAGE", + "link": 517 + } + ], + "outputs": [ + { + "name": "IMAGE", + "type": "IMAGE", + "links": [ + 519 + ], + "shape": 3, + "slot_index": 0 + } + ], + "properties": { + "Node name for S&R": "ImageUpscaleWithModel" + } + }, + { + "id": 302, + "type": "VHS_VideoCombine", + "pos": [ + 9603, + -1234 + ], + "size": [ + 452.57537841796875, + 1040.4529705047607 + ], + "flags": {}, + "order": 32, + "mode": 0, + "inputs": [ + { + "name": "images", + "type": "IMAGE", + "link": 519 + }, + { + "name": "audio", + "type": "AUDIO", + "link": 518 + }, + { + "name": "meta_batch", + "type": "VHS_BatchManager", + "link": null + }, + { + "name": "vae", + "type": "VAE", + "link": null + } + ], + "outputs": [ + { + "name": "Filenames", + "type": "VHS_FILENAMES", + "links": null, + "shape": 3 + } + ], + "properties": { + "Node name for S&R": "VHS_VideoCombine" + }, + "widgets_values": { + "frame_rate": 30, + "loop_count": 0, + "filename_prefix": "AnimateDiff", + "format": "video/h264-mp4", + "pix_fmt": "yuv420p", + "crf": 19, + "save_metadata": true, + "pingpong": false, + "save_output": true, + "videopreview": { + "hidden": false, + "paused": false, + "params": { + "filename": "AnimateDiff_08191-audio.mp4", + "subfolder": "", + "type": "output", + "format": "video/h264-mp4", + "frame_rate": 30 + } + } + } + } + ], + "links": [ + [ + 270, + 162, + 0, + 158, + 3, + "LATENT" + ], + [ + 271, + 174, + 1, + 159, + 0, + "CLIP" + ], + [ + 272, + 174, + 1, + 160, + 0, + "CLIP" + ], + [ + 273, + 158, + 0, + 161, + 0, + "LATENT" + ], + [ + 274, + 11, + 2, + 161, + 1, + "VAE" + ], + [ + 276, + 11, + 2, + 162, + 1, + "VAE" + ], + [ + 279, + 174, + 0, + 164, + 0, + "MODEL" + ], + [ + 280, + 167, + 0, + 164, + 1, + "CONTEXT_OPTIONS" + ], + [ + 281, + 172, + 0, + 164, + 2, + "MOTION_LORA" + ], + [ + 282, + 165, + 0, + 164, + 5, + "SAMPLE_SETTINGS" + ], + [ + 283, + 166, + 0, + 164, + 6, + "MULTIVAL" + ], + [ + 284, + 168, + 0, + 164, + 7, + "MULTIVAL" + ], + [ + 285, + 169, + 0, + 165, + 2, + "CUSTOM_CFG" + ], + [ + 287, + 11, + 0, + 174, + 0, + "MODEL" + ], + [ + 288, + 11, + 1, + 174, + 1, + "CLIP" + ], + [ + 289, + 29, + 0, + 174, + 2, + "LORA_STACK" + ], + [ + 338, + 11, + 2, + 211, + 1, + "VAE" + ], + [ + 347, + 213, + 0, + 211, + 0, + "LATENT" + ], + [ + 411, + 209, + 0, + 213, + 3, + "LATENT" + ], + [ + 417, + 211, + 0, + 256, + 0, + "IMAGE" + ], + [ + 444, + 159, + 0, + 175, + 0, + "CONDITIONING" + ], + [ + 445, + 160, + 0, + 175, + 1, + "CONDITIONING" + ], + [ + 451, + 164, + 0, + 263, + 0, + "MODEL" + ], + [ + 452, + 263, + 0, + 213, + 0, + "MODEL" + ], + [ + 453, + 263, + 0, + 158, + 0, + "MODEL" + ], + [ + 475, + 158, + 0, + 209, + 0, + "LATENT" + ], + [ + 478, + 256, + 0, + 212, + 0, + "IMAGE" + ], + [ + 483, + 161, + 0, + 276, + 0, + "IMAGE" + ], + [ + 488, + 280, + 0, + 282, + 0, + "IMAGE" + ], + [ + 489, + 282, + 0, + 216, + 0, + "*" + ], + [ + 499, + 280, + 2, + 285, + 0, + "*" + ], + [ + 500, + 285, + 0, + 276, + 1, + "AUDIO" + ], + [ + 501, + 285, + 0, + 212, + 1, + "AUDIO" + ], + [ + 515, + 299, + 0, + 29, + 0, + "LORA_STACK" + ], + [ + 516, + 301, + 0, + 300, + 0, + "UPSCALE_MODEL" + ], + [ + 517, + 256, + 0, + 300, + 1, + "IMAGE" + ], + [ + 518, + 285, + 0, + 302, + 1, + "AUDIO" + ], + [ + 519, + 300, + 0, + 302, + 0, + "IMAGE" + ], + [ + 521, + 216, + 0, + 162, + 0, + "IMAGE" + ], + [ + 522, + 175, + 0, + 158, + 1, + "CONDITIONING" + ], + [ + 523, + 175, + 1, + 158, + 2, + "CONDITIONING" + ], + [ + 524, + 175, + 0, + 213, + 1, + "CONDITIONING" + ], + [ + 525, + 175, + 1, + 213, + 2, + "CONDITIONING" + ] + ], + "groups": [ + { + "title": "samp", + "bounding": [ + 6158, + -1352, + 1388, + 1170 + ], + "color": "#3f789e", + "font_size": 24, + "locked": false + }, + { + "title": "adiff", + "bounding": [ + 5318, + -1369, + 812, + 1134 + ], + "color": "#3f789e", + "font_size": 24, + "locked": false + }, + { + "title": "model", + "bounding": [ + 3251, + -1378, + 2041, + 1233 + ], + "color": "#3f789e", + "font_size": 24, + "locked": false + }, + { + "title": "Audio vidualizers", + "bounding": [ + 2403, + -1176, + 816, + 815 + ], + "color": "#3f789e", + "font_size": 24, + "locked": false + }, + { + "title": "Samp2", + "bounding": [ + 7562, + -1344, + 1505, + 1175 + ], + "color": "#3f789e", + "font_size": 24, + "locked": false + }, + { + "title": "Upscale", + "bounding": [ + 9151, + -1343, + 943, + 1162 + ], + "color": "#3f789e", + "font_size": 24, + "locked": false + } + ], + "config": {}, + "extra": {}, + "version": 0.4 +} \ No newline at end of file diff --git a/examples/spinnyvis/part_1_visualizerVERSION2.json b/examples/spinnyvis/part_1_visualizerVERSION2.json new file mode 100644 index 0000000..c820f67 --- /dev/null +++ b/examples/spinnyvis/part_1_visualizerVERSION2.json @@ -0,0 +1,6807 @@ +{ + "last_node_id": 230, + "last_link_id": 394, + "nodes": [ + { + "id": 28, + "type": "GetNode", + "pos": [ + 5843.73828125, + -2293.697509765625 + ], + "size": [ + 210, + 58 + ], + "flags": {}, + "order": 0, + "mode": 0, + "inputs": [], + "outputs": [ + { + "name": "AUDIO", + "type": "AUDIO", + "links": [ + 34, + 168 + ], + "slot_index": 0 + } + ], + "title": "Get_audio", + "properties": {}, + "widgets_values": [ + "audio" + ] + }, + { + "id": 78, + "type": "DownloadOpenUnmixModel", + "pos": [ + -2080, + -1740 + ], + "size": [ + 361.20001220703125, + 58 + ], + "flags": {}, + "order": 1, + "mode": 0, + "inputs": [], + "outputs": [ + { + "name": "OPEN_UNMIX_MODEL", + "type": "OPEN_UNMIX_MODEL", + "links": [ + 250 + ], + "slot_index": 0, + "shape": 3 + } + ], + "properties": { + "Node name for S&R": "DownloadOpenUnmixModel" + }, + "widgets_values": [ + "umxl" + ] + }, + { + "id": 84, + "type": "SetNode", + "pos": [ + -1640, + -1560 + ], + "size": [ + 210, + 58 + ], + "flags": {}, + "order": 54, + "mode": 0, + "inputs": [ + { + "name": "IMAGE", + "type": "IMAGE", + "link": 103 + } + ], + "outputs": [ + { + "name": "*", + "type": "*", + "links": null + } + ], + "title": "Set_empty_img", + "properties": { + "previousName": "" + }, + "widgets_values": [ + "empty_img" + ], + "color": "#2a363b", + "bgcolor": "#3f5159" + }, + { + "id": 87, + "type": "AudioFilter", + "pos": [ + -1130, + -1490 + ], + "size": [ + 252, + 46 + ], + "flags": {}, + "order": 59, + "mode": 0, + "inputs": [ + { + "name": "audio", + "type": "AUDIO", + "link": 253 + }, + { + "name": "filters", + "type": "FREQUENCY_FILTER", + "link": 107 + } + ], + "outputs": [ + { + "name": "AUDIO", + "type": "AUDIO", + "links": [ + 266 + ], + "slot_index": 0, + "shape": 3 + } + ], + "properties": { + "Node name for S&R": "AudioFilter" + }, + "widgets_values": [] + }, + { + "id": 92, + "type": "SetNode", + "pos": [ + -780, + -1390 + ], + "size": [ + 210, + 58 + ], + "flags": {}, + "order": 93, + "mode": 0, + "inputs": [ + { + "name": "FEATURE", + "type": "FEATURE", + "link": 267 + } + ], + "outputs": [ + { + "name": "*", + "type": "*", + "links": null + } + ], + "title": "Set_kick_feature", + "properties": { + "previousName": "" + }, + "widgets_values": [ + "kick_feature" + ] + }, + { + "id": 93, + "type": "SetNode", + "pos": [ + -790, + -1210 + ], + "size": [ + 210, + 58 + ], + "flags": {}, + "order": 79, + "mode": 0, + "inputs": [ + { + "name": "FEATURE", + "type": "FEATURE", + "link": 269 + } + ], + "outputs": [ + { + "name": "*", + "type": "*", + "links": null + } + ], + "title": "Set_drum_feature", + "properties": { + "previousName": "" + }, + "widgets_values": [ + "drum_feature" + ] + }, + { + "id": 99, + "type": "SetNode", + "pos": [ + -780, + -820 + ], + "size": [ + 210, + 58 + ], + "flags": {}, + "order": 86, + "mode": 0, + "inputs": [ + { + "name": "FEATURE", + "type": "FEATURE", + "link": 275 + } + ], + "outputs": [ + { + "name": "*", + "type": "*", + "links": null + } + ], + "title": "Set_other_feature", + "properties": { + "previousName": "" + }, + "widgets_values": [ + "other_feature" + ] + }, + { + "id": 100, + "type": "SetNode", + "pos": [ + -1620, + -1450 + ], + "size": [ + 210, + 58 + ], + "flags": {}, + "order": 55, + "mode": 0, + "inputs": [ + { + "name": "MASK", + "type": "MASK", + "link": 123 + } + ], + "outputs": [ + { + "name": "*", + "type": "*", + "links": null + } + ], + "title": "Set_empty_mask", + "properties": { + "previousName": "" + }, + "widgets_values": [ + "empty_mask" + ], + "color": "#1c5715", + "bgcolor": "#1f401b" + }, + { + "id": 83, + "type": "PreviewAudio", + "pos": [ + -950, + -2330 + ], + "size": [ + 315, + 76.00000762939453 + ], + "flags": {}, + "order": 78, + "mode": 0, + "inputs": [ + { + "name": "audio", + "type": "AUDIO", + "link": 131 + } + ], + "outputs": [], + "properties": { + "Node name for S&R": "PreviewAudio" + }, + "widgets_values": [ + null + ] + }, + { + "id": 105, + "type": "PreviewAudio", + "pos": [ + -950, + -2180 + ], + "size": [ + 315, + 76 + ], + "flags": {}, + "order": 80, + "mode": 0, + "inputs": [ + { + "name": "audio", + "type": "AUDIO", + "link": 132 + } + ], + "outputs": [], + "properties": { + "Node name for S&R": "PreviewAudio" + }, + "widgets_values": [ + null + ] + }, + { + "id": 106, + "type": "PreviewAudio", + "pos": [ + -950, + -2020 + ], + "size": [ + 315, + 76 + ], + "flags": {}, + "order": 82, + "mode": 0, + "inputs": [ + { + "name": "audio", + "type": "AUDIO", + "link": 133 + } + ], + "outputs": [], + "properties": { + "Node name for S&R": "PreviewAudio" + }, + "widgets_values": [ + null + ] + }, + { + "id": 88, + "type": "SetNode", + "pos": [ + -1190, + -2330 + ], + "size": [ + 210, + 58 + ], + "flags": {}, + "order": 60, + "mode": 0, + "inputs": [ + { + "name": "AUDIO", + "type": "AUDIO", + "link": 254 + } + ], + "outputs": [ + { + "name": "AUDIO", + "type": "AUDIO", + "links": [ + 131 + ], + "slot_index": 0 + } + ], + "title": "Set_audio_drums", + "properties": { + "previousName": "" + }, + "widgets_values": [ + "audio_drums" + ] + }, + { + "id": 89, + "type": "SetNode", + "pos": [ + -1180, + -2170 + ], + "size": [ + 210, + 58 + ], + "flags": {}, + "order": 62, + "mode": 0, + "inputs": [ + { + "name": "AUDIO", + "type": "AUDIO", + "link": 255 + } + ], + "outputs": [ + { + "name": "AUDIO", + "type": "AUDIO", + "links": [ + 132 + ], + "slot_index": 0 + } + ], + "title": "Set_audio__vocals", + "properties": { + "previousName": "" + }, + "widgets_values": [ + "audio__vocals" + ] + }, + { + "id": 90, + "type": "SetNode", + "pos": [ + -1180, + -2020 + ], + "size": [ + 210, + 58 + ], + "flags": {}, + "order": 64, + "mode": 0, + "inputs": [ + { + "name": "AUDIO", + "type": "AUDIO", + "link": 257 + } + ], + "outputs": [ + { + "name": "AUDIO", + "type": "AUDIO", + "links": [ + 133 + ], + "slot_index": 0 + } + ], + "title": "Set_audio_bass", + "properties": { + "previousName": "" + }, + "widgets_values": [ + "audio_bass" + ] + }, + { + "id": 102, + "type": "SetNode", + "pos": [ + -1183, + -1729 + ], + "size": [ + 210, + 58 + ], + "flags": {}, + "order": 2, + "mode": 0, + "inputs": [ + { + "name": "FEATURE_PIPE", + "type": "FEATURE_PIPE", + "link": null + } + ], + "outputs": [ + { + "name": "*", + "type": "*", + "links": [], + "slot_index": 0 + } + ], + "title": "Set_feature_pipe", + "properties": { + "previousName": "" + }, + "widgets_values": [ + "feature_pipe" + ] + }, + { + "id": 97, + "type": "SetNode", + "pos": [ + -770, + -960 + ], + "size": [ + 210, + 58 + ], + "flags": {}, + "order": 83, + "mode": 0, + "inputs": [ + { + "name": "FEATURE", + "type": "FEATURE", + "link": 273 + } + ], + "outputs": [ + { + "name": "*", + "type": "*", + "links": null + } + ], + "title": "Set_bass_feature", + "properties": { + "previousName": "bass_feature" + }, + "widgets_values": [ + "bass_feature" + ] + }, + { + "id": 95, + "type": "SetNode", + "pos": [ + -790, + -1070 + ], + "size": [ + 210, + 58 + ], + "flags": {}, + "order": 81, + "mode": 0, + "inputs": [ + { + "name": "FEATURE", + "type": "FEATURE", + "link": 271 + } + ], + "outputs": [ + { + "name": "*", + "type": "*", + "links": null + } + ], + "title": "Set_vocal_feature", + "properties": { + "previousName": "vocal_feature" + }, + "widgets_values": [ + "vocal_feature" + ] + }, + { + "id": 101, + "type": "SetNode", + "pos": [ + -1640, + -1310 + ], + "size": [ + 210, + 58 + ], + "flags": {}, + "order": 56, + "mode": 0, + "inputs": [ + { + "name": "INT", + "type": "INT", + "link": 124 + } + ], + "outputs": [ + { + "name": "*", + "type": "*", + "links": null + } + ], + "title": "Set_frame_count", + "properties": { + "previousName": "frame_count" + }, + "widgets_values": [ + "frame_count" + ], + "color": "#1b4669", + "bgcolor": "#29699c" + }, + { + "id": 81, + "type": "SetNode", + "pos": [ + -1949, + -2062 + ], + "size": [ + 210, + 58 + ], + "flags": {}, + "order": 42, + "mode": 0, + "inputs": [ + { + "name": "AUDIO", + "type": "AUDIO", + "link": 100 + } + ], + "outputs": [ + { + "name": "AUDIO", + "type": "AUDIO", + "links": [ + 136 + ], + "slot_index": 0 + } + ], + "title": "Set_audio", + "properties": { + "previousName": "audio" + }, + "widgets_values": [ + "audio" + ] + }, + { + "id": 110, + "type": "PreviewAudio", + "pos": [ + -1693, + -2088 + ], + "size": [ + 315, + 76.00000762939453 + ], + "flags": {}, + "order": 58, + "mode": 0, + "inputs": [ + { + "name": "audio", + "type": "AUDIO", + "link": 136 + } + ], + "outputs": [], + "properties": { + "Node name for S&R": "PreviewAudio" + }, + "widgets_values": [ + null + ] + }, + { + "id": 107, + "type": "PreviewAudio", + "pos": [ + -930, + -1890 + ], + "size": [ + 315, + 76 + ], + "flags": {}, + "order": 84, + "mode": 0, + "inputs": [ + { + "name": "audio", + "type": "AUDIO", + "link": 134 + } + ], + "outputs": [], + "properties": { + "Node name for S&R": "PreviewAudio" + }, + "widgets_values": [ + null + ] + }, + { + "id": 91, + "type": "SetNode", + "pos": [ + -1187, + -1875 + ], + "size": [ + 210, + 58 + ], + "flags": {}, + "order": 66, + "mode": 0, + "inputs": [ + { + "name": "AUDIO", + "type": "AUDIO", + "link": 259 + } + ], + "outputs": [ + { + "name": "AUDIO", + "type": "AUDIO", + "links": [ + 134, + 142, + 143 + ], + "slot_index": 0 + } + ], + "title": "Set_audio_other", + "properties": { + "previousName": "" + }, + "widgets_values": [ + "audio_other" + ] + }, + { + "id": 113, + "type": "AudioSubtract", + "pos": [ + -527, + -1875 + ], + "size": [ + 403.1999816894531, + 46 + ], + "flags": {}, + "order": 85, + "mode": 0, + "inputs": [ + { + "name": "audio1", + "type": "AUDIO", + "link": 142 + }, + { + "name": "audio2", + "type": "AUDIO", + "link": 143 + } + ], + "outputs": [ + { + "name": "AUDIO", + "type": "AUDIO", + "links": [ + 144 + ], + "slot_index": 0, + "shape": 3 + } + ], + "properties": { + "Node name for S&R": "AudioSubtract" + }, + "widgets_values": [] + }, + { + "id": 114, + "type": "SetNode", + "pos": [ + -75, + -1880 + ], + "size": [ + 210, + 58 + ], + "flags": {}, + "order": 94, + "mode": 0, + "inputs": [ + { + "name": "AUDIO", + "type": "AUDIO", + "link": 144 + } + ], + "outputs": [ + { + "name": "AUDIO", + "type": "AUDIO", + "links": [], + "slot_index": 0 + } + ], + "title": "Set_audio_empty", + "properties": { + "previousName": "audio_empty" + }, + "widgets_values": [ + "audio_empty" + ] + }, + { + "id": 118, + "type": "GetNode", + "pos": [ + 500, + -30 + ], + "size": [ + 210, + 58 + ], + "flags": {}, + "order": 3, + "mode": 0, + "inputs": [], + "outputs": [ + { + "name": "AUDIO", + "type": "AUDIO", + "links": [ + 316 + ], + "slot_index": 0 + } + ], + "title": "Get_audio_empty", + "properties": {}, + "widgets_values": [ + "audio_empty" + ] + }, + { + "id": 86, + "type": "FrequencyFilterPreset", + "pos": [ + -1148, + -1605 + ], + "size": [ + 405.5999755859375, + 58 + ], + "flags": {}, + "order": 4, + "mode": 0, + "inputs": [ + { + "name": "previous_filter", + "type": "FREQUENCY_FILTER", + "link": null, + "shape": 7 + } + ], + "outputs": [ + { + "name": "FREQUENCY_FILTER", + "type": "FREQUENCY_FILTER", + "links": [ + 107 + ], + "slot_index": 0, + "shape": 3 + } + ], + "properties": { + "Node name for S&R": "FrequencyFilterPreset" + }, + "widgets_values": [ + "isolate_kick_drum" + ] + }, + { + "id": 127, + "type": "SetNode", + "pos": [ + -482, + -601 + ], + "size": [ + 210, + 58 + ], + "flags": {}, + "order": 87, + "mode": 0, + "inputs": [ + { + "name": "FEATURE", + "type": "FEATURE", + "link": 277 + } + ], + "outputs": [ + { + "name": "*", + "type": "*", + "links": null + } + ], + "title": "Set_drum_feat_accum", + "properties": { + "previousName": "drum_feat_accum" + }, + "widgets_values": [ + "drum_feat_accum" + ] + }, + { + "id": 135, + "type": "GetNode", + "pos": [ + 240, + 560 + ], + "size": [ + 210, + 58 + ], + "flags": {}, + "order": 5, + "mode": 0, + "inputs": [], + "outputs": [ + { + "name": "AUDIO", + "type": "AUDIO", + "links": [ + 319 + ], + "slot_index": 0 + } + ], + "title": "Get_audio_empty", + "properties": {}, + "widgets_values": [ + "audio_empty" + ] + }, + { + "id": 143, + "type": "VHS_DuplicateImages", + "pos": [ + 4689.33349609375, + -1182.4765625 + ], + "size": [ + 214.232421875, + 78 + ], + "flags": {}, + "order": 74, + "mode": 0, + "inputs": [ + { + "name": "images", + "type": "IMAGE", + "link": 183 + }, + { + "name": "multiply_by", + "type": "INT", + "link": 182, + "widget": { + "name": "multiply_by" + } + } + ], + "outputs": [ + { + "name": "IMAGE", + "type": "IMAGE", + "links": [ + 185 + ], + "slot_index": 0, + "shape": 3 + }, + { + "name": "count", + "type": "INT", + "links": null, + "shape": 3 + } + ], + "properties": { + "Node name for S&R": "VHS_DuplicateImages" + }, + "widgets_values": { + "multiply_by": 1 + } + }, + { + "id": 150, + "type": "GetNode", + "pos": [ + 1330, + 200 + ], + "size": [ + 210, + 58 + ], + "flags": {}, + "order": 6, + "mode": 0, + "inputs": [], + "outputs": [ + { + "name": "FEATURE_PIPE", + "type": "FEATURE_PIPE", + "links": [], + "slot_index": 0 + } + ], + "title": "Get_feature_pipe", + "properties": {}, + "widgets_values": [ + "feature_pipe" + ] + }, + { + "id": 149, + "type": "GetNode", + "pos": [ + 1320, + 80 + ], + "size": [ + 210, + 58 + ], + "flags": {}, + "order": 7, + "mode": 0, + "inputs": [], + "outputs": [ + { + "name": "FEATURE", + "type": "FEATURE", + "links": [ + 326 + ], + "slot_index": 0 + } + ], + "title": "Get_time_feature_pulse", + "properties": {}, + "widgets_values": [ + "time_feature_pulse" + ] + }, + { + "id": 163, + "type": "SetNode", + "pos": [ + -639, + -66 + ], + "size": [ + 210, + 58 + ], + "flags": {}, + "order": 88, + "mode": 0, + "inputs": [ + { + "name": "FEATURE", + "type": "FEATURE", + "link": 278 + } + ], + "outputs": [ + { + "name": "*", + "type": "*", + "links": null + } + ], + "title": "Set_time_feature_pulse", + "properties": { + "previousName": "time_feature_pulse" + }, + "widgets_values": [ + "time_feature_pulse" + ] + }, + { + "id": 168, + "type": "SetNode", + "pos": [ + -670, + 460 + ], + "size": [ + 210, + 58 + ], + "flags": {}, + "order": 40, + "mode": 0, + "inputs": [ + { + "name": "FEATURE", + "type": "FEATURE", + "link": 281 + } + ], + "outputs": [ + { + "name": "*", + "type": "*", + "links": null + } + ], + "title": "Set_time_feature_pulse", + "properties": { + "previousName": "" + }, + "widgets_values": [ + "time_feature_pulse_0_0" + ] + }, + { + "id": 152, + "type": "GetNode", + "pos": [ + 1360, + 690 + ], + "size": [ + 210, + 58 + ], + "flags": {}, + "order": 8, + "mode": 0, + "inputs": [], + "outputs": [ + { + "name": "FEATURE", + "type": "FEATURE", + "links": [ + 332 + ], + "slot_index": 0 + } + ], + "title": "Get_time_feature_pulse_0", + "properties": {}, + "widgets_values": [ + "time_feature_pulse_0" + ] + }, + { + "id": 155, + "type": "GetNode", + "pos": [ + 1470, + 1320 + ], + "size": [ + 218.39999389648438, + 58 + ], + "flags": {}, + "order": 9, + "mode": 0, + "inputs": [], + "outputs": [ + { + "name": "FEATURE", + "type": "FEATURE", + "links": [ + 335 + ], + "slot_index": 0 + } + ], + "title": "Get_time_feature_pulse_0_0", + "properties": {}, + "widgets_values": [ + "time_feature_pulse_0_0" + ] + }, + { + "id": 130, + "type": "ImageToMask", + "pos": [ + 5469.33349609375, + -1062.4761962890625 + ], + "size": [ + 315, + 58 + ], + "flags": {}, + "order": 91, + "mode": 0, + "inputs": [ + { + "name": "image", + "type": "IMAGE", + "link": 185 + } + ], + "outputs": [ + { + "name": "MASK", + "type": "MASK", + "links": [ + 165, + 190 + ], + "slot_index": 0, + "shape": 3 + } + ], + "properties": { + "Node name for S&R": "ImageToMask" + }, + "widgets_values": [ + "red" + ] + }, + { + "id": 129, + "type": "ImageToMask", + "pos": [ + 5439.33349609375, + -1192.4765625 + ], + "size": [ + 315, + 58 + ], + "flags": {}, + "order": 104, + "mode": 0, + "inputs": [ + { + "name": "image", + "type": "IMAGE", + "link": 343 + } + ], + "outputs": [ + { + "name": "MASK", + "type": "MASK", + "links": [ + 164 + ], + "slot_index": 0, + "shape": 3 + } + ], + "properties": { + "Node name for S&R": "ImageToMask" + }, + "widgets_values": [ + "red" + ] + }, + { + "id": 132, + "type": "MaskToImage", + "pos": [ + 6389.33349609375, + -1012.4761352539062 + ], + "size": [ + 264.5999755859375, + 26 + ], + "flags": {}, + "order": 107, + "mode": 0, + "inputs": [ + { + "name": "mask", + "type": "MASK", + "link": 239 + } + ], + "outputs": [ + { + "name": "IMAGE", + "type": "IMAGE", + "links": [ + 169 + ], + "slot_index": 0, + "shape": 3 + } + ], + "properties": { + "Node name for S&R": "MaskToImage" + }, + "widgets_values": [] + }, + { + "id": 57, + "type": "GetNode", + "pos": [ + 3668.51025390625, + -2293.11669921875 + ], + "size": [ + 210, + 58 + ], + "flags": {}, + "order": 10, + "mode": 0, + "inputs": [], + "outputs": [ + { + "name": "FEATURE", + "type": "FEATURE", + "links": [ + 341 + ], + "slot_index": 0 + } + ], + "title": "Get_vocal_feature", + "properties": {}, + "widgets_values": [ + "vocal_feature" + ] + }, + { + "id": 58, + "type": "GetNode", + "pos": [ + 3662.51025390625, + -2126.116943359375 + ], + "size": [ + 210, + 58 + ], + "flags": {}, + "order": 11, + "mode": 0, + "inputs": [], + "outputs": [ + { + "name": "FEATURE_PIPE", + "type": "FEATURE_PIPE", + "links": [], + "slot_index": 0 + } + ], + "title": "Get_feature_pipe", + "properties": {}, + "widgets_values": [ + "feature_pipe" + ] + }, + { + "id": 133, + "type": "VHS_VideoCombine", + "pos": [ + 6729.33349609375, + -1332.476806640625 + ], + "size": [ + 214.7587890625, + 670.359375 + ], + "flags": {}, + "order": 108, + "mode": 0, + "inputs": [ + { + "name": "images", + "type": "IMAGE", + "link": 169 + }, + { + "name": "audio", + "type": "AUDIO", + "link": 168, + "shape": 7 + }, + { + "name": "meta_batch", + "type": "VHS_BatchManager", + "link": null, + "shape": 7 + }, + { + "name": "vae", + "type": "VAE", + "link": null, + "shape": 7 + } + ], + "outputs": [ + { + "name": "Filenames", + "type": "VHS_FILENAMES", + "links": null, + "shape": 3 + } + ], + "properties": { + "Node name for S&R": "VHS_VideoCombine" + }, + "widgets_values": { + "frame_rate": 30, + "loop_count": 0, + "filename_prefix": "AnimateDiff", + "format": "video/h264-mp4", + "pix_fmt": "yuv420p", + "crf": 19, + "save_metadata": true, + "trim_to_audio": false, + "pingpong": false, + "save_output": true, + "videopreview": { + "hidden": false, + "paused": false, + "params": { + "filename": "AnimateDiff_02407-audio.mp4", + "subfolder": "", + "type": "output", + "format": "video/h264-mp4", + "frame_rate": 30, + "workflow": "AnimateDiff_02407.png", + "fullpath": "/runpod-volume/ComfyUI_rv/output/AnimateDiff_02407-audio.mp4" + } + } + } + }, + { + "id": 142, + "type": "DepthShapeModifierPrecise", + "pos": [ + 4059.3330078125, + -1202.4765625 + ], + "size": [ + 579.5999755859375, + 174 + ], + "flags": {}, + "order": 52, + "mode": 0, + "inputs": [ + { + "name": "depth_map", + "type": "IMAGE", + "link": 180 + }, + { + "name": "mask", + "type": "MASK", + "link": 181 + } + ], + "outputs": [ + { + "name": "IMAGE", + "type": "IMAGE", + "links": [ + 183, + 187 + ], + "slot_index": 0, + "shape": 3 + } + ], + "properties": { + "Node name for S&R": "DepthShapeModifierPrecise" + }, + "widgets_values": [ + 2, + 0, + 0.5, + 1, + "linear" + ] + }, + { + "id": 27, + "type": "VHS_VideoCombine", + "pos": [ + 6377.5107421875, + -2316.11669921875 + ], + "size": [ + 214.7587890625, + 670.359375 + ], + "flags": {}, + "order": 103, + "mode": 0, + "inputs": [ + { + "name": "images", + "type": "IMAGE", + "link": 342 + }, + { + "name": "audio", + "type": "AUDIO", + "link": 34, + "shape": 7 + }, + { + "name": "meta_batch", + "type": "VHS_BatchManager", + "link": null, + "shape": 7 + }, + { + "name": "vae", + "type": "VAE", + "link": null, + "shape": 7 + } + ], + "outputs": [ + { + "name": "Filenames", + "type": "VHS_FILENAMES", + "links": null, + "shape": 3 + } + ], + "properties": { + "Node name for S&R": "VHS_VideoCombine" + }, + "widgets_values": { + "frame_rate": 30, + "loop_count": 0, + "filename_prefix": "AnimateDiff", + "format": "video/h264-mp4", + "pix_fmt": "yuv420p", + "crf": 19, + "save_metadata": true, + "trim_to_audio": false, + "pingpong": false, + "save_output": true, + "videopreview": { + "hidden": false, + "paused": false, + "params": { + "filename": "AnimateDiff_02406-audio.mp4", + "subfolder": "", + "type": "output", + "format": "video/h264-mp4", + "frame_rate": 30, + "workflow": "AnimateDiff_02406.png", + "fullpath": "/runpod-volume/ComfyUI_rv/output/AnimateDiff_02406-audio.mp4" + } + } + } + }, + { + "id": 160, + "type": "GetNode", + "pos": [ + 2810, + 1290 + ], + "size": [ + 210, + 58 + ], + "flags": {}, + "order": 12, + "mode": 0, + "inputs": [], + "outputs": [ + { + "name": "AUDIO", + "type": "AUDIO", + "links": [ + 206 + ], + "slot_index": 0 + } + ], + "title": "Get_audio", + "properties": {}, + "widgets_values": [ + "audio" + ] + }, + { + "id": 161, + "type": "MaskToImage", + "pos": [ + 2493, + 310 + ], + "size": [ + 264.5999755859375, + 26 + ], + "flags": {}, + "order": 95, + "mode": 0, + "inputs": [ + { + "name": "mask", + "type": "MASK", + "link": 296 + } + ], + "outputs": [ + { + "name": "IMAGE", + "type": "IMAGE", + "links": [ + 234 + ], + "slot_index": 0, + "shape": 3 + } + ], + "properties": { + "Node name for S&R": "MaskToImage" + }, + "widgets_values": [] + }, + { + "id": 175, + "type": "MaskToImage", + "pos": [ + 2760, + 1140 + ], + "size": [ + 264.5999755859375, + 26 + ], + "flags": {}, + "order": 98, + "mode": 0, + "inputs": [ + { + "name": "mask", + "type": "MASK", + "link": 235 + } + ], + "outputs": [ + { + "name": "IMAGE", + "type": "IMAGE", + "links": [ + 236 + ], + "slot_index": 0, + "shape": 3 + } + ], + "properties": { + "Node name for S&R": "MaskToImage" + }, + "widgets_values": [] + }, + { + "id": 109, + "type": "GetNode", + "pos": [ + 323, + -2271 + ], + "size": [ + 210, + 58 + ], + "flags": {}, + "order": 13, + "mode": 0, + "inputs": [], + "outputs": [ + { + "name": "AUDIO", + "type": "AUDIO", + "links": [ + 305 + ], + "slot_index": 0 + } + ], + "title": "Get_audio_drums", + "properties": {}, + "widgets_values": [ + "audio_drums" + ] + }, + { + "id": 124, + "type": "GetNode", + "pos": [ + -1384, + -535 + ], + "size": [ + 210, + 58 + ], + "flags": {}, + "order": 14, + "mode": 0, + "inputs": [], + "outputs": [ + { + "name": "FEATURE", + "type": "FEATURE", + "links": [ + 276 + ], + "slot_index": 0 + } + ], + "title": "Get_drum_feature", + "properties": {}, + "widgets_values": [ + "drum_feature" + ] + }, + { + "id": 128, + "type": "GetNode", + "pos": [ + 247, + -1964 + ], + "size": [ + 314.4181213378906, + 58 + ], + "flags": {}, + "order": 15, + "mode": 0, + "inputs": [], + "outputs": [ + { + "name": "FEATURE", + "type": "FEATURE", + "links": [ + 306, + 312 + ], + "slot_index": 0 + } + ], + "title": "Get_drum_feat_accum", + "properties": {}, + "widgets_values": [ + "drum_feat_accum" + ] + }, + { + "id": 122, + "type": "GetNode", + "pos": [ + 462, + 87 + ], + "size": [ + 210, + 58 + ], + "flags": {}, + "order": 16, + "mode": 0, + "inputs": [], + "outputs": [ + { + "name": "FEATURE", + "type": "FEATURE", + "links": [ + 317 + ], + "slot_index": 0 + } + ], + "title": "Get_bass_feature", + "properties": {}, + "widgets_values": [ + "bass_feature" + ] + }, + { + "id": 159, + "type": "VHS_VideoCombine", + "pos": [ + 3180, + 1120 + ], + "size": [ + 214.7587890625, + 670.359375 + ], + "flags": {}, + "order": 100, + "mode": 0, + "inputs": [ + { + "name": "images", + "type": "IMAGE", + "link": 236 + }, + { + "name": "audio", + "type": "AUDIO", + "link": 206, + "shape": 7 + }, + { + "name": "meta_batch", + "type": "VHS_BatchManager", + "link": null, + "shape": 7 + }, + { + "name": "vae", + "type": "VAE", + "link": null, + "shape": 7 + } + ], + "outputs": [ + { + "name": "Filenames", + "type": "VHS_FILENAMES", + "links": null, + "shape": 3 + } + ], + "properties": { + "Node name for S&R": "VHS_VideoCombine" + }, + "widgets_values": { + "frame_rate": 30, + "loop_count": 0, + "filename_prefix": "AnimateDiff", + "format": "video/h264-mp4", + "pix_fmt": "yuv420p", + "crf": 19, + "save_metadata": true, + "trim_to_audio": false, + "pingpong": false, + "save_output": true, + "videopreview": { + "hidden": false, + "paused": false, + "params": { + "filename": "AnimateDiff_02401-audio.mp4", + "subfolder": "", + "type": "output", + "format": "video/h264-mp4", + "frame_rate": 30, + "workflow": "AnimateDiff_02401.png", + "fullpath": "/runpod-volume/ComfyUI_rv/output/AnimateDiff_02401-audio.mp4" + } + } + } + }, + { + "id": 138, + "type": "GetNode", + "pos": [ + 425, + 1227 + ], + "size": [ + 210, + 58 + ], + "flags": {}, + "order": 17, + "mode": 0, + "inputs": [], + "outputs": [ + { + "name": "AUDIO", + "type": "AUDIO", + "links": [ + 322 + ], + "slot_index": 0 + } + ], + "title": "Get_audio_empty", + "properties": {}, + "widgets_values": [ + "audio_empty" + ] + }, + { + "id": 140, + "type": "GetNode", + "pos": [ + 427, + 1357 + ], + "size": [ + 210, + 58 + ], + "flags": {}, + "order": 18, + "mode": 0, + "inputs": [], + "outputs": [ + { + "name": "FEATURE", + "type": "FEATURE", + "links": [ + 323 + ], + "slot_index": 0 + } + ], + "title": "Get_bass_feature", + "properties": {}, + "widgets_values": [ + "bass_feature" + ] + }, + { + "id": 137, + "type": "GetNode", + "pos": [ + 319, + 720 + ], + "size": [ + 210, + 58 + ], + "flags": {}, + "order": 19, + "mode": 0, + "inputs": [], + "outputs": [ + { + "name": "FEATURE", + "type": "FEATURE", + "links": [ + 320 + ], + "slot_index": 0 + } + ], + "title": "Get_bass_feature", + "properties": {}, + "widgets_values": [ + "bass_feature" + ] + }, + { + "id": 174, + "type": "OpticalFlowMaskModulation", + "pos": [ + 2882, + 343 + ], + "size": [ + 579.5999755859375, + 366 + ], + "flags": {}, + "order": 97, + "mode": 0, + "inputs": [ + { + "name": "masks", + "type": "MASK", + "link": 295 + }, + { + "name": "images", + "type": "IMAGE", + "link": 234 + } + ], + "outputs": [ + { + "name": "MASK", + "type": "MASK", + "links": [ + 235, + 298 + ], + "slot_index": 0, + "shape": 3 + } + ], + "properties": { + "Node name for S&R": "OpticalFlowMaskModulation" + }, + "widgets_values": [ + 1, + false, + 0, + 0, + "Farneback", + 0.1, + 0.05, + 1, + 5, + 5, + 0.8, + "fade", + 20 + ] + }, + { + "id": 31, + "type": "MaskToImage", + "pos": [ + 3295, + -1041 + ], + "size": [ + 210, + 26 + ], + "flags": {}, + "order": 101, + "mode": 0, + "inputs": [ + { + "name": "mask", + "type": "MASK", + "link": 299 + } + ], + "outputs": [ + { + "name": "IMAGE", + "type": "IMAGE", + "links": [ + 339 + ], + "slot_index": 0, + "shape": 3 + } + ], + "properties": { + "Node name for S&R": "MaskToImage" + }, + "widgets_values": [] + }, + { + "id": 48, + "type": "CreateShapeMask", + "pos": [ + 3663, + -1977 + ], + "size": [ + 315, + 270 + ], + "flags": {}, + "order": 20, + "mode": 0, + "inputs": [], + "outputs": [ + { + "name": "mask", + "type": "MASK", + "links": [ + 65, + 181 + ], + "slot_index": 0, + "shape": 3 + }, + { + "name": "mask_inverted", + "type": "MASK", + "links": null, + "shape": 3 + } + ], + "properties": { + "Node name for S&R": "CreateShapeMask" + }, + "widgets_values": [ + "circle", + 1, + 232, + 384, + 0, + 464, + 768, + 460, + 460 + ] + }, + { + "id": 51, + "type": "ImageInterval", + "pos": [ + 3899, + -2186 + ], + "size": [ + 268.79998779296875, + 106 + ], + "flags": {}, + "order": 36, + "mode": 0, + "inputs": [ + { + "name": "image", + "type": "IMAGE", + "link": 66 + } + ], + "outputs": [ + { + "name": "IMAGE", + "type": "IMAGE", + "links": [ + 64, + 180 + ], + "slot_index": 0, + "shape": 3 + } + ], + "properties": { + "Node name for S&R": "ImageInterval" + }, + "widgets_values": [ + 1, + 0, + 1 + ] + }, + { + "id": 50, + "type": "GetNode", + "pos": [ + 3911, + -2314 + ], + "size": [ + 210, + 58 + ], + "flags": {}, + "order": 21, + "mode": 0, + "inputs": [], + "outputs": [ + { + "name": "IMAGE", + "type": "IMAGE", + "links": [ + 66 + ], + "slot_index": 0 + } + ], + "title": "Get_empty_img", + "properties": {}, + "widgets_values": [ + "empty_img" + ] + }, + { + "id": 49, + "type": "DepthShapeModifierPrecise", + "pos": [ + 4208, + -2309 + ], + "size": [ + 579.5999755859375, + 174 + ], + "flags": {}, + "order": 51, + "mode": 0, + "inputs": [ + { + "name": "depth_map", + "type": "IMAGE", + "link": 64 + }, + { + "name": "mask", + "type": "MASK", + "link": 65 + } + ], + "outputs": [ + { + "name": "IMAGE", + "type": "IMAGE", + "links": [ + 67, + 186 + ], + "slot_index": 0, + "shape": 3 + } + ], + "properties": { + "Node name for S&R": "DepthShapeModifierPrecise" + }, + "widgets_values": [ + 2, + 0, + 1, + 1, + "linear" + ] + }, + { + "id": 53, + "type": "GetNode", + "pos": [ + 4499, + -1962 + ], + "size": [ + 210, + 58 + ], + "flags": {}, + "order": 22, + "mode": 0, + "inputs": [], + "outputs": [ + { + "name": "INT", + "type": "INT", + "links": [ + 68, + 182 + ], + "slot_index": 0 + } + ], + "title": "Get_frame_count", + "properties": {}, + "widgets_values": [ + "frame_count" + ] + }, + { + "id": 52, + "type": "VHS_DuplicateImages", + "pos": [ + 4857, + -2082 + ], + "size": [ + 214.232421875, + 78 + ], + "flags": {}, + "order": 72, + "mode": 0, + "inputs": [ + { + "name": "images", + "type": "IMAGE", + "link": 67 + }, + { + "name": "multiply_by", + "type": "INT", + "link": 68, + "widget": { + "name": "multiply_by" + } + } + ], + "outputs": [ + { + "name": "IMAGE", + "type": "IMAGE", + "links": [ + 340 + ], + "slot_index": 0, + "shape": 3 + }, + { + "name": "count", + "type": "INT", + "links": null, + "shape": 3 + } + ], + "properties": { + "Node name for S&R": "VHS_DuplicateImages" + }, + "widgets_values": { + "multiply_by": 1 + } + }, + { + "id": 145, + "type": "PreviewImage", + "pos": [ + 5130, + -2342 + ], + "size": [ + 210, + 246 + ], + "flags": {}, + "order": 73, + "mode": 0, + "inputs": [ + { + "name": "images", + "type": "IMAGE", + "link": 186 + } + ], + "outputs": [], + "properties": { + "Node name for S&R": "PreviewImage" + }, + "widgets_values": [] + }, + { + "id": 146, + "type": "PreviewImage", + "pos": [ + 5049, + -1340 + ], + "size": [ + 210, + 246 + ], + "flags": {}, + "order": 75, + "mode": 0, + "inputs": [ + { + "name": "images", + "type": "IMAGE", + "link": 187 + } + ], + "outputs": [], + "properties": { + "Node name for S&R": "PreviewImage" + }, + "widgets_values": [] + }, + { + "id": 131, + "type": "MaskComposite", + "pos": [ + 5877, + -1273 + ], + "size": [ + 315, + 126 + ], + "flags": {}, + "order": 105, + "mode": 0, + "inputs": [ + { + "name": "destination", + "type": "MASK", + "link": 164 + }, + { + "name": "source", + "type": "MASK", + "link": 165 + } + ], + "outputs": [ + { + "name": "MASK", + "type": "MASK", + "links": [ + 189 + ], + "slot_index": 0, + "shape": 3 + } + ], + "properties": { + "Node name for S&R": "MaskComposite" + }, + "widgets_values": [ + 0, + 0, + "multiply" + ] + }, + { + "id": 147, + "type": "MaskComposite", + "pos": [ + 6096, + -1024 + ], + "size": [ + 315, + 126 + ], + "flags": {}, + "order": 106, + "mode": 0, + "inputs": [ + { + "name": "destination", + "type": "MASK", + "link": 189 + }, + { + "name": "source", + "type": "MASK", + "link": 190 + } + ], + "outputs": [ + { + "name": "MASK", + "type": "MASK", + "links": [ + 239 + ], + "slot_index": 0, + "shape": 3 + } + ], + "properties": { + "Node name for S&R": "MaskComposite" + }, + "widgets_values": [ + 0, + 0, + "add" + ] + }, + { + "id": 112, + "type": "GetNode", + "pos": [ + 329, + -985 + ], + "size": [ + 216.19483947753906, + 61.861045837402344 + ], + "flags": {}, + "order": 23, + "mode": 0, + "inputs": [], + "outputs": [ + { + "name": "AUDIO", + "type": "AUDIO", + "links": [ + 314 + ], + "slot_index": 0 + } + ], + "title": "Get_audio_empty", + "properties": {}, + "widgets_values": [ + "audio_empty" + ] + }, + { + "id": 111, + "type": "GetNode", + "pos": [ + 340, + -1599 + ], + "size": [ + 210, + 58 + ], + "flags": {}, + "order": 24, + "mode": 0, + "inputs": [], + "outputs": [ + { + "name": "AUDIO", + "type": "AUDIO", + "links": [ + 311 + ], + "slot_index": 0 + } + ], + "title": "Get_audio_drums", + "properties": {}, + "widgets_values": [ + "audio_drums" + ] + }, + { + "id": 178, + "type": "MaskToImage", + "pos": [ + 2204, + -1833 + ], + "size": [ + 264.5999755859375, + 26 + ], + "flags": {}, + "order": 92, + "mode": 0, + "inputs": [ + { + "name": "mask", + "type": "MASK", + "link": 288 + } + ], + "outputs": [ + { + "name": "IMAGE", + "type": "IMAGE", + "links": [ + 240 + ], + "slot_index": 0, + "shape": 3 + } + ], + "properties": { + "Node name for S&R": "MaskToImage" + }, + "widgets_values": [] + }, + { + "id": 177, + "type": "GetNode", + "pos": [ + 2329, + -2191 + ], + "size": [ + 210, + 58 + ], + "flags": {}, + "order": 25, + "mode": 0, + "inputs": [], + "outputs": [ + { + "name": "AUDIO", + "type": "AUDIO", + "links": [ + 241 + ], + "slot_index": 0 + } + ], + "title": "Get_audio", + "properties": {}, + "widgets_values": [ + "audio" + ] + }, + { + "id": 176, + "type": "VHS_VideoCombine", + "pos": [ + 2678, + -2046 + ], + "size": [ + 214.7587890625, + 670.359375 + ], + "flags": {}, + "order": 96, + "mode": 0, + "inputs": [ + { + "name": "images", + "type": "IMAGE", + "link": 240 + }, + { + "name": "audio", + "type": "AUDIO", + "link": 241, + "shape": 7 + }, + { + "name": "meta_batch", + "type": "VHS_BatchManager", + "link": null, + "shape": 7 + }, + { + "name": "vae", + "type": "VAE", + "link": null, + "shape": 7 + } + ], + "outputs": [ + { + "name": "Filenames", + "type": "VHS_FILENAMES", + "links": null, + "shape": 3 + } + ], + "properties": { + "Node name for S&R": "VHS_VideoCombine" + }, + "widgets_values": { + "frame_rate": 30, + "loop_count": 0, + "filename_prefix": "AnimateDiff", + "format": "video/h264-mp4", + "pix_fmt": "yuv420p", + "crf": 19, + "save_metadata": true, + "trim_to_audio": false, + "pingpong": false, + "save_output": true, + "videopreview": { + "hidden": false, + "paused": false, + "params": { + "filename": "AnimateDiff_02405-audio.mp4", + "subfolder": "", + "type": "output", + "format": "video/h264-mp4", + "frame_rate": 30, + "workflow": "AnimateDiff_02405.png", + "fullpath": "/runpod-volume/ComfyUI_rv/output/AnimateDiff_02405-audio.mp4" + } + } + } + }, + { + "id": 188, + "type": "AudioSeparatorSimple", + "pos": [ + -1623.1573486328125, + -1880.417724609375 + ], + "size": [ + 315, + 106 + ], + "flags": {}, + "order": 43, + "mode": 0, + "inputs": [ + { + "name": "model", + "type": "OPEN_UNMIX_MODEL", + "link": 250 + }, + { + "name": "audio", + "type": "AUDIO", + "link": 251 + } + ], + "outputs": [ + { + "name": "audio", + "type": "AUDIO", + "links": null + }, + { + "name": "drums_audio", + "type": "AUDIO", + "links": [ + 253, + 254, + 268 + ] + }, + { + "name": "vocals_audio", + "type": "AUDIO", + "links": [ + 255, + 270 + ] + }, + { + "name": "bass_audio", + "type": "AUDIO", + "links": [ + 257, + 272 + ] + }, + { + "name": "other_audio", + "type": "AUDIO", + "links": [ + 259, + 274 + ] + } + ], + "properties": { + "Node name for S&R": "AudioSeparatorSimple" + }, + "widgets_values": [] + }, + { + "id": 189, + "type": "Anything Everywhere?", + "pos": [ + -3860, + -1440 + ], + "size": [ + 315, + 106 + ], + "flags": {}, + "order": 39, + "mode": 0, + "inputs": [ + { + "name": "FLOAT", + "type": "*", + "link": 261, + "shape": 7, + "color_on": "" + } + ], + "outputs": [], + "properties": { + "Node name for S&R": "Anything Everywhere?", + "group_restricted": 0, + "color_restricted": 0 + }, + "widgets_values": [ + ".*", + "frame_rate", + ".*" + ] + }, + { + "id": 192, + "type": "FloatConstant", + "pos": [ + -4090, + -1430 + ], + "size": [ + 210, + 58 + ], + "flags": {}, + "order": 26, + "mode": 0, + "inputs": [], + "outputs": [ + { + "name": "value", + "type": "FLOAT", + "links": [ + 261 + ], + "slot_index": 0 + } + ], + "properties": { + "Node name for S&R": "FloatConstant" + }, + "widgets_values": [ + 30.000000000000004 + ], + "color": "#232", + "bgcolor": "#353" + }, + { + "id": 193, + "type": "Anything Everywhere?", + "pos": [ + -3870, + -1670 + ], + "size": [ + 315, + 106 + ], + "flags": {}, + "order": 46, + "mode": 0, + "inputs": [ + { + "name": "INT", + "type": "*", + "link": 337, + "shape": 7, + "color_on": "" + } + ], + "outputs": [], + "properties": { + "Node name for S&R": "Anything Everywhere?", + "group_restricted": 0, + "color_restricted": 0 + }, + "widgets_values": [ + ".*", + "height", + ".*" + ] + }, + { + "id": 194, + "type": "Anything Everywhere?", + "pos": [ + -3900, + -1910 + ], + "size": [ + 315, + 106 + ], + "flags": {}, + "order": 47, + "mode": 0, + "inputs": [ + { + "name": "INT", + "type": "*", + "link": 338, + "shape": 7, + "color_on": "" + } + ], + "outputs": [], + "properties": { + "Node name for S&R": "Anything Everywhere?", + "group_restricted": 0, + "color_restricted": 0 + }, + "widgets_values": [ + ".*", + "width", + ".*" + ] + }, + { + "id": 196, + "type": "Anything Everywhere?", + "pos": [ + -2076.036865234375, + -2371.03369140625 + ], + "size": [ + 315, + 106 + ], + "flags": {}, + "order": 44, + "mode": 0, + "inputs": [ + { + "name": "AUDIO", + "type": "*", + "link": 264, + "shape": 7, + "color_on": "" + } + ], + "outputs": [], + "properties": { + "Node name for S&R": "Anything Everywhere?", + "group_restricted": 0, + "color_restricted": 0 + }, + "widgets_values": [ + ".*", + "audio", + ".*" + ] + }, + { + "id": 195, + "type": "Anything Everywhere?", + "pos": [ + -1866.2430419921875, + -1205.9681396484375 + ], + "size": [ + 315, + 106 + ], + "flags": {}, + "order": 57, + "mode": 0, + "inputs": [ + { + "name": "INT", + "type": "*", + "link": 265, + "shape": 7, + "color_on": "" + } + ], + "outputs": [], + "properties": { + "Node name for S&R": "Anything Everywhere?", + "group_restricted": 0, + "color_restricted": 0 + }, + "widgets_values": [ + ".*", + "frame_count", + ".*" + ] + }, + { + "id": 79, + "type": "EmptyImageAndMaskFromAudio", + "pos": [ + -2160, + -1580 + ], + "size": [ + 411.6000061035156, + 146 + ], + "flags": {}, + "order": 41, + "mode": 0, + "inputs": [ + { + "name": "audio", + "type": "AUDIO", + "link": 97 + } + ], + "outputs": [ + { + "name": "empty_image", + "type": "IMAGE", + "links": [ + 103 + ], + "slot_index": 0, + "shape": 3 + }, + { + "name": "empty_mask", + "type": "MASK", + "links": [ + 123 + ], + "slot_index": 1, + "shape": 3 + }, + { + "name": "frame_count", + "type": "INT", + "links": [ + 124, + 265 + ], + "slot_index": 2, + "shape": 3 + } + ], + "properties": { + "Node name for S&R": "EmptyImageAndMaskFromAudio" + }, + "widgets_values": [ + 30, + 464, + 768 + ] + }, + { + "id": 197, + "type": "AudioFeatureExtractor", + "pos": [ + -1126.292236328125, + -1346.831298828125 + ], + "size": [ + 415.8000183105469, + 174 + ], + "flags": { + "collapsed": true + }, + "order": 77, + "mode": 0, + "inputs": [ + { + "name": "audio", + "type": "AUDIO", + "link": 266 + }, + { + "name": "frame_rate", + "type": "FLOAT", + "link": null, + "widget": { + "name": "frame_rate" + } + }, + { + "name": "frame_count", + "type": "INT", + "link": null, + "widget": { + "name": "frame_count" + } + }, + { + "name": "width", + "type": "INT", + "link": null, + "widget": { + "name": "width" + } + }, + { + "name": "height", + "type": "INT", + "link": null, + "widget": { + "name": "height" + } + } + ], + "outputs": [ + { + "name": "feature", + "type": "FEATURE", + "links": [ + 267 + ] + }, + { + "name": "frame_count", + "type": "INT", + "links": null + } + ], + "properties": { + "Node name for S&R": "AudioFeatureExtractor" + }, + "widgets_values": [ + "amplitude_envelope", + 30, + 0, + 512, + 512 + ] + }, + { + "id": 198, + "type": "AudioFeatureExtractor", + "pos": [ + -1124.9776611328125, + -1196.873046875 + ], + "size": [ + 415.8000183105469, + 174 + ], + "flags": { + "collapsed": true + }, + "order": 61, + "mode": 0, + "inputs": [ + { + "name": "audio", + "type": "AUDIO", + "link": 268 + }, + { + "name": "frame_rate", + "type": "FLOAT", + "link": null, + "widget": { + "name": "frame_rate" + } + }, + { + "name": "frame_count", + "type": "INT", + "link": null, + "widget": { + "name": "frame_count" + } + }, + { + "name": "width", + "type": "INT", + "link": null, + "widget": { + "name": "width" + } + }, + { + "name": "height", + "type": "INT", + "link": null, + "widget": { + "name": "height" + } + } + ], + "outputs": [ + { + "name": "feature", + "type": "FEATURE", + "links": [ + 269 + ] + }, + { + "name": "frame_count", + "type": "INT", + "links": null + } + ], + "properties": { + "Node name for S&R": "AudioFeatureExtractor" + }, + "widgets_values": [ + "amplitude_envelope", + 30, + 0, + 512, + 512 + ] + }, + { + "id": 199, + "type": "AudioFeatureExtractor", + "pos": [ + -1123.6630859375, + -1048.1431884765625 + ], + "size": [ + 415.8000183105469, + 174 + ], + "flags": { + "collapsed": true + }, + "order": 63, + "mode": 0, + "inputs": [ + { + "name": "audio", + "type": "AUDIO", + "link": 270 + }, + { + "name": "frame_rate", + "type": "FLOAT", + "link": null, + "widget": { + "name": "frame_rate" + } + }, + { + "name": "frame_count", + "type": "INT", + "link": null, + "widget": { + "name": "frame_count" + } + }, + { + "name": "width", + "type": "INT", + "link": null, + "widget": { + "name": "width" + } + }, + { + "name": "height", + "type": "INT", + "link": null, + "widget": { + "name": "height" + } + } + ], + "outputs": [ + { + "name": "feature", + "type": "FEATURE", + "links": [ + 271 + ] + }, + { + "name": "frame_count", + "type": "INT", + "links": null + } + ], + "properties": { + "Node name for S&R": "AudioFeatureExtractor" + }, + "widgets_values": [ + "amplitude_envelope", + 30, + 0, + 512, + 512 + ] + }, + { + "id": 200, + "type": "AudioFeatureExtractor", + "pos": [ + -1160.4306640625, + -922.754150390625 + ], + "size": [ + 415.8000183105469, + 174 + ], + "flags": { + "collapsed": true + }, + "order": 65, + "mode": 0, + "inputs": [ + { + "name": "audio", + "type": "AUDIO", + "link": 272 + }, + { + "name": "frame_rate", + "type": "FLOAT", + "link": null, + "widget": { + "name": "frame_rate" + } + }, + { + "name": "frame_count", + "type": "INT", + "link": null, + "widget": { + "name": "frame_count" + } + }, + { + "name": "width", + "type": "INT", + "link": null, + "widget": { + "name": "width" + } + }, + { + "name": "height", + "type": "INT", + "link": null, + "widget": { + "name": "height" + } + } + ], + "outputs": [ + { + "name": "feature", + "type": "FEATURE", + "links": [ + 273 + ] + }, + { + "name": "frame_count", + "type": "INT", + "links": null + } + ], + "properties": { + "Node name for S&R": "AudioFeatureExtractor" + }, + "widgets_values": [ + "amplitude_envelope", + 30, + 0, + 512, + 512 + ] + }, + { + "id": 201, + "type": "AudioFeatureExtractor", + "pos": [ + -1128.4046630859375, + -783.8519897460938 + ], + "size": [ + 415.8000183105469, + 174 + ], + "flags": { + "collapsed": true + }, + "order": 67, + "mode": 0, + "inputs": [ + { + "name": "audio", + "type": "AUDIO", + "link": 274 + }, + { + "name": "frame_rate", + "type": "FLOAT", + "link": null, + "widget": { + "name": "frame_rate" + } + }, + { + "name": "frame_count", + "type": "INT", + "link": null, + "widget": { + "name": "frame_count" + } + }, + { + "name": "width", + "type": "INT", + "link": null, + "widget": { + "name": "width" + } + }, + { + "name": "height", + "type": "INT", + "link": null, + "widget": { + "name": "height" + } + } + ], + "outputs": [ + { + "name": "feature", + "type": "FEATURE", + "links": [ + 275 + ] + }, + { + "name": "frame_count", + "type": "INT", + "links": null + } + ], + "properties": { + "Node name for S&R": "AudioFeatureExtractor" + }, + "widgets_values": [ + "amplitude_envelope", + 30, + 0, + 512, + 512 + ] + }, + { + "id": 203, + "type": "FeatureAccumulate", + "pos": [ + -1081.56689453125, + -524.756591796875 + ], + "size": [ + 352.79998779296875, + 202 + ], + "flags": {}, + "order": 68, + "mode": 0, + "inputs": [ + { + "name": "feature", + "type": "FEATURE", + "link": 276 + }, + { + "name": "frames_window", + "type": "INT", + "link": 302, + "widget": { + "name": "frames_window" + } + } + ], + "outputs": [ + { + "name": "FEATURE", + "type": "FEATURE", + "links": [ + 277 + ] + } + ], + "properties": { + "Node name for S&R": "FeatureAccumulate" + }, + "widgets_values": [ + 0, + 1, + 0, + false, + false, + 110, + false + ] + }, + { + "id": 205, + "type": "TimeFeatureNode", + "pos": [ + -1075.6502685546875, + -142.8609619140625 + ], + "size": [ + 315, + 202 + ], + "flags": {}, + "order": 69, + "mode": 0, + "inputs": [ + { + "name": "frame_rate", + "type": "FLOAT", + "link": null, + "widget": { + "name": "frame_rate" + } + }, + { + "name": "frame_count", + "type": "INT", + "link": null, + "widget": { + "name": "frame_count" + } + }, + { + "name": "height", + "type": "INT", + "link": null, + "widget": { + "name": "height" + } + }, + { + "name": "width", + "type": "INT", + "link": null, + "widget": { + "name": "width" + } + }, + { + "name": "frames_per_cycle", + "type": "INT", + "link": 303, + "widget": { + "name": "frames_per_cycle" + } + } + ], + "outputs": [ + { + "name": "FEATURE", + "type": "FEATURE", + "links": [ + 278 + ] + } + ], + "properties": { + "Node name for S&R": "TimeFeatureNode" + }, + "widgets_values": [ + "pulse", + 30, + 30, + 512, + 512, + 30, + 0 + ] + }, + { + "id": 208, + "type": "TimeFeatureNode", + "pos": [ + -1086.865966796875, + 131.0489044189453 + ], + "size": [ + 315, + 202 + ], + "flags": {}, + "order": 70, + "mode": 0, + "inputs": [ + { + "name": "frame_rate", + "type": "FLOAT", + "link": null, + "widget": { + "name": "frame_rate" + } + }, + { + "name": "frame_count", + "type": "INT", + "link": null, + "widget": { + "name": "frame_count" + } + }, + { + "name": "height", + "type": "INT", + "link": null, + "widget": { + "name": "height" + } + }, + { + "name": "width", + "type": "INT", + "link": null, + "widget": { + "name": "width" + } + }, + { + "name": "frames_per_cycle", + "type": "INT", + "link": 304, + "widget": { + "name": "frames_per_cycle" + } + } + ], + "outputs": [ + { + "name": "FEATURE", + "type": "FEATURE", + "links": [ + 280 + ] + } + ], + "properties": { + "Node name for S&R": "TimeFeatureNode" + }, + "widgets_values": [ + "pulse", + 30, + 30, + 512, + 512, + 30, + 0 + ] + }, + { + "id": 209, + "type": "TimeFeatureNode", + "pos": [ + -1057.54248046875, + 473.8753356933594 + ], + "size": [ + 315, + 202 + ], + "flags": {}, + "order": 27, + "mode": 0, + "inputs": [ + { + "name": "frame_rate", + "type": "FLOAT", + "link": null, + "widget": { + "name": "frame_rate" + } + }, + { + "name": "frame_count", + "type": "INT", + "link": null, + "widget": { + "name": "frame_count" + } + }, + { + "name": "height", + "type": "INT", + "link": null, + "widget": { + "name": "height" + } + }, + { + "name": "width", + "type": "INT", + "link": null, + "widget": { + "name": "width" + } + } + ], + "outputs": [ + { + "name": "FEATURE", + "type": "FEATURE", + "links": [ + 281 + ] + } + ], + "properties": { + "Node name for S&R": "TimeFeatureNode" + }, + "widgets_values": [ + "pulse", + 30, + 30, + 512, + 512, + 30, + 0 + ] + }, + { + "id": 166, + "type": "SetNode", + "pos": [ + -605.0294189453125, + 159.7321014404297 + ], + "size": [ + 210, + 58 + ], + "flags": {}, + "order": 89, + "mode": 0, + "inputs": [ + { + "name": "FEATURE", + "type": "FEATURE", + "link": 280 + } + ], + "outputs": [ + { + "name": "*", + "type": "*", + "links": null + } + ], + "title": "Set_time_feature_pulse", + "properties": { + "previousName": "" + }, + "widgets_values": [ + "time_feature_pulse_0" + ] + }, + { + "id": 76, + "type": "VHS_LoadAudioUpload", + "pos": [ + -2276, + -2046 + ], + "size": [ + 243.818359375, + 130 + ], + "flags": {}, + "order": 28, + "mode": 0, + "inputs": [], + "outputs": [ + { + "name": "audio", + "type": "AUDIO", + "links": [ + 97, + 100, + 251, + 264 + ], + "slot_index": 0, + "shape": 3 + } + ], + "properties": { + "Node name for S&R": "VHS_LoadAudioUpload" + }, + "widgets_values": { + "audio": "Matthew Magenta - Wait a Minute.mp3", + "start_time": 34, + "duration": 3.0700000000000003, + "choose audio to upload": "image" + } + }, + { + "id": 210, + "type": "MaskComposite", + "pos": [ + 1361.57861328125, + -1809.535888671875 + ], + "size": [ + 315, + 126 + ], + "flags": {}, + "order": 53, + "mode": 0, + "inputs": [ + { + "name": "destination", + "type": "MASK", + "link": 307 + }, + { + "name": "source", + "type": "MASK", + "link": 313 + } + ], + "outputs": [ + { + "name": "MASK", + "type": "MASK", + "links": [ + 284, + 285 + ], + "slot_index": 0 + } + ], + "properties": { + "Node name for S&R": "MaskComposite" + }, + "widgets_values": [ + 0, + 0, + "add" + ] + }, + { + "id": 211, + "type": "MaskComposite", + "pos": [ + 1915.6964111328125, + -1639.0645751953125 + ], + "size": [ + 315, + 126 + ], + "flags": {}, + "order": 76, + "mode": 0, + "inputs": [ + { + "name": "destination", + "type": "MASK", + "link": 285 + }, + { + "name": "source", + "type": "MASK", + "link": 315 + } + ], + "outputs": [ + { + "name": "MASK", + "type": "MASK", + "links": [ + 288, + 297 + ], + "slot_index": 0 + } + ], + "properties": { + "Node name for S&R": "MaskComposite" + }, + "widgets_values": [ + 0, + 0, + "add" + ] + }, + { + "id": 213, + "type": "MaskComposite", + "pos": [ + 2292.995361328125, + 612.7208251953125 + ], + "size": [ + 315, + 126 + ], + "flags": {}, + "order": 71, + "mode": 0, + "inputs": [ + { + "name": "destination", + "type": "MASK", + "link": 333 + }, + { + "name": "source", + "type": "MASK", + "link": 336 + } + ], + "outputs": [ + { + "name": "MASK", + "type": "MASK", + "links": [ + 294 + ], + "slot_index": 0 + } + ], + "properties": { + "Node name for S&R": "MaskComposite" + }, + "widgets_values": [ + 0, + 0, + "add" + ] + }, + { + "id": 212, + "type": "MaskComposite", + "pos": [ + 2344.65625, + -81.93880462646484 + ], + "size": [ + 315, + 126 + ], + "flags": {}, + "order": 90, + "mode": 0, + "inputs": [ + { + "name": "destination", + "type": "MASK", + "link": 327 + }, + { + "name": "source", + "type": "MASK", + "link": 294 + } + ], + "outputs": [ + { + "name": "MASK", + "type": "MASK", + "links": [ + 295, + 296 + ], + "slot_index": 0 + } + ], + "properties": { + "Node name for S&R": "MaskComposite" + }, + "widgets_values": [ + 0, + 0, + "add" + ] + }, + { + "id": 214, + "type": "MaskComposite", + "pos": [ + 2888.259765625, + -886.96533203125 + ], + "size": [ + 315, + 126 + ], + "flags": {}, + "order": 99, + "mode": 0, + "inputs": [ + { + "name": "destination", + "type": "MASK", + "link": 297 + }, + { + "name": "source", + "type": "MASK", + "link": 298 + } + ], + "outputs": [ + { + "name": "MASK", + "type": "MASK", + "links": [ + 299 + ], + "slot_index": 0 + } + ], + "properties": { + "Node name for S&R": "MaskComposite" + }, + "widgets_values": [ + 0, + 0, + "add" + ] + }, + { + "id": 206, + "type": "AudioInfo", + "pos": [ + -1975.2012939453125, + -281.7331848144531 + ], + "size": [ + 315, + 338 + ], + "flags": {}, + "order": 29, + "mode": 0, + "inputs": [ + { + "name": "audio", + "type": "AUDIO", + "link": null + } + ], + "outputs": [ + { + "name": "total_frames", + "type": "INT", + "links": null + }, + { + "name": "frames_per_beat", + "type": "INT", + "links": null, + "slot_index": 1 + }, + { + "name": "frames_per_bar", + "type": "INT", + "links": [ + 300 + ], + "slot_index": 2 + }, + { + "name": "frames_per_quarter", + "type": "INT", + "links": null + }, + { + "name": "frames_per_eighth", + "type": "INT", + "links": null + }, + { + "name": "audio_duration", + "type": "FLOAT", + "links": null + }, + { + "name": "beats_per_second", + "type": "FLOAT", + "links": null + }, + { + "name": "detected_bpm", + "type": "FLOAT", + "links": null + }, + { + "name": "sample_rate", + "type": "INT", + "links": null + }, + { + "name": "num_channels", + "type": "INT", + "links": null + }, + { + "name": "num_samples", + "type": "INT", + "links": null + }, + { + "name": "max_amplitude", + "type": "FLOAT", + "links": null + }, + { + "name": "mean_amplitude", + "type": "FLOAT", + "links": null + }, + { + "name": "rms_amplitude", + "type": "FLOAT", + "links": null + }, + { + "name": "bit_depth", + "type": "STRING", + "links": null + } + ], + "properties": { + "Node name for S&R": "AudioInfo" + }, + "widgets_values": [ + 30 + ] + }, + { + "id": 215, + "type": "CR Integer Multiple", + "pos": [ + -1555.1171875, + -251.82920837402344 + ], + "size": [ + 315, + 102 + ], + "flags": {}, + "order": 45, + "mode": 0, + "inputs": [ + { + "name": "integer", + "type": "INT", + "link": 300, + "widget": { + "name": "integer" + } + } + ], + "outputs": [ + { + "name": "INT", + "type": "INT", + "links": [ + 302, + 303, + 304 + ], + "slot_index": 0 + }, + { + "name": "show_help", + "type": "STRING", + "links": null + } + ], + "properties": { + "Node name for S&R": "CR Integer Multiple" + }, + "widgets_values": [ + -86, + 2 + ] + }, + { + "id": 223, + "type": "FlexAudioVisualizerCircular", + "pos": [ + 758.9439086914062, + 580 + ], + "size": [ + 504, + 558 + ], + "flags": {}, + "order": 35, + "mode": 0, + "inputs": [ + { + "name": "audio", + "type": "AUDIO", + "link": 319 + }, + { + "name": "opt_feature", + "type": "FEATURE", + "link": 320, + "shape": 7 + }, + { + "name": "screen_width", + "type": "INT", + "link": null, + "widget": { + "name": "screen_width" + } + }, + { + "name": "screen_height", + "type": "INT", + "link": null, + "widget": { + "name": "screen_height" + } + }, + { + "name": "frame_rate", + "type": "FLOAT", + "link": null, + "widget": { + "name": "frame_rate" + } + } + ], + "outputs": [ + { + "name": "IMAGE", + "type": "IMAGE", + "links": null + }, + { + "name": "MASK", + "type": "MASK", + "links": [ + 331 + ] + } + ], + "properties": { + "Node name for S&R": "FlexAudioVisualizerCircular" + }, + "widgets_values": [ + 1, + 0, + "num_points", + "relative", + 30, + 768, + 464, + 0.5, + 0.5, + "bar", + "frequency", + 0.5, + 0, + 20, + 2048, + 20, + 8000, + 120, + 2, + 100, + 80 + ] + }, + { + "id": 224, + "type": "FlexAudioVisualizerCircular", + "pos": [ + 780, + 1250 + ], + "size": [ + 504, + 558 + ], + "flags": {}, + "order": 34, + "mode": 0, + "inputs": [ + { + "name": "audio", + "type": "AUDIO", + "link": 322 + }, + { + "name": "opt_feature", + "type": "FEATURE", + "link": 323, + "shape": 7 + }, + { + "name": "screen_width", + "type": "INT", + "link": null, + "widget": { + "name": "screen_width" + } + }, + { + "name": "screen_height", + "type": "INT", + "link": null, + "widget": { + "name": "screen_height" + } + }, + { + "name": "frame_rate", + "type": "FLOAT", + "link": null, + "widget": { + "name": "frame_rate" + } + } + ], + "outputs": [ + { + "name": "IMAGE", + "type": "IMAGE", + "links": null + }, + { + "name": "MASK", + "type": "MASK", + "links": [ + 334 + ] + } + ], + "properties": { + "Node name for S&R": "FlexAudioVisualizerCircular" + }, + "widgets_values": [ + 1, + 0, + "num_points", + "relative", + 30, + 768, + 464, + 0.5, + 0.5, + "bar", + "frequency", + 0.5, + 0, + 10, + 2048, + 20, + 8000, + 120, + 2, + 100, + 60 + ] + }, + { + "id": 226, + "type": "FlexMaskTransform", + "pos": [ + 1632, + 25 + ], + "size": [ + 365.4000244140625, + 318 + ], + "flags": {}, + "order": 48, + "mode": 0, + "inputs": [ + { + "name": "masks", + "type": "MASK", + "link": 325 + }, + { + "name": "opt_feature", + "type": "FEATURE", + "link": 326, + "shape": 7 + } + ], + "outputs": [ + { + "name": "MASK", + "type": "MASK", + "links": [ + 327 + ] + } + ], + "properties": { + "Node name for S&R": "FlexMaskTransform" + }, + "widgets_values": [ + 1, + 0, + "max_x_value", + "relative", + false, + 0, + 0, + 1, + "rotate", + 360, + 0 + ] + }, + { + "id": 229, + "type": "FlexMaskTransform", + "pos": [ + 1859.6295166015625, + 1103.55908203125 + ], + "size": [ + 365.4000244140625, + 318 + ], + "flags": {}, + "order": 49, + "mode": 0, + "inputs": [ + { + "name": "masks", + "type": "MASK", + "link": 334 + }, + { + "name": "opt_feature", + "type": "FEATURE", + "link": 335, + "shape": 7 + } + ], + "outputs": [ + { + "name": "MASK", + "type": "MASK", + "links": [ + 336 + ] + } + ], + "properties": { + "Node name for S&R": "FlexMaskTransform" + }, + "widgets_values": [ + 1, + 0, + "max_x_value", + "relative", + false, + 0, + 0, + 1, + "rotate", + 360, + 0 + ] + }, + { + "id": 228, + "type": "FlexMaskTransform", + "pos": [ + 1754.5198974609375, + 665.4771118164062 + ], + "size": [ + 365.4000244140625, + 318 + ], + "flags": {}, + "order": 50, + "mode": 0, + "inputs": [ + { + "name": "masks", + "type": "MASK", + "link": 331 + }, + { + "name": "opt_feature", + "type": "FEATURE", + "link": 332, + "shape": 7 + } + ], + "outputs": [ + { + "name": "MASK", + "type": "MASK", + "links": [ + 333 + ] + } + ], + "properties": { + "Node name for S&R": "FlexMaskTransform" + }, + "widgets_values": [ + 1, + 0, + "max_x_value", + "relative", + false, + 0, + 0, + 1, + "rotate", + 360, + 0 + ] + }, + { + "id": 190, + "type": "INTConstant", + "pos": [ + -4158.52783203125, + -1554.3095703125 + ], + "size": [ + 210, + 58 + ], + "flags": {}, + "order": 30, + "mode": 0, + "inputs": [], + "outputs": [ + { + "name": "value", + "type": "INT", + "links": [ + 337 + ], + "slot_index": 0 + } + ], + "properties": { + "Node name for S&R": "INTConstant" + }, + "widgets_values": [ + 768 + ], + "color": "#1b4669", + "bgcolor": "#29699c" + }, + { + "id": 191, + "type": "INTConstant", + "pos": [ + -4185.58349609375, + -1871.373046875 + ], + "size": [ + 210, + 58 + ], + "flags": {}, + "order": 31, + "mode": 0, + "inputs": [], + "outputs": [ + { + "name": "value", + "type": "INT", + "links": [ + 338 + ], + "slot_index": 0 + } + ], + "properties": { + "Node name for S&R": "INTConstant" + }, + "widgets_values": [ + 464 + ], + "color": "#1b4669", + "bgcolor": "#29699c" + }, + { + "id": 230, + "type": "FlexImageDepthWarp", + "pos": [ + 5440, + -2083 + ], + "size": [ + 390.5999755859375, + 194 + ], + "flags": {}, + "order": 102, + "mode": 0, + "inputs": [ + { + "name": "images", + "type": "IMAGE", + "link": 339 + }, + { + "name": "depth_map", + "type": "IMAGE", + "link": 340 + }, + { + "name": "opt_feature", + "type": "FEATURE", + "link": 341, + "shape": 7 + } + ], + "outputs": [ + { + "name": "IMAGE", + "type": "IMAGE", + "links": [ + 342, + 343 + ] + } + ], + "properties": { + "Node name for S&R": "FlexImageDepthWarp" + }, + "widgets_values": [ + 1, + 0, + "warp_strength", + "relative", + 0.03 + ] + }, + { + "id": 222, + "type": "FlexAudioVisualizerCircular", + "pos": [ + 796, + -46 + ], + "size": [ + 504, + 558 + ], + "flags": {}, + "order": 33, + "mode": 0, + "inputs": [ + { + "name": "audio", + "type": "AUDIO", + "link": 316 + }, + { + "name": "opt_feature", + "type": "FEATURE", + "link": 317, + "shape": 7 + }, + { + "name": "screen_width", + "type": "INT", + "link": null, + "widget": { + "name": "screen_width" + } + }, + { + "name": "screen_height", + "type": "INT", + "link": null, + "widget": { + "name": "screen_height" + } + }, + { + "name": "frame_rate", + "type": "FLOAT", + "link": null, + "widget": { + "name": "frame_rate" + } + } + ], + "outputs": [ + { + "name": "IMAGE", + "type": "IMAGE", + "links": null + }, + { + "name": "MASK", + "type": "MASK", + "links": [ + 325 + ] + } + ], + "properties": { + "Node name for S&R": "FlexAudioVisualizerCircular" + }, + "widgets_values": [ + 1, + 0, + "num_points", + "relative", + 30, + 768, + 464, + 0.5, + 0.5, + "bar", + "frequency", + 0.5, + 0, + 30, + 2048, + 20, + 8000, + 120, + 2, + 100, + 80 + ] + }, + { + "id": 217, + "type": "FlexAudioVisualizerCircular", + "pos": [ + 618, + -2294 + ], + "size": [ + 504, + 558 + ], + "flags": {}, + "order": 32, + "mode": 0, + "inputs": [ + { + "name": "audio", + "type": "AUDIO", + "link": 305 + }, + { + "name": "opt_feature", + "type": "FEATURE", + "link": 306, + "shape": 7 + }, + { + "name": "screen_width", + "type": "INT", + "link": null, + "widget": { + "name": "screen_width" + } + }, + { + "name": "frame_rate", + "type": "FLOAT", + "link": null, + "widget": { + "name": "frame_rate" + } + }, + { + "name": "screen_height", + "type": "INT", + "link": null, + "widget": { + "name": "screen_height" + } + } + ], + "outputs": [ + { + "name": "IMAGE", + "type": "IMAGE", + "links": null + }, + { + "name": "MASK", + "type": "MASK", + "links": [ + 307 + ] + } + ], + "properties": { + "Node name for S&R": "FlexAudioVisualizerCircular" + }, + "widgets_values": [ + 1, + 0, + "rotation", + "relative", + 30, + 768, + 464, + 0.5, + 0.5, + "line", + "frequency", + 0.5, + 360, + 360, + 2048, + 20, + 8000, + 180, + 2, + 100, + 180 + ] + }, + { + "id": 220, + "type": "FlexAudioVisualizerCircular", + "pos": [ + 624.6350708007812, + -1661.1295166015625 + ], + "size": [ + 504, + 558 + ], + "flags": {}, + "order": 38, + "mode": 0, + "inputs": [ + { + "name": "audio", + "type": "AUDIO", + "link": 311 + }, + { + "name": "opt_feature", + "type": "FEATURE", + "link": 312, + "shape": 7 + }, + { + "name": "screen_width", + "type": "INT", + "link": null, + "widget": { + "name": "screen_width" + } + }, + { + "name": "frame_rate", + "type": "FLOAT", + "link": null, + "widget": { + "name": "frame_rate" + } + }, + { + "name": "screen_height", + "type": "INT", + "link": null, + "widget": { + "name": "screen_height" + } + } + ], + "outputs": [ + { + "name": "IMAGE", + "type": "IMAGE", + "links": null + }, + { + "name": "MASK", + "type": "MASK", + "links": [ + 313 + ] + } + ], + "properties": { + "Node name for S&R": "FlexAudioVisualizerCircular" + }, + "widgets_values": [ + 1, + 0, + "rotation", + "relative", + 30, + 768, + 464, + 0.5, + 0.5, + "line", + "frequency", + 0.5, + 360, + 360, + 2048, + 20, + 8000, + 160, + 2, + 100, + 160 + ] + }, + { + "id": 221, + "type": "FlexAudioVisualizerCircular", + "pos": [ + 610.4837036132812, + -1031.316162109375 + ], + "size": [ + 504, + 558 + ], + "flags": {}, + "order": 37, + "mode": 0, + "inputs": [ + { + "name": "audio", + "type": "AUDIO", + "link": 314 + }, + { + "name": "opt_feature", + "type": "FEATURE", + "link": null, + "shape": 7 + }, + { + "name": "screen_width", + "type": "INT", + "link": null, + "widget": { + "name": "screen_width" + } + }, + { + "name": "frame_rate", + "type": "FLOAT", + "link": null, + "widget": { + "name": "frame_rate" + } + }, + { + "name": "screen_height", + "type": "INT", + "link": null, + "widget": { + "name": "screen_height" + } + } + ], + "outputs": [ + { + "name": "IMAGE", + "type": "IMAGE", + "links": null + }, + { + "name": "MASK", + "type": "MASK", + "links": [ + 315 + ] + } + ], + "properties": { + "Node name for S&R": "FlexAudioVisualizerCircular" + }, + "widgets_values": [ + 1, + 0, + "rotation", + "relative", + 30, + 768, + 464, + 0.5, + 0.5, + "line", + "frequency", + 0.5, + 360, + 360, + 2048, + 20, + 8000, + 140, + 2, + 100, + 140 + ] + } + ], + "links": [ + [ + 34, + 28, + 0, + 27, + 1, + "AUDIO" + ], + [ + 64, + 51, + 0, + 49, + 0, + "IMAGE" + ], + [ + 65, + 48, + 0, + 49, + 1, + "MASK" + ], + [ + 66, + 50, + 0, + 51, + 0, + "IMAGE" + ], + [ + 67, + 49, + 0, + 52, + 0, + "IMAGE" + ], + [ + 68, + 53, + 0, + 52, + 1, + "*" + ], + [ + 97, + 76, + 0, + 79, + 0, + "AUDIO" + ], + [ + 100, + 76, + 0, + 81, + 0, + "*" + ], + [ + 103, + 79, + 0, + 84, + 0, + "*" + ], + [ + 107, + 86, + 0, + 87, + 1, + "FREQUENCY_FILTER" + ], + [ + 123, + 79, + 1, + 100, + 0, + "*" + ], + [ + 124, + 79, + 2, + 101, + 0, + "*" + ], + [ + 131, + 88, + 0, + 83, + 0, + "AUDIO" + ], + [ + 132, + 89, + 0, + 105, + 0, + "AUDIO" + ], + [ + 133, + 90, + 0, + 106, + 0, + "AUDIO" + ], + [ + 134, + 91, + 0, + 107, + 0, + "AUDIO" + ], + [ + 136, + 81, + 0, + 110, + 0, + "AUDIO" + ], + [ + 142, + 91, + 0, + 113, + 0, + "AUDIO" + ], + [ + 143, + 91, + 0, + 113, + 1, + "AUDIO" + ], + [ + 144, + 113, + 0, + 114, + 0, + "*" + ], + [ + 164, + 129, + 0, + 131, + 0, + "MASK" + ], + [ + 165, + 130, + 0, + 131, + 1, + "MASK" + ], + [ + 168, + 28, + 0, + 133, + 1, + "*" + ], + [ + 169, + 132, + 0, + 133, + 0, + "IMAGE" + ], + [ + 180, + 51, + 0, + 142, + 0, + "IMAGE" + ], + [ + 181, + 48, + 0, + 142, + 1, + "MASK" + ], + [ + 182, + 53, + 0, + 143, + 1, + "INT" + ], + [ + 183, + 142, + 0, + 143, + 0, + "IMAGE" + ], + [ + 185, + 143, + 0, + 130, + 0, + "IMAGE" + ], + [ + 186, + 49, + 0, + 145, + 0, + "IMAGE" + ], + [ + 187, + 142, + 0, + 146, + 0, + "IMAGE" + ], + [ + 189, + 131, + 0, + 147, + 0, + "MASK" + ], + [ + 190, + 130, + 0, + 147, + 1, + "MASK" + ], + [ + 206, + 160, + 0, + 159, + 1, + "*" + ], + [ + 234, + 161, + 0, + 174, + 1, + "IMAGE" + ], + [ + 235, + 174, + 0, + 175, + 0, + "MASK" + ], + [ + 236, + 175, + 0, + 159, + 0, + "IMAGE" + ], + [ + 239, + 147, + 0, + 132, + 0, + "MASK" + ], + [ + 240, + 178, + 0, + 176, + 0, + "IMAGE" + ], + [ + 241, + 177, + 0, + 176, + 1, + "*" + ], + [ + 250, + 78, + 0, + 188, + 0, + "OPEN_UNMIX_MODEL" + ], + [ + 251, + 76, + 0, + 188, + 1, + "AUDIO" + ], + [ + 253, + 188, + 1, + 87, + 0, + "AUDIO" + ], + [ + 254, + 188, + 1, + 88, + 0, + "AUDIO" + ], + [ + 255, + 188, + 2, + 89, + 0, + "AUDIO" + ], + [ + 257, + 188, + 3, + 90, + 0, + "AUDIO" + ], + [ + 259, + 188, + 4, + 91, + 0, + "AUDIO" + ], + [ + 261, + 192, + 0, + 189, + 0, + "FLOAT" + ], + [ + 264, + 76, + 0, + 196, + 0, + "AUDIO" + ], + [ + 265, + 79, + 2, + 195, + 0, + "INT" + ], + [ + 266, + 87, + 0, + 197, + 0, + "AUDIO" + ], + [ + 267, + 197, + 0, + 92, + 0, + "FEATURE" + ], + [ + 268, + 188, + 1, + 198, + 0, + "AUDIO" + ], + [ + 269, + 198, + 0, + 93, + 0, + "FEATURE" + ], + [ + 270, + 188, + 2, + 199, + 0, + "AUDIO" + ], + [ + 271, + 199, + 0, + 95, + 0, + "FEATURE" + ], + [ + 272, + 188, + 3, + 200, + 0, + "AUDIO" + ], + [ + 273, + 200, + 0, + 97, + 0, + "FEATURE" + ], + [ + 274, + 188, + 4, + 201, + 0, + "AUDIO" + ], + [ + 275, + 201, + 0, + 99, + 0, + "FEATURE" + ], + [ + 276, + 124, + 0, + 203, + 0, + "FEATURE" + ], + [ + 277, + 203, + 0, + 127, + 0, + "FEATURE" + ], + [ + 278, + 205, + 0, + 163, + 0, + "FEATURE" + ], + [ + 280, + 208, + 0, + 166, + 0, + "FEATURE" + ], + [ + 281, + 209, + 0, + 168, + 0, + "FEATURE" + ], + [ + 284, + 210, + 0, + 116, + 0, + "MASK" + ], + [ + 285, + 210, + 0, + 211, + 0, + "MASK" + ], + [ + 288, + 211, + 0, + 178, + 0, + "MASK" + ], + [ + 294, + 213, + 0, + 212, + 1, + "MASK" + ], + [ + 295, + 212, + 0, + 174, + 0, + "MASK" + ], + [ + 296, + 212, + 0, + 161, + 0, + "MASK" + ], + [ + 297, + 211, + 0, + 214, + 0, + "MASK" + ], + [ + 298, + 174, + 0, + 214, + 1, + "MASK" + ], + [ + 299, + 214, + 0, + 31, + 0, + "MASK" + ], + [ + 300, + 206, + 2, + 215, + 0, + "INT" + ], + [ + 302, + 215, + 0, + 203, + 1, + "INT" + ], + [ + 303, + 215, + 0, + 205, + 4, + "INT" + ], + [ + 304, + 215, + 0, + 208, + 4, + "INT" + ], + [ + 305, + 109, + 0, + 217, + 0, + "AUDIO" + ], + [ + 306, + 128, + 0, + 217, + 1, + "FEATURE" + ], + [ + 307, + 217, + 1, + 210, + 0, + "MASK" + ], + [ + 311, + 111, + 0, + 220, + 0, + "AUDIO" + ], + [ + 312, + 128, + 0, + 220, + 1, + "FEATURE" + ], + [ + 313, + 220, + 1, + 210, + 1, + "MASK" + ], + [ + 314, + 112, + 0, + 221, + 0, + "AUDIO" + ], + [ + 315, + 221, + 1, + 211, + 1, + "MASK" + ], + [ + 316, + 118, + 0, + 222, + 0, + "AUDIO" + ], + [ + 317, + 122, + 0, + 222, + 1, + "FEATURE" + ], + [ + 319, + 135, + 0, + 223, + 0, + "AUDIO" + ], + [ + 320, + 137, + 0, + 223, + 1, + "FEATURE" + ], + [ + 322, + 138, + 0, + 224, + 0, + "AUDIO" + ], + [ + 323, + 140, + 0, + 224, + 1, + "FEATURE" + ], + [ + 325, + 222, + 1, + 226, + 0, + "MASK" + ], + [ + 326, + 149, + 0, + 226, + 1, + "FEATURE" + ], + [ + 327, + 226, + 0, + 212, + 0, + "MASK" + ], + [ + 331, + 223, + 1, + 228, + 0, + "MASK" + ], + [ + 332, + 152, + 0, + 228, + 1, + "FEATURE" + ], + [ + 333, + 228, + 0, + 213, + 0, + "MASK" + ], + [ + 334, + 224, + 1, + 229, + 0, + "MASK" + ], + [ + 335, + 155, + 0, + 229, + 1, + "FEATURE" + ], + [ + 336, + 229, + 0, + 213, + 1, + "MASK" + ], + [ + 337, + 190, + 0, + 193, + 0, + "INT" + ], + [ + 338, + 191, + 0, + 194, + 0, + "INT" + ], + [ + 339, + 31, + 0, + 230, + 0, + "IMAGE" + ], + [ + 340, + 52, + 0, + 230, + 1, + "IMAGE" + ], + [ + 341, + 57, + 0, + 230, + 2, + "FEATURE" + ], + [ + 342, + 230, + 0, + 27, + 0, + "IMAGE" + ], + [ + 343, + 230, + 0, + 129, + 0, + "IMAGE" + ], + [ + 344, + 192, + 0, + 197, + 1, + "FLOAT" + ], + [ + 345, + 79, + 2, + 197, + 2, + "INT" + ], + [ + 346, + 191, + 0, + 197, + 3, + "INT" + ], + [ + 347, + 190, + 0, + 197, + 4, + "INT" + ], + [ + 348, + 192, + 0, + 198, + 1, + "FLOAT" + ], + [ + 349, + 79, + 2, + 198, + 2, + "INT" + ], + [ + 350, + 191, + 0, + 198, + 3, + "INT" + ], + [ + 351, + 190, + 0, + 198, + 4, + "INT" + ], + [ + 352, + 192, + 0, + 199, + 1, + "FLOAT" + ], + [ + 353, + 79, + 2, + 199, + 2, + "INT" + ], + [ + 354, + 191, + 0, + 199, + 3, + "INT" + ], + [ + 355, + 190, + 0, + 199, + 4, + "INT" + ], + [ + 356, + 192, + 0, + 200, + 1, + "FLOAT" + ], + [ + 357, + 79, + 2, + 200, + 2, + "INT" + ], + [ + 358, + 191, + 0, + 200, + 3, + "INT" + ], + [ + 359, + 190, + 0, + 200, + 4, + "INT" + ], + [ + 360, + 192, + 0, + 201, + 1, + "FLOAT" + ], + [ + 361, + 79, + 2, + 201, + 2, + "INT" + ], + [ + 362, + 191, + 0, + 201, + 3, + "INT" + ], + [ + 363, + 190, + 0, + 201, + 4, + "INT" + ], + [ + 364, + 192, + 0, + 205, + 0, + "FLOAT" + ], + [ + 365, + 79, + 2, + 205, + 1, + "INT" + ], + [ + 366, + 190, + 0, + 205, + 2, + "INT" + ], + [ + 367, + 191, + 0, + 205, + 3, + "INT" + ], + [ + 368, + 192, + 0, + 208, + 0, + "FLOAT" + ], + [ + 369, + 79, + 2, + 208, + 1, + "INT" + ], + [ + 370, + 190, + 0, + 208, + 2, + "INT" + ], + [ + 371, + 191, + 0, + 208, + 3, + "INT" + ], + [ + 372, + 192, + 0, + 209, + 0, + "FLOAT" + ], + [ + 373, + 79, + 2, + 209, + 1, + "INT" + ], + [ + 374, + 190, + 0, + 209, + 2, + "INT" + ], + [ + 375, + 191, + 0, + 209, + 3, + "INT" + ], + [ + 376, + 76, + 0, + 206, + 0, + "AUDIO" + ], + [ + 377, + 191, + 0, + 223, + 2, + "INT" + ], + [ + 378, + 190, + 0, + 223, + 3, + "INT" + ], + [ + 379, + 192, + 0, + 223, + 4, + "FLOAT" + ], + [ + 380, + 191, + 0, + 224, + 2, + "INT" + ], + [ + 381, + 190, + 0, + 224, + 3, + "INT" + ], + [ + 382, + 192, + 0, + 224, + 4, + "FLOAT" + ], + [ + 383, + 191, + 0, + 222, + 2, + "INT" + ], + [ + 384, + 190, + 0, + 222, + 3, + "INT" + ], + [ + 385, + 192, + 0, + 222, + 4, + "FLOAT" + ], + [ + 386, + 191, + 0, + 217, + 2, + "INT" + ], + [ + 387, + 192, + 0, + 217, + 3, + "FLOAT" + ], + [ + 388, + 190, + 0, + 217, + 4, + "INT" + ], + [ + 389, + 191, + 0, + 220, + 2, + "INT" + ], + [ + 390, + 192, + 0, + 220, + 3, + "FLOAT" + ], + [ + 391, + 190, + 0, + 220, + 4, + "INT" + ], + [ + 392, + 191, + 0, + 221, + 2, + "INT" + ], + [ + 393, + 192, + 0, + 221, + 3, + "FLOAT" + ], + [ + 394, + 190, + 0, + 221, + 4, + "INT" + ] + ], + "groups": [ + { + "id": 1, + "title": "Dots", + "bounding": [ + 286, + -363, + 3278, + 3315 + ], + "color": "#3f789e", + "font_size": 24, + "flags": {} + }, + { + "id": 2, + "title": "Depth Map", + "bounding": [ + 3627, + -1590, + 3633, + 901 + ], + "color": "#3f789e", + "font_size": 24, + "flags": {} + }, + { + "id": 3, + "title": "Audio", + "bounding": [ + -2280, + -2423, + 2458, + 3092 + ], + "color": "#3f789e", + "font_size": 24, + "flags": {} + }, + { + "id": 4, + "title": "Depth Warp", + "bounding": [ + 3633, + -2407, + 3046, + 763 + ], + "color": "#3f789e", + "font_size": 24, + "flags": {} + }, + { + "id": 5, + "title": "VisualiZERS", + "bounding": [ + 282, + -2420, + 3282, + 2008 + ], + "color": "#3f789e", + "font_size": 24, + "flags": {} + } + ], + "config": {}, + "extra": { + "ds": { + "scale": 0.1, + "offset": [ + 1740.8268087545523, + 4617.423405842925 + ] + }, + "node_versions": { + "ComfyUI_RyanOnTheInside": "0507092b2c3f5c51b45989c6c4fd51c1add26513", + "comfy-core": "0.3.12", + "ComfyUI-VideoHelperSuite": "6953fa21443cf55f7c3b61ed3f4c87c5d3677fe1", + "ComfyUI-KJNodes": "973ceb6ca8b7525d54873805888ad690090d6b1e", + "cg-use-everywhere": "cd06259166a6af4c054c62f540871ca09a359b50", + "ComfyUI_Comfyroll_CustomNodes": "d78b780ae43fcf8c6b7c6505e6ffb4584281ceca" + }, + "ue_links": [ + { + "downstream": 197, + "downstream_slot": 1, + "upstream": "192", + "upstream_slot": 0, + "controller": 189, + "type": "FLOAT" + }, + { + "downstream": 197, + "downstream_slot": 2, + "upstream": "79", + "upstream_slot": 2, + "controller": 195, + "type": "INT" + }, + { + "downstream": 197, + "downstream_slot": 3, + "upstream": "191", + "upstream_slot": 0, + "controller": 194, + "type": "INT" + }, + { + "downstream": 197, + "downstream_slot": 4, + "upstream": "190", + "upstream_slot": 0, + "controller": 193, + "type": "INT" + }, + { + "downstream": 198, + "downstream_slot": 1, + "upstream": "192", + "upstream_slot": 0, + "controller": 189, + "type": "FLOAT" + }, + { + "downstream": 198, + "downstream_slot": 2, + "upstream": "79", + "upstream_slot": 2, + "controller": 195, + "type": "INT" + }, + { + "downstream": 198, + "downstream_slot": 3, + "upstream": "191", + "upstream_slot": 0, + "controller": 194, + "type": "INT" + }, + { + "downstream": 198, + "downstream_slot": 4, + "upstream": "190", + "upstream_slot": 0, + "controller": 193, + "type": "INT" + }, + { + "downstream": 199, + "downstream_slot": 1, + "upstream": "192", + "upstream_slot": 0, + "controller": 189, + "type": "FLOAT" + }, + { + "downstream": 199, + "downstream_slot": 2, + "upstream": "79", + "upstream_slot": 2, + "controller": 195, + "type": "INT" + }, + { + "downstream": 199, + "downstream_slot": 3, + "upstream": "191", + "upstream_slot": 0, + "controller": 194, + "type": "INT" + }, + { + "downstream": 199, + "downstream_slot": 4, + "upstream": "190", + "upstream_slot": 0, + "controller": 193, + "type": "INT" + }, + { + "downstream": 200, + "downstream_slot": 1, + "upstream": "192", + "upstream_slot": 0, + "controller": 189, + "type": "FLOAT" + }, + { + "downstream": 200, + "downstream_slot": 2, + "upstream": "79", + "upstream_slot": 2, + "controller": 195, + "type": "INT" + }, + { + "downstream": 200, + "downstream_slot": 3, + "upstream": "191", + "upstream_slot": 0, + "controller": 194, + "type": "INT" + }, + { + "downstream": 200, + "downstream_slot": 4, + "upstream": "190", + "upstream_slot": 0, + "controller": 193, + "type": "INT" + }, + { + "downstream": 201, + "downstream_slot": 1, + "upstream": "192", + "upstream_slot": 0, + "controller": 189, + "type": "FLOAT" + }, + { + "downstream": 201, + "downstream_slot": 2, + "upstream": "79", + "upstream_slot": 2, + "controller": 195, + "type": "INT" + }, + { + "downstream": 201, + "downstream_slot": 3, + "upstream": "191", + "upstream_slot": 0, + "controller": 194, + "type": "INT" + }, + { + "downstream": 201, + "downstream_slot": 4, + "upstream": "190", + "upstream_slot": 0, + "controller": 193, + "type": "INT" + }, + { + "downstream": 205, + "downstream_slot": 0, + "upstream": "192", + "upstream_slot": 0, + "controller": 189, + "type": "FLOAT" + }, + { + "downstream": 205, + "downstream_slot": 1, + "upstream": "79", + "upstream_slot": 2, + "controller": 195, + "type": "INT" + }, + { + "downstream": 205, + "downstream_slot": 2, + "upstream": "190", + "upstream_slot": 0, + "controller": 193, + "type": "INT" + }, + { + "downstream": 205, + "downstream_slot": 3, + "upstream": "191", + "upstream_slot": 0, + "controller": 194, + "type": "INT" + }, + { + "downstream": 208, + "downstream_slot": 0, + "upstream": "192", + "upstream_slot": 0, + "controller": 189, + "type": "FLOAT" + }, + { + "downstream": 208, + "downstream_slot": 1, + "upstream": "79", + "upstream_slot": 2, + "controller": 195, + "type": "INT" + }, + { + "downstream": 208, + "downstream_slot": 2, + "upstream": "190", + "upstream_slot": 0, + "controller": 193, + "type": "INT" + }, + { + "downstream": 208, + "downstream_slot": 3, + "upstream": "191", + "upstream_slot": 0, + "controller": 194, + "type": "INT" + }, + { + "downstream": 209, + "downstream_slot": 0, + "upstream": "192", + "upstream_slot": 0, + "controller": 189, + "type": "FLOAT" + }, + { + "downstream": 209, + "downstream_slot": 1, + "upstream": "79", + "upstream_slot": 2, + "controller": 195, + "type": "INT" + }, + { + "downstream": 209, + "downstream_slot": 2, + "upstream": "190", + "upstream_slot": 0, + "controller": 193, + "type": "INT" + }, + { + "downstream": 209, + "downstream_slot": 3, + "upstream": "191", + "upstream_slot": 0, + "controller": 194, + "type": "INT" + }, + { + "downstream": 206, + "downstream_slot": 0, + "upstream": "76", + "upstream_slot": 0, + "controller": 196, + "type": "AUDIO" + }, + { + "downstream": 223, + "downstream_slot": 2, + "upstream": "191", + "upstream_slot": 0, + "controller": 194, + "type": "INT" + }, + { + "downstream": 223, + "downstream_slot": 3, + "upstream": "190", + "upstream_slot": 0, + "controller": 193, + "type": "INT" + }, + { + "downstream": 223, + "downstream_slot": 4, + "upstream": "192", + "upstream_slot": 0, + "controller": 189, + "type": "FLOAT" + }, + { + "downstream": 224, + "downstream_slot": 2, + "upstream": "191", + "upstream_slot": 0, + "controller": 194, + "type": "INT" + }, + { + "downstream": 224, + "downstream_slot": 3, + "upstream": "190", + "upstream_slot": 0, + "controller": 193, + "type": "INT" + }, + { + "downstream": 224, + "downstream_slot": 4, + "upstream": "192", + "upstream_slot": 0, + "controller": 189, + "type": "FLOAT" + }, + { + "downstream": 222, + "downstream_slot": 2, + "upstream": "191", + "upstream_slot": 0, + "controller": 194, + "type": "INT" + }, + { + "downstream": 222, + "downstream_slot": 3, + "upstream": "190", + "upstream_slot": 0, + "controller": 193, + "type": "INT" + }, + { + "downstream": 222, + "downstream_slot": 4, + "upstream": "192", + "upstream_slot": 0, + "controller": 189, + "type": "FLOAT" + }, + { + "downstream": 217, + "downstream_slot": 2, + "upstream": "191", + "upstream_slot": 0, + "controller": 194, + "type": "INT" + }, + { + "downstream": 217, + "downstream_slot": 3, + "upstream": "192", + "upstream_slot": 0, + "controller": 189, + "type": "FLOAT" + }, + { + "downstream": 217, + "downstream_slot": 4, + "upstream": "190", + "upstream_slot": 0, + "controller": 193, + "type": "INT" + }, + { + "downstream": 220, + "downstream_slot": 2, + "upstream": "191", + "upstream_slot": 0, + "controller": 194, + "type": "INT" + }, + { + "downstream": 220, + "downstream_slot": 3, + "upstream": "192", + "upstream_slot": 0, + "controller": 189, + "type": "FLOAT" + }, + { + "downstream": 220, + "downstream_slot": 4, + "upstream": "190", + "upstream_slot": 0, + "controller": 193, + "type": "INT" + }, + { + "downstream": 221, + "downstream_slot": 2, + "upstream": "191", + "upstream_slot": 0, + "controller": 194, + "type": "INT" + }, + { + "downstream": 221, + "downstream_slot": 3, + "upstream": "192", + "upstream_slot": 0, + "controller": 189, + "type": "FLOAT" + }, + { + "downstream": 221, + "downstream_slot": 4, + "upstream": "190", + "upstream_slot": 0, + "controller": 193, + "type": "INT" + } + ] + }, + "version": 0.4 +} \ No newline at end of file diff --git a/examples/motion_activated.json b/examples/version2_example.json similarity index 50% rename from examples/motion_activated.json rename to examples/version2_example.json index e57e9dd..f31c662 100644 --- a/examples/motion_activated.json +++ b/examples/version2_example.json @@ -1,265 +1,305 @@ { - "last_node_id": 194, - "last_link_id": 336, + "last_node_id": 476, + "last_link_id": 770, "nodes": [ { - "id": 30, - "type": "ADE_SigmaSchedule", + "id": 21, + "type": "SetClipHooks", "pos": [ - 3141.5897819464126, - 1118.8759046187079 + 1135.2972412109375, + -156.53550720214844 + ], + "size": [ + 217.4999542236328, + 102 ], - "size": { - "0": 244.73928833007812, - "1": 58 - }, "flags": {}, - "order": 0, + "order": 57, "mode": 0, + "inputs": [ + { + "name": "clip", + "type": "CLIP", + "link": 21 + }, + { + "name": "hooks", + "type": "HOOKS", + "link": 52, + "shape": 7 + } + ], "outputs": [ { - "name": "SIGMA_SCHEDULE", - "type": "SIGMA_SCHEDULE", + "name": "CLIP", + "type": "CLIP", "links": [ - 51 + 1, + 3 ], - "shape": 3, "slot_index": 0 } ], - "title": "Sigma Schedule 🎭🅐🅓", "properties": { - "Node name for S&R": "ADE_SigmaSchedule", - "ttNbgOverride": { - "color": "#2a363b", - "bgcolor": "#3f5159", - "groupcolor": "#3f789e" - } + "Node name for S&R": "SetClipHooks" }, "widgets_values": [ - "lcm avg(sqrt_linear,linear)" + true, + false ] }, { - "id": 32, - "type": "ADE_MultivalDynamic", + "id": 2, + "type": "CLIPTextEncode", "pos": [ - 3131.5897819464126, - 768.8759046187079 + 1425.2979736328125, + -96.53550720214844 + ], + "size": [ + 327, + 108 ], - "size": { - "0": 259.9388122558594, - "1": 63.332008361816406 - }, "flags": {}, - "order": 1, + "order": 69, "mode": 0, "inputs": [ { - "name": "mask_optional", - "type": "MASK", - "link": null + "name": "clip", + "type": "CLIP", + "link": 1 } ], "outputs": [ { - "name": "MULTIVAL", - "type": "MULTIVAL", + "name": "CONDITIONING", + "type": "CONDITIONING", "links": [ - 48 + 14 ], - "shape": 3, "slot_index": 0 } ], - "title": "Scale 🎭🅐🅓", "properties": { - "Node name for S&R": "ADE_MultivalDynamic", - "ttNbgOverride": { - "color": "#2a363b", - "bgcolor": "#3f5159", - "groupcolor": "#3f789e" - } + "Node name for S&R": "CLIPTextEncode" }, "widgets_values": [ - 1.1400000000000001, - "" - ] + "worst quality, low quality" + ], + "color": "#322", + "bgcolor": "#533" }, { - "id": 34, - "type": "ADE_MultivalDynamic", + "id": 3, + "type": "CLIPTextEncode", "pos": [ - 3131.5897819464126, - 658.8759046187079 + 1405.2979736328125, + 273.4644775390625 + ], + "size": [ + 327, + 108 ], - "size": { - "0": 265.1632385253906, - "1": 58 - }, "flags": {}, - "order": 2, + "order": 68, "mode": 0, "inputs": [ { - "name": "mask_optional", - "type": "MASK", - "link": null + "name": "clip", + "type": "CLIP", + "link": 166 } ], "outputs": [ { - "name": "MULTIVAL", - "type": "MULTIVAL", + "name": "CONDITIONING", + "type": "CONDITIONING", "links": [ - 49 + 100 ], - "shape": 3 + "slot_index": 0 } ], - "title": "Effect 🎭🅐🅓", "properties": { - "Node name for S&R": "ADE_MultivalDynamic", - "ttNbgOverride": { - "color": "#2a363b", - "bgcolor": "#3f5159", - "groupcolor": "#3f789e" - } + "Node name for S&R": "CLIPTextEncode" }, "widgets_values": [ - 1.1, - "" - ] + "worst quality, low quality" + ], + "color": "#322", + "bgcolor": "#533" }, { - "id": 35, - "type": "ADE_CustomCFGSimple", + "id": 136, + "type": "GetNode", "pos": [ - 3131.5897819464126, - 868.8759046187079 + 3585.857421875, + -286.5335998535156 + ], + "size": [ + 210, + 58 ], - "size": { - "0": 257.2469787597656, - "1": 60.893348693847656 - }, "flags": {}, - "order": 3, + "order": 0, "mode": 0, - "inputs": [ + "inputs": [], + "outputs": [ { - "name": "cfg_extras", - "type": "CFG_EXTRAS", - "link": null + "name": "AUDIO", + "type": "AUDIO", + "links": [], + "slot_index": 0 } ], + "title": "Get_audio", + "properties": {}, + "widgets_values": [ + "audio" + ] + }, + { + "id": 152, + "type": "ControlNetLoader", + "pos": [ + 2448.947021484375, + 731.6345825195312 + ], + "size": [ + 315, + 58 + ], + "flags": {}, + "order": 1, + "mode": 0, + "inputs": [], "outputs": [ { - "name": "CUSTOM_CFG", - "type": "CUSTOM_CFG", + "name": "CONTROL_NET", + "type": "CONTROL_NET", "links": [ - 50 - ], - "shape": 3 + 218 + ] } ], "properties": { - "Node name for S&R": "ADE_CustomCFGSimple", - "ttNbgOverride": { - "color": "#2a363b", - "bgcolor": "#3f5159", - "groupcolor": "#3f789e" - } + "Node name for S&R": "ControlNetLoader" }, "widgets_values": [ - 2, - "" + "control_v11f1p_sd15_depth.pth" ] }, { - "id": 36, - "type": "ADE_AnimateDiffSettings", + "id": 16, + "type": "PairConditioningSetProperties", "pos": [ - 3161.5897819464126, - 1218.8759046187079 + 1861.81298828125, + -297.5429992675781 ], - "size": { - "0": 226.8000030517578, - "1": 54 - }, - "flags": { - "collapsed": true - }, - "order": 40, + "size": [ + 315, + 162 + ], + "flags": {}, + "order": 85, "mode": 0, "inputs": [ { - "name": "pe_adjust", - "type": "PE_ADJUST", - "link": 53, - "slot_index": 0 + "name": "positive_NEW", + "type": "CONDITIONING", + "link": 13 }, { - "name": "weight_adjust", - "type": "WEIGHT_ADJUST", - "link": 54, - "slot_index": 1 + "name": "negative_NEW", + "type": "CONDITIONING", + "link": 14 + }, + { + "name": "mask", + "type": "MASK", + "link": 618, + "shape": 7 + }, + { + "name": "hooks", + "type": "HOOKS", + "link": null, + "shape": 7 + }, + { + "name": "timesteps", + "type": "TIMESTEPS_RANGE", + "link": null, + "shape": 7 } ], "outputs": [ { - "name": "AD_SETTINGS", - "type": "AD_SETTINGS", + "name": "positive", + "type": "CONDITIONING", "links": [ - 46 + 97 ], - "shape": 3 + "slot_index": 0 + }, + { + "name": "negative", + "type": "CONDITIONING", + "links": [ + 98 + ], + "slot_index": 1 } ], "properties": { - "Node name for S&R": "ADE_AnimateDiffSettings", - "ttNbgOverride": { - "color": "#2a363b", - "bgcolor": "#3f5159", - "groupcolor": "#3f789e" - } + "Node name for S&R": "PairConditioningSetProperties" }, "widgets_values": [ - "" + 1, + "default" ] }, { - "id": 37, - "type": "ADE_AdjustPESweetspotStretch", + "id": 359, + "type": "ADE_AnimateDiffUniformContextOptions", "pos": [ - 3131.5897819464126, - 968.8759046187079 + 3120, + 120 + ], + "size": [ + 273.269775390625, + 270 ], - "size": { - "0": 253.07310485839844, - "1": 106 - }, "flags": {}, - "order": 4, + "order": 2, "mode": 0, "inputs": [ { - "name": "prev_pe_adjust", - "type": "PE_ADJUST", - "link": null + "name": "prev_context", + "type": "CONTEXT_OPTIONS", + "link": null, + "shape": 7 + }, + { + "name": "view_opts", + "type": "VIEW_OPTS", + "link": null, + "shape": 7 } ], "outputs": [ { - "name": "PE_ADJUST", - "type": "PE_ADJUST", + "name": "CONTEXT_OPTS", + "type": "CONTEXT_OPTIONS", "links": [ - 53 + 542 ], + "slot_index": 0, "shape": 3 } ], + "title": "Context Options 🎭🅐🅓", "properties": { - "Node name for S&R": "ADE_AdjustPESweetspotStretch", + "Node name for S&R": "ADE_AnimateDiffUniformContextOptions", "ttNbgOverride": { "color": "#2a363b", "bgcolor": "#3f5159", @@ -268,256 +308,305 @@ }, "widgets_values": [ 16, - 18, + 1, + 4, + "uniform", + false, + "pyramid", false, + 0, + 1, "" ] }, { - "id": 57, - "type": "GetNode", - "pos": { - "0": 981.441162109375, - "1": 1401.961181640625, - "2": 0, - "3": 0, - "4": 0, - "5": 0, - "6": 0, - "7": 0, - "8": 0, - "9": 0 - }, - "size": { - "0": 210, - "1": 58 - }, + "id": 358, + "type": "ADE_UseEvolvedSampling", + "pos": [ + 3150, + -120 + ], + "size": [ + 315, + 118 + ], "flags": {}, - "order": 5, + "order": 81, "mode": 0, - "inputs": [], - "outputs": [ + "inputs": [ { - "name": "IMAGE", - "type": "IMAGE", - "links": [ - 81 - ], - "slot_index": 0 + "name": "model", + "type": "MODEL", + "link": 692 + }, + { + "name": "m_models", + "type": "M_MODELS", + "link": 541, + "shape": 7 + }, + { + "name": "context_options", + "type": "CONTEXT_OPTIONS", + "link": 542, + "shape": 7 + }, + { + "name": "sample_settings", + "type": "SAMPLE_SETTINGS", + "link": 543, + "shape": 7 } ], - "title": "Get_depth_maps", - "properties": {}, - "widgets_values": [ - "depth_maps" - ] - }, - { - "id": 58, - "type": "GetNode", - "pos": { - "0": 961.441162109375, - "1": 1551.961181640625, - "2": 0, - "3": 0, - "4": 0, - "5": 0, - "6": 0, - "7": 0, - "8": 0, - "9": 0 - }, - "size": { - "0": 210, - "1": 58 - }, - "flags": {}, - "order": 6, - "mode": 0, - "inputs": [], "outputs": [ { - "name": "IMAGE", - "type": "IMAGE", + "name": "MODEL", + "type": "MODEL", "links": [ - 82 + 545, + 546 ], "slot_index": 0 } ], - "title": "Get_lineart", - "properties": {}, + "properties": { + "Node name for S&R": "ADE_UseEvolvedSampling" + }, "widgets_values": [ - "lineart" + "autoselect" ] }, { - "id": 63, - "type": "PreviewImage", + "id": 356, + "type": "ADE_ApplyAnimateDiffModelSimple", "pos": [ - 1430, - -4640 + 3160, + -310 + ], + "size": [ + 260.3999938964844, + 126 ], - "size": { - "0": 210, - "1": 246 - }, "flags": {}, - "order": 58, - "mode": 4, + "order": 76, + "mode": 0, "inputs": [ { - "name": "images", - "type": "IMAGE", - "link": 95 - } + "name": "motion_model", + "type": "MOTION_MODEL_ADE", + "link": 537 + }, + { + "name": "motion_lora", + "type": "MOTION_LORA", + "link": 538, + "shape": 7 + }, + { + "name": "scale_multival", + "type": "MULTIVAL", + "link": 539, + "shape": 7 + }, + { + "name": "effect_multival", + "type": "MULTIVAL", + "link": 540, + "shape": 7 + }, + { + "name": "ad_keyframes", + "type": "AD_KEYFRAMES", + "link": null, + "shape": 7 + }, + { + "name": "per_block", + "type": "PER_BLOCK", + "link": null, + "shape": 7 + } + ], + "outputs": [ + { + "name": "M_MODELS", + "type": "M_MODELS", + "links": [ + 541 + ] + } ], "properties": { - "Node name for S&R": "PreviewImage" - } + "Node name for S&R": "ADE_ApplyAnimateDiffModelSimple" + }, + "widgets_values": [] }, { - "id": 19, - "type": "EmptyImage", + "id": 357, + "type": "ADE_LoadAnimateDiffModel", "pos": [ - -309.8733202685141, - -894.0264396732274 + 3060, + -450 + ], + "size": [ + 302, + 58 ], - "size": { - "0": 315, - "1": 130 - }, "flags": {}, - "order": 59, + "order": 3, "mode": 0, "inputs": [ { - "name": "width", - "type": "INT", - "link": 26, - "widget": { - "name": "width" - } - }, + "name": "ad_settings", + "type": "AD_SETTINGS", + "link": null, + "shape": 7 + } + ], + "outputs": [ { - "name": "height", - "type": "INT", - "link": 27, - "widget": { - "name": "height" - } - }, + "name": "MOTION_MODEL", + "type": "MOTION_MODEL_ADE", + "links": [ + 537 + ] + } + ], + "properties": { + "Node name for S&R": "ADE_LoadAnimateDiffModel" + }, + "widgets_values": [ + "ALCM_sd15_t2v_beta.ckpt" + ] + }, + { + "id": 352, + "type": "ADE_MultivalDynamic", + "pos": [ + 2793.64599609375, + -172.73568725585938 + ], + "size": [ + 265.1632385253906, + 58 + ], + "flags": {}, + "order": 4, + "mode": 0, + "inputs": [ { - "name": "batch_size", - "type": "INT", - "link": 103, - "widget": { - "name": "batch_size" - } + "name": "mask_optional", + "type": "MASK", + "link": null, + "shape": 7 } ], "outputs": [ { - "name": "IMAGE", - "type": "IMAGE", + "name": "MULTIVAL", + "type": "MULTIVAL", "links": [ - 30 + 540 ], - "shape": 3, - "slot_index": 0 + "slot_index": 0, + "shape": 3 } ], + "title": "Effect 🎭🅐🅓", "properties": { - "Node name for S&R": "EmptyImage" + "Node name for S&R": "ADE_MultivalDynamic", + "ttNbgOverride": { + "color": "#2a363b", + "bgcolor": "#3f5159", + "groupcolor": "#3f789e" + } }, "widgets_values": [ - 512, - 512, - 60, - 0 + 1.1 ] }, { - "id": 50, - "type": "LineartStandardPreprocessor", + "id": 351, + "type": "ADE_AnimateDiffLoRALoader", "pos": [ - -2702.5557197546927, - -976.6574720262626 + 2786.056396484375, + -295.0462951660156 + ], + "size": [ + 261.19134521484375, + 82 ], - "size": { - "0": 315, - "1": 106 - }, "flags": {}, - "order": 70, + "order": 5, "mode": 0, "inputs": [ { - "name": "image", - "type": "IMAGE", - "link": 129 + "name": "prev_motion_lora", + "type": "MOTION_LORA", + "link": null, + "shape": 7 } ], "outputs": [ { - "name": "IMAGE", - "type": "IMAGE", + "name": "MOTION_LORA", + "type": "MOTION_LORA", "links": [ - 303 + 538 ], - "shape": 3, - "slot_index": 0 + "slot_index": 0, + "shape": 3 } ], + "title": "AnimateDiff LoRA", "properties": { - "Node name for S&R": "LineartStandardPreprocessor" + "Node name for S&R": "ADE_AnimateDiffLoRALoader", + "ttNbgOverride": { + "color": "#2a363b", + "bgcolor": "#3f5159", + "groupcolor": "#3f789e" + } }, "widgets_values": [ - 6, - 8, - 512 + "LiquidAF-0-1.safetensors", + 0.8 ] }, { - "id": 33, - "type": "ADE_AnimateDiffUniformContextOptions", + "id": 354, + "type": "ADE_CustomCFGSimple", "pos": [ - 3481.5897819464126, - 658.8759046187079 + 2790.7177734375, + -43.261199951171875 + ], + "size": [ + 257.2469787597656, + 60.893348693847656 ], - "size": { - "0": 273.269775390625, - "1": 270 - }, "flags": {}, - "order": 7, + "order": 6, "mode": 0, "inputs": [ { - "name": "prev_context", - "type": "CONTEXT_OPTIONS", - "link": null - }, - { - "name": "view_opts", - "type": "VIEW_OPTS", - "link": null + "name": "cfg_extras", + "type": "CFG_EXTRAS", + "link": null, + "shape": 7 } ], "outputs": [ { - "name": "CONTEXT_OPTS", - "type": "CONTEXT_OPTIONS", + "name": "CUSTOM_CFG", + "type": "CUSTOM_CFG", "links": [ - 44 + 536 ], - "shape": 3, - "slot_index": 0 + "slot_index": 0, + "shape": 3 } ], - "title": "Context Options 🎭🅐🅓", "properties": { - "Node name for S&R": "ADE_AnimateDiffUniformContextOptions", + "Node name for S&R": "ADE_CustomCFGSimple", "ttNbgOverride": { "color": "#2a363b", "bgcolor": "#3f5159", @@ -525,55 +614,50 @@ } }, "widgets_values": [ - 16, - 1, - 4, - "uniform", - false, - "pyramid", - false, - 0, - 1, - "" + 2 ] }, { - "id": 29, + "id": 355, "type": "ADE_AnimateDiffSamplingSettings", "pos": [ - 3481.5897819464126, - 968.8759046187079 + 2798.038330078125, + 103.58998107910156 + ], + "size": [ + 273.3500061035156, + 274 ], - "size": { - "0": 273.3500061035156, - "1": 254 - }, "flags": {}, - "order": 39, + "order": 33, "mode": 0, "inputs": [ { "name": "noise_layers", "type": "NOISE_LAYERS", "link": null, - "slot_index": 0 + "slot_index": 0, + "shape": 7 }, { "name": "iteration_opts", "type": "ITERATION_OPTS", - "link": null + "link": null, + "shape": 7 }, { "name": "custom_cfg", "type": "CUSTOM_CFG", - "link": 50, - "slot_index": 2 + "link": 536, + "slot_index": 2, + "shape": 7 }, { "name": "sigma_schedule", "type": "SIGMA_SCHEDULE", - "link": 51, - "slot_index": 3 + "link": null, + "slot_index": 3, + "shape": 7 }, { "name": "seed_override", @@ -589,7 +673,14 @@ "link": null, "widget": { "name": "seed_override" - } + }, + "shape": 7 + }, + { + "name": "image_inject", + "type": "IMAGE_INJECT", + "link": null, + "shape": 7 } ], "outputs": [ @@ -597,10 +688,10 @@ "name": "settings", "type": "SAMPLE_SETTINGS", "links": [ - 47 + 543 ], - "shape": 3, - "slot_index": 0 + "slot_index": 0, + "shape": 3 } ], "properties": { @@ -617,581 +708,564 @@ "comfy", 0, 0, - false, - "" + false ] }, { - "id": 14, - "type": "DepthAnything_V2", + "id": 324, + "type": "Anything Everywhere?", "pos": [ - -2688.433746544838, - -613.3686263142703 + -2349.999755859375, + 338.658203125 + ], + "size": [ + 315, + 106 ], - "size": { - "0": 210, - "1": 46 - }, "flags": {}, - "order": 71, + "order": 36, "mode": 0, "inputs": [ { - "name": "da_model", - "type": "DAMODEL", - "link": 15, - "slot_index": 0 - }, - { - "name": "images", - "type": "IMAGE", - "link": 130 + "name": "INT", + "type": "*", + "link": 588, + "shape": 7, + "color_on": "" } ], + "outputs": [], + "properties": { + "Node name for S&R": "Anything Everywhere?", + "group_restricted": 0, + "color_restricted": 0 + }, + "widgets_values": [ + ".*", + "width", + ".*" + ] + }, + { + "id": 327, + "type": "FloatConstant", + "pos": [ + -2729.999755859375, + 168.65823364257812 + ], + "size": [ + 210, + 58 + ], + "flags": {}, + "order": 7, + "mode": 0, + "inputs": [], "outputs": [ { - "name": "image", - "type": "IMAGE", + "name": "value", + "type": "FLOAT", "links": [ - 304 + 501 ], - "shape": 3, "slot_index": 0 } ], "properties": { - "Node name for S&R": "DepthAnything_V2" - } + "Node name for S&R": "FloatConstant" + }, + "widgets_values": [ + 30.000000000000004 + ], + "color": "#232", + "bgcolor": "#353" }, { - "id": 86, - "type": "Note", + "id": 323, + "type": "Anything Everywhere?", "pos": [ - 3160.2307942589186, - 250.7002531609014 + -2369.999755859375, + 518.6581420898438 + ], + "size": [ + 315, + 106 ], - "size": { - "0": 210, - "1": 58 - }, "flags": {}, - "order": 8, + "order": 35, "mode": 0, + "inputs": [ + { + "name": "INT", + "type": "*", + "link": 587, + "shape": 7, + "color_on": "" + } + ], + "outputs": [], "properties": { - "text": "" + "Node name for S&R": "Anything Everywhere?", + "group_restricted": 0, + "color_restricted": 0 }, "widgets_values": [ - "Shoutout Akatz" - ], - "color": "#432", - "bgcolor": "#653" + ".*", + "height", + ".*" + ] }, { - "id": 12, - "type": "VAEEncode", + "id": 366, + "type": "INTConstant", "pos": [ - 1562, - 458 + -2659.999755859375, + 338.658203125 + ], + "size": [ + 210, + 58 ], - "size": { - "0": 210, - "1": 46 - }, "flags": {}, - "order": 47, + "order": 8, "mode": 0, - "inputs": [ - { - "name": "pixels", - "type": "IMAGE", - "link": 310 - }, - { - "name": "vae", - "type": "VAE", - "link": 12 - } - ], + "inputs": [], "outputs": [ { - "name": "LATENT", - "type": "LATENT", + "name": "value", + "type": "INT", "links": [ - 67 + 587 ], - "shape": 3, "slot_index": 0 } ], "properties": { - "Node name for S&R": "VAEEncode" - } + "Node name for S&R": "INTConstant" + }, + "widgets_values": [ + 512 + ], + "color": "#1b4669", + "bgcolor": "#29699c" }, { - "id": 43, - "type": "CR Apply LoRA Stack", + "id": 367, + "type": "INTConstant", "pos": [ - 1524, - 612 + -2689.999755859375, + 528.6581420898438 + ], + "size": [ + 210, + 58 ], - "size": { - "0": 254.40000915527344, - "1": 66 - }, "flags": {}, - "order": 52, + "order": 9, "mode": 0, - "inputs": [ - { - "name": "model", - "type": "MODEL", - "link": 60 - }, - { - "name": "clip", - "type": "CLIP", - "link": 61 - }, - { - "name": "lora_stack", - "type": "LORA_STACK", - "link": 62 - } - ], + "inputs": [], "outputs": [ { - "name": "MODEL", - "type": "MODEL", + "name": "value", + "type": "INT", "links": [ - 65 + 588 ], - "shape": 3, "slot_index": 0 - }, - { - "name": "CLIP", - "type": "CLIP", - "links": [ - 63, - 64 - ], - "shape": 3, - "slot_index": 1 - }, - { - "name": "show_help", - "type": "STRING", - "links": null, - "shape": 3 } ], "properties": { - "Node name for S&R": "CR Apply LoRA Stack" - } + "Node name for S&R": "INTConstant" + }, + "widgets_values": [ + 768 + ], + "color": "#1b4669", + "bgcolor": "#29699c" }, { - "id": 44, - "type": "SetLatentNoiseMask", + "id": 373, + "type": "VHS_VideoCombine", "pos": [ - 5196.2924473208695, - 361.47099519392407 + 47.184326171875, + 971.093505859375 + ], + "size": [ + 399.9459228515625, + 601.2973022460938 ], - "size": { - "0": 210, - "1": 46 - }, "flags": {}, - "order": 98, + "order": 87, "mode": 0, "inputs": [ { - "name": "samples", - "type": "LATENT", - "link": 67 + "name": "images", + "type": "IMAGE", + "link": 586 }, { - "name": "mask", - "type": "MASK", - "link": 151 - } - ], - "outputs": [ + "name": "audio", + "type": "AUDIO", + "link": null, + "shape": 7 + }, { - "name": "LATENT", - "type": "LATENT", - "links": [ - 68 - ], - "shape": 3, - "slot_index": 0 - } - ], - "properties": { - "Node name for S&R": "SetLatentNoiseMask" - } - }, - { - "id": 64, - "type": "ImageScale", - "pos": [ - 4420.911603734175, - 290.661003053677 - ], - "size": { - "0": 315, - "1": 130 - }, - "flags": {}, - "order": 53, - "mode": 0, - "inputs": [ + "name": "meta_batch", + "type": "VHS_BatchManager", + "link": null, + "shape": 7 + }, { - "name": "image", - "type": "IMAGE", - "link": 97 + "name": "vae", + "type": "VAE", + "link": null, + "shape": 7 } ], "outputs": [ { - "name": "IMAGE", - "type": "IMAGE", - "links": [ - 98 - ], - "shape": 3, - "slot_index": 0 + "name": "Filenames", + "type": "VHS_FILENAMES", + "links": null } ], "properties": { - "Node name for S&R": "ImageScale" + "Node name for S&R": "VHS_VideoCombine" }, - "widgets_values": [ - "nearest-exact", - 1000, - 1000, - "disabled" - ] + "widgets_values": { + "frame_rate": 30, + "loop_count": 0, + "filename_prefix": "AnimateDiff", + "format": "video/h264-mp4", + "pix_fmt": "yuv420p", + "crf": 19, + "save_metadata": true, + "trim_to_audio": false, + "pingpong": false, + "save_output": true, + "videopreview": { + "hidden": false, + "paused": false, + "params": { + "filename": "AnimateDiff_02497-audio.mp4", + "subfolder": "", + "type": "output", + "format": "video/h264-mp4", + "frame_rate": 30, + "workflow": "AnimateDiff_02497.png", + "fullpath": "/runpod-volume/ComfyUI_rv/output/AnimateDiff_02497-audio.mp4" + }, + "muted": false + } + } }, { - "id": 40, - "type": "IPAdapterUnifiedLoader", + "id": 13, + "type": "CheckpointLoaderSimple", "pos": [ - 4427.911603734175, - 481.6610030536765 + 313.2342224121094, + -135.5034942626953 + ], + "size": [ + 315, + 98 ], - "size": { - "0": 315, - "1": 78 - }, "flags": {}, - "order": 72, + "order": 10, "mode": 0, - "inputs": [ - { - "name": "model", - "type": "MODEL", - "link": 56 - }, - { - "name": "ipadapter", - "type": "IPADAPTER", - "link": null - } - ], + "inputs": [], "outputs": [ { - "name": "model", + "name": "MODEL", "type": "MODEL", "links": [ - 57 + 692 ], - "shape": 3, "slot_index": 0 }, { - "name": "ipadapter", - "type": "IPADAPTER", + "name": "CLIP", + "type": "CLIP", "links": [ - 58 + 10 ], - "shape": 3, "slot_index": 1 + }, + { + "name": "VAE", + "type": "VAE", + "links": [ + 603 + ], + "slot_index": 2 } ], "properties": { - "Node name for S&R": "IPAdapterUnifiedLoader" + "Node name for S&R": "CheckpointLoaderSimple" }, "widgets_values": [ - "PLUS (high strength)" + "photonLCM_v10.safetensors" ] }, { - "id": 7, - "type": "CLIPTextEncode", + "id": 12, + "type": "CLIPSetLastLayer", "pos": [ - 1937, - 702 + 802.5792846679688, + -101.50981140136719 + ], + "size": [ + 210, + 58.683013916015625 ], - "size": { - "0": 425.27801513671875, - "1": 180.6060791015625 - }, "flags": {}, - "order": 65, + "order": 37, "mode": 0, "inputs": [ { "name": "clip", "type": "CLIP", - "link": 64 + "link": 10 } ], "outputs": [ { - "name": "CONDITIONING", - "type": "CONDITIONING", + "name": "CLIP", + "type": "CLIP", "links": [ - 86 + 9, + 21 ], "slot_index": 0 } ], "properties": { - "Node name for S&R": "CLIPTextEncode" + "Node name for S&R": "CLIPSetLastLayer" }, "widgets_values": [ - "text, watermark" + -2 ] }, { - "id": 39, - "type": "ADE_AnimateDiffLoRALoader", + "id": 18, + "type": "CreateHookModelAsLora", "pos": [ - 3114, - 356 + 724.425537109375, + 41.72096252441406 + ], + "size": [ + 315, + 106 ], - "size": { - "0": 261.19134521484375, - "1": 82 - }, "flags": {}, - "order": 9, + "order": 11, "mode": 0, "inputs": [ { - "name": "prev_motion_lora", - "type": "MOTION_LORA", - "link": null + "name": "prev_hooks", + "type": "HOOKS", + "link": null, + "shape": 7 } ], "outputs": [ { - "name": "MOTION_LORA", - "type": "MOTION_LORA", - "links": [ - 45 - ], - "shape": 3, + "name": "HOOKS", + "type": "HOOKS", + "links": [], "slot_index": 0 } ], - "title": "AnimateDiff LoRA", "properties": { - "Node name for S&R": "ADE_AnimateDiffLoRALoader", - "ttNbgOverride": { - "color": "#2a363b", - "bgcolor": "#3f5159", - "groupcolor": "#3f789e" - } + "Node name for S&R": "CreateHookModelAsLora" }, "widgets_values": [ - "LiquidAF-0-1.safetensors", - 0.8, - "" + "photonLCM_v10.safetensors", + 1, + 1 ] }, { - "id": 38, - "type": "ADE_AdjustWeightAllMult", + "id": 386, + "type": "Anything Everywhere?", "pos": [ - 3115, - 498 + 704.195556640625, + 231.42691040039062 + ], + "size": [ + 315, + 106 ], - "size": { - "0": 270.3999938964844, - "1": 82 - }, "flags": {}, - "order": 10, + "order": 38, "mode": 0, "inputs": [ { - "name": "prev_weight_adjust", - "type": "WEIGHT_ADJUST", - "link": null - } - ], - "outputs": [ - { - "name": "WEIGHT_ADJUST", - "type": "WEIGHT_ADJUST", - "links": [ - 54 - ], - "shape": 3 + "name": "VAE", + "type": "*", + "link": 603, + "shape": 7, + "color_on": "#FF6E6E" } ], + "outputs": [], "properties": { - "Node name for S&R": "ADE_AdjustWeightAllMult", - "ttNbgOverride": { - "color": "#2a363b", - "bgcolor": "#3f5159", - "groupcolor": "#3f789e" - } + "Node name for S&R": "Anything Everywhere?", + "group_restricted": 0, + "color_restricted": 0 }, "widgets_values": [ - 1.01, - false, - "" + ".*", + "vae", + ".*" ] }, { - "id": 4, - "type": "CheckpointLoaderSimple", + "id": 396, + "type": "AIO_Preprocessor", "pos": [ - 1094, - 453 + 2461.162841796875, + 865.462646484375 + ], + "size": [ + 315, + 82 ], - "size": { - "0": 315, - "1": 98 - }, "flags": {}, - "order": 11, + "order": 91, "mode": 0, - "outputs": [ - { - "name": "MODEL", - "type": "MODEL", - "links": [ - 60 - ], - "slot_index": 0 - }, + "inputs": [ { - "name": "CLIP", - "type": "CLIP", - "links": [ - 61 - ], - "slot_index": 1 - }, + "name": "image", + "type": "IMAGE", + "link": 656 + } + ], + "outputs": [ { - "name": "VAE", - "type": "VAE", + "name": "IMAGE", + "type": "IMAGE", "links": [ - 12, - 133 - ], - "slot_index": 2 + 615 + ] } ], "properties": { - "Node name for S&R": "CheckpointLoaderSimple" + "Node name for S&R": "AIO_Preprocessor" }, "widgets_values": [ - "photon_v1.safetensors" + "DepthAnythingV2Preprocessor", + 512 ] }, { - "id": 59, - "type": "Apply ControlNet Stack", + "id": 17, + "type": "PairConditioningSetPropertiesAndCombine", "pos": [ - 2524, - 581 + 2256.716552734375, + -149.84344482421875 + ], + "size": [ + 340.20001220703125, + 202 ], - "size": { - "0": 304.79998779296875, - "1": 66 - }, "flags": {}, - "order": 73, + "order": 89, "mode": 0, "inputs": [ { "name": "positive", "type": "CONDITIONING", - "link": 85 + "link": 97 }, { "name": "negative", "type": "CONDITIONING", - "link": 86 + "link": 98 }, { - "name": "cnet_stack", - "type": "CONTROL_NET_STACK", - "link": 84, - "slot_index": 2 - } - ], - "outputs": [ - { - "name": "CONDITIONING+", + "name": "positive_NEW", "type": "CONDITIONING", - "links": [ - 134 - ], - "shape": 3, - "slot_index": 0 + "link": 99 }, { - "name": "CONDITIONING-", + "name": "negative_NEW", "type": "CONDITIONING", - "links": [ - 135 - ], - "shape": 3, - "slot_index": 1 - } + "link": 100 + }, + { + "name": "mask", + "type": "MASK", + "link": 619, + "shape": 7 + }, + { + "name": "hooks", + "type": "HOOKS", + "link": null, + "shape": 7 + }, + { + "name": "timesteps", + "type": "TIMESTEPS_RANGE", + "link": null, + "shape": 7 + } ], - "properties": { - "Node name for S&R": "Apply ControlNet Stack", - "ttNbgOverride": { - "color": "#2a363b", - "bgcolor": "#3f5159", - "groupcolor": "#3f789e" + "outputs": [ + { + "name": "positive", + "type": "CONDITIONING", + "links": [ + 442 + ], + "slot_index": 0 + }, + { + "name": "negative", + "type": "CONDITIONING", + "links": [ + 443 + ], + "slot_index": 1 } + ], + "properties": { + "Node name for S&R": "PairConditioningSetPropertiesAndCombine" }, - "shape": 1 + "widgets_values": [ + 1, + "default" + ] }, { - "id": 88, + "id": 15, "type": "Reroute", "pos": [ - 2860.8354071366402, - 64 + 1532.39306640625, + -444.7710266113281 ], "size": [ 75, 26 ], "flags": {}, - "order": 41, + "order": 74, "mode": 0, "inputs": [ { "name": "", "type": "*", - "link": 133 + "link": 608 } ], "outputs": [ { "name": "", - "type": "VAE", + "type": "MASK", "links": [ - 136 + 46, + 619 ], "slot_index": 0 } @@ -1202,1551 +1276,1691 @@ } }, { - "id": 89, - "type": "Reroute", + "id": 71, + "type": "CreateHookLora", "pos": [ - 2860.8354071366402, - 105 + 399.3513488769531, + -311.66949462890625 ], "size": [ - 75, - 26 + 315, + 106 ], "flags": {}, - "order": 78, - "mode": 0, + "order": 12, + "mode": 4, "inputs": [ { - "name": "", - "type": "*", - "link": 134 + "name": "prev_hooks", + "type": "HOOKS", + "link": null, + "shape": 7 } ], "outputs": [ { - "name": "", - "type": "CONDITIONING", + "name": "HOOKS", + "type": "HOOKS", "links": [ - 139 - ], - "slot_index": 0 + 121 + ] } ], "properties": { - "showOutputText": false, - "horizontal": false - } + "Node name for S&R": "CreateHookLora" + }, + "widgets_values": [ + "ral-acidzlime-sd15.safetensors", + 1, + 1 + ] }, { - "id": 90, - "type": "Reroute", + "id": 4, + "type": "CLIPTextEncode", "pos": [ - 2860.8354071366402, - 143.3452987595907 + 1422.325927734375, + -268.9685363769531 ], "size": [ - 75, - 26 + 327, + 108 ], "flags": {}, - "order": 79, + "order": 70, "mode": 0, "inputs": [ { - "name": "", - "type": "*", - "link": 135 + "name": "clip", + "type": "CLIP", + "link": 3 } ], "outputs": [ { - "name": "", + "name": "CONDITIONING", "type": "CONDITIONING", "links": [ - 141 + 13 ], "slot_index": 0 } ], "properties": { - "showOutputText": false, - "horizontal": false - } + "Node name for S&R": "CLIPTextEncode" + }, + "widgets_values": [ + "digital particles (ral-chrome, dripping gold)" + ], + "color": "#232", + "bgcolor": "#353" }, { - "id": 98, - "type": "Reroute", + "id": 157, + "type": "VAELoader", "pos": [ - 5172, - 31 + 5684.53955078125, + -43.22019577026367 ], "size": [ - 75, - 26 + 315, + 58 ], "flags": {}, - "order": 96, + "order": 13, "mode": 0, - "inputs": [ - { - "name": "", - "type": "*", - "link": 149 - } - ], + "inputs": [], "outputs": [ { - "name": "", - "type": "MASK", + "name": "VAE", + "type": "VAE", "links": [ - 150, - 151 + 236 ], "slot_index": 0 } ], "properties": { - "showOutputText": false, - "horizontal": false - } + "Node name for S&R": "VAELoader" + }, + "widgets_values": [ + "vaeFtMse840000EmaPruned_vae.safetensors" + ] }, { - "id": 100, - "type": "SetLatentNoiseMask", + "id": 11, + "type": "SetClipHooks", "pos": [ - 6505.217366877503, - 369.41342322069596 + 1138.2432861328125, + 54.12196350097656 + ], + "size": [ + 210, + 102 ], - "size": { - "0": 210, - "1": 46 - }, "flags": {}, - "order": 104, + "order": 56, "mode": 0, "inputs": [ { - "name": "samples", - "type": "LATENT", - "link": 152 + "name": "clip", + "type": "CLIP", + "link": 9 }, { - "name": "mask", - "type": "MASK", - "link": 154 + "name": "hooks", + "type": "HOOKS", + "link": 629, + "shape": 7 } ], "outputs": [ { - "name": "LATENT", - "type": "LATENT", + "name": "CLIP", + "type": "CLIP", "links": [ - 153 + 165, + 166 ], - "shape": 3, "slot_index": 0 } ], "properties": { - "Node name for S&R": "SetLatentNoiseMask" - } + "Node name for S&R": "SetClipHooks" + }, + "widgets_values": [ + true, + false + ] }, { - "id": 17, - "type": "GetImageSizeAndCount", + "id": 407, + "type": "CreateHookLora", "pos": [ - -3900, - -866 + 345.5948486328125, + 113.78278350830078 + ], + "size": [ + 291.2920837402344, + 106 ], - "size": { - "0": 210, - "1": 86 - }, "flags": {}, - "order": 50, + "order": 14, "mode": 0, "inputs": [ { - "name": "image", - "type": "IMAGE", - "link": 301 + "name": "prev_hooks", + "type": "HOOKS", + "link": null, + "shape": 7 } ], "outputs": [ { - "name": "image", - "type": "IMAGE", + "name": "HOOKS", + "type": "HOOKS", "links": [ - 122, - 128 + 629 ], - "shape": 3, "slot_index": 0 - }, - { - "name": "1920 width", - "type": "INT", - "links": null, - "shape": 3, - "slot_index": 1 - }, - { - "name": "1080 height", - "type": "INT", - "links": null, - "shape": 3 - }, - { - "name": "66 count", - "type": "INT", - "links": null, - "shape": 3 } ], "properties": { - "Node name for S&R": "GetImageSizeAndCount" - } + "Node name for S&R": "CreateHookLora" + }, + "widgets_values": [ + "ral-3dwvz-sd15.safetensors", + 1.1, + 1 + ] }, { - "id": 85, - "type": "ImageResizeKJ", + "id": 6, + "type": "CLIPTextEncode", "pos": [ - -3652, - -898 + 1425.2979736328125, + 103.46449279785156 + ], + "size": [ + 327, + 108 ], - "size": { - "0": 310.7047424316406, - "1": 238 - }, "flags": {}, - "order": 62, + "order": 67, "mode": 0, "inputs": [ { - "name": "image", - "type": "IMAGE", - "link": 128 - }, - { - "name": "get_image_size", - "type": "IMAGE", - "link": null - }, - { - "name": "width_input", - "type": "INT", - "link": null, - "widget": { - "name": "width_input" - } - }, - { - "name": "height_input", - "type": "INT", - "link": null, - "widget": { - "name": "height_input" - } + "name": "clip", + "type": "CLIP", + "link": 165 } ], "outputs": [ { - "name": "IMAGE", - "type": "IMAGE", + "name": "CONDITIONING", + "type": "CONDITIONING", "links": [ - 129, - 130 + 99 ], - "shape": 3, "slot_index": 0 - }, - { - "name": "width", - "type": "INT", - "links": null, - "shape": 3 - }, - { - "name": "height", - "type": "INT", - "links": null, - "shape": 3 } ], "properties": { - "Node name for S&R": "ImageResizeKJ" + "Node name for S&R": "CLIPTextEncode" }, "widgets_values": [ - 1280, - 1280, - "lanczos", - true, - 2, - 0, - 0, - "disabled" - ] + "particles made of ral-3dwvz, particles connected by waves" + ], + "color": "#232", + "bgcolor": "#353" }, { - "id": 104, - "type": "SetNode", - "pos": { - "0": -3212, - "1": -997, - "2": 0, - "3": 0, - "4": 0, - "5": 0, - "6": 0, - "7": 0, - "8": 0, - "9": 0 - }, - "size": { - "0": 210, - "1": 58 - }, + "id": 395, + "type": "ImageScaleBy", + "pos": [ + 1026.8580322265625, + 916.050048828125 + ], + "size": [ + 315, + 82 + ], "flags": {}, - "order": 49, + "order": 88, "mode": 0, "inputs": [ { - "name": "IMAGE", + "name": "image", "type": "IMAGE", - "link": 300 + "link": 657 } ], "outputs": [ { - "name": "*", - "type": "*", - "links": null + "name": "IMAGE", + "type": "IMAGE", + "links": [ + 613 + ], + "slot_index": 0 } ], - "title": "Set_init_img", "properties": { - "previousName": "init_img" + "Node name for S&R": "ImageScaleBy" }, "widgets_values": [ - "init_img" + "lanczos", + 0.5 ] }, { - "id": 52, - "type": "SetNode", - "pos": { - "0": -1992, - "1": -966, - "2": 0, - "3": 0, - "4": 0, - "5": 0, - "6": 0, - "7": 0, - "8": 0, - "9": 0 - }, - "size": { - "0": 210, - "1": 58 - }, + "id": 387, + "type": "VAEEncode", + "pos": [ + 1365.041748046875, + 925.2013549804688 + ], + "size": [ + 210, + 46 + ], "flags": {}, - "order": 75, + "order": 92, "mode": 0, "inputs": [ { - "name": "IMAGE", + "name": "pixels", "type": "IMAGE", - "link": 303 + "link": 613 + }, + { + "name": "vae", + "type": "VAE", + "link": null } ], "outputs": [ { - "name": "*", - "type": "*", - "links": null - } - ], - "title": "Set_lineart", - "properties": { - "previousName": "lineart" - }, - "widgets_values": [ - "lineart" - ] - }, - { - "id": 115, - "type": "Note", - "pos": [ - -2340, - -859 + "name": "LATENT", + "type": "LATENT", + "links": [ + 605 + ], + "slot_index": 0 + } ], - "size": { - "0": 363.1609191894531, - "1": 148.97213745117188 - }, - "flags": {}, - "order": 12, - "mode": 0, "properties": { - "text": "" + "Node name for S&R": "VAEEncode" }, - "widgets_values": [ - "2. Preprocess to get the image before replicating it. We use this later for the Depth Chamber as well as control nets." - ], - "color": "#432", - "bgcolor": "#653" + "widgets_values": [] }, { - "id": 72, - "type": "Note", + "id": 390, + "type": "SetNode", "pos": [ - -326.87332026851414, - -1087.026439673227 + 1410.741943359375, + 1087.563232421875 + ], + "size": [ + 210, + 58 ], - "size": { - "0": 357.3516845703125, - "1": 135.6949462890625 - }, "flags": {}, - "order": 13, + "order": 94, "mode": 0, - "properties": { - "text": "" - }, - "widgets_values": [ - "4. I want the whole image to be included in the depth chamber, so I create a mask the size of the image. You could pass in masks of anything here." + "inputs": [ + { + "name": "LATENT", + "type": "LATENT", + "link": 605 + } ], - "color": "#432", - "bgcolor": "#653" - }, - { - "id": 116, - "type": "Note", - "pos": [ - 1490, - 809 + "outputs": [ + { + "name": "*", + "type": "*", + "links": null + } ], - "size": { - "0": 380.91632080078125, - "1": 230.8916015625 - }, - "flags": {}, - "order": 14, - "mode": 0, + "title": "Set_init_latent", "properties": { - "text": "" + "previousName": "init_latent" }, "widgets_values": [ - "5. finally we do all this " + "init_latent" ], - "color": "#432", - "bgcolor": "#653" + "color": "#323", + "bgcolor": "#535" }, { - "id": 93, - "type": "Reroute", + "id": 14, + "type": "InvertMask", "pos": [ - 5183, - 99 + 1835.5404052734375, + -401.791259765625 ], "size": [ - 75, + 210, 26 ], "flags": {}, - "order": 82, + "order": 79, "mode": 0, "inputs": [ { - "name": "", - "type": "*", - "link": 139 + "name": "mask", + "type": "MASK", + "link": 46 } ], "outputs": [ { - "name": "", - "type": "CONDITIONING", + "name": "MASK", + "type": "MASK", "links": [ - 140, - 143 + 618 ], "slot_index": 0 } ], "properties": { - "showOutputText": false, - "horizontal": false - } + "Node name for S&R": "InvertMask" + }, + "widgets_values": [] }, { - "id": 94, - "type": "Reroute", + "id": 397, + "type": "MaskToImage", "pos": [ - 5180, - 136 + 1576.7933349609375, + -889.1575927734375 ], "size": [ - 75, + 264.5999755859375, 26 ], "flags": {}, - "order": 83, + "order": 75, "mode": 0, "inputs": [ { - "name": "", - "type": "*", - "link": 141 + "name": "mask", + "type": "MASK", + "link": 616 } ], "outputs": [ { - "name": "", - "type": "CONDITIONING", + "name": "IMAGE", + "type": "IMAGE", "links": [ - 142, - 144 + 617 ], "slot_index": 0 } ], "properties": { - "showOutputText": false, - "horizontal": false - } + "Node name for S&R": "MaskToImage" + }, + "widgets_values": [] }, { - "id": 125, - "type": "Note", + "id": 398, + "type": "VHS_VideoCombine", "pos": [ - 4337.8690841450125, - 699.6818760329338 + 1955.9129638671875, + -1143.572021484375 + ], + "size": [ + 399.9459228515625, + 601.2973022460938 ], - "size": { - "0": 336.1888122558594, - "1": 206.84153747558594 - }, "flags": {}, - "order": 15, + "order": 80, "mode": 0, + "inputs": [ + { + "name": "images", + "type": "IMAGE", + "link": 617 + }, + { + "name": "audio", + "type": "AUDIO", + "link": null, + "shape": 7 + }, + { + "name": "meta_batch", + "type": "VHS_BatchManager", + "link": null, + "shape": 7 + }, + { + "name": "vae", + "type": "VAE", + "link": null, + "shape": 7 + } + ], + "outputs": [ + { + "name": "Filenames", + "type": "VHS_FILENAMES", + "links": null + } + ], "properties": { - "text": "" + "Node name for S&R": "VHS_VideoCombine" }, - "widgets_values": [ - "enable this if you want" - ], - "color": "#432", - "bgcolor": "#653" + "widgets_values": { + "frame_rate": 30, + "loop_count": 0, + "filename_prefix": "AnimateDiff", + "format": "video/h264-mp4", + "pix_fmt": "yuv420p", + "crf": 19, + "save_metadata": true, + "trim_to_audio": false, + "pingpong": false, + "save_output": true, + "videopreview": { + "hidden": false, + "paused": false, + "params": { + "filename": "AnimateDiff_02495-audio.mp4", + "subfolder": "", + "type": "output", + "format": "video/h264-mp4", + "frame_rate": 30, + "workflow": "AnimateDiff_02495.png", + "fullpath": "/runpod-volume/ComfyUI_rv/output/AnimateDiff_02495-audio.mp4" + }, + "muted": false + } + } }, { - "id": 122, - "type": "FeatureMixer", + "id": 379, + "type": "DepthShapeModifierPrecise", "pos": [ - -72.21454028302455, - -5668.483763498456 + -122.3917236328125, + 1722.6380615234375 + ], + "size": [ + 478.8000183105469, + 174 ], - "size": { - "0": 367.79998779296875, - "1": 342 - }, "flags": {}, - "order": 44, - "mode": 4, + "order": 86, + "mode": 0, "inputs": [ { - "name": "feature", - "type": "FEATURE", - "link": 195 + "name": "depth_map", + "type": "IMAGE", + "link": 598 + }, + { + "name": "mask", + "type": "MASK", + "link": 599 } ], "outputs": [ { - "name": "FEATURE", - "type": "FEATURE", - "links": [ - 199 - ], - "shape": 3, - "slot_index": 0 - }, - { - "name": "FEATURE_VISUALIZATION", + "name": "IMAGE", "type": "IMAGE", "links": [ - 196 + 600, + 656 ], - "shape": 3, - "slot_index": 1 + "slot_index": 0 } ], "properties": { - "Node name for S&R": "FeatureMixer" + "Node name for S&R": "DepthShapeModifierPrecise" }, "widgets_values": [ - 1.5, - 0, - 1, - 1, - 1, - 1, + 2, + 0.5, 1, - 0, - 0, 1, - 0.5, - false + "linear" ] }, { - "id": 137, - "type": "PrimitiveNode", + "id": 155, + "type": "VAEDecode", "pos": [ - -4241, - -198 + 5726.71435546875, + -313.1842956542969 + ], + "size": [ + 210, + 46 ], - "size": { - "0": 210, - "1": 82 - }, "flags": {}, - "order": 16, + "order": 101, "mode": 0, + "inputs": [ + { + "name": "samples", + "type": "LATENT", + "link": 235 + }, + { + "name": "vae", + "type": "VAE", + "link": 236 + } + ], "outputs": [ { - "name": "connect to widget input", - "type": "*", - "links": [], + "name": "IMAGE", + "type": "IMAGE", + "links": [ + 237, + 661, + 700 + ], "slot_index": 0 } ], - "title": "Extend last frame", - "properties": { - "Run widget replace on values": false - } - }, - { - "id": 68, - "type": "Note", - "pos": [ - -4267.1294444297155, - -555.9201161093287 - ], - "size": { - "0": 372.2613220214844, - "1": 154.43922424316406 - }, - "flags": {}, - "order": 17, - "mode": 0, "properties": { - "text": "" + "Node name for S&R": "VAEDecode" }, - "widgets_values": [ - "1. Downscale the input image so the KSampler doesnt explode, but downscale another copy of the image LESS. This is specifically for the depth maps, to avoid losing detail in the maps.\n\nThen since we are dealing with a single image, we replicate it. Set that in num frames below.\n\nTo repeat the last frame and mask set extend last frame" - ], - "color": "#432", - "bgcolor": "#653" + "widgets_values": [] }, { - "id": 48, - "type": "ControlNetLoaderAdvanced", + "id": 9, + "type": "VAEDecode", "pos": [ - 984, - 1273.8269519976366 + 4110.71875, + 467.830078125 + ], + "size": [ + 210, + 46 ], - "size": { - "0": 327.6000061035156, - "1": 58 - }, "flags": {}, - "order": 18, + "order": 96, "mode": 0, "inputs": [ { - "name": "timestep_keyframe", - "type": "TIMESTEP_KEYFRAME", - "link": null + "name": "samples", + "type": "LATENT", + "link": 7 + }, + { + "name": "vae", + "type": "VAE", + "link": 8 } ], "outputs": [ { - "name": "CONTROL_NET", - "type": "CONTROL_NET", + "name": "IMAGE", + "type": "IMAGE", "links": [ - 76 + 164, + 623 ], - "shape": 3 + "slot_index": 0 } ], "properties": { - "Node name for S&R": "ControlNetLoaderAdvanced", - "ttNbgOverride": { - "color": "#2a363b", - "bgcolor": "#3f5159", - "groupcolor": "#3f789e" - } + "Node name for S&R": "VAEDecode" }, - "widgets_values": [ - "control_v11f1p_sd15_depth_fp16.safetensors" - ] + "widgets_values": [] }, { - "id": 56, - "type": "ControlNetLoaderAdvanced", + "id": 102, + "type": "SetNode", "pos": [ - 1339, - 1281.8269519976366 + -1820.0001220703125, + -741.3416748046875 + ], + "size": [ + 210, + 58 ], - "size": { - "0": 327.6000061035156, - "1": 58 - }, "flags": {}, - "order": 19, + "order": 40, "mode": 0, "inputs": [ { - "name": "timestep_keyframe", - "type": "TIMESTEP_KEYFRAME", - "link": null + "name": "INT", + "type": "INT", + "link": 500 } ], "outputs": [ { - "name": "CONTROL_NET", - "type": "CONTROL_NET", - "links": [ - 80 - ], - "shape": 3 + "name": "*", + "type": "*", + "links": null } ], + "title": "Set_framecount", "properties": { - "Node name for S&R": "ControlNetLoaderAdvanced", - "ttNbgOverride": { - "color": "#2a363b", - "bgcolor": "#3f5159", - "groupcolor": "#3f789e" - } + "previousName": "framecount" }, "widgets_values": [ - "control_v11p_sd15_lineart_fp16.safetensors" - ] + "framecount" + ], + "color": "#1b4669", + "bgcolor": "#29699c" }, { - "id": 97, - "type": "Reroute", + "id": 349, + "type": "Anything Everywhere?", "pos": [ - 2861, - 9 + -1820.0001220703125, + -631.3417358398438 ], "size": [ - 75, - 26 + 315, + 106 ], "flags": {}, - "order": 94, + "order": 41, "mode": 0, "inputs": [ { - "name": "", + "name": "INT", "type": "*", - "link": 307 - } - ], - "outputs": [ - { - "name": "", - "type": "MASK", - "links": [ - 149 - ], - "slot_index": 0 + "link": 535, + "shape": 7, + "color_on": "" } ], + "outputs": [], "properties": { - "showOutputText": false, - "horizontal": false - } + "Node name for S&R": "Anything Everywhere?", + "group_restricted": 0, + "color_restricted": 0 + }, + "widgets_values": [ + ".*", + "frame_count", + ".*" + ] }, { - "id": 15, - "type": "DownloadAndLoadDepthAnythingV2Model", + "id": 365, + "type": "SetNode", "pos": [ - -2760, - -789 + -1820.0001220703125, + -431.34185791015625 + ], + "size": [ + 210, + 58 ], - "size": { - "0": 315, - "1": 58 - }, "flags": {}, - "order": 20, + "order": 43, "mode": 0, + "inputs": [ + { + "name": "INT", + "type": "INT", + "link": 579 + } + ], "outputs": [ { - "name": "da_v2_model", - "type": "DAMODEL", - "links": [ - 15, - 234 - ], - "shape": 3, - "slot_index": 0 + "name": "*", + "type": "*", + "links": null } ], + "title": "Set_frames_per_bar", "properties": { - "Node name for S&R": "DownloadAndLoadDepthAnythingV2Model" + "previousName": "frames_per_bar" }, "widgets_values": [ - "depth_anything_v2_vitl_fp32.safetensors" - ] + "frames_per_bar" + ], + "color": "#1b4669", + "bgcolor": "#29699c" }, { - "id": 8, - "type": "VAEDecode", + "id": 384, + "type": "SetNode", "pos": [ - 5898, - 437 + -1860.0001220703125, + -211.34190368652344 + ], + "size": [ + 210, + 58 ], - "size": { - "0": 210, - "1": 46 - }, "flags": {}, - "order": 101, + "order": 61, "mode": 0, "inputs": [ { - "name": "samples", - "type": "LATENT", - "link": 100 - }, - { - "name": "vae", - "type": "VAE", - "link": 138 + "name": "FEATURE", + "type": "FEATURE", + "link": 602 } ], "outputs": [ { - "name": "IMAGE", - "type": "IMAGE", - "links": [ - 13 - ], - "slot_index": 0 + "name": "*", + "type": "*", + "links": null } ], + "title": "Set_time_feat", "properties": { - "Node name for S&R": "VAEDecode" - } + "previousName": "time_feat" + }, + "widgets_values": [ + "time_feat" + ] }, { - "id": 79, - "type": "NNLatentUpscale", + "id": 83, + "type": "SetNode", "pos": [ - 5920, - 273 + -1810.0001220703125, + -1171.3414306640625 + ], + "size": [ + 210, + 58 ], - "size": { - "0": 315, - "1": 82 - }, "flags": {}, - "order": 102, + "order": 58, "mode": 0, "inputs": [ { - "name": "latent", - "type": "LATENT", - "link": 246 + "name": "IMAGE", + "type": "IMAGE", + "link": 133 } ], "outputs": [ { - "name": "LATENT", - "type": "LATENT", - "links": [ - 152 - ], - "shape": 3, - "slot_index": 0 + "name": "*", + "type": "*", + "links": null } ], + "title": "Set_emptyimg", "properties": { - "Node name for S&R": "NNLatentUpscale" + "previousName": "" }, "widgets_values": [ - "SD 1.x", - 1.6500000000000001 - ] + "emptyimg" + ], + "color": "#2a363b", + "bgcolor": "#3f5159" }, { - "id": 27, - "type": "PrimitiveNode", + "id": 94, + "type": "SetNode", "pos": [ - -4242, - -327 + -1800.0001220703125, + -871.3414916992188 + ], + "size": [ + 210, + 58 ], - "size": { - "0": 210, - "1": 82 - }, "flags": {}, - "order": 21, + "order": 59, "mode": 0, + "inputs": [ + { + "name": "MASK", + "type": "MASK", + "link": 145 + } + ], "outputs": [ { - "name": "connect to widget input", + "name": "*", "type": "*", - "links": [], - "slot_index": 0 + "links": null } ], - "title": "Num frames", + "title": "Set_emptymask", "properties": { - "Run widget replace on values": false - } + "previousName": "emptymask" + }, + "widgets_values": [ + "emptymask" + ], + "color": "#1c5715", + "bgcolor": "#1f401b" }, { - "id": 91, - "type": "Reroute", + "id": 364, + "type": "Anything Everywhere?", "pos": [ - 5633, - 80 + -1810.0001220703125, + -1031.3414306640625 ], "size": [ - 75, - 26 + 315, + 106 ], "flags": {}, - "order": 54, + "order": 47, "mode": 0, "inputs": [ { - "name": "", + "name": "AUDIO", "type": "*", - "link": 136 - } - ], - "outputs": [ - { - "name": "", - "type": "VAE", - "links": [ - 137, - 138 - ], - "slot_index": 0 + "link": 553, + "shape": 7, + "color_on": "" } ], + "outputs": [], "properties": { - "showOutputText": false, - "horizontal": false - } + "Node name for S&R": "Anything Everywhere?", + "group_restricted": 0, + "color_restricted": 0 + }, + "widgets_values": [ + ".*", + "audio", + ".*" + ] }, { - "id": 148, - "type": "DepthAnything_V2", + "id": 82, + "type": "EmptyImageAndMaskFromAudio", "pos": [ - 9728.386098469018, - 266.75074584506234 + -2399.999755859375, + -901.3414916992188 + ], + "size": [ + 411.6000061035156, + 146 ], - "size": { - "0": 210, - "1": 46 - }, "flags": {}, - "order": 113, - "mode": 4, + "order": 45, + "mode": 0, "inputs": [ { - "name": "da_model", - "type": "DAMODEL", - "link": 235 + "name": "audio", + "type": "AUDIO", + "link": 132 }, { - "name": "images", - "type": "IMAGE", - "link": 248 + "name": "width", + "type": "INT", + "link": null, + "widget": { + "name": "width" + } + }, + { + "name": "height", + "type": "INT", + "link": null, + "widget": { + "name": "height" + } + }, + { + "name": "frame_rate", + "type": "FLOAT", + "link": null, + "widget": { + "name": "frame_rate" + } } ], "outputs": [ { - "name": "image", + "name": "empty_image", "type": "IMAGE", "links": [ - 237, - 239 + 133 ], - "shape": 3, - "slot_index": 0 + "slot_index": 0, + "shape": 3 + }, + { + "name": "empty_mask", + "type": "MASK", + "links": [ + 145 + ], + "slot_index": 1, + "shape": 3 + }, + { + "name": "frame_count", + "type": "INT", + "links": [], + "slot_index": 2, + "shape": 3 } ], "properties": { - "Node name for S&R": "DepthAnything_V2" - } + "Node name for S&R": "EmptyImageAndMaskFromAudio" + }, + "widgets_values": [ + 30, + 768, + 464 + ] }, { - "id": 154, - "type": "PreviewImage", + "id": 322, + "type": "DownloadOpenUnmixModel", "pos": [ - 9946.386098469018, - 637.7507458450624 + -2209.999755859375, + -1371.3414306640625 + ], + "size": [ + 294, + 58 ], - "size": { - "0": 481.87567138671875, - "1": 246 - }, "flags": {}, - "order": 117, - "mode": 4, - "inputs": [ + "order": 15, + "mode": 0, + "inputs": [], + "outputs": [ { - "name": "images", - "type": "IMAGE", - "link": 250 + "name": "OPEN_UNMIX_MODEL", + "type": "OPEN_UNMIX_MODEL", + "links": [ + 496 + ] } ], "properties": { - "Node name for S&R": "PreviewImage" - } + "Node name for S&R": "DownloadOpenUnmixModel" + }, + "widgets_values": [ + "umxl" + ] }, { - "id": 113, - "type": "UpscaleModelLoader", + "id": 326, + "type": "Anything Everywhere?", "pos": [ - 8493.811170891195, - 363.5270008378391 + -2349.999755859375, + 158.65823364257812 + ], + "size": [ + 315, + 106 ], - "size": { - "0": 315, - "1": 58 - }, "flags": {}, - "order": 22, - "mode": 4, - "outputs": [ + "order": 34, + "mode": 0, + "inputs": [ { - "name": "UPSCALE_MODEL", - "type": "UPSCALE_MODEL", - "links": [ - 175 - ], - "shape": 3 + "name": "FLOAT", + "type": "*", + "link": 501, + "shape": 7, + "color_on": "" } ], + "outputs": [], "properties": { - "Node name for S&R": "UpscaleModelLoader" + "Node name for S&R": "Anything Everywhere?", + "group_restricted": 0, + "color_restricted": 0 }, "widgets_values": [ - "RealESRGAN_x2.pth" + ".*", + "frame_rate", + ".*" ] }, { - "id": 47, - "type": "Control Net Stacker", + "id": 110, + "type": "VHS_VideoCombine", "pos": [ - 1346, - 1457.8269519976366 + 4050.7548828125, + -311.3144226074219 + ], + "size": [ + 399.9459228515625, + 601.2973022460938 ], - "size": { - "0": 315, - "1": 146 - }, "flags": {}, - "order": 42, + "order": 97, "mode": 0, "inputs": [ { - "name": "control_net", - "type": "CONTROL_NET", - "link": 76, - "slot_index": 0 + "name": "images", + "type": "IMAGE", + "link": 164 }, { - "name": "image", - "type": "IMAGE", - "link": 81 + "name": "audio", + "type": "AUDIO", + "link": null, + "shape": 7 }, { - "name": "cnet_stack", - "type": "CONTROL_NET_STACK", - "link": null + "name": "meta_batch", + "type": "VHS_BatchManager", + "link": null, + "shape": 7 + }, + { + "name": "vae", + "type": "VAE", + "link": null, + "shape": 7 } ], "outputs": [ { - "name": "CNET_STACK", - "type": "CONTROL_NET_STACK", - "links": [ - 83 - ], - "shape": 3, - "slot_index": 0 + "name": "Filenames", + "type": "VHS_FILENAMES", + "links": null } ], "properties": { - "Node name for S&R": "Control Net Stacker" + "Node name for S&R": "VHS_VideoCombine" }, - "widgets_values": [ - 0.47000000000000003, - 0, - 0.5 - ], - "color": "#223322", - "bgcolor": "#335533", - "shape": 1 + "widgets_values": { + "frame_rate": 30, + "loop_count": 0, + "filename_prefix": "AnimateDiff", + "format": "video/h264-mp4", + "pix_fmt": "yuv420p", + "crf": 19, + "save_metadata": true, + "trim_to_audio": false, + "pingpong": false, + "save_output": true, + "videopreview": { + "hidden": false, + "paused": false, + "params": { + "filename": "AnimateDiff_02504-audio.mp4", + "subfolder": "", + "type": "output", + "format": "video/h264-mp4", + "frame_rate": 30, + "workflow": "AnimateDiff_02504.png", + "fullpath": "/runpod-volume/ComfyUI_rv/output/AnimateDiff_02504-audio.mp4" + }, + "muted": false + } + } }, { - "id": 55, - "type": "Control Net Stacker", + "id": 429, + "type": "ImageCompositeMasked", "pos": [ - 1776, - 1381.8269519976366 + 8436.7041015625, + -283.386962890625 + ], + "size": [ + 315, + 146 ], - "size": { - "0": 315, - "1": 146 - }, "flags": {}, - "order": 55, + "order": 106, "mode": 0, "inputs": [ { - "name": "control_net", - "type": "CONTROL_NET", - "link": 80, - "slot_index": 0 + "name": "destination", + "type": "IMAGE", + "link": 662 }, { - "name": "image", + "name": "source", "type": "IMAGE", - "link": 82 + "link": 702 }, { - "name": "cnet_stack", - "type": "CONTROL_NET_STACK", - "link": 83 + "name": "mask", + "type": "MASK", + "link": 664, + "shape": 7 } ], "outputs": [ { - "name": "CNET_STACK", - "type": "CONTROL_NET_STACK", + "name": "IMAGE", + "type": "IMAGE", "links": [ - 84 + 716 ], - "shape": 3, "slot_index": 0 } ], "properties": { - "Node name for S&R": "Control Net Stacker" + "Node name for S&R": "ImageCompositeMasked" }, "widgets_values": [ - 0.43, 0, - 0.5 + 0, + false + ] + }, + { + "id": 461, + "type": "PreviewFeature", + "pos": [ + -1910.984619140625, + -97.65576171875 + ], + "size": [ + 315, + 246 + ], + "flags": {}, + "order": 62, + "mode": 0, + "inputs": [ + { + "name": "feature", + "type": "FEATURE", + "link": 719 + } ], - "color": "#223322", - "bgcolor": "#335533", - "shape": 1 + "outputs": [], + "properties": { + "Node name for S&R": "PreviewFeature" + } }, { - "id": 28, - "type": "ADE_AnimateDiffLoaderGen1", + "id": 325, + "type": "AudioInfo", "pos": [ - 3481.5897819464126, - 358.87590461870786 + -2753.5390625, + -686.1165771484375 + ], + "size": [ + 315, + 338 ], - "size": { - "0": 271.7644958496094, - "1": 242 - }, "flags": {}, - "order": 63, + "order": 16, "mode": 0, "inputs": [ { - "name": "model", - "type": "MODEL", - "link": 65 + "name": "audio", + "type": "AUDIO", + "link": null }, { - "name": "context_options", - "type": "CONTEXT_OPTIONS", - "link": 44, - "slot_index": 1 + "name": "frame_rate", + "type": "FLOAT", + "link": null, + "widget": { + "name": "frame_rate" + } + } + ], + "outputs": [ + { + "name": "total_frames", + "type": "INT", + "links": [ + 500, + 535, + 709 + ], + "slot_index": 0 }, { - "name": "motion_lora", - "type": "MOTION_LORA", - "link": 45, + "name": "frames_per_beat", + "type": "INT", + "links": null + }, + { + "name": "frames_per_bar", + "type": "INT", + "links": [ + 579 + ], "slot_index": 2 }, { - "name": "ad_settings", - "type": "AD_SETTINGS", - "link": 46, - "slot_index": 3 + "name": "frames_per_quarter", + "type": "INT", + "links": null }, { - "name": "ad_keyframes", - "type": "AD_KEYFRAMES", - "link": null + "name": "frames_per_eighth", + "type": "INT", + "links": null }, { - "name": "sample_settings", - "type": "SAMPLE_SETTINGS", - "link": 47, - "slot_index": 5 + "name": "audio_duration", + "type": "FLOAT", + "links": null }, { - "name": "scale_multival", - "type": "MULTIVAL", - "link": 48, - "slot_index": 6 + "name": "beats_per_second", + "type": "FLOAT", + "links": null }, { - "name": "effect_multival", - "type": "MULTIVAL", - "link": 49, - "slot_index": 7 + "name": "detected_bpm", + "type": "FLOAT", + "links": null }, { - "name": "per_block", - "type": "PER_BLOCK", - "link": null - } - ], - "outputs": [ + "name": "sample_rate", + "type": "INT", + "links": null + }, { - "name": "MODEL", - "type": "MODEL", - "links": [ - 56 - ], - "shape": 3, - "slot_index": 0 + "name": "num_channels", + "type": "INT", + "links": null + }, + { + "name": "num_samples", + "type": "INT", + "links": null + }, + { + "name": "max_amplitude", + "type": "FLOAT", + "links": null + }, + { + "name": "mean_amplitude", + "type": "FLOAT", + "links": null + }, + { + "name": "rms_amplitude", + "type": "FLOAT", + "links": null + }, + { + "name": "bit_depth", + "type": "STRING", + "links": null } ], "properties": { - "Node name for S&R": "ADE_AnimateDiffLoaderGen1", - "ttNbgOverride": { - "color": "#2a363b", - "bgcolor": "#3f5159", - "groupcolor": "#3f789e" - } + "Node name for S&R": "AudioInfo" }, "widgets_values": [ - "ALCM_sd15_t2v_beta.ckpt", - "lcm avg(sqrt_linear,linear)" + 30 ] }, { - "id": 92, - "type": "Reroute", + "id": 453, + "type": "Display Any (rgthree)", "pos": [ - 6750, - 100 + -2225.43408203125, + -655.3612060546875 ], "size": [ - 75, - 26 + 264.5999755859375, + 76 ], "flags": {}, - "order": 66, + "order": 42, "mode": 0, "inputs": [ { - "name": "", + "name": "source", "type": "*", - "link": 137 + "link": 709, + "dir": 3 } ], + "outputs": [], + "properties": { + "Node name for S&R": "Display Any (rgthree)" + }, + "widgets_values": [ + "" + ] + }, + { + "id": 92, + "type": "VHS_LoadAudioUpload", + "pos": [ + -2782.556884765625, + -990.0470581054688 + ], + "size": [ + 243.818359375, + 130 + ], + "flags": {}, + "order": 17, + "mode": 0, + "inputs": [], "outputs": [ { - "name": "", - "type": "VAE", + "name": "audio", + "type": "AUDIO", "links": [ - 147 + 122, + 132, + 491, + 553 ], - "slot_index": 0 + "slot_index": 0, + "shape": 3 } ], "properties": { - "showOutputText": false, - "horizontal": false + "Node name for S&R": "VHS_LoadAudioUpload" + }, + "widgets_values": { + "audio": "Vesuvius.mp3", + "start_time": 26.5, + "duration": 14.700000000000001, + "choose audio to upload": "image" } }, { - "id": 95, - "type": "Reroute", + "id": 321, + "type": "AudioSeparatorSimple", "pos": [ - 6320, - 110 + -1807.3931884765625, + -1356.9444580078125 ], "size": [ - 75, - 26 + 315, + 106 ], "flags": {}, - "order": 86, - "mode": 4, + "order": 46, + "mode": 0, "inputs": [ { - "name": "", - "type": "*", - "link": 143 + "name": "model", + "type": "OPEN_UNMIX_MODEL", + "link": 496 + }, + { + "name": "audio", + "type": "AUDIO", + "link": 491 } ], "outputs": [ { - "name": "", - "type": "CONDITIONING", + "name": "audio", + "type": "AUDIO", + "links": null + }, + { + "name": "drums_audio", + "type": "AUDIO", "links": [ - 145 + 592 ], - "slot_index": 0 + "slot_index": 1 + }, + { + "name": "vocals_audio", + "type": "AUDIO", + "links": [] + }, + { + "name": "bass_audio", + "type": "AUDIO", + "links": [] + }, + { + "name": "other_audio", + "type": "AUDIO", + "links": null } ], "properties": { - "showOutputText": false, - "horizontal": false - } + "Node name for S&R": "AudioSeparatorSimple" + }, + "widgets_values": [] }, { - "id": 96, - "type": "Reroute", + "id": 377, + "type": "FrequencyFilterPreset", "pos": [ - 6320, - 140 + -1373.4661865234375, + -1225.78173828125 ], "size": [ - 75, - 26 + 363.19219970703125, + 60.4569206237793 ], "flags": {}, - "order": 87, - "mode": 4, + "order": 18, + "mode": 0, "inputs": [ { - "name": "", - "type": "*", - "link": 144 + "name": "previous_filter", + "type": "FREQUENCY_FILTER", + "link": null, + "shape": 7 } ], "outputs": [ { - "name": "", - "type": "CONDITIONING", + "name": "FREQUENCY_FILTER", + "type": "FREQUENCY_FILTER", "links": [ - 146 - ], - "slot_index": 0 + 593 + ] } ], "properties": { - "showOutputText": false, - "horizontal": false - } + "Node name for S&R": "FrequencyFilterPreset" + }, + "widgets_values": [ + "isolate_kick_drum" + ] }, { - "id": 78, - "type": "KSampler", + "id": 376, + "type": "AudioFilter", "pos": [ - 6735.217366877503, - 289.41342322069596 + -987.3137817382812, + -1336.6776123046875 + ], + "size": [ + 277.20001220703125, + 46 ], - "size": { - "0": 315, - "1": 262 - }, "flags": {}, - "order": 105, + "order": 60, "mode": 0, "inputs": [ { - "name": "model", - "type": "MODEL", - "link": 112 - }, - { - "name": "positive", - "type": "CONDITIONING", - "link": 145 - }, - { - "name": "negative", - "type": "CONDITIONING", - "link": 146 + "name": "audio", + "type": "AUDIO", + "link": 592 }, { - "name": "latent_image", - "type": "LATENT", - "link": 153 + "name": "filters", + "type": "FREQUENCY_FILTER", + "link": 593 } ], "outputs": [ { - "name": "LATENT", - "type": "LATENT", + "name": "AUDIO", + "type": "AUDIO", "links": [ - 121 + 594 ], "slot_index": 0 } ], "properties": { - "Node name for S&R": "KSampler" + "Node name for S&R": "AudioFilter" }, - "widgets_values": [ - 156680208700286, - "fixed", - 4, - 1, - "lcm", - "sgm_uniform", - 0.36 - ] + "widgets_values": [] }, { - "id": 99, - "type": "Reroute", + "id": 328, + "type": "AudioFeatureExtractor", "pos": [ - 6300, - 40 + -621.1401977539062, + -1343.52978515625 ], "size": [ - 75, - 26 + 415.8000183105469, + 174 ], "flags": {}, - "order": 97, + "order": 71, "mode": 0, "inputs": [ { - "name": "", - "type": "*", - "link": 150 + "name": "audio", + "type": "AUDIO", + "link": 594 + }, + { + "name": "frame_rate", + "type": "FLOAT", + "link": null, + "widget": { + "name": "frame_rate" + } + }, + { + "name": "frame_count", + "type": "INT", + "link": null, + "widget": { + "name": "frame_count" + } + }, + { + "name": "width", + "type": "INT", + "link": null, + "widget": { + "name": "width" + } + }, + { + "name": "height", + "type": "INT", + "link": null, + "widget": { + "name": "height" + } } ], "outputs": [ { - "name": "", - "type": "MASK", + "name": "feature", + "type": "FEATURE", "links": [ - 154, - 273 - ], - "slot_index": 0 + 511 + ] + }, + { + "name": "frame_count", + "type": "INT", + "links": [] } ], "properties": { - "showOutputText": false, - "horizontal": false - } + "Node name for S&R": "AudioFeatureExtractor" + }, + "widgets_values": [ + "amplitude_envelope", + 30, + 0, + 512, + 512 + ] }, { - "id": 80, - "type": "VAEDecode", + "id": 78, + "type": "SetNode", "pos": [ - 7092.217366877503, - 294.41342322069596 + -257.6931457519531, + -922.9367065429688 + ], + "size": [ + 210, + 58 ], - "size": { - "0": 210, - "1": 46 - }, "flags": {}, - "order": 106, + "order": 82, "mode": 0, "inputs": [ { - "name": "samples", - "type": "LATENT", - "link": 121 - }, - { - "name": "vae", - "type": "VAE", - "link": 147 + "name": "FEATURE", + "type": "FEATURE", + "link": 512 } ], "outputs": [ { - "name": "IMAGE", - "type": "IMAGE", - "links": [ - 278 - ], - "slot_index": 0 + "name": "*", + "type": "*", + "links": null } ], + "title": "Set_kifck_feature", "properties": { - "Node name for S&R": "VAEDecode" - } + "previousName": "" + }, + "widgets_values": [ + "kifck_feature" + ] }, { - "id": 172, - "type": "Reroute", + "id": 336, + "type": "PreviewFeature", "pos": [ - 7635, - 38 + -310.51690673828125, + -785.7384643554688 ], "size": [ - 75, - 26 + 315, + 246 ], "flags": {}, - "order": 99, + "order": 83, "mode": 0, "inputs": [ { - "name": "", - "type": "*", - "link": 273 - } - ], - "outputs": [ - { - "name": "", - "type": "MASK", - "links": [ - 274 - ], - "slot_index": 0 + "name": "feature", + "type": "FEATURE", + "link": 513 } ], + "outputs": [], "properties": { - "showOutputText": false, - "horizontal": false - } + "Node name for S&R": "PreviewFeature" + }, + "widgets_values": [] }, { - "id": 121, - "type": "TimeFeatureNode", + "id": 335, + "type": "FeatureMixer", "pos": [ - -449.21454028302617, - -5524.483763498457 + -691.8911743164062, + -850.9701538085938 + ], + "size": [ + 315, + 322 ], - "size": { - "0": 317.4000244140625, - "1": 150 - }, "flags": {}, - "order": 23, - "mode": 4, + "order": 77, + "mode": 0, "inputs": [ { - "name": "video_frames", - "type": "IMAGE", - "link": null + "name": "feature", + "type": "FEATURE", + "link": 511 } ], "outputs": [ @@ -2754,447 +2968,651 @@ "name": "FEATURE", "type": "FEATURE", "links": [ - 195 + 512, + 513 ], - "shape": 3, "slot_index": 0 - }, - { - "name": "FEATURE_PIPE", - "type": "FEATURE_PIPE", - "links": [ - 193 - ], - "shape": 3, - "slot_index": 1 } ], "properties": { - "Node name for S&R": "TimeFeatureNode" + "Node name for S&R": "FeatureMixer" }, "widgets_values": [ - 30, - "smooth", - 0.4, - 0 + 1, + 0, + 1, + 1, + 1, + 1, + 1, + 0, + 0.25, + 1, + 0.5, + false ] }, { - "id": 123, - "type": "PreviewImage", + "id": 382, + "type": "TimeFeatureNode", "pos": [ - 446.7854597169757, - -5708.483763498455 - ], - "size": { - "0": 443.01776123046875, - "1": 260.46453857421875 - }, - "flags": {}, - "order": 57, - "mode": 4, - "inputs": [ - { - "name": "images", - "type": "IMAGE", - "link": 196 - } + -2338.899169921875, + -264.3017272949219 ], - "properties": { - "Node name for S&R": "PreviewImage" - } - }, - { - "id": 69, - "type": "FlexMaskDepthChamber", - "pos": [ - 487.78545971697525, - -5416.483763498458 + "size": [ + 315, + 202 ], - "size": { - "0": 344.3999938964844, - "1": 310 - }, "flags": {}, - "order": 56, - "mode": 4, + "order": 48, + "mode": 0, "inputs": [ { - "name": "masks", - "type": "MASK", - "link": null + "name": "frame_rate", + "type": "FLOAT", + "link": null, + "widget": { + "name": "frame_rate" + } }, { - "name": "feature", - "type": "FEATURE", - "link": 199 + "name": "frame_count", + "type": "INT", + "link": null, + "widget": { + "name": "frame_count" + } + }, + { + "name": "width", + "type": "INT", + "link": null, + "widget": { + "name": "width" + } }, { - "name": "feature_pipe", - "type": "FEATURE_PIPE", - "link": 193 + "name": "height", + "type": "INT", + "link": null, + "widget": { + "name": "height" + } }, { - "name": "depth_map", - "type": "IMAGE", - "link": null + "name": "frames_per_cycle", + "type": "INT", + "link": 601, + "widget": { + "name": "frames_per_cycle" + } } ], "outputs": [ { - "name": "MASK", - "type": "MASK", - "links": [], - "shape": 3, + "name": "FEATURE", + "type": "FEATURE", + "links": [ + 602, + 719 + ], "slot_index": 0 } ], "properties": { - "Node name for S&R": "FlexMaskDepthChamber" + "Node name for S&R": "TimeFeatureNode" }, "widgets_values": [ - 1, - false, - 0, - 0, - 0, - 1, - 0.66, - "both", - "move_back" - ] - }, + "pulse", + 30, + 30, + 512, + 512, + 30, + 0 + ] + }, { - "id": 22, - "type": "FlexMaskDepthChamber", + "id": 383, + "type": "GetNode", "pos": [ - 127, - -4746 + -2741.792236328125, + -183.75990295410156 + ], + "size": [ + 321.67816162109375, + 64.4607162475586 ], - "size": { - "0": 344.3999938964844, - "1": 310 - }, "flags": {}, - "order": 24, - "mode": 4, - "inputs": [ + "order": 19, + "mode": 0, + "inputs": [], + "outputs": [ { - "name": "masks", + "name": "INT", + "type": "INT", + "links": [ + 601 + ], + "slot_index": 0 + } + ], + "title": "Get_frames_per_bar", + "properties": {}, + "widgets_values": [ + "frames_per_bar" + ], + "color": "#1b4669", + "bgcolor": "#29699c" + }, + { + "id": 371, + "type": "GetNode", + "pos": [ + -2805.9677734375, + 1185.546630859375 + ], + "size": [ + 210, + 58 + ], + "flags": {}, + "order": 20, + "mode": 0, + "inputs": [], + "outputs": [ + { + "name": "FEATURE", + "type": "FEATURE", + "links": [ + 589, + 597 + ], + "slot_index": 0 + } + ], + "title": "Get_kifck_feature", + "properties": {}, + "widgets_values": [ + "kifck_feature" + ] + }, + { + "id": 369, + "type": "GetNode", + "pos": [ + -1036.0628662109375, + 869.2046508789062 + ], + "size": [ + 210, + 58 + ], + "flags": {}, + "order": 21, + "mode": 0, + "inputs": [], + "outputs": [ + { + "name": "MASK", "type": "MASK", - "link": null + "links": [ + 582 + ], + "slot_index": 0 + } + ], + "title": "Get_emptymask", + "properties": {}, + "widgets_values": [ + "emptymask" + ], + "color": "#1c5715", + "bgcolor": "#1f401b" + }, + { + "id": 370, + "type": "ParticleEmitter", + "pos": [ + -1268.4927978515625, + 1066.769775390625 + ], + "size": [ + 468.5999755859375, + 402 + ], + "flags": {}, + "order": 78, + "mode": 0, + "inputs": [ + { + "name": "previous_emitter", + "type": "PARTICLE_EMITTER", + "link": null, + "shape": 7 }, { - "name": "feature", - "type": "FEATURE", - "link": null + "name": "emitter_movement", + "type": "EMITTER_MOVEMENT", + "link": null, + "shape": 7 }, { - "name": "feature_pipe", - "type": "FEATURE_PIPE", - "link": null + "name": "spring_joint_setting", + "type": "SPRING_JOINT_SETTING", + "link": null, + "shape": 7 }, { - "name": "depth_map", - "type": "IMAGE", - "link": null + "name": "particle_modulation", + "type": "PARTICLE_MODULATION", + "link": 595, + "shape": 7 + }, + { + "name": "emitter_modulation", + "type": "EMITTER_MODULATION", + "link": 584, + "shape": 7 } ], "outputs": [ { - "name": "MASK", - "type": "MASK", - "links": [], - "shape": 3, - "slot_index": 0 + "name": "PARTICLE_EMITTER", + "type": "PARTICLE_EMITTER", + "links": [ + 583 + ] } ], "properties": { - "Node name for S&R": "FlexMaskDepthChamber" + "Node name for S&R": "ParticleEmitter" }, "widgets_values": [ - 1, - false, + 0, + 0.5, + 0, + 30, + 90, + 320, + 0.1, + "(255,255,255)", 0, 0, 0, - 0.12, - 0.21, - "both", - "expand" + 0 ] }, { - "id": 23, - "type": "TimeFeatureNode", + "id": 378, + "type": "ParticleSpeedModulation", "pos": [ - 610, - -4500 + -1933.43359375, + 958.3246459960938 + ], + "size": [ + 493.8000183105469, + 222 ], - "size": { - "0": 317.4000244140625, - "1": 150 - }, "flags": {}, - "order": 25, - "mode": 4, + "order": 50, + "mode": 0, "inputs": [ { - "name": "video_frames", - "type": "IMAGE", - "link": null + "name": "previous_modulation", + "type": "PARTICLE_MODULATION", + "link": null, + "shape": 7 + }, + { + "name": "feature", + "type": "FEATURE", + "link": 597, + "shape": 7 } ], "outputs": [ { - "name": "FEATURE", - "type": "FEATURE", + "name": "PARTICLE_MODULATION", + "type": "PARTICLE_MODULATION", "links": [ - 94 - ], - "shape": 3, - "slot_index": 0 - }, - { - "name": "FEATURE_PIPE", - "type": "FEATURE_PIPE", - "links": [], - "shape": 3, - "slot_index": 1 + 595 + ] } ], "properties": { - "Node name for S&R": "TimeFeatureNode" + "Node name for S&R": "ParticleSpeedModulation" }, "widgets_values": [ - 20, - "bounce", - 0.5, - 0 + 0, + 0, + 0, + "ease_in_out", + false, + false, + 1 ] }, { - "id": 62, - "type": "FeatureMixer", + "id": 372, + "type": "EmitterEmissionRateModulation", "pos": [ - 1010, - -4620 + -1946.3551025390625, + 1285.0902099609375 + ], + "size": [ + 529.199951171875, + 222 ], - "size": { - "0": 367.79998779296875, - "1": 342 - }, "flags": {}, - "order": 45, - "mode": 4, + "order": 73, + "mode": 0, "inputs": [ + { + "name": "previous_modulation", + "type": "EMITTER_MODULATION", + "link": null, + "shape": 7 + }, { "name": "feature", "type": "FEATURE", - "link": 94 + "link": 713, + "shape": 7 } ], "outputs": [ { - "name": "FEATURE", - "type": "FEATURE", - "links": [], - "shape": 3, - "slot_index": 0 - }, - { - "name": "FEATURE_VISUALIZATION", - "type": "IMAGE", + "name": "EMITTER_MODULATION", + "type": "EMITTER_MODULATION", "links": [ - 95 - ], - "shape": 3, - "slot_index": 1 + 584 + ] } ], "properties": { - "Node name for S&R": "FeatureMixer" + "Node name for S&R": "EmitterEmissionRateModulation" }, "widgets_values": [ - 2.32, 0, - 2.17, - 1, - 1, - 1, - 1, 0, 0, - 0.3, - 0.5, - false + "ease_in_out", + false, + false, + 2.3000000000000003 ] }, { - "id": 49, - "type": "SetNode", - "pos": { - "0": -1970, - "1": -676, - "2": 0, - "3": 0, - "4": 0, - "5": 0, - "6": 0, - "7": 0, - "8": 0, - "9": 0 - }, - "size": { - "0": 210, - "1": 58 - }, + "id": 454, + "type": "DrawableFeatureNode", + "pos": [ + -2731.87890625, + 1743.6923828125 + ], + "size": [ + 700, + 800 + ], "flags": {}, - "order": 76, + "order": 22, "mode": 0, "inputs": [ { - "name": "IMAGE", - "type": "IMAGE", - "link": 304 + "name": "frame_rate", + "type": "FLOAT", + "link": null, + "widget": { + "name": "frame_rate" + } + }, + { + "name": "width", + "type": "INT", + "link": null, + "widget": { + "name": "width" + } + }, + { + "name": "height", + "type": "INT", + "link": null, + "widget": { + "name": "height" + } } ], "outputs": [ { - "name": "*", - "type": "*", - "links": [], + "name": "FEATURE", + "type": "FEATURE", + "links": [ + 711 + ], "slot_index": 0 } ], - "title": "Set_depth_maps", "properties": { - "previousName": "depth_maps" + "Node name for S&R": "DrawableFeatureNode" }, "widgets_values": [ - "depth_maps" + "drawn", + 30, + 441, + 512, + 512, + 0, + 1, + "ease_in", + 0, + "[[0,0.0033214633980542807],[355,0.006873633317257433],[439,0.9908254603810008]]", + "selected_template", + 1, + "load", + "clear" + ], + "points": [ + [ + 0, + 0.0033214633980542807 + ], + [ + 355, + 0.006873633317257433 + ], + [ + 439, + 0.9908254603810008 + ] ] }, { - "id": 74, - "type": "GetNode", - "pos": { - "0": -576, - "1": -833, - "2": 0, - "3": 0, - "4": 0, - "5": 0, - "6": 0, - "7": 0, - "8": 0, - "9": 0 - }, - "size": { - "0": 210, - "1": 58 - }, + "id": 455, + "type": "FeatureCombine", + "pos": [ + -1920.792724609375, + 1651.141357421875 + ], + "size": [ + 315, + 150 + ], "flags": {}, - "order": 26, + "order": 64, "mode": 0, - "inputs": [], + "inputs": [ + { + "name": "feature1", + "type": "FEATURE", + "link": 710 + }, + { + "name": "feature2", + "type": "FEATURE", + "link": 711 + } + ], "outputs": [ { - "name": "IMAGE", - "type": "IMAGE", + "name": "FEATURE", + "type": "FEATURE", "links": [ - 108, - 203 + 712, + 713 ], "slot_index": 0 } ], - "title": "Get_depth_maps", - "properties": {}, + "properties": { + "Node name for S&R": "FeatureCombine" + }, "widgets_values": [ - "depth_maps" + "max", + 1, + 1, + false ] }, { - "id": 20, - "type": "GetImageSizeAndCount", + "id": 374, + "type": "FeaturePeakDetector", "pos": [ - -564, - -1048 + -2527.853515625, + 1373.7442626953125 + ], + "size": [ + 390.5999755859375, + 178 ], - "size": { - "0": 210, - "1": 86 - }, "flags": {}, - "order": 46, + "order": 49, "mode": 0, "inputs": [ { - "name": "image", - "type": "IMAGE", - "link": 108 - } + "name": "feature", + "type": "FEATURE", + "link": 589 + } ], "outputs": [ { - "name": "image", - "type": "IMAGE", - "links": [], - "shape": 3, - "slot_index": 0 - }, - { - "name": "1280 width", - "type": "INT", + "name": "FEATURE", + "type": "FEATURE", "links": [ - 26 + 591, + 710 ], - "shape": 3, - "slot_index": 1 - }, + "slot_index": 0 + } + ], + "properties": { + "Node name for S&R": "FeaturePeakDetector" + }, + "widgets_values": [ + 0.46, + 10, + 1, + 1, + false, + false + ] + }, + { + "id": 375, + "type": "PreviewFeature", + "pos": [ + -1251.498046875, + 1635.8740234375 + ], + "size": [ + 315, + 246 + ], + "flags": {}, + "order": 63, + "mode": 0, + "inputs": [ { - "name": "720 height", - "type": "INT", - "links": [ - 27 - ], - "shape": 3, - "slot_index": 2 - }, + "name": "feature", + "type": "FEATURE", + "link": 591 + } + ], + "outputs": [], + "properties": { + "Node name for S&R": "PreviewFeature" + }, + "widgets_values": [] + }, + { + "id": 456, + "type": "PreviewFeature", + "pos": [ + -1265.3839111328125, + 2011.277587890625 + ], + "size": [ + 315, + 246 + ], + "flags": {}, + "order": 72, + "mode": 0, + "inputs": [ { - "name": "66 count", - "type": "INT", - "links": [ - 103 - ], - "shape": 3, - "slot_index": 3 + "name": "feature", + "type": "FEATURE", + "link": 712 } ], + "outputs": [], "properties": { - "Node name for S&R": "GetImageSizeAndCount" + "Node name for S&R": "PreviewFeature" } }, { - "id": 21, - "type": "_mfc", + "id": 368, + "type": "ParticleEmissionMask", "pos": [ - -317, - -703 + -693.0204467773438, + 992.501953125 + ], + "size": [ + 403.1999816894531, + 474 ], - "size": { - "0": 315, - "1": 150 - }, "flags": {}, - "order": 67, + "order": 84, "mode": 0, "inputs": [ { - "name": "image", - "type": "IMAGE", - "link": 30 + "name": "masks", + "type": "MASK", + "link": 582 + }, + { + "name": "emitters", + "type": "PARTICLE_EMITTER", + "link": 583 + }, + { + "name": "vortices", + "type": "VORTEX", + "link": null, + "shape": 7 + }, + { + "name": "wells", + "type": "GRAVITY_WELL", + "link": null, + "shape": 7 + }, + { + "name": "static_bodies", + "type": "STATIC_BODY", + "link": null, + "shape": 7 } ], "outputs": [ @@ -3202,295 +3620,364 @@ "name": "MASK", "type": "MASK", "links": [ - 200 + 599 ], - "shape": 3, "slot_index": 0 }, { "name": "IMAGE", "type": "IMAGE", - "links": null, - "shape": 3 + "links": [ + 586, + 657 + ], + "slot_index": 1 } ], "properties": { - "Node name for S&R": "_mfc" + "Node name for S&R": "ParticleEmissionMask" }, "widgets_values": [ + 1, + false, 0, 0, + 4134, + 4, 0, - 0 + 0, + 0, + 0, + 25, + 0, + false, + 1, + 1 ] }, { - "id": 114, - "type": "Note", + "id": 380, + "type": "GetNode", "pos": [ - 71, - -1074 + -469.8435974121094, + 1628.504150390625 + ], + "size": [ + 210, + 58 ], - "size": { - "0": 484.20526123046875, - "1": 158.15316772460938 - }, "flags": {}, - "order": 27, + "order": 23, "mode": 0, - "properties": { - "text": "" - }, + "inputs": [], + "outputs": [ + { + "name": "IMAGE", + "type": "IMAGE", + "links": [ + 598 + ], + "slot_index": 0 + } + ], + "title": "Get_emptyimg", + "properties": {}, "widgets_values": [ - "see above for additional example configuration of this node that i left behind. You can do a lot" + "emptyimg" ], - "color": "#432", - "bgcolor": "#653" + "color": "#2a363b", + "bgcolor": "#3f5159" }, { - "id": 25, - "type": "MaskToImage", + "id": 389, + "type": "GetNode", "pos": [ - 595, - -1044 + 2255.14404296875, + 1059.994873046875 + ], + "size": [ + 210, + 58 ], - "size": { - "0": 210, - "1": 26 - }, "flags": {}, - "order": 93, + "order": 24, "mode": 0, - "inputs": [ - { - "name": "mask", - "type": "MASK", - "link": 207 - } - ], + "inputs": [], "outputs": [ { - "name": "IMAGE", - "type": "IMAGE", + "name": "FEATURE", + "type": "FEATURE", "links": [ - 37 + 611, + 714 ], - "shape": 3, "slot_index": 0 } ], - "properties": { - "Node name for S&R": "MaskToImage" - } + "title": "Get_time_feat", + "properties": {}, + "widgets_values": [ + "time_feat" + ] }, { - "id": 117, - "type": "Note", + "id": 393, + "type": "FeatureToLatentKeyframe", "pos": [ - 180, - 232 + 2547.439453125, + 1037.183349609375 + ], + "size": [ + 302.3999938964844, + 56.64799880981445 ], - "size": { - "0": 565.3340454101562, - "1": 455.6415710449219 - }, "flags": {}, - "order": 28, + "order": 51, "mode": 0, + "inputs": [ + { + "name": "feature", + "type": "FEATURE", + "link": 611 + }, + { + "name": "prev_latent_kf", + "type": "LATENT_KEYFRAME", + "link": null, + "shape": 7 + } + ], + "outputs": [ + { + "name": "LATENT_KEYFRAME", + "type": "LATENT_KEYFRAME", + "links": [ + 622 + ], + "slot_index": 0 + } + ], "properties": { - "text": "" + "Node name for S&R": "FeatureToLatentKeyframe" }, - "widgets_values": [ - "0. In this workflow we demonstrate a way to use FlexMaskDepthChamber, and FlexImageParallax, both introduced by my node pack. We also have a look at one of the ways to use a TimeFeature\n\nBe sure to click the \"?\" icons for information about the nodes\n\nGive her a star https://github.com/ryanontheinside/ComfyUI_RyanOnTheInside\n\nFor other tutorials https://civitai.com/user/ryanontheinside" - ], - "color": "#432", - "bgcolor": "#653" + "widgets_values": [] }, { - "id": 173, - "type": "GetImageSizeAndCount", + "id": 151, + "type": "ACN_AdvancedControlNetApply_v2", "pos": [ - 7108, - 435 + 2922.843994140625, + 755.8820190429688 + ], + "size": [ + 285.6000061035156, + 266 ], - "size": { - "0": 210, - "1": 86 - }, "flags": {}, - "order": 107, + "order": 93, "mode": 0, "inputs": [ + { + "name": "positive", + "type": "CONDITIONING", + "link": 442 + }, + { + "name": "negative", + "type": "CONDITIONING", + "link": 443 + }, + { + "name": "control_net", + "type": "CONTROL_NET", + "link": 218 + }, { "name": "image", "type": "IMAGE", - "link": 278 + "link": 615 + }, + { + "name": "mask_optional", + "type": "MASK", + "link": null, + "shape": 7 + }, + { + "name": "timestep_kf", + "type": "TIMESTEP_KEYFRAME", + "link": null, + "shape": 7 + }, + { + "name": "latent_kf_override", + "type": "LATENT_KEYFRAME", + "link": 622, + "shape": 7 + }, + { + "name": "weights_override", + "type": "CONTROL_NET_WEIGHTS", + "link": null, + "shape": 7 + }, + { + "name": "vae_optional", + "type": "VAE", + "link": null, + "shape": 7 } ], "outputs": [ { - "name": "image", - "type": "IMAGE", + "name": "positive", + "type": "CONDITIONING", "links": [ - 287 + 221, + 240 ], - "shape": 3, "slot_index": 0 }, { - "name": "1584 width", - "type": "INT", + "name": "negative", + "type": "CONDITIONING", "links": [ - 283 + 222, + 241 ], - "shape": 3, "slot_index": 1 - }, - { - "name": "888 height", - "type": "INT", - "links": [ - 284 - ], - "shape": 3, - "slot_index": 2 - }, - { - "name": "66 count", - "type": "INT", - "links": null, - "shape": 3 } ], "properties": { - "Node name for S&R": "GetImageSizeAndCount" - } + "Node name for S&R": "ACN_AdvancedControlNetApply_v2" + }, + "widgets_values": [ + 1, + 0, + 0.5 + ] }, { - "id": 175, - "type": "Reroute", + "id": 457, + "type": "PreviewFeature", "pos": [ - 2859.5948525759013, - -35.33431721779152 + 2619.355224609375, + 1220.130126953125 ], "size": [ - 75, - 26 + 315, + 246 ], "flags": {}, - "order": 48, + "order": 52, "mode": 0, "inputs": [ { - "name": "", - "type": "*", - "link": 311 - } - ], - "outputs": [ - { - "name": "", - "type": "IMAGE", - "links": [ - 289 - ], - "slot_index": 0 + "name": "feature", + "type": "FEATURE", + "link": 714 } ], + "outputs": [], "properties": { - "showOutputText": false, - "horizontal": false + "Node name for S&R": "PreviewFeature" } }, { - "id": 150, + "id": 381, "type": "VHS_VideoCombine", "pos": [ - 10530.386098469018, - 294.75074584506234 + 1104.239013671875, + 1549.1685791015625 ], "size": [ - 210, - 686.1875 + 399.9459228515625, + 601.2973022460938 ], "flags": {}, - "order": 118, - "mode": 4, + "order": 90, + "mode": 0, "inputs": [ { "name": "images", "type": "IMAGE", - "link": 242 + "link": 600 }, { "name": "audio", "type": "AUDIO", - "link": null + "link": null, + "shape": 7 }, { "name": "meta_batch", "type": "VHS_BatchManager", - "link": null + "link": null, + "shape": 7 }, { "name": "vae", "type": "VAE", - "link": null + "link": null, + "shape": 7 } ], "outputs": [ { "name": "Filenames", "type": "VHS_FILENAMES", - "links": null, - "shape": 3 + "links": null } ], "properties": { "Node name for S&R": "VHS_VideoCombine" }, "widgets_values": { - "frame_rate": 20, - "loop_count": 16, + "frame_rate": 30, + "loop_count": 0, "filename_prefix": "AnimateDiff", "format": "video/h264-mp4", "pix_fmt": "yuv420p", "crf": 19, - "save_metadata": false, + "save_metadata": true, + "trim_to_audio": false, "pingpong": false, "save_output": true, "videopreview": { "hidden": false, "paused": false, "params": { - "filename": "AnimateDiff_03289.mp4", + "filename": "AnimateDiff_02498-audio.mp4", "subfolder": "", "type": "output", "format": "video/h264-mp4", - "frame_rate": 20 - } + "frame_rate": 30, + "workflow": "AnimateDiff_02498.png", + "fullpath": "/runpod-volume/ComfyUI_rv/output/AnimateDiff_02498-audio.mp4" + }, + "muted": false } } }, { - "id": 153, + "id": 392, "type": "FeatureMixer", "pos": [ - 9464, - 573 + 738.8497314453125, + -901.0776977539062 + ], + "size": [ + 315, + 322 ], - "size": { - "0": 367.79998779296875, - "1": 342 - }, "flags": {}, - "order": 115, - "mode": 4, + "order": 54, + "mode": 0, "inputs": [ { "name": "feature", "type": "FEATURE", - "link": 249 + "link": 606 } ], "outputs": [ @@ -3498,19 +3985,9 @@ "name": "FEATURE", "type": "FEATURE", "links": [ - 251 + 607 ], - "shape": 3, "slot_index": 0 - }, - { - "name": "FEATURE_VISUALIZATION", - "type": "IMAGE", - "links": [ - 250 - ], - "shape": 3, - "slot_index": 1 } ], "properties": { @@ -3528,315 +4005,266 @@ 0, 1, 0.5, - false + true ] }, { - "id": 145, - "type": "FlexImageParallax", + "id": 385, + "type": "FeatureToMask", "pos": [ - 10091, - 273 + 1145.3167724609375, + -895.9004516601562 + ], + "size": [ + 315, + 26 ], - "size": { - "0": 315, - "1": 238 - }, "flags": {}, - "order": 116, - "mode": 4, + "order": 65, + "mode": 0, "inputs": [ - { - "name": "images", - "type": "IMAGE", - "link": 247 - }, { "name": "feature", "type": "FEATURE", - "link": 251 - }, - { - "name": "feature_pipe", - "type": "FEATURE_PIPE", - "link": 241 - }, - { - "name": "depth_map", - "type": "IMAGE", - "link": 237 + "link": 607 } ], "outputs": [ { - "name": "IMAGE", - "type": "IMAGE", + "name": "MASK", + "type": "MASK", "links": [ - 242 + 608, + 616 ], - "shape": 3, "slot_index": 0 } ], "properties": { - "Node name for S&R": "FlexImageParallax" + "Node name for S&R": "FeatureToMask" }, - "widgets_values": [ - 1, - 0, - "shift_x", - "relative", - 0.01, - 0 - ] + "widgets_values": [] }, { - "id": 149, - "type": "TimeFeatureNode", + "id": 20, + "type": "CreateHookLora", "pos": [ - 9472, - 377 + 819.4852294921875, + -320.58843994140625 + ], + "size": [ + 291.2920837402344, + 106 ], - "size": { - "0": 317.4000244140625, - "1": 150 - }, "flags": {}, - "order": 114, - "mode": 4, + "order": 39, + "mode": 0, "inputs": [ { - "name": "video_frames", - "type": "IMAGE", - "link": 239 + "name": "prev_hooks", + "type": "HOOKS", + "link": 121, + "shape": 7 } ], "outputs": [ { - "name": "FEATURE", - "type": "FEATURE", + "name": "HOOKS", + "type": "HOOKS", "links": [ - 249 + 52 ], - "shape": 3, "slot_index": 0 - }, - { - "name": "FEATURE_PIPE", - "type": "FEATURE_PIPE", - "links": [ - 241 - ], - "shape": 3, - "slot_index": 1 } ], "properties": { - "Node name for S&R": "TimeFeatureNode" + "Node name for S&R": "CreateHookLora" }, "widgets_values": [ - 20, - "accelerate", - 0.1, - 0.3 + "ral-chrome-sd15.safetensors", + 1.1, + 1 ] }, { - "id": 155, - "type": "Note", + "id": 141, + "type": "GetNode", "pos": [ - 9936, - 87 + 3479.455810546875, + 255.44334411621094 + ], + "size": [ + 210, + 58 ], - "size": { - "0": 434.9312438964844, - "1": 112.82051086425781 - }, "flags": {}, - "order": 29, - "mode": 4, - "properties": { - "text": "" - }, + "order": 25, + "mode": 0, + "inputs": [], + "outputs": [ + { + "name": "LATENT", + "type": "LATENT", + "links": [ + 292 + ], + "slot_index": 0 + } + ], + "title": "Get_init_latent", + "properties": {}, "widgets_values": [ - "optionally, add parallax for additional rub. To accomplish this, we get new depth maps that include everything the AI generated" + "init_latent" ], - "color": "#432", - "bgcolor": "#653" + "color": "#323", + "bgcolor": "#535" }, { - "id": 147, - "type": "GetNode", - "pos": { - "0": 9467, - "1": 245, - "2": 0, - "3": 0, - "4": 0, - "5": 0, - "6": 0, - "7": 0, - "8": 0, - "9": 0 - }, - "size": { - "0": 210, - "1": 58 - }, + "id": 10, + "type": "VAELoader", + "pos": [ + 3606.709228515625, + 477.11724853515625 + ], + "size": [ + 315, + 58 + ], "flags": {}, - "order": 30, - "mode": 4, + "order": 26, + "mode": 0, "inputs": [], "outputs": [ { - "name": "DAMODEL", - "type": "DAMODEL", + "name": "VAE", + "type": "VAE", "links": [ - 235 + 8 ], "slot_index": 0 } ], - "title": "Get_DA_MODEL", - "properties": {}, + "properties": { + "Node name for S&R": "VAELoader" + }, "widgets_values": [ - "DA_MODEL" + "vaeFtMse840000EmaPruned_vae.safetensors" ] }, { - "id": 174, - "type": "ImageScale", + "id": 23, + "type": "KSampler", "pos": [ - 7596, + 3642.17431640625, + -123.67857360839844 + ], + "size": [ + 315, 262 ], - "size": { - "0": 315, - "1": 130 - }, "flags": {}, - "order": 108, + "order": 95, "mode": 0, "inputs": [ { - "name": "image", - "type": "IMAGE", - "link": 292 + "name": "model", + "type": "MODEL", + "link": 545 }, { - "name": "width", - "type": "INT", - "link": 283, - "widget": { - "name": "width" - } + "name": "positive", + "type": "CONDITIONING", + "link": 221 }, { - "name": "height", - "type": "INT", - "link": 284, - "widget": { - "name": "height" - } + "name": "negative", + "type": "CONDITIONING", + "link": 222 + }, + { + "name": "latent_image", + "type": "LATENT", + "link": 292 } ], "outputs": [ { - "name": "IMAGE", - "type": "IMAGE", + "name": "LATENT", + "type": "LATENT", "links": [ - 285 + 7 ], - "shape": 3, "slot_index": 0 } ], "properties": { - "Node name for S&R": "ImageScale" + "Node name for S&R": "KSampler" }, "widgets_values": [ - "nearest-exact", - 512, - 512, - "disabled" + 12345678, + "fixed", + 8, + 1.2, + "lcm", + "sgm_uniform", + 1 ] }, { - "id": 170, - "type": "ImageCompositeMasked", + "id": 404, + "type": "UpscaleModelLoader", "pos": [ - 7981, - 278 + 4606.60595703125, + -22.947595596313477 + ], + "size": [ + 315, + 58 ], - "size": { - "0": 315, - "1": 146 - }, "flags": {}, - "order": 109, + "order": 27, "mode": 0, - "inputs": [ - { - "name": "destination", - "type": "IMAGE", - "link": 285 - }, - { - "name": "source", - "type": "IMAGE", - "link": 287 - }, - { - "name": "mask", - "type": "MASK", - "link": 274 - } - ], + "inputs": [], "outputs": [ { - "name": "IMAGE", - "type": "IMAGE", + "name": "UPSCALE_MODEL", + "type": "UPSCALE_MODEL", "links": [ - 295 - ], - "shape": 3, - "slot_index": 0 + 624 + ] } ], "properties": { - "Node name for S&R": "ImageCompositeMasked" + "Node name for S&R": "UpscaleModelLoader" }, "widgets_values": [ - 0, - 0, - false + "RealESRGAN_x2.pth" ] }, { - "id": 112, + "id": 403, "type": "ImageUpscaleWithModel", "pos": [ - 8851, - 407 + 4600.28125, + 112.83490753173828 + ], + "size": [ + 340.20001220703125, + 46 ], - "size": { - "0": 241.79998779296875, - "1": 46 - }, "flags": {}, - "order": 111, - "mode": 4, + "order": 98, + "mode": 0, "inputs": [ { "name": "upscale_model", "type": "UPSCALE_MODEL", - "link": 175, - "slot_index": 0 + "link": 624 }, { "name": "image", "type": "IMAGE", - "link": 298 + "link": 623 } ], "outputs": [ @@ -3844,200 +4272,216 @@ "name": "IMAGE", "type": "IMAGE", "links": [ - 177, - 247, - 248 + 627 ], - "shape": 3, "slot_index": 0 } ], "properties": { "Node name for S&R": "ImageUpscaleWithModel" - } + }, + "widgets_values": [] }, { - "id": 82, - "type": "ImageResizeKJ", + "id": 406, + "type": "VAEEncode", "pos": [ - -3662, - -585 + 4984.15869140625, + -24.93491554260254 + ], + "size": [ + 210, + 46 ], - "size": { - "0": 310.7047424316406, - "1": 238 - }, "flags": {}, - "order": 61, + "order": 99, "mode": 0, "inputs": [ { - "name": "image", + "name": "pixels", "type": "IMAGE", - "link": 122 + "link": 627 }, { - "name": "get_image_size", - "type": "IMAGE", + "name": "vae", + "type": "VAE", "link": null - }, - { - "name": "width_input", - "type": "INT", - "link": null, - "widget": { - "name": "width_input" - } - }, - { - "name": "height_input", - "type": "INT", - "link": null, - "widget": { - "name": "height_input" - } } ], "outputs": [ { - "name": "IMAGE", - "type": "IMAGE", + "name": "LATENT", + "type": "LATENT", "links": [ - 302 + 628 ], - "shape": 3, "slot_index": 0 - }, - { - "name": "width", - "type": "INT", - "links": null, - "shape": 3 - }, - { - "name": "height", - "type": "INT", - "links": null, - "shape": 3 } ], "properties": { - "Node name for S&R": "ImageResizeKJ" + "Node name for S&R": "VAEEncode" }, - "widgets_values": [ - 960, - 960, - "lanczos", - true, - 2, - 0, - 0, - "disabled" - ] + "widgets_values": [] }, { - "id": 77, - "type": "GetNode", - "pos": { - "0": 1038, - "1": 291, - "2": 0, - "3": 0, - "4": 0, - "5": 0, - "6": 0, - "7": 0, - "8": 0, - "9": 0 - }, - "size": { - "0": 210, - "1": 58 - }, + "id": 160, + "type": "KSampler", + "pos": [ + 5306.71923828125, + -300.3212890625 + ], + "size": [ + 315, + 262 + ], "flags": {}, - "order": 31, + "order": 100, "mode": 0, - "inputs": [], + "inputs": [ + { + "name": "model", + "type": "MODEL", + "link": 546 + }, + { + "name": "positive", + "type": "CONDITIONING", + "link": 240 + }, + { + "name": "negative", + "type": "CONDITIONING", + "link": 241 + }, + { + "name": "latent_image", + "type": "LATENT", + "link": 628 + } + ], "outputs": [ { - "name": "IMAGE", - "type": "IMAGE", + "name": "LATENT", + "type": "LATENT", "links": [ - 310, - 311 + 235 ], "slot_index": 0 } ], - "title": "Get_init_images_resize", - "properties": {}, + "properties": { + "Node name for S&R": "KSampler" + }, "widgets_values": [ - "init_images_resize" + 12345678, + "fixed", + 6, + 1.2, + "lcm", + "sgm_uniform", + 0.25 ] }, { - "id": 146, - "type": "SetNode", - "pos": { - "0": -2248, - "1": -579, - "2": 0, - "3": 0, - "4": 0, - "5": 0, - "6": 0, - "7": 0, - "8": 0, - "9": 0 - }, - "size": { - "0": 210, - "1": 58 - }, + "id": 156, + "type": "VHS_VideoCombine", + "pos": [ + 6032.91015625, + -381.8001403808594 + ], + "size": [ + 399.9459228515625, + 601.2973022460938 + ], "flags": {}, - "order": 43, + "order": 102, "mode": 0, "inputs": [ { - "name": "DAMODEL", - "type": "DAMODEL", - "link": 234 + "name": "images", + "type": "IMAGE", + "link": 237 + }, + { + "name": "audio", + "type": "AUDIO", + "link": null, + "shape": 7 + }, + { + "name": "meta_batch", + "type": "VHS_BatchManager", + "link": null, + "shape": 7 + }, + { + "name": "vae", + "type": "VAE", + "link": null, + "shape": 7 } ], "outputs": [ { - "name": "*", - "type": "*", + "name": "Filenames", + "type": "VHS_FILENAMES", "links": null } ], - "title": "Set_DA_MODEL", "properties": { - "previousName": "DA_MODEL" + "Node name for S&R": "VHS_VideoCombine" }, - "widgets_values": [ - "DA_MODEL" - ] + "widgets_values": { + "frame_rate": 30, + "loop_count": 0, + "filename_prefix": "AnimateDiff", + "format": "video/h264-mp4", + "pix_fmt": "yuv420p", + "crf": 19, + "save_metadata": true, + "trim_to_audio": false, + "pingpong": false, + "save_output": true, + "videopreview": { + "hidden": false, + "paused": false, + "params": { + "filename": "AnimateDiff_02505-audio.mp4", + "subfolder": "", + "type": "output", + "format": "video/h264-mp4", + "frame_rate": 30, + "workflow": "AnimateDiff_02505.png", + "fullpath": "/runpod-volume/ComfyUI_rv/output/AnimateDiff_02505-audio.mp4" + }, + "muted": false + } + } }, { - "id": 111, - "type": "ImageCASharpening+", + "id": 428, + "type": "ImageScaleToTarget", "pos": [ - 8503, - 537 + 7180.02685546875, + -600.3045654296875 + ], + "size": [ + 415.8000183105469, + 102 ], - "size": { - "0": 310.79998779296875, - "1": 58 - }, "flags": {}, - "order": 110, + "order": 103, "mode": 0, "inputs": [ { "name": "image", "type": "IMAGE", - "link": 295 + "link": 660 + }, + { + "name": "target_image", + "type": "IMAGE", + "link": 661 } ], "outputs": [ @@ -4045,2585 +4489,2350 @@ "name": "IMAGE", "type": "IMAGE", "links": [ - 298 + 662 ], - "shape": 3, "slot_index": 0 } ], "properties": { - "Node name for S&R": "ImageCASharpening+" + "Node name for S&R": "ImageScaleToTarget" }, "widgets_values": [ - 0.8 + "nearest-exact", + "disabled" ] }, { - "id": 76, - "type": "SetNode", - "pos": { - "0": -3176, - "1": -583, - "2": 0, - "3": 0, - "4": 0, - "5": 0, - "6": 0, - "7": 0, - "8": 0, - "9": 0 - }, - "size": { - "0": 210, - "1": 58 - }, + "id": 427, + "type": "GetNode", + "pos": [ + 6819.43798828125, + -628.445556640625 + ], + "size": [ + 210, + 58 + ], "flags": {}, - "order": 69, + "order": 28, "mode": 0, - "inputs": [ - { - "name": "IMAGE", - "type": "IMAGE", - "link": 302 - } - ], + "inputs": [], "outputs": [ { "name": "IMAGE", "type": "IMAGE", "links": [ - 317 + 660 ], "slot_index": 0 } ], - "title": "Set_init_images_resize", - "properties": { - "previousName": "init_images_resize" - }, - "widgets_values": [ - "init_images_resize" - ] - }, - { - "id": 71, - "type": "Note", - "pos": [ - -1248, - -1189 - ], - "size": { - "0": 344.94537353515625, - "1": 142.8384552001953 - }, - "flags": {}, - "order": 32, - "mode": 0, - "properties": { - "text": "" - }, + "title": "Get_emptyimg", + "properties": {}, "widgets_values": [ - "3. motion feature fine tuned for my input video" + "emptyimg" ], - "color": "#432", - "bgcolor": "#653" + "color": "#2a363b", + "bgcolor": "#3f5159" }, { - "id": 185, - "type": "SetNode", - "pos": { - "0": -4268, - "1": -803, - "2": 0, - "3": 0, - "4": 0, - "5": 0, - "6": 0, - "7": 0, - "8": 0, - "9": 0 - }, - "size": { - "0": 210, - "1": 58 - }, - "flags": {}, - "order": 51, - "mode": 0, - "inputs": [ - { - "name": "AUDIO", - "type": "AUDIO", - "link": 322 - } + "id": 458, + "type": "UpscaleModelLoader", + "pos": [ + 8682.73828125, + -493.5846862792969 ], - "outputs": [ - { - "name": "*", - "type": "*", - "links": null - } + "size": [ + 315, + 58 ], - "title": "Set_audio", - "properties": { - "previousName": "audio" - }, - "widgets_values": [ - "audio" - ] - }, - { - "id": 186, - "type": "GetNode", - "pos": { - "0": 525.7615966796875, - "1": -1262.3212890625, - "2": 0, - "3": 0, - "4": 0, - "5": 0, - "6": 0, - "7": 0, - "8": 0, - "9": 0 - }, - "size": { - "0": 210, - "1": 58 - }, "flags": {}, - "order": 33, + "order": 29, "mode": 0, "inputs": [], "outputs": [ { - "name": "AUDIO", - "type": "AUDIO", + "name": "UPSCALE_MODEL", + "type": "UPSCALE_MODEL", "links": [ - 323 + 715 ], "slot_index": 0 } ], - "title": "Get_audio", - "properties": {}, + "properties": { + "Node name for S&R": "UpscaleModelLoader" + }, "widgets_values": [ - "audio" + "RealESRGAN_x2.pth" ] }, { - "id": 184, - "type": "FeatureSmoothing", + "id": 459, + "type": "ImageUpscaleWithModel", "pos": [ - -1444, - -757 + 8942.4462890625, + -385.1019287109375 + ], + "size": [ + 340.20001220703125, + 46 ], - "size": { - "0": 367.79998779296875, - "1": 174 - }, "flags": {}, - "order": 84, + "order": 108, "mode": 0, "inputs": [ { - "name": "feature", - "type": "FEATURE", - "link": 318 + "name": "upscale_model", + "type": "UPSCALE_MODEL", + "link": 715 + }, + { + "name": "image", + "type": "IMAGE", + "link": 716 } ], "outputs": [ { - "name": "FEATURE", - "type": "FEATURE", + "name": "IMAGE", + "type": "IMAGE", "links": [ - 319 + 717 ], - "shape": 3, "slot_index": 0 - }, - { - "name": "FEATURE_VISUALIZATION", - "type": "IMAGE", - "links": null, - "shape": 3 } ], "properties": { - "Node name for S&R": "FeatureSmoothing" - }, - "widgets_values": [ - "moving_average", - 21, - 0.3, - 0.1, - false - ] + "Node name for S&R": "ImageUpscaleWithModel" + } }, { - "id": 24, + "id": 435, "type": "VHS_VideoCombine", "pos": [ - 594, - -1072 + 9112.9189453125, + -201.974609375 ], "size": [ - 210, - 431 + 399.9459228515625, + 601.2973022460938 ], "flags": {}, - "order": 95, + "order": 109, "mode": 0, "inputs": [ { "name": "images", "type": "IMAGE", - "link": 37 + "link": 717 }, { "name": "audio", "type": "AUDIO", - "link": 323 + "link": null, + "shape": 7 }, { "name": "meta_batch", "type": "VHS_BatchManager", - "link": null + "link": null, + "shape": 7 }, { "name": "vae", "type": "VAE", - "link": null + "link": null, + "shape": 7 } ], "outputs": [ { "name": "Filenames", "type": "VHS_FILENAMES", - "links": null, - "shape": 3 + "links": null } ], "properties": { "Node name for S&R": "VHS_VideoCombine" }, "widgets_values": { - "frame_rate": 15, + "frame_rate": 30, "loop_count": 0, "filename_prefix": "AnimateDiff", "format": "video/h264-mp4", "pix_fmt": "yuv420p", - "crf": 14, + "crf": 19, "save_metadata": true, + "trim_to_audio": false, "pingpong": false, "save_output": true, "videopreview": { "hidden": false, "paused": false, "params": { - "filename": "AnimateDiff_03410-audio.mp4", + "filename": "AnimateDiff_02507-audio.mp4", "subfolder": "", "type": "output", "format": "video/h264-mp4", - "frame_rate": 15 - } + "frame_rate": 30, + "workflow": "AnimateDiff_02507.png", + "fullpath": "/runpod-volume/ComfyUI_rv/output/AnimateDiff_02507-audio.mp4" + }, + "muted": false } } }, { - "id": 179, - "type": "VHS_LoadVideo", + "id": 72, + "type": "PreviewAudio", "pos": [ - -4599, - -919 + -2489.999755859375, + -1201.3414306640625 ], "size": [ - 235.1999969482422, - 397.112556422034 + 315, + 76.00001525878906 ], "flags": {}, - "order": 34, + "order": 44, "mode": 0, "inputs": [ { - "name": "meta_batch", - "type": "VHS_BatchManager", - "link": null - }, - { - "name": "vae", - "type": "VAE", - "link": null + "name": "audio", + "type": "AUDIO", + "link": 122 } ], + "outputs": [], + "properties": { + "Node name for S&R": "PreviewAudio" + }, + "widgets_values": [ + null + ] + }, + { + "id": 472, + "type": "VHS_LoadAudioUpload", + "pos": [ + -3011.373291015625, + -1948.1092529296875 + ], + "size": [ + 243.818359375, + 130 + ], + "flags": {}, + "order": 30, + "mode": 0, + "inputs": [], "outputs": [ - { - "name": "IMAGE", - "type": "IMAGE", - "links": [ - 300, - 301 - ], - "shape": 3, - "slot_index": 0 - }, - { - "name": "frame_count", - "type": "INT", - "links": null, - "shape": 3 - }, { "name": "audio", "type": "AUDIO", "links": [ - 322 + 734 ], - "shape": 3, - "slot_index": 2 - }, - { - "name": "video_info", - "type": "VHS_VIDEOINFO", - "links": null, + "slot_index": 0, "shape": 3 } ], "properties": { - "Node name for S&R": "VHS_LoadVideo" + "Node name for S&R": "VHS_LoadAudioUpload" }, "widgets_values": { - "video": "motion3.mp4", - "force_rate": 15, - "force_size": "Disabled", - "custom_width": 512, - "custom_height": 512, - "frame_load_cap": 0, - "skip_first_frames": 6, - "select_every_nth": 1, - "choose video to upload": "image", - "videopreview": { - "hidden": false, - "paused": false, - "params": { - "frame_load_cap": 0, - "skip_first_frames": 6, - "force_rate": 15, - "filename": "motion3.mp4", - "type": "input", - "format": "video/mp4", - "select_every_nth": 1 - } - } + "audio": "Vesuvius.mp3", + "start_time": 26.5, + "duration": 53.480000000000004, + "choose audio to upload": "image" } }, { - "id": 42, - "type": "CR LoRA Stack", + "id": 474, + "type": "PreviewAudio", "pos": [ - 1110, - 683 + -2386.065673828125, + -1927.843017578125 + ], + "size": [ + 315, + 76 ], - "size": { - "0": 315, - "1": 342 - }, "flags": {}, - "order": 35, + "order": 53, "mode": 0, "inputs": [ { - "name": "lora_stack", - "type": "LORA_STACK", - "link": null - } - ], - "outputs": [ - { - "name": "LORA_STACK", - "type": "LORA_STACK", - "links": [ - 62 - ], - "shape": 3, - "slot_index": 0 - }, - { - "name": "show_help", - "type": "STRING", - "links": null, - "shape": 3 + "name": "audio", + "type": "AUDIO", + "link": 734 } ], + "outputs": [], "properties": { - "Node name for S&R": "CR LoRA Stack" + "Node name for S&R": "PreviewAudio" }, "widgets_values": [ - "On", - "AnimateLCM_sd15_t2v_lora.safetensors", - 1, - 1, - "On", - "add_detail.safetensors", - 1, - 1, - "On", - "ral-acidzlime-sd15.safetensors", - 1, - 1 + null ] }, { - "id": 6, - "type": "CLIPTextEncode", + "id": 391, + "type": "GetNode", "pos": [ - 1942, - 483 + 386.7666320800781, + -900.653076171875 + ], + "size": [ + 210, + 58 ], - "size": { - "0": 422.84503173828125, - "1": 164.31304931640625 - }, "flags": {}, - "order": 64, + "order": 31, "mode": 0, - "inputs": [ - { - "name": "clip", - "type": "CLIP", - "link": 63 - } - ], + "inputs": [], "outputs": [ { - "name": "CONDITIONING", - "type": "CONDITIONING", + "name": "FEATURE", + "type": "FEATURE", "links": [ - 85 + 606, + 735 ], "slot_index": 0 } ], - "properties": { - "Node name for S&R": "CLIPTextEncode" - }, + "title": "Get_time_feat", + "properties": {}, "widgets_values": [ - "a masterpiece, slime, ral-acidzlime, infectious flow, disease, puss, blister, green liquid" + "time_feat" ] }, { - "id": 183, - "type": "FeatureMath", + "id": 430, + "type": "VHS_VideoCombine", "pos": [ - -1143, - -480 + 8167.59130859375, + 113.70626831054688 + ], + "size": [ + 399.9459228515625, + 601.2973022460938 ], - "size": { - "0": 367.79998779296875, - "1": 126 - }, "flags": {}, - "order": 88, + "order": 107, "mode": 0, "inputs": [ { - "name": "feature", - "type": "FEATURE", - "link": 319 + "name": "images", + "type": "IMAGE", + "link": 666 + }, + { + "name": "audio", + "type": "AUDIO", + "link": null, + "shape": 7 + }, + { + "name": "meta_batch", + "type": "VHS_BatchManager", + "link": null, + "shape": 7 + }, + { + "name": "vae", + "type": "VAE", + "link": null, + "shape": 7 } ], "outputs": [ { - "name": "FEATURE", - "type": "FEATURE", - "links": [], - "shape": 3, - "slot_index": 0 - }, - { - "name": "FEATURE_VISUALIZATION", - "type": "IMAGE", - "links": [ - 320 - ], - "shape": 3, - "slot_index": 1 + "name": "Filenames", + "type": "VHS_FILENAMES", + "links": null } ], "properties": { - "Node name for S&R": "FeatureMath" + "Node name for S&R": "VHS_VideoCombine" }, - "widgets_values": [ - 0.3, - "subtract", - false - ] + "widgets_values": { + "frame_rate": 30, + "loop_count": 0, + "filename_prefix": "AnimateDiff", + "format": "video/h264-mp4", + "pix_fmt": "yuv420p", + "crf": 19, + "save_metadata": true, + "trim_to_audio": false, + "pingpong": false, + "save_output": true, + "videopreview": { + "hidden": false, + "paused": false, + "params": { + "filename": "AnimateDiff_02506-audio.mp4", + "subfolder": "", + "type": "output", + "format": "video/h264-mp4", + "frame_rate": 30, + "workflow": "AnimateDiff_02506.png", + "fullpath": "/runpod-volume/ComfyUI_rv/output/AnimateDiff_02506-audio.mp4" + }, + "muted": false + } + } }, { - "id": 180, - "type": "MotionFeatureNode", + "id": 425, + "type": "AdvancedLuminanceMask", "pos": [ - -1448, - -993 + 7429.662109375, + 38.53061294555664 ], "size": [ - 316.99615354233515, + 415.8000183105469, 174 ], "flags": {}, - "order": 74, + "order": 105, "mode": 0, "inputs": [ { - "name": "video_frames", + "name": "image", "type": "IMAGE", - "link": 317 + "link": 737 } ], "outputs": [ { - "name": "FEATURE", - "type": "FEATURE", + "name": "MASK", + "type": "MASK", "links": [ - 315, - 330 + 664 ], - "shape": 3, "slot_index": 0 }, { - "name": "FEATURE_PIPE", - "type": "FEATURE_PIPE", + "name": "IMAGE", + "type": "IMAGE", "links": [ - 314 + 666 ], - "shape": 3 + "slot_index": 1 } ], "properties": { - "Node name for S&R": "MotionFeatureNode" + "Node name for S&R": "AdvancedLuminanceMask" }, "widgets_values": [ - 15, - "mean_motion", - "Farneback", - 0, - 0 + 0.14, + 5, + 0.5, + 10, + 0.3 ] }, { - "id": 182, - "type": "PreviewImage", + "id": 449, + "type": "FlexImageBloom", "pos": [ - -130, - -279 + 7006.68505859375, + -96.16691589355469 ], "size": [ - 1047.4993309554536, - 512.3371554142797 + 327.5999755859375, + 334 ], "flags": {}, - "order": 90, + "order": 104, "mode": 0, "inputs": [ { "name": "images", "type": "IMAGE", - "link": 320 - } - ], - "properties": { - "Node name for S&R": "PreviewImage" - } - }, - { - "id": 181, - "type": "FeatureMixer", - "pos": [ - -1077, - -983 - ], - "size": { - "0": 367.79998779296875, - "1": 342 - }, - "flags": {}, - "order": 80, - "mode": 4, - "inputs": [ + "link": 700 + }, { - "name": "feature", + "name": "opt_feature", "type": "FEATURE", - "link": 315 + "link": 701, + "shape": 7 + }, + { + "name": "opt_normal_map", + "type": "IMAGE", + "link": null, + "shape": 7 + }, + { + "name": "opt_mask", + "type": "MASK", + "link": null, + "shape": 7 } ], "outputs": [ { - "name": "FEATURE", - "type": "FEATURE", + "name": "IMAGE", + "type": "IMAGE", "links": [ - 318 + 702, + 737 ], - "shape": 3, "slot_index": 0 - }, - { - "name": "FEATURE_VISUALIZATION", - "type": "IMAGE", - "links": [], - "shape": 3, - "slot_index": 1 } ], "properties": { - "Node name for S&R": "FeatureMixer" + "Node name for S&R": "FlexImageBloom" }, "widgets_values": [ - 1.7, - 0.3, - 1.7, - 1, - 1, - 1, 1, 0, - 0.3, - 1, + "intensity", + "relative", + 0.7, + 10, 0.5, - false + 4, + 0.2, + 1.2 ] }, { - "id": 190, - "type": "FeatureSmoothing", + "id": 434, + "type": "GetNode", "pos": [ - -1694, - -508 + 6697.58203125, + 46.34690475463867 ], "size": [ - 368.7515202084385, - 174 + 210, + 58 ], "flags": {}, - "order": 85, + "order": 32, "mode": 0, - "inputs": [ - { - "name": "feature", - "type": "FEATURE", - "link": 331 - } - ], + "inputs": [], "outputs": [ { "name": "FEATURE", "type": "FEATURE", "links": [ - 332 + 701 ], - "shape": 3, "slot_index": 0 - }, - { - "name": "FEATURE_VISUALIZATION", - "type": "IMAGE", - "links": [], - "shape": 3 } ], - "properties": { - "Node name for S&R": "FeatureSmoothing" - }, + "title": "Get_kifck_feature", + "properties": {}, "widgets_values": [ - "moving_average", - 3, - 0.3, - 0.1, - false + "kifck_feature" ] }, { - "id": 127, - "type": "FlexMaskDepthChamber", + "id": 353, + "type": "ADE_MultivalDynamic", "pos": [ - 105, - -839 + 2767.11328125, + -424.7257995605469 + ], + "size": [ + 259.9388122558594, + 63.332008361816406 ], - "size": { - "0": 344.3999938964844, - "1": 310 - }, "flags": {}, - "order": 91, + "order": 66, "mode": 0, "inputs": [ { - "name": "masks", + "name": "mask_optional", "type": "MASK", - "link": 200 - }, - { - "name": "feature", - "type": "FEATURE", - "link": 334 - }, - { - "name": "feature_pipe", - "type": "FEATURE_PIPE", - "link": 314 + "link": null, + "shape": 7 }, { - "name": "depth_map", - "type": "IMAGE", - "link": 203 + "name": "float_val", + "type": "FLOAT", + "link": 736, + "widget": { + "name": "float_val" + } } ], "outputs": [ { - "name": "MASK", - "type": "MASK", + "name": "MULTIVAL", + "type": "MULTIVAL", "links": [ - 207, - 307 + 539 ], - "shape": 3, - "slot_index": 0 + "slot_index": 0, + "shape": 3 } ], + "title": "Scale 🎭🅐🅓", "properties": { - "Node name for S&R": "FlexMaskDepthChamber" + "Node name for S&R": "ADE_MultivalDynamic", + "ttNbgOverride": { + "color": "#2a363b", + "bgcolor": "#3f5159", + "groupcolor": "#3f789e" + } }, "widgets_values": [ - 1, - false, - 0, - 0, - 0, - 0.03, - 0, - "z_front", - "move_forward" + 1.1400000000000001 ] }, { - "id": 41, - "type": "LoadImage", + "id": 475, + "type": "FeatureToFlexFloatParam", "pos": [ - 4072.911603734174, - 274.6610030536769 + 2711.660400390625, + -715.4929809570312 + ], + "size": [ + 466.1999816894531, + 106 ], - "size": { - "0": 315, - "1": 314.0000305175781 - }, "flags": {}, - "order": 36, - "mode": 0, + "order": 55, + "mode": 4, + "inputs": [ + { + "name": "feature", + "type": "FEATURE", + "link": 735 + } + ], "outputs": [ { - "name": "IMAGE", - "type": "IMAGE", + "name": "PARAMETER", + "type": "FLOAT", "links": [ - 97 + 736 ], - "shape": 3, - "slot_index": 0 - }, - { - "name": "MASK", - "type": "MASK", - "links": null, - "shape": 3 - } - ], - "properties": { - "Node name for S&R": "LoadImage" - }, - "widgets_values": [ - "paintFractal.jpg", - "image" - ] - }, - { - "id": 26, - "type": "IPAdapterAdvanced", - "pos": [ - 4798, - 303 - ], - "size": { - "0": 315, - "1": 278 - }, - "flags": {}, - "order": 77, - "mode": 0, - "inputs": [ - { - "name": "model", - "type": "MODEL", - "link": 57 - }, - { - "name": "ipadapter", - "type": "IPADAPTER", - "link": 58 - }, - { - "name": "image", - "type": "IMAGE", - "link": 98, - "slot_index": 2 - }, - { - "name": "image_negative", - "type": "IMAGE", - "link": null - }, - { - "name": "attn_mask", - "type": "MASK", - "link": null - }, - { - "name": "clip_vision", - "type": "CLIP_VISION", - "link": null - } - ], - "outputs": [ - { - "name": "MODEL", - "type": "MODEL", - "links": [ - 66, - 112 - ], - "shape": 3, "slot_index": 0 } ], "properties": { - "Node name for S&R": "IPAdapterAdvanced" + "Node name for S&R": "FeatureToFlexFloatParam" }, "widgets_values": [ - 1, - "style transfer", - "concat", - 0, - 1, - "V only" - ] - }, - { - "id": 193, - "type": "GetNode", - "pos": { - "0": 5859.99267578125, - "1": 609.7716064453125, - "2": 0, - "3": 0, - "4": 0, - "5": 0, - "6": 0, - "7": 0, - "8": 0, - "9": 0 - }, - "size": { - "0": 210, - "1": 58 - }, - "flags": {}, - "order": 37, - "mode": 0, - "inputs": [], - "outputs": [ - { - "name": "AUDIO", - "type": "AUDIO", - "links": [ - 335 - ], - "slot_index": 0 - } - ], - "title": "Get_audio", - "properties": {}, - "widgets_values": [ - "audio" - ] - }, - { - "id": 13, - "type": "VHS_VideoCombine", - "pos": [ - 6206, - 403 - ], - "size": [ - 210, - 430 - ], - "flags": {}, - "order": 103, - "mode": 0, - "inputs": [ - { - "name": "images", - "type": "IMAGE", - "link": 13 - }, - { - "name": "audio", - "type": "AUDIO", - "link": 335 - }, - { - "name": "meta_batch", - "type": "VHS_BatchManager", - "link": null - }, - { - "name": "vae", - "type": "VAE", - "link": null - } - ], - "outputs": [ - { - "name": "Filenames", - "type": "VHS_FILENAMES", - "links": null, - "shape": 3 - } - ], - "properties": { - "Node name for S&R": "VHS_VideoCombine" - }, - "widgets_values": { - "frame_rate": 15, - "loop_count": 0, - "filename_prefix": "AnimateDiff", - "format": "video/h264-mp4", - "pix_fmt": "yuv420p", - "crf": 19, - "save_metadata": true, - "pingpong": false, - "save_output": true, - "videopreview": { - "hidden": false, - "paused": false, - "params": { - "filename": "AnimateDiff_03411-audio.mp4", - "subfolder": "", - "type": "output", - "format": "video/h264-mp4", - "frame_rate": 15 - } - } - } - }, - { - "id": 3, - "type": "KSampler", - "pos": [ - 5463, - 294 - ], - "size": { - "0": 315, - "1": 262 - }, - "flags": {}, - "order": 100, - "mode": 0, - "inputs": [ - { - "name": "model", - "type": "MODEL", - "link": 66 - }, - { - "name": "positive", - "type": "CONDITIONING", - "link": 140 - }, - { - "name": "negative", - "type": "CONDITIONING", - "link": 142 - }, - { - "name": "latent_image", - "type": "LATENT", - "link": 68 - } - ], - "outputs": [ - { - "name": "LATENT", - "type": "LATENT", - "links": [ - 100, - 246 - ], - "slot_index": 0 - } - ], - "properties": { - "Node name for S&R": "KSampler" - }, - "widgets_values": [ - 156680208700286, - "fixed", - 8, - 1, - "lcm", - "sgm_uniform", - 0.65 - ] - }, - { - "id": 191, - "type": "FeatureMixer", - "pos": [ - -2134, - -485 - ], - "size": { - "0": 367.79998779296875, - "1": 342 - }, - "flags": {}, - "order": 81, - "mode": 0, - "inputs": [ - { - "name": "feature", - "type": "FEATURE", - "link": 330 - } - ], - "outputs": [ - { - "name": "FEATURE", - "type": "FEATURE", - "links": [ - 331 - ], - "shape": 3, - "slot_index": 0 - }, - { - "name": "FEATURE_VISUALIZATION", - "type": "IMAGE", - "links": [], - "shape": 3, - "slot_index": 1 - } - ], - "properties": { - "Node name for S&R": "FeatureMixer" - }, - "widgets_values": [ - 1.5, - 0.3, - 1.7, - 1, - 1, - 1, - 1, - 0, - 0.3, - 1, - 0.5, - false - ] - }, - { - "id": 188, - "type": "PreviewImage", - "pos": [ - -1079, - -184 - ], - "size": { - "0": 1047.4993896484375, - "1": 512.337158203125 - }, - "flags": {}, - "order": 92, - "mode": 0, - "inputs": [ - { - "name": "images", - "type": "IMAGE", - "link": 333 - } - ], - "properties": { - "Node name for S&R": "PreviewImage" - } - }, - { - "id": 192, - "type": "FeatureMath", - "pos": [ - -1542, - -256 - ], - "size": { - "0": 367.79998779296875, - "1": 126 - }, - "flags": {}, - "order": 89, - "mode": 0, - "inputs": [ - { - "name": "feature", - "type": "FEATURE", - "link": 332 - } - ], - "outputs": [ - { - "name": "FEATURE", - "type": "FEATURE", - "links": [ - 334 - ], - "shape": 3, - "slot_index": 0 - }, - { - "name": "FEATURE_VISUALIZATION", - "type": "IMAGE", - "links": [ - 333 - ], - "shape": 3, - "slot_index": 1 - } - ], - "properties": { - "Node name for S&R": "FeatureMath" - }, - "widgets_values": [ - 0.3, - "subtract", - false - ] - }, - { - "id": 177, - "type": "GetImageSizeAndCount", - "pos": [ - 7343, - -155 - ], - "size": { - "0": 210, - "1": 86 - }, - "flags": {}, - "order": 68, - "mode": 0, - "inputs": [ - { - "name": "image", - "type": "IMAGE", - "link": 291 - } - ], - "outputs": [ - { - "name": "image", - "type": "IMAGE", - "links": [ - 292 - ], - "shape": 3, - "slot_index": 0 - }, - { - "name": "960 width", - "type": "INT", - "links": null, - "shape": 3 - }, - { - "name": "540 height", - "type": "INT", - "links": null, - "shape": 3 - }, - { - "name": "66 count", - "type": "INT", - "links": null, - "shape": 3 - } - ], - "properties": { - "Node name for S&R": "GetImageSizeAndCount" - } - }, - { - "id": 176, - "type": "Reroute", - "pos": [ - 7200, - -26 - ], - "size": [ - 75, - 26 - ], - "flags": {}, - "order": 60, - "mode": 0, - "inputs": [ - { - "name": "", - "type": "*", - "link": 289 - } - ], - "outputs": [ - { - "name": "", - "type": "IMAGE", - "links": [ - 291 - ], - "slot_index": 0 - } - ], - "properties": { - "showOutputText": false, - "horizontal": false - } - }, - { - "id": 81, - "type": "VHS_VideoCombine", - "pos": [ - 9117, - 285 - ], - "size": [ - 210, - 431 - ], - "flags": {}, - "order": 112, - "mode": 0, - "inputs": [ - { - "name": "images", - "type": "IMAGE", - "link": 177 - }, - { - "name": "audio", - "type": "AUDIO", - "link": 336 - }, - { - "name": "meta_batch", - "type": "VHS_BatchManager", - "link": null - }, - { - "name": "vae", - "type": "VAE", - "link": null - } - ], - "outputs": [ - { - "name": "Filenames", - "type": "VHS_FILENAMES", - "links": null, - "shape": 3 - } - ], - "properties": { - "Node name for S&R": "VHS_VideoCombine" - }, - "widgets_values": { - "frame_rate": 20, - "loop_count": 0, - "filename_prefix": "AnimateDiff", - "format": "video/h264-mp4", - "pix_fmt": "yuv420p", - "crf": 19, - "save_metadata": false, - "pingpong": false, - "save_output": true, - "videopreview": { - "hidden": false, - "paused": false, - "params": { - "filename": "AnimateDiff_03414-audio.mp4", - "subfolder": "", - "type": "output", - "format": "video/h264-mp4", - "frame_rate": 20 - } - } - } - }, - { - "id": 194, - "type": "GetNode", - "pos": { - "0": 8749, - "1": 664, - "2": 0, - "3": 0, - "4": 0, - "5": 0, - "6": 0, - "7": 0, - "8": 0, - "9": 0 - }, - "size": { - "0": 210, - "1": 58 - }, - "flags": {}, - "order": 38, - "mode": 0, - "inputs": [], - "outputs": [ - { - "name": "AUDIO", - "type": "AUDIO", - "links": [ - 336 - ], - "slot_index": 0 - } - ], - "title": "Get_audio", - "properties": {}, - "widgets_values": [ - "audio" + false, + 1.1300000000000001, + 1.35 ] } ], "links": [ [ + 1, + 21, + 0, + 2, + 0, + "CLIP" + ], + [ + 3, + 21, + 0, + 4, + 0, + "CLIP" + ], + [ + 7, + 23, + 0, + 9, + 0, + "LATENT" + ], + [ + 8, + 10, + 0, + 9, + 1, + "VAE" + ], + [ + 9, + 12, + 0, + 11, + 0, + "CLIP" + ], + [ + 10, + 13, + 1, 12, + 0, + "CLIP" + ], + [ + 13, 4, + 0, + 16, + 0, + "CONDITIONING" + ], + [ + 14, 2, - 12, + 0, + 16, 1, - "VAE" + "CONDITIONING" ], [ - 13, - 8, + 21, + 12, 0, - 13, + 21, 0, - "IMAGE" + "CLIP" ], [ - 15, + 46, 15, 0, 14, 0, - "DAMODEL" + "MASK" ], [ - 26, + 52, 20, + 0, + 21, 1, - 19, + "HOOKS" + ], + [ + 97, + 16, 0, - "INT" + 17, + 0, + "CONDITIONING" ], [ - 27, - 20, + 98, + 16, + 1, + 17, + 1, + "CONDITIONING" + ], + [ + 99, + 6, + 0, + 17, 2, - 19, + "CONDITIONING" + ], + [ + 100, + 3, + 0, + 17, + 3, + "CONDITIONING" + ], + [ + 121, + 71, + 0, + 20, + 0, + "HOOKS" + ], + [ + 122, + 92, + 0, + 72, + 0, + "AUDIO" + ], + [ + 132, + 92, + 0, + 82, + 0, + "AUDIO" + ], + [ + 133, + 82, + 0, + 83, + 0, + "*" + ], + [ + 145, + 82, 1, - "INT" + 94, + 0, + "*" ], [ - 30, - 19, + 164, + 9, 0, - 21, + 110, 0, "IMAGE" ], [ - 37, - 25, + 165, + 11, 0, - 24, + 6, 0, - "IMAGE" + "CLIP" + ], + [ + 166, + 11, + 0, + 3, + 0, + "CLIP" + ], + [ + 218, + 152, + 0, + 151, + 2, + "CONTROL_NET" ], [ - 44, - 33, + 221, + 151, 0, - 28, + 23, 1, - "CONTEXT_OPTIONS" + "CONDITIONING" + ], + [ + 222, + 151, + 1, + 23, + 2, + "CONDITIONING" + ], + [ + 235, + 160, + 0, + 155, + 0, + "LATENT" + ], + [ + 236, + 157, + 0, + 155, + 1, + "VAE" ], [ - 45, - 39, + 237, + 155, + 0, + 156, + 0, + "IMAGE" + ], + [ + 240, + 151, 0, - 28, + 160, + 1, + "CONDITIONING" + ], + [ + 241, + 151, + 1, + 160, 2, - "MOTION_LORA" + "CONDITIONING" ], [ - 46, - 36, + 292, + 141, 0, - 28, + 23, 3, - "AD_SETTINGS" + "LATENT" ], [ - 47, - 29, + 442, + 17, 0, - 28, - 5, - "SAMPLE_SETTINGS" + 151, + 0, + "CONDITIONING" + ], + [ + 443, + 17, + 1, + 151, + 1, + "CONDITIONING" ], [ - 48, - 32, + 491, + 92, 0, - 28, - 6, + 321, + 1, + "AUDIO" + ], + [ + 496, + 322, + 0, + 321, + 0, + "OPEN_UNMIX_MODEL" + ], + [ + 500, + 325, + 0, + 102, + 0, + "INT" + ], + [ + 501, + 327, + 0, + 326, + 0, + "FLOAT" + ], + [ + 511, + 328, + 0, + 335, + 0, + "FEATURE" + ], + [ + 512, + 335, + 0, + 78, + 0, + "FEATURE" + ], + [ + 513, + 335, + 0, + 336, + 0, + "FEATURE" + ], + [ + 535, + 325, + 0, + 349, + 0, + "INT" + ], + [ + 536, + 354, + 0, + 355, + 2, + "CUSTOM_CFG" + ], + [ + 537, + 357, + 0, + 356, + 0, + "MOTION_MODEL_ADE" + ], + [ + 538, + 351, + 0, + 356, + 1, + "MOTION_LORA" + ], + [ + 539, + 353, + 0, + 356, + 2, "MULTIVAL" ], [ - 49, - 34, + 540, + 352, 0, - 28, - 7, + 356, + 3, "MULTIVAL" ], [ - 50, - 35, + 541, + 356, 0, - 29, + 358, + 1, + "M_MODELS" + ], + [ + 542, + 359, + 0, + 358, 2, - "CUSTOM_CFG" + "CONTEXT_OPTIONS" ], [ - 51, - 30, + 543, + 355, 0, - 29, + 358, 3, - "SIGMA_SCHEDULE" + "SAMPLE_SETTINGS" + ], + [ + 545, + 358, + 0, + 23, + 0, + "MODEL" + ], + [ + 546, + 358, + 0, + 160, + 0, + "MODEL" + ], + [ + 553, + 92, + 0, + 364, + 0, + "AUDIO" ], [ - 53, - 37, + 555, + 327, 0, - 36, - 0, - "PE_ADJUST" + 82, + 3, + "FLOAT" ], [ - 54, - 38, + 556, + 92, 0, - 36, + 184, 1, - "WEIGHT_ADJUST" + "AUDIO" ], [ - 56, - 28, + 557, + 327, 0, - 40, - 0, - "MODEL" + 328, + 1, + "FLOAT" ], [ - 57, - 40, - 0, - 26, + 558, + 325, 0, - "MODEL" + 328, + 2, + "INT" ], [ - 58, - 40, - 1, - 26, + 559, + 142, 1, - "IPADAPTER" + 328, + 3, + "INT" ], [ - 60, + 560, + 142, + 2, + 328, 4, - 0, - 43, - 0, - "MODEL" + "INT" ], [ - 61, - 4, - 1, - 43, + 561, + 327, + 0, + 329, 1, - "CLIP" + "FLOAT" ], [ - 62, - 42, + 562, + 325, 0, - 43, + 329, 2, - "LORA_STACK" - ], - [ - 63, - 43, - 1, - 6, - 0, - "CLIP" + "INT" ], [ - 64, - 43, + 563, + 142, 1, - 7, - 0, - "CLIP" + 329, + 3, + "INT" ], [ - 65, - 43, - 0, - 28, - 0, - "MODEL" + 564, + 142, + 2, + 329, + 4, + "INT" ], [ - 66, - 26, - 0, - 3, + 565, + 327, 0, - "MODEL" + 341, + 1, + "FLOAT" ], [ - 67, - 12, + 566, + 325, 0, - 44, - 0, - "LATENT" + 341, + 2, + "INT" ], [ - 68, - 44, - 0, - 3, + 567, + 142, + 1, + 341, 3, - "LATENT" - ], - [ - 76, - 48, - 0, - 47, - 0, - "CONTROL_NET" + "INT" ], [ - 80, - 56, - 0, - 55, - 0, - "CONTROL_NET" + 568, + 142, + 2, + 341, + 4, + "INT" ], [ - 81, - 57, + 569, + 327, 0, - 47, + 325, 1, - "IMAGE" + "FLOAT" ], [ - 82, - 58, + 570, + 92, 0, - 55, + 363, 1, - "IMAGE" + "AUDIO" ], [ - 83, - 47, - 0, - 55, + 579, + 325, 2, - "CONTROL_NET_STACK" - ], - [ - 84, - 55, + 365, 0, - 59, - 2, - "CONTROL_NET_STACK" + "*" ], [ - 85, - 6, + 582, + 369, 0, - 59, + 368, 0, - "CONDITIONING" + "MASK" ], [ - 86, - 7, + 583, + 370, 0, - 59, + 368, 1, - "CONDITIONING" + "PARTICLE_EMITTER" ], [ - 94, - 23, + 584, + 372, 0, - 62, - 0, - "FEATURE" + 370, + 4, + "EMITTER_MODULATION" ], [ - 95, - 62, + 586, + 368, 1, - 63, + 373, 0, "IMAGE" ], [ - 97, - 41, + 587, + 366, 0, - 64, - 0, - "IMAGE" - ], - [ - 98, - 64, + 323, 0, - 26, - 2, - "IMAGE" + "INT" ], [ - 100, - 3, + 588, + 367, 0, - 8, + 324, 0, - "LATENT" - ], - [ - 103, - 20, - 3, - 19, - 2, "INT" ], [ - 108, - 74, + 589, + 371, 0, - 20, + 374, 0, - "IMAGE" + "FEATURE" ], [ - 112, - 26, + 591, + 374, 0, - 78, + 375, 0, - "MODEL" + "FEATURE" ], [ - 121, - 78, + 592, + 321, + 1, + 376, 0, - 80, + "AUDIO" + ], + [ + 593, + 377, 0, - "LATENT" + 376, + 1, + "FREQUENCY_FILTER" ], [ - 122, - 17, + 594, + 376, 0, - 82, + 328, 0, - "IMAGE" + "AUDIO" ], [ - 128, - 17, + 595, + 378, 0, - 85, + 370, + 3, + "PARTICLE_MODULATION" + ], + [ + 597, + 371, 0, - "IMAGE" + 378, + 1, + "FEATURE" ], [ - 129, - 85, + 598, + 380, 0, - 50, + 379, 0, "IMAGE" ], [ - 130, - 85, + 599, + 368, 0, - 14, + 379, 1, + "MASK" + ], + [ + 600, + 379, + 0, + 381, + 0, "IMAGE" ], [ - 133, - 4, - 2, - 88, + 601, + 383, 0, - "*" + 382, + 4, + "INT" ], [ - 134, - 59, + 602, + 382, 0, - 89, + 384, 0, "*" ], [ - 135, - 59, - 1, - 90, + 603, + 13, + 2, + 386, 0, - "*" + "VAE" ], [ - 136, - 88, + 605, + 387, 0, - 91, + 390, 0, "*" ], [ - 137, - 91, + 606, + 391, 0, - 92, + 392, 0, - "*" + "FEATURE" ], [ - 138, - 91, + 607, + 392, 0, - 8, - 1, - "VAE" + 385, + 0, + "FEATURE" ], [ - 139, - 89, + 608, + 385, 0, - 93, + 15, 0, "*" ], [ - 140, - 93, + 611, + 389, 0, - 3, - 1, - "CONDITIONING" + 393, + 0, + "FEATURE" ], [ - 141, - 90, + 613, + 395, 0, - 94, + 387, 0, - "*" + "IMAGE" ], [ - 142, - 94, + 615, + 396, 0, + 151, 3, - 2, - "CONDITIONING" + "IMAGE" ], [ - 143, - 93, + 616, + 385, 0, - 95, + 397, 0, - "*" + "MASK" ], [ - 144, - 94, + 617, + 397, 0, - 96, + 398, 0, - "*" - ], - [ - 145, - 95, - 0, - 78, - 1, - "CONDITIONING" + "IMAGE" ], [ - 146, - 96, + 618, + 14, 0, - 78, + 16, 2, - "CONDITIONING" + "MASK" ], [ - 147, - 92, + 619, + 15, 0, - 80, - 1, - "VAE" + 17, + 4, + "MASK" ], [ - 149, - 97, - 0, - 98, + 622, + 393, 0, - "*" + 151, + 6, + "LATENT_KEYFRAME" ], [ - 150, - 98, - 0, - 99, + 623, + 9, 0, - "*" + 403, + 1, + "IMAGE" ], [ - 151, - 98, + 624, + 404, 0, - 44, - 1, - "MASK" + 403, + 0, + "UPSCALE_MODEL" ], [ - 152, - 79, + 627, + 403, 0, - 100, + 406, 0, - "LATENT" + "IMAGE" ], [ - 153, - 100, + 628, + 406, 0, - 78, + 160, 3, "LATENT" ], [ - 154, - 99, + 629, + 407, 0, - 100, + 11, 1, - "MASK" + "HOOKS" ], [ - 175, - 113, + 656, + 379, 0, - 112, + 396, 0, - "UPSCALE_MODEL" + "IMAGE" + ], + [ + 657, + 368, + 1, + 395, + 0, + "IMAGE" ], [ - 177, - 112, + 660, + 427, 0, - 81, + 428, 0, "IMAGE" ], [ - 193, - 121, + 661, + 155, + 0, + 428, 1, - 69, - 2, - "FEATURE_PIPE" + "IMAGE" ], [ - 195, - 121, + 662, + 428, 0, - 122, + 429, 0, - "FEATURE" + "IMAGE" ], [ - 196, - 122, - 1, - 123, + 664, + 425, 0, - "IMAGE" + 429, + 2, + "MASK" ], [ - 199, - 122, - 0, - 69, + 666, + 425, 1, - "FEATURE" + 430, + 0, + "IMAGE" ], [ - 200, - 21, + 692, + 13, 0, - 127, + 358, 0, - "MASK" + "MODEL" ], [ - 203, - 74, + 700, + 155, + 0, + 449, 0, - 127, - 3, "IMAGE" ], [ - 207, - 127, + 701, + 434, 0, - 25, + 449, + 1, + "FEATURE" + ], + [ + 702, + 449, 0, - "MASK" + 429, + 1, + "IMAGE" ], [ - 234, - 15, + 709, + 325, 0, - 146, + 453, 0, "*" ], [ - 235, - 147, + 710, + 374, 0, - 148, + 455, 0, - "DAMODEL" + "FEATURE" ], [ - 237, - 148, + 711, + 454, 0, - 145, - 3, - "IMAGE" + 455, + 1, + "FEATURE" ], [ - 239, - 148, + 712, + 455, 0, - 149, + 456, 0, - "IMAGE" + "FEATURE" ], [ - 241, - 149, + 713, + 455, + 0, + 372, 1, - 145, - 2, - "FEATURE_PIPE" + "FEATURE" ], [ - 242, - 145, + 714, + 389, 0, - 150, + 457, 0, - "IMAGE" + "FEATURE" ], [ - 246, - 3, + 715, + 458, 0, - 79, + 459, 0, - "LATENT" + "UPSCALE_MODEL" ], [ - 247, - 112, - 0, - 145, + 716, + 429, 0, + 459, + 1, "IMAGE" ], [ - 248, - 112, + 717, + 459, + 0, + 435, 0, - 148, - 1, "IMAGE" ], [ - 249, - 149, + 719, + 382, 0, - 153, + 461, 0, "FEATURE" ], [ - 250, - 153, - 1, - 154, + 734, + 472, 0, - "IMAGE" - ], - [ - 251, - 153, + 474, 0, - 145, - 1, - "FEATURE" + "AUDIO" ], [ - 273, - 99, + 735, + 391, 0, - 172, + 475, 0, - "*" + "FEATURE" ], [ - 274, - 172, + 736, + 475, 0, - 170, - 2, - "MASK" + 353, + 1, + "FLOAT" ], [ - 278, - 80, + 737, + 449, 0, - 173, + 425, 0, "IMAGE" ], [ - 283, - 173, - 1, - 174, + 738, + 92, + 0, + 373, 1, - "INT" + "AUDIO" ], [ - 284, - 173, - 2, - 174, + 739, + 13, 2, - "INT" + 373, + 3, + "VAE" ], [ - 285, - 174, - 0, - 170, - 0, - "IMAGE" + 740, + 13, + 2, + 387, + 1, + "VAE" ], [ - 287, - 173, + 741, + 92, 0, - 170, + 398, 1, - "IMAGE" + "AUDIO" ], [ - 289, - 175, - 0, - 176, - 0, - "*" + 742, + 13, + 2, + 398, + 3, + "VAE" ], [ - 291, - 176, - 0, - 177, + 743, + 367, 0, - "IMAGE" + 82, + 1, + "INT" ], [ - 292, - 177, - 0, - 174, + 744, + 366, 0, - "IMAGE" + 82, + 2, + "INT" ], [ - 295, - 170, + 745, + 327, 0, - 111, - 0, - "IMAGE" + 82, + 3, + "FLOAT" ], [ - 298, - 111, + 746, + 92, 0, - 112, + 110, 1, - "IMAGE" + "AUDIO" ], [ - 300, - 179, - 0, - 104, - 0, - "IMAGE" + 747, + 13, + 2, + 110, + 3, + "VAE" ], [ - 301, - 179, + 748, + 92, 0, - 17, + 325, 0, - "IMAGE" + "AUDIO" ], [ - 302, - 82, - 0, - 76, + 749, + 327, 0, - "IMAGE" + 325, + 1, + "FLOAT" ], [ - 303, - 50, - 0, - 52, + 750, + 327, 0, - "IMAGE" + 328, + 1, + "FLOAT" ], [ - 304, - 14, - 0, - 49, + 751, + 325, 0, - "IMAGE" + 328, + 2, + "INT" ], [ - 307, - 127, - 0, - 97, + 752, + 367, 0, - "*" + 328, + 3, + "INT" ], [ - 310, - 77, + 753, + 366, 0, - 12, - 0, - "IMAGE" + 328, + 4, + "INT" ], [ - 311, - 77, + 754, + 327, 0, - 175, + 382, 0, - "*" + "FLOAT" ], [ - 314, - 180, + 755, + 325, + 0, + 382, 1, - 127, - 2, - "FEATURE_PIPE" + "INT" ], [ - 315, - 180, - 0, - 181, + 756, + 367, 0, - "FEATURE" + 382, + 2, + "INT" ], [ - 317, - 76, - 0, - 180, + 757, + 366, 0, - "IMAGE" + 382, + 3, + "INT" ], [ - 318, - 181, + 758, + 327, 0, - 184, + 454, 0, - "FEATURE" + "FLOAT" ], [ - 319, - 184, + 759, + 367, 0, - 183, - 0, - "FEATURE" + 454, + 1, + "INT" ], [ - 320, - 183, - 1, - 182, + 760, + 366, 0, - "IMAGE" + 454, + 2, + "INT" ], [ - 322, - 179, + 761, + 13, 2, - 185, - 0, - "*" + 151, + 8, + "VAE" ], [ - 323, - 186, + 762, + 92, 0, - 24, + 381, 1, "AUDIO" ], [ - 330, - 180, - 0, - 191, - 0, - "FEATURE" + 763, + 13, + 2, + 381, + 3, + "VAE" ], [ - 331, - 191, - 0, - 190, - 0, - "FEATURE" + 764, + 13, + 2, + 406, + 1, + "VAE" ], [ - 332, - 190, - 0, - 192, + 765, + 92, 0, - "FEATURE" + 156, + 1, + "AUDIO" ], [ - 333, - 192, - 1, - 188, - 0, - "IMAGE" + 766, + 13, + 2, + 156, + 3, + "VAE" ], [ - 334, - 192, + 767, + 92, 0, - 127, + 435, 1, - "FEATURE" + "AUDIO" ], [ - 335, - 193, - 0, + 768, 13, - 1, - "AUDIO" + 2, + 435, + 3, + "VAE" ], [ - 336, - 194, + 769, + 92, 0, - 81, + 430, 1, "AUDIO" + ], + [ + 770, + 13, + 2, + 430, + 3, + "VAE" ] ], "groups": [ { - "title": "Load Image", - "bounding": [ - -4300, - -1104, - 1484, - 1038 - ], - "color": "#3f789e", - "font_size": 24, - "locked": false - }, - { - "title": "Preprocessing", - "bounding": [ - -2768, - -1096, - 1274, - 599 - ], - "color": "#3f789e", - "font_size": 24, - "locked": false - }, - { - "title": "Feature", - "bounding": [ - -1457, - -1093, - 796, - 787 - ], - "color": "#3f789e", - "font_size": 24, - "locked": false - }, - { - "title": "Depth Chamber", - "bounding": [ - -621, - -1154, - 1454, - 724 - ], - "color": "#3f789e", - "font_size": 24, - "locked": false - }, - { - "title": "Control net", - "bounding": [ - 952, - 1174, - 1155, - 451 - ], - "color": "#3f789e", - "font_size": 24, - "locked": false - }, - { - "title": "Animate Diff", - "bounding": [ - 3043, - 177, - 978, - 1075 - ], - "color": "#3f789e", - "font_size": 24, - "locked": false - }, - { - "title": "Sampler1", - "bounding": [ - 5166, - 173, - 1290, - 808 - ], - "color": "#3f789e", - "font_size": 24, - "locked": false - }, - { - "title": "Load Model", + "id": 1, + "title": "adiff", "bounding": [ - 949, - 177, - 2062, - 990 + 2728.06591796875, + -522.5336303710938, + 737.5508422851562, + 1053.1143798828125 ], "color": "#3f789e", "font_size": 24, - "locked": false + "flags": {} }, { - "title": "IPAdapter", + "id": 2, + "title": "Lora Hooks", "bounding": [ - 4036, - 172, - 1094, - 815 + 354.53265380859375, + -504.6529235839844, + 2262.7509765625, + 911.8343505859375 ], "color": "#3f789e", "font_size": 24, - "locked": false + "flags": {} }, { - "title": "Sampler2", + "id": 3, + "title": "Samp1", "bounding": [ - 6480, - 176, - 881, - 421 + 3542.413330078125, + -513.3473510742188, + 935.3355712890625, + 1178.0379638671875 ], "color": "#3f789e", "font_size": 24, - "locked": false + "flags": {} }, { - "title": "Upscale", + "id": 5, + "title": "Feature Setup", "bounding": [ - 8431, - 174, - 953, - 771 + -2815.493896484375, + -1504.30322265625, + 2880.348388671875, + 2193.1171875 ], "color": "#3f789e", "font_size": 24, - "locked": false + "flags": {} }, { - "title": "Alternate configuration", + "id": 9, + "title": "samp2", "bounding": [ - -517, - -5817, - 2411, - 1839 + 4526.03466796875, + -506.889404296875, + 1970.1795654296875, + 1152.098876953125 ], "color": "#3f789e", "font_size": 24, - "locked": false + "flags": {} }, { - "title": "Alternate configuration1", + "id": 10, + "title": "ControlNet", "bounding": [ - 991, - -5410, - 1518, - 463 + 2226.50927734375, + 618.5585327148438, + 1151.9754638671875, + 539.1974487304688 ], "color": "#3f789e", "font_size": 24, - "locked": false + "flags": {} }, { - "title": "Parallax", + "id": 11, + "title": "Particles", "bounding": [ - 9412, - 173, - 1442, - 781 + -2818.41162109375, + 736.8206787109375, + 4673.5849609375, + 2001.3756103515625 ], "color": "#3f789e", "font_size": 24, - "locked": false + "flags": {} }, { - "title": "Paste Orig", + "id": 12, + "title": "Post Processing", "bounding": [ - 7394, - 175, - 1000, - 279 + 6622.28125, + -728.579345703125, + 2882.475341796875, + 1489.9952392578125 ], "color": "#3f789e", "font_size": 24, - "locked": false + "flags": {} } ], "config": {}, "extra": { "ds": { - "scale": 0.10000000000000717, + "scale": 0.14641000000000354, "offset": [ - 6287.029647861349, - 2393.3674563680415 + 1209.8473141890438, + 2834.620425389473 ] + }, + "ue_links": [ + { + "downstream": 373, + "downstream_slot": 1, + "upstream": "92", + "upstream_slot": 0, + "controller": 364, + "type": "AUDIO" + }, + { + "downstream": 373, + "downstream_slot": 3, + "upstream": "13", + "upstream_slot": 2, + "controller": 386, + "type": "VAE" + }, + { + "downstream": 387, + "downstream_slot": 1, + "upstream": "13", + "upstream_slot": 2, + "controller": 386, + "type": "VAE" + }, + { + "downstream": 398, + "downstream_slot": 1, + "upstream": "92", + "upstream_slot": 0, + "controller": 364, + "type": "AUDIO" + }, + { + "downstream": 398, + "downstream_slot": 3, + "upstream": "13", + "upstream_slot": 2, + "controller": 386, + "type": "VAE" + }, + { + "downstream": 82, + "downstream_slot": 1, + "upstream": "367", + "upstream_slot": 0, + "controller": 324, + "type": "INT" + }, + { + "downstream": 82, + "downstream_slot": 2, + "upstream": "366", + "upstream_slot": 0, + "controller": 323, + "type": "INT" + }, + { + "downstream": 82, + "downstream_slot": 3, + "upstream": "327", + "upstream_slot": 0, + "controller": 326, + "type": "FLOAT" + }, + { + "downstream": 110, + "downstream_slot": 1, + "upstream": "92", + "upstream_slot": 0, + "controller": 364, + "type": "AUDIO" + }, + { + "downstream": 110, + "downstream_slot": 3, + "upstream": "13", + "upstream_slot": 2, + "controller": 386, + "type": "VAE" + }, + { + "downstream": 325, + "downstream_slot": 0, + "upstream": "92", + "upstream_slot": 0, + "controller": 364, + "type": "AUDIO" + }, + { + "downstream": 325, + "downstream_slot": 1, + "upstream": "327", + "upstream_slot": 0, + "controller": 326, + "type": "FLOAT" + }, + { + "downstream": 328, + "downstream_slot": 1, + "upstream": "327", + "upstream_slot": 0, + "controller": 326, + "type": "FLOAT" + }, + { + "downstream": 328, + "downstream_slot": 2, + "upstream": "325", + "upstream_slot": 0, + "controller": 349, + "type": "INT" + }, + { + "downstream": 328, + "downstream_slot": 3, + "upstream": "367", + "upstream_slot": 0, + "controller": 324, + "type": "INT" + }, + { + "downstream": 328, + "downstream_slot": 4, + "upstream": "366", + "upstream_slot": 0, + "controller": 323, + "type": "INT" + }, + { + "downstream": 382, + "downstream_slot": 0, + "upstream": "327", + "upstream_slot": 0, + "controller": 326, + "type": "FLOAT" + }, + { + "downstream": 382, + "downstream_slot": 1, + "upstream": "325", + "upstream_slot": 0, + "controller": 349, + "type": "INT" + }, + { + "downstream": 382, + "downstream_slot": 2, + "upstream": "367", + "upstream_slot": 0, + "controller": 324, + "type": "INT" + }, + { + "downstream": 382, + "downstream_slot": 3, + "upstream": "366", + "upstream_slot": 0, + "controller": 323, + "type": "INT" + }, + { + "downstream": 454, + "downstream_slot": 0, + "upstream": "327", + "upstream_slot": 0, + "controller": 326, + "type": "FLOAT" + }, + { + "downstream": 454, + "downstream_slot": 1, + "upstream": "367", + "upstream_slot": 0, + "controller": 324, + "type": "INT" + }, + { + "downstream": 454, + "downstream_slot": 2, + "upstream": "366", + "upstream_slot": 0, + "controller": 323, + "type": "INT" + }, + { + "downstream": 151, + "downstream_slot": 8, + "upstream": "13", + "upstream_slot": 2, + "controller": 386, + "type": "VAE" + }, + { + "downstream": 381, + "downstream_slot": 1, + "upstream": "92", + "upstream_slot": 0, + "controller": 364, + "type": "AUDIO" + }, + { + "downstream": 381, + "downstream_slot": 3, + "upstream": "13", + "upstream_slot": 2, + "controller": 386, + "type": "VAE" + }, + { + "downstream": 406, + "downstream_slot": 1, + "upstream": "13", + "upstream_slot": 2, + "controller": 386, + "type": "VAE" + }, + { + "downstream": 156, + "downstream_slot": 1, + "upstream": "92", + "upstream_slot": 0, + "controller": 364, + "type": "AUDIO" + }, + { + "downstream": 156, + "downstream_slot": 3, + "upstream": "13", + "upstream_slot": 2, + "controller": 386, + "type": "VAE" + }, + { + "downstream": 435, + "downstream_slot": 1, + "upstream": "92", + "upstream_slot": 0, + "controller": 364, + "type": "AUDIO" + }, + { + "downstream": 435, + "downstream_slot": 3, + "upstream": "13", + "upstream_slot": 2, + "controller": 386, + "type": "VAE" + }, + { + "downstream": 430, + "downstream_slot": 1, + "upstream": "92", + "upstream_slot": 0, + "controller": 364, + "type": "AUDIO" + }, + { + "downstream": 430, + "downstream_slot": 3, + "upstream": "13", + "upstream_slot": 2, + "controller": 386, + "type": "VAE" + } + ], + "groupNodes": {}, + "node_versions": { + "comfy-core": "0.3.12", + "ComfyUI-AnimateDiff-Evolved": "7ec46937095048a77342aeada964e9823a2102f0", + "cg-use-everywhere": "cd06259166a6af4c054c62f540871ca09a359b50", + "ComfyUI-KJNodes": "973ceb6ca8b7525d54873805888ad690090d6b1e", + "ComfyUI-VideoHelperSuite": "6953fa21443cf55f7c3b61ed3f4c87c5d3677fe1", + "comfyui_controlnet_aux": "5a049bde9cc117dafc327cded156459289097ea1", + "ComfyUI_RyanOnTheInside": "1e09e9a149fefe2fa8794d0c351551d86de4f229", + "rgthree-comfy": "5f2d8a1d19fcb2cac6dbc933085b20c1c0a8bb9f", + "ComfyUI-Advanced-ControlNet": "9632af9dc8f9abe28431c0027411d7a6d4f6cd3e" } }, "version": 0.4 diff --git a/external_integration.py b/external_integration.py new file mode 100644 index 0000000..361d625 --- /dev/null +++ b/external_integration.py @@ -0,0 +1,88 @@ +import os + +# Variables to track the availability of external modules +alp_path = os.path.join(os.path.dirname(os.path.dirname(__file__)), "ComfyUI-AdvancedLivePortrait") +HAS_ADVANCED_LIVE_PORTRAIT = os.path.exists(alp_path) +print(f"Checking for AdvancedLivePortrait at: {alp_path}") + +acn_path = os.path.join(os.path.dirname(os.path.dirname(__file__)), "ComfyUI-Advanced-ControlNet") +HAS_ADVANCED_CONTROLNET = os.path.exists(acn_path) +print(f"Checking for Advanced-ControlNet at: {acn_path}") + +#WIP +ad_path = os.path.join(os.path.dirname(os.path.dirname(__file__)), "ComfyUI-AnimateDiff-Evolved") +HAS_ANIMATEDIFF = os.path.exists(ad_path) +print(f"Checking for AnimateDiff-Evolved at: {ad_path}") + +# HAS_ANIMATEDIFF=False + +# Conditional imports for AdvancedLivePortrait +if HAS_ADVANCED_LIVE_PORTRAIT: + try: + from .nodes.flex.flex_externals_advanced_live_portrait import FlexExpressionEditor + except Exception as e: + print(f"Error loading AdvancedLivePortrait nodes: {str(e)}") + HAS_ADVANCED_LIVE_PORTRAIT = False +else: + print( + "ComfyUI-AdvancedLivePortrait not found. " + "FlexExpressionEditor will not be available. " + "Install ComfyUI-AdvancedLivePortrait and restart ComfyUI." + ) + +# Conditional imports for Advanced-ControlNet +if HAS_ADVANCED_CONTROLNET: + try: + from .nodes.flex.flex_externals_advanced_controlnet import ( + FeatureToLatentKeyframe, + #WIP + # FeatureToTimestepKeyframe, + ) + except Exception as e: + print(f"Error loading Advanced-ControlNet feature nodes: {str(e)}") + HAS_ADVANCED_CONTROLNET = False +else: + print( + "ComfyUI-Advanced-ControlNet not found. " + "Advanced-ControlNet feature nodes will not be available. " + "Install ComfyUI-Advanced-ControlNet and restart ComfyUI." + ) + +# Conditional imports for AnimateDiff +if HAS_ANIMATEDIFF: + try: + from .nodes.flex.flex_externals_animatediff import ( + FeatureToADKeyframe, + #WIP + # FeatureToCameraKeyframe, + # FeatureToPIAKeyframe, + ) + except Exception as e: + print(f"Error loading AnimateDiff feature nodes: {str(e)}") + HAS_ANIMATEDIFF = False +else: + print( + "ComfyUI-AnimateDiff-Evolved not found. " + "AnimateDiff feature nodes will not be available. " + "Install ComfyUI-AnimateDiff-Evolved and restart ComfyUI." + ) + +# Prepare a dictionary to hold the NODE_CLASS_MAPPINGS additions +EXTERNAL_NODE_CLASS_MAPPINGS = {} + +# Update the mapping based on available integrations +if HAS_ADVANCED_LIVE_PORTRAIT: + EXTERNAL_NODE_CLASS_MAPPINGS["FlexExpressionEditor"] = FlexExpressionEditor + +if HAS_ADVANCED_CONTROLNET: + EXTERNAL_NODE_CLASS_MAPPINGS.update({ + # "FeatureToTimestepKeyframe": FeatureToTimestepKeyframe, + "FeatureToLatentKeyframe": FeatureToLatentKeyframe, + }) + +if HAS_ANIMATEDIFF: + EXTERNAL_NODE_CLASS_MAPPINGS.update({ + "FeatureToADKeyframe": FeatureToADKeyframe, + # "FeatureToCameraKeyframe": FeatureToCameraKeyframe, + # "FeatureToPIAKeyframe": FeatureToPIAKeyframe, + }) \ No newline at end of file diff --git a/node_configs/node_configs.py b/node_configs/node_configs.py index e7e19ac..cddca83 100644 --- a/node_configs/node_configs.py +++ b/node_configs/node_configs.py @@ -3,7 +3,8 @@ NODE_CONFIGS = {} -#NOTE: this abstraction allows for the documentation to be both centrally managed and inherited +#NOTE: THIS IS LEGACY FOR BACKWARD COMPATIBILITY. REPLACED BY TOOLTIPS. +# this abstraction allows for the documentation to be both centrally managed and inherited from abc import ABCMeta class NodeConfigMeta(type): def __new__(cls, name, bases, attrs): @@ -17,1777 +18,4 @@ class CombinedMeta(NodeConfigMeta, ABCMeta): pass def add_node_config(node_name, config): - NODE_CONFIGS[node_name] = config - - - -add_node_config("MaskBase", { - "BASE_DESCRIPTION": """ -##Parameters -- `Masks`: Input mask or sequence of masks to be processed. (you can pass in a blank mask if you want) -- `Strength`: Controls the intensity of the effect (0.0 to 1.0). Higher values make the mask operation more pronounced. -- `Invert`: When enabled, reverses the mask, turning black areas white and vice versa. -- `Subtract Original`: Removes a portion of the original mask from the result (0.0 to 1.0). Higher values create more pronounced edge effects. -- `Grow with Blur`: Expands the mask edges (0.0 to 10.0). Higher values create softer, more expanded edges. -""" -}) - -add_node_config("TemporalMaskBase", { - "ADDITIONAL_INFO": """ -- `Start Frame`: The frame number where the effect begins (0 to 1000). -- `End Frame`: The frame number where the effect ends (0 to 1000). If set to 0, continues until the last frame. -- `Effect Duration`: Number of frames over which the effect is applied (0 to 1000). If 0, uses (End Frame - Start Frame). -- `Temporal Easing`: Controls how the effect strength changes over time, affecting the smoothness of transitions. - - Options: "ease_in_out", "linear", "bounce", "elastic", "none" -- `Palindrome`: When enabled, the effect plays forward then reverses within the specified duration, creating a back-and-forth motion. -""" -}) - -add_node_config("ParticleSystemMaskBase", { - "ADDITIONAL_INFO": """ -- `particle_count`: Total number of particles in the system (1 to 10000). More particles create denser effects. -- `particle_lifetime`: How long each particle exists in seconds (0.1 to 10.0). Longer lifetimes create more persistent effects. -- `wind_strength`: Power of the wind effect (-100.0 to 100.0). Positive values blow right, negative left. -- `wind_direction`: Angle of the wind in degrees (0.0 to 360.0). 0 is right, 90 is up, etc. -- `gravity`: Strength of downward pull (-1000.0 to 1000.0). Negative values make particles float up. -- `start_frame`: Frame to begin the particle effect (0 to 1000). -- `end_frame`: Frame to stop the particle effect (0 to 1000). -- `respect_mask_boundary`: When enabled, particles stay within the mask's shape. - -Optional inputs: -- `emitters`: Particle emitter configurations (PARTICLE_EMITTER type). Define where particles originate. -- `vortices`: Optional vortex configurations (VORTEX type). Create swirling effects. -- `wells`: Optional gravity well configurations (GRAVITY_WELL type). Create areas that attract or repel particles. -- `well_strength_multiplier`: Amplifies the power of gravity wells (0.0 to 10.0). Higher values create stronger attraction/repulsion. -""" -}) - -add_node_config("ParticleEmissionMask", { - "TOP_DESCRIPTION": "This is the main node for particle simulations. It creates dynamic, fluid-like effects through particle simulation. Supports multiple particle emitters, force fields (Gravity Well, Vortex), and allows for complex particle behaviors including boundary-respecting particles and static body interactions.", - "ADDITIONAL_INFO": """ -- `emission_strength`: Strength of particle emission effect (0.0 to 1.0), basically opacity -- `draw_modifiers`: Visibility of vortices and gravity wells (0.0 to 1.0) -""" -}) - -add_node_config("OpticalFlowMaskBase", { - "ADDITIONAL_INFO": """ -- `Images`: Input image sequence for optical flow calculation -- `Masks`: Input mask sequence to be processed -- `Strength`: Overall intensity of the effect (0.0 to 1.0). Higher values create more pronounced motion-based effects. -- `Flow Method`: Technique used for optical flow calculation. Each method has different speed/accuracy tradeoffs. - - Options: "Farneback", "LucasKanade", "PyramidalLK" -- `Flow Threshold`: Minimum motion required to trigger the effect (0.0 to 1.0). Higher values ignore subtle movements. -- `Magnitude Threshold`: Relative threshold for flow magnitude (0.0 to 1.0). Higher values focus on areas of stronger motion. -""" -}) - -add_node_config("OpticalFlowMaskModulation", { - "TOP_DESCRIPTION": "This is currently the main Optical Flow node. Use it to make motion based effects.", - "ADDITIONAL_INFO": """ -- `Modulation Strength`: Intensity of the modulation effect (0.0 to 5.0). Higher values create more pronounced motion trails. -- `Blur Radius`: Smoothing applied to the flow magnitude (0 to 20 pixels). Larger values create smoother trails. -- `Trail Length`: Number of frames for the trail effect (1 to 20). Longer trails last longer. -- `Decay Factor`: Rate of trail decay over time (0.1 to 1.0). Lower values make trails fade faster. -- `Decay Style`: Method of trail decay. - - Options: "fade" (opacity reduction), "thickness" (width reduction) -- `Max Thickness`: Maximum trail thickness for thickness-based decay (1 to 50 pixels). Larger values create thicker trails. -""" -}) - -add_node_config("OpticalFlowDirectionMask", { - "TOP_DESCRIPTION": "***WORK IN PROGRESS***" -}) - -add_node_config("OpticalFlowParticleSystem", { - "TOP_DESCRIPTION": "***WORK IN PROGRESS***" -}) - -add_node_config("MaskTransform", { - "TOP_DESCRIPTION": "Applies geometric transformations to the mask over time.", - "ADDITIONAL_INFO": """ -- `Transform Type`: The type of transformation to apply. - - Options: "translate", "rotate", "scale" -- `X Value`: Horizontal component of the transformation (-1000 to 1000). Positive values move right, negative left. -- `Y Value`: Vertical component of the transformation (-1000 to 1000). Positive values move up, negative down. -""" -}) - -add_node_config("MaskMorph", { - "TOP_DESCRIPTION": "Applies morphological operations to the mask, changing its shape over time.", - "ADDITIONAL_INFO": """ -- `Morph Type`: The type of morphological operation to apply. - - Options: "erode", "dilate", "open", "close" -- `Max Kernel Size`: Maximum size of the morphological kernel (3 to 21, odd numbers only). Larger values create more pronounced effects. -- `Max Iterations`: Maximum number of times to apply the operation (1 to 50). More iterations create more extreme effects. -""" -}) - -add_node_config("MaskMath", { - "TOP_DESCRIPTION": "Combines two masks using various mathematical operations.", - "ADDITIONAL_INFO": """ -- `Mask B`: Second mask to combine with the input mask. -- `Combination Method`: Mathematical operation to apply. - - Options: "add", "subtract", "multiply", "minimum", "maximum" -""" -}) - -add_node_config("MaskRings", { - "TOP_DESCRIPTION": "Creates concentric ring patterns based on the distance from the mask edges.", - "ADDITIONAL_INFO": """ -- `Num Rings`: Number of rings to generate (1 to 50). More rings create more detailed patterns. -- `Max Ring Width`: Maximum width of each ring as a fraction of the total distance (0.01 to 0.5). Larger values create wider rings. -""" -}) - -add_node_config("MaskWarp", { - "TOP_DESCRIPTION": "Applies various warping effects to the mask, creating distortions and movement.", - "ADDITIONAL_INFO": """ -- `Warp Type`: The type of warping effect to apply. Each creates a different distortion pattern. - - Options: "perlin" (noise-based), "radial" (circular), "swirl" (spiral) -- `Frequency`: Controls the scale of the warping effect (0.01 to 1.0). Higher values create more rapid changes in the warp pattern. -- `Amplitude`: Controls the strength of the warping effect (0.1 to 500.0). Higher values create more extreme distortions. -- `Octaves`: For noise-based warps, adds detail at different scales (1 to 8). More octaves create more complex, detailed patterns. -""" -}) - -add_node_config("MIDILoadAndExtract", { - "TOP_DESCRIPTION": """ - Loads a MIDI file and extracts specified features for mask modulation. To use this, select the notes on the piano that you want to use to control modulations. - Many of the different types of information in the notes can be chosen as the driving feature.""", - "ADDITIONAL_INFO": """ -- `midi_file`: Path to the MIDI file to load and analyze -- `track_selection`: Which track(s) to analyze ("all" or specific track number) -- `attribute`: MIDI attribute to extract (e.g., "Note On/Off", "Pitchbend", "Pitch", "Aftertouch") -- `frame_rate`: Frame rate of the video to sync MIDI data with -- `video_frames`: Corresponding video frames (IMAGE type) -- `chord_only`: When true, only considers full chords (BOOLEAN) -- `notes`: IGNORE THIS. Certain limitations prevent me from hiding it completely. Love, Ryan -""" -}) - -add_node_config("AudioFilter", { - "TOP_DESCRIPTION": "Applies frequency filters to audio for targeted sound processing.", - "ADDITIONAL_INFO": """ -- `audio`: Input audio to be filtered (AUDIO type) -- `filters`: Frequency filters to be applied (FREQUENCY_FILTER type). These determine which frequencies are emphasized or reduced. -""" -}) - -add_node_config("FrequencyFilterPreset", { - "TOP_DESCRIPTION": "Creates preset filter chains for common audio processing tasks, simplifying complex audio manipulations.", - "ADDITIONAL_INFO": """ -- `preset`: Preset to use (e.g., "isolate_kick_drum" emphasizes low frequencies, "isolate_vocals" focuses on mid-range, "remove_rumble" cuts low frequencies) - -Optional inputs: -- `previous_filter`: Previous filter chain to append to, allowing for cumulative effects -""" -}) - -add_node_config("FrequencyFilterCustom", { - "TOP_DESCRIPTION": "Creates custom frequency filters.", - "ADDITIONAL_INFO": """ -- `filter_type`: Type of filter ("lowpass", "highpass", "bandpass") -- `order`: Filter order (1 to 10) -- `cutoff`: Cutoff frequency (20 to 20000 Hz) - -Optional inputs: -- `previous_filter`: Previous filter chain to append to -""" -}) - -add_node_config("AudioFeatureVisualizer", { - "TOP_DESCRIPTION": "***WORK IN PROGESS*** Visualizes various audio features, creating visual representations of sound characteristics.", - "ADDITIONAL_INFO": """ -- `audio`: Input audio to visualize (AUDIO type) -- `video_frames`: Corresponding video frames to overlay visualizations on (IMAGE type) -- `visualization_type`: Type of visualization to generate: - - "waveform": Shows amplitude over time - - "spectrogram": Displays frequency content over time - - "mfcc": Mel-frequency cepstral coefficients, useful for speech recognition - - "chroma": Represents pitch classes, useful for harmonic analysis - - "tonnetz": Tonal space representation - - "spectral_centroid": Shows the "center of mass" of the spectrum over time -- `frame_rate`: Frame rate of the video for synchronization -""" -}) - -add_node_config("AudioSeparator", { - "TOP_DESCRIPTION": "Separates an input audio track into its component parts using the Open-Unmix model.", - "ADDITIONAL_INFO": """ -- `audio`: Input audio to be separated (AUDIO type) -- `video_frames`: Corresponding video frames (IMAGE type) -- `frame_rate`: Frame rate of the video for synchronization - -Outputs: -- Original audio -- Isolated drums track -- Isolated vocals track -- Isolated bass track -- Isolated other instruments track -- FeaturePipe containing frame information - -This node uses the Open-Unmix model to separate the input audio into four stems: drums, vocals, bass, and other instruments. Each separated track is returned as an individual AUDIO type output, along with the original audio and a FeaturePipe for further processing. -""" -}) - -add_node_config("SpringJointSetting", { - "TOP_DESCRIPTION": "Defines the behavior of spring joints attached to particles.", - "ADDITIONAL_INFO": """ -- `stiffness`: Stiffness of the spring (0.0 to 1000.0). Higher values create stronger connections. -- `damping`: Damping factor of the spring (0.0 to 100.0). Higher values create more resistance to motion. -- `rest_length`: Rest length of the spring (0.0 to 100.0). Longer springs allow for more stretching. -- `max_distance`: Maximum distance the spring can stretch (0.0 to 500.0). Larger values allow for more elasticity. -""" -}) - -add_node_config("StaticBody", { - "TOP_DESCRIPTION": "Defines static bodies in the simulation that particles can interact with (think walls, barrier, ramps, etc.).", - "ADDITIONAL_INFO": """ -- `shape_type`: Type of shape ("segment" or "polygon") -- `x1`, `y1`, `x2`, `y2`: Coordinates defining the shape -- `elasticity`: Bounciness of the static body (0.0 to 1.0). Higher values create more bouncy collisions. -- `friction`: Friction of the static body (0.0 to 1.0). Higher values create more resistance to motion. -- `draw`: Whether to visualize the static body and how thick -- `color`: Color of the static body (RGB tuple) -""" -}) - -add_node_config("GravityWell", { - "TOP_DESCRIPTION": "An optional input for a simulation space. These can be chained together to add many to a simulation.", - "ADDITIONAL_INFO": """ -- `x`: X-coordinate of the gravity well (0.0 to 1.0) -- `y`: Y-coordinate of the gravity well (0.0 to 1.0) -- `strength`: Strength of the gravity well. Higher values create stronger attraction or repulsion. -- `radius`: Radius of effect for the gravity well. Larger values affect a wider area. -- `type`: Type of gravity well ('attract' or 'repel'). Attract pulls particles in, repel pushes them away. -- `color`: Color of the gravity well visualization (RGB tuple) -- `draw`: Thickness of the gravity well visualization (0.0 to 1.0) -""" -}) - -add_node_config("Vortex", { - "TOP_DESCRIPTION": "An optional input for a simulation space. These can be chained together to add many to a simulation", - "ADDITIONAL_INFO": """ -- `x`: X-coordinate of the vortex center (0.0 to 1.0) -- `y`: Y-coordinate of the vortex center (0.0 to 1.0) -- `strength`: Strength of the vortex effect (0.0 to 1000.0). Higher values create stronger swirling motion. -- `radius`: Radius of effect for the vortex (10.0 to 500.0). Larger values create wider swirling areas. -- `inward_factor`: Factor controlling how quickly particles are pulled towards the center (0.0 to 1.0). Higher values create tighter spirals. -- `movement_speed`: Speed of movement of the vortex object (0.0 to 10.0). Higher values make the vortex move faster in the simulation space. -- `color`: Color of the vortex visualization (RGB tuple) -- `draw`: Thickness of the vortex visualization (0.0 to 1.0) -""" -}) - -add_node_config("ParticleModulationBase", { - "TOP_DESCRIPTION": "Base class for particle modulation settings.", - "ADDITIONAL_INFO": """ -- `start_frame`: Frame to start the modulation effect (0 to 1000) -- `end_frame`: Frame to end the modulation effect (0 to 1000) -- `effect_duration`: Duration of the modulation effect in frames (0 to 1000) -- `temporal_easing`: Easing function for the modulation effect ("ease_in_out", "linear", "bounce", "elastic", "none") -- `palindrome`: Whether to reverse the modulation effect after completion (True/False) -- `random`: Selects a random value between 0 and the chosen target value and applies it per particle -- `feature`: Optionally, pass in a feature (like audio or motion) to drive the modulation of the particles -""" -}) - -add_node_config("ParticleSizeModulation", { - "TOP_DESCRIPTION": "Modulates particle size over time.", - "ADDITIONAL_INFO": """ -- `target_size`: Target size for particles at the end of the modulation (0.0 to 400.0) -""" -}) - -add_node_config("ParticleSpeedModulation", { - "TOP_DESCRIPTION": "Modulates particle speed over time.", - "ADDITIONAL_INFO": """ -- `target_speed`: Target speed for particles at the end of the modulation (0.0 to 1000.0) -""" -}) - -add_node_config("ParticleColorModulation", { - "TOP_DESCRIPTION": "Modulates particle color over time.", - "ADDITIONAL_INFO": """ -- `target_color`: Target color for particles at the end of the modulation (RGB tuple) -""" -}) - -add_node_config("FlexMaskBase", { - "BASE_DESCRIPTION": """ -- `feature`: The feature used to modulate the mask operation (FEATURE type) -- `feature_pipe`: The feature pipe containing frame information (FEATURE_PIPE type) -- `feature_threshold`: Threshold for feature activation (0.0 to 1.0) - -""" -}) - -add_node_config("FlexMaskDepthChamber", { - "TOP_DESCRIPTION": "Applies a depth-based mask modulation using a depth map and specified front and back depth values.", - "ADDITIONAL_INFO": """ -- `depth_map`: Input depth map (IMAGE type) -- `z_front`: Front depth value for the mask (0.0 to 1.0). Default is 1.0. -- `z_back`: Back depth value for the mask (0.0 to 1.0). Default is 0.0. -- `feature_param`: Parameter to modulate based on the feature. Options are "none", "z_front", "z_back", "both". -- `feature_mode`: Mode of feature modulation. - -This node creates a mask based on the depth values in the input depth map. The mask is modulated by the specified front and back depth values, and can be further adjusted using a feature input to dynamically change the depth range. -""" -}) - - -add_node_config("FlexMaskMorph", { - "TOP_DESCRIPTION": "Applies morphological operations to the mask, modulated by a selected feature.", - "ADDITIONAL_INFO": """ -- `morph_type`: The type of morphological operation to apply. - - Options: "erode", "dilate", "open", "close" -- `max_kernel_size`: Maximum size of the morphological kernel (3 to 21, odd numbers only). Larger values create more pronounced effects. -- `max_iterations`: Maximum number of times to apply the operation (1 to 50). More iterations create more extreme effects. - -The strength of the morphological operation is determined by the selected feature's value at each frame. -""" -}) - -add_node_config("FlexMaskWarp", { - "TOP_DESCRIPTION": "Applies warping effects to the mask, modulated by a selected feature.", - "ADDITIONAL_INFO": """ -- `warp_type`: The type of warping effect to apply. Each creates a different distortion pattern. - - Options: "perlin" (noise-based), "radial" (circular), "swirl" (spiral) -- `frequency`: Controls the scale of the warping effect (0.01 to 1.0). Higher values create more rapid changes in the warp pattern. -- `max_amplitude`: Maximum amplitude of the warping effect (0.1 to 500.0). Higher values create more extreme distortions. -- `octaves`: For noise-based warps, adds detail at different scales (1 to 8). More octaves create more complex, detailed patterns. - -The intensity of the warping effect is determined by the selected feature's value at each frame. -""" -}) - -add_node_config("FlexMaskTransform", { - "TOP_DESCRIPTION": "Applies geometric transformations to the mask, modulated by a selected feature.", - "ADDITIONAL_INFO": """ -- `transform_type`: The type of transformation to apply. - - Options: "translate", "rotate", "scale" -- `max_x_value`: Maximum horizontal component of the transformation (-1000.0 to 1000.0). Positive values move right, negative left. -- `max_y_value`: Maximum vertical component of the transformation (-1000.0 to 1000.0). Positive values move up, negative down. - -The extent of the transformation is determined by the selected feature's value at each frame. -""" -}) - -add_node_config("FlexMaskMath", { - "TOP_DESCRIPTION": "Performs mathematical operations between two masks, modulated by a selected feature.", - "ADDITIONAL_INFO": """ -- `mask_b`: Second mask to combine with the input mask. -- `combination_method`: Mathematical operation to apply. - - Options: "add", "subtract", "multiply", "minimum", "maximum" - -The strength of the combination is determined by the selected feature's value at each frame. -""" -}) - -add_node_config("FlexMaskOpacity", { - "TOP_DESCRIPTION": "Applies opacity modulation to the mask based on a selected feature.", - "ADDITIONAL_INFO": """ -- `max_opacity`: Maximum opacity to apply to the mask (0.0 to 1.0). Higher values allow for more opaque masks. - -The actual opacity applied is determined by the product of max_opacity, feature value, and strength. - -This node is useful for creating masks that fade in and out based on the selected feature, allowing for smooth transitions and effects that respond to various inputs like audio, time, or other extracted features. -""" -}) - -add_node_config("FlexMaskVoronoiScheduled", { - "TOP_DESCRIPTION": "Generates a Voronoi noise mask with parameters modulated by a selected feature according to a specified formula.", - "ADDITIONAL_INFO": """ -- `distance_metric`: Method used to calculate distances in the Voronoi diagram. Options include various mathematical norms and custom patterns. -- `scale`: Base scale of the Voronoi cells (0.1 to 10.0). Larger values create bigger cells. -- `detail`: Number of Voronoi cells (10 to 1000). More cells create more intricate patterns. -- `randomness`: Degree of randomness in cell placement (0.0 to 5.0). Higher values create more chaotic patterns. -- `seed`: Random seed for reproducible results (0 to 2^64 - 1). -- `x_offset`: Horizontal offset of the Voronoi pattern (-1000.0 to 1000.0). -- `y_offset`: Vertical offset of the Voronoi pattern (-1000.0 to 1000.0). -- `feature_param`: Which parameter to modulate based on the feature ("scale", "detail", "randomness", "seed", "x_offset", "y_offset"). -- `formula`: Mathematical formula used to map the feature value to the feature parameter. Options include "Linear", "Quadratic", "Cubic", "Sinusoidal", and "Exponential". -- `a` and `b`: Parameters for fine-tuning the chosen formula (0.1 to 10.0). - -Credit for the heavy lifting for this node goes to https://github.com/alanhuang67/ -""" -}) - -add_node_config("FlexMaskBinary", { - "TOP_DESCRIPTION": "Applies binary thresholding to the mask, modulated by a selected feature.", - "ADDITIONAL_INFO": """ -- `threshold`: Base threshold value for binarization (0.0 to 1.0). Pixels above this value become white, below become black. -- `method`: Thresholding method to use. - - Options: "simple" (basic threshold), "adaptive" (local adaptive threshold), "hysteresis" (double threshold with connectivity), "edge" (Canny edge detection) -- `max_smoothing`: Maximum amount of Gaussian smoothing to apply (0 to 51, odd values only). Higher values create smoother masks. -- `max_edge_enhancement`: Maximum strength of edge enhancement (0.0 to 10.0). Higher values create more pronounced edges. -- `feature_param`: Which parameter to modulate based on the feature value. - - Options: "threshold" (adjusts threshold), "smoothing" (adjusts smoothing), "edge_enhancement" (adjusts edge enhancement), "none" (no modulation) - -The binary mask operation is applied with strength determined by the selected feature's value at each frame. This node is useful for creating sharp, high-contrast masks that can be dynamically adjusted based on various inputs like audio, time, or other extracted features. -""" -}) - -add_node_config("FlexMaskEmanatingRings", { - "TOP_DESCRIPTION": "Creates dynamic, expanding ring patterns that emanate from the edges of the input mask.", - "ADDITIONAL_INFO": """ -- `num_rings`: Number of concentric rings to generate (1 to 50). More rings create a denser, more complex pattern. -- `max_ring_width`: Maximum width of each ring as a fraction of the total distance (0.01 to 0.9). Larger values create wider, more prominent rings that overlap more. -- `wave_speed`: Speed at which the rings expand outward (0.01 to 0.5). Higher values create faster-moving, more dynamic patterns. -- `feature_param`: Determines which aspect of the effect is modulated by the input feature. - - Options: "num_rings" (varies ring count), "ring_width" (adjusts ring thickness), "wave_speed" (changes expansion rate), "all" (modulates all parameters) - -This node creates a mesmerizing effect of rings expanding from the edges of the input mask. The rings start thick at the mask boundary and thin out as they move outward, creating a pulsating, wave-like appearance. The effect can be subtle and smooth or bold and dynamic depending on the parameter settings. - -The feature input can be used to dynamically adjust the effect over time, allowing for rhythmic pulsing (e.g., synced to audio) or gradual evolution of the pattern. When the feature value is below the threshold, the animation continues but no new rings are generated, creating a smooth transition effect. -""" -}) - -add_node_config("FlexMaskRandomShapes", { - "TOP_DESCRIPTION": "Generates dynamic masks with randomly placed shapes, modulated by a selected feature.", - "ADDITIONAL_INFO": """ -- `max_num_shapes`: Maximum number of shapes to generate (1 to 100). The actual number is modulated by the feature if 'num_shapes' is selected as the feature parameter. -- `max_shape_size`: Maximum size of shapes as a fraction of the frame size (0.01 to 1.0). The actual size is modulated by the feature if 'shape_size' is selected as the feature parameter. -- `appearance_duration`: Number of frames over which shapes appear (1 to 100). Modulated by the feature if selected as the feature parameter. -- `disappearance_duration`: Number of frames over which shapes disappear (1 to 100). Modulated by the feature if selected as the feature parameter. -- `appearance_method`: How shapes appear and disappear. - - Options: "grow" (shapes grow/shrink), "pop" (shapes appear/disappear suddenly), "fade" (shapes fade in/out) -- `easing_function`: Determines the rate of change for appearance/disappearance. - - Options: "linear", "ease_in_out", "bounce", "elastic" -- `shape_type`: Type of shape to generate. Includes various geometric shapes and a "random" option. -- `feature_param`: Aspect of the effect modulated by the input feature. - - Options: "num_shapes", "shape_size", "appearance_duration", "disappearance_duration" - -This node creates a dynamic mask with randomly placed shapes that appear and disappear over time. The number, size, and timing of the shapes can be modulated by the input feature, creating effects that respond to various inputs like audio, time, or other extracted features. The shapes can grow, pop, or fade in and out, with different easing functions for smooth or bouncy transitions. -""" -}) - -add_node_config("FlexMaskWavePropagation", { - "TOP_DESCRIPTION": "Good luck with this one...Simulates wave-like abstract distortions propagating from the edges of the input mask.", - "ADDITIONAL_INFO": """ -- `wave_speed`: Controls the rate of wave propagation (0.1 to 100.0). Higher values create faster-moving, more rapidly evolving patterns. -- `wave_amplitude`: Determines the intensity of the wave effect (0.1 to 2.0). Larger values create more pronounced, exaggerated distortions. -- `wave_decay`: Rate at which waves fade out over time (0.9 to 10.0). Lower values cause waves to dissipate quickly, while higher values allow waves to persist and interact more. -- `wave_frequency`: Frequency of the wave oscillations (0.01 to 10.0). Higher values create more rapid, ripple-like effects, while lower values produce smoother, more gradual undulations. -- `max_wave_field`: Maximum allowed intensity for the wave field (10.0 to 10000.0). This parameter prevents the effect from becoming too extreme over time. - -This node creates a dynamic, fluid-like effect where waves seem to emanate from the edges of the input mask. The waves propagate outward, interacting with each other and creating complex, evolving patterns. The effect can range from subtle, water-like ripples to intense, psychedelic distortions depending on the parameter settings. - -The wave propagation is particularly sensitive to the interplay between `wave_speed`, `wave_amplitude`, and `wave_decay`. High speed with low decay can create a turbulent, chaotic effect, while lower speed with higher decay produces a more serene, flowing appearance. - -The feature input modulates the intensity of new waves being generated, allowing for dynamic control over the effect's strength. This can be used to create pulsating effects synchronized with audio or other time-varying inputs. -""" -}) - -add_node_config("FeatureExtractorBase", { - "BASE_DESCRIPTION": """ - Features are used to modulate other RyanOnTheInside nodes. - - You can replace this feature with any of the others, and it will work. - - Available features include Audio, Motion, MIDI, Pitch, Proximity, Depth, Time, Color, Brightness, and more. - -### Parameters: -- `frame_rate`: Frame rate of the video -- `frame_count`: Total number of frames -""" -}) - -add_node_config("ManualFeatureFromPipe", { - "TOP_DESCRIPTION": "Creates a manual feature based on specified frame numbers and values from an existing feature pipe.", - "ADDITIONAL_INFO": """ -- `feature_pipe`: Input feature pipe (FEATURE_PIPE type) -- `frame_numbers`: Comma-separated list of frame numbers (e.g., "0,10,20") -- `values`: Comma-separated list of corresponding values for each frame number (e.g., "0.0,0.5,1.0") -- `last_value`: Value for the last frame of the sequence -- `interpolation_method`: Method for interpolating between specified values: - - "none": No interpolation, uses exact values at specified frames - - "linear": Linear interpolation between specified points - - "ease_in": Ease-in interpolation for smoother starts - - "ease_out": Ease-out interpolation for smoother endings - -This node allows you to create a custom feature by specifying values at certain frame numbers and interpolating between them. It's useful for creating precise, manually-defined features that can be used to modulate other effects. - -The interpolation methods provide different ways to transition between the specified values: -- "none" keeps the value constant until the next specified frame -- "linear" creates a straight line between points -- "ease_in" starts slow and accelerates -- "ease_out" starts fast and decelerates - -Note: The number of frame numbers must match the number of values provided. -""" -}) - -add_node_config("ManualFeatureNode", { - "TOP_DESCRIPTION": "Creates a manual feature with specified start and end values over a range of frames.", - "ADDITIONAL_INFO": """ -- `frame_rate`: Frame rate of the video (1.0 to 120.0 fps) -- `start_frame`: First frame of the feature (0 or greater) -- `end_frame`: Last frame of the feature (greater than start_frame) -- `start_value`: Initial value of the feature (0.0 to 1.0) -- `end_value`: Final value of the feature (0.0 to 1.0) -- `width`: Width of the video frames (1 or greater) -- `height`: Height of the video frames (1 or greater) -- `interpolation_method`: Method for interpolating between start and end values: - - "linear": Linear interpolation - - "nearest": Nearest neighbor interpolation - - "ease_in": Ease-in interpolation for smoother starts - - "ease_out": Ease-out interpolation for smoother endings - -This node creates a manual feature that transitions from a start value to an end value over a specified range of frames. It's useful for creating simple, controlled features that can be used to modulate other effects. - -The interpolation methods provide different ways to transition between the start and end values: -- "linear" creates a straight line between points -- "nearest" uses the closest value (start or end) -- "ease_in" starts slow and accelerates -- "ease_out" starts fast and decelerates - -The node also creates a feature pipe with empty video frames, which can be used in conjunction with other nodes that require a feature pipe input. -""" -}) - -add_node_config("ManualFeaturePipe", { - "TOP_DESCRIPTION": "Creates an empty feature pipe with specified parameters.", - "ADDITIONAL_INFO": """ -- `frame_rate`: Frame rate of the video (1.0 fps or greater) -- `frame_count`: Total number of frames in the sequence (1 or greater) -- `width`: Width of the video frames (1 or greater) -- `height`: Height of the video frames (1 or greater) - -This node creates an empty feature pipe with the specified parameters. It's particularly useful when you need a feature pipe for other nodes but don't have actual video frames or when you want to create a custom feature pipe for manual feature creation. - -The feature pipe contains empty (zero-filled) tensors for each frame, which can be used as placeholders in workflows that require a feature pipe input. This is especially helpful when working with manual features or when you need to simulate a video sequence without actual video data. - -Typical use cases include: -1. Creating a base for manual feature creation -2. Providing a placeholder feature pipe for nodes that require it -3. Setting up a workflow structure before actual video data is available - -Note: While this node creates empty video frames, it doesn't affect the functionality of feature-based operations, as most feature extractors and manipulators work independently of the actual video content. -""" -}) - -add_node_config("TimeFeatureNode", { - "TOP_DESCRIPTION": "Produces a feature that changes over time based on the selected effect type. This can be used to create dynamic, time-varying mask modulations.", - "ADDITIONAL_INFO": """ -- `effect_type`: Type of time-based pattern to apply. - - Options: "smooth" (gradual), "accelerate" (speeds up), "pulse" (rhythmic), "sawtooth" (repeating ramp), "bounce" (up and down) -- `speed`: How quickly the effect progresses (0.1 to 10.0, default: 1.0). Higher values create faster changes. -- `offset`: Shifts the starting point of the effect (0.0 to 1.0, default: 0.0). Useful for staggering multiple effects. - - -""" -}) - -add_node_config("AudioFeatureNode", { - "TOP_DESCRIPTION": "Analyzes the input audio to extract the specified feature. This feature can then be used to modulate masks based on audio characteristics.", - "ADDITIONAL_INFO": """ -- `audio`: Input audio to analyze (AUDIO type) -- `feature_type`: Type of audio feature to extract. - - Options: "amplitude_envelope", "rms_energy", "spectral_centroid", "onset_detection", "chroma_features" - -""" -}) - -add_node_config("DepthFeatureNode", { - "TOP_DESCRIPTION": "Analyzes the input depth maps to extract the specified depth-related feature. This feature can be used to modulate masks based on depth information in the scene.", - "ADDITIONAL_INFO": """ -- `depth_maps`: Input depth maps to analyze (IMAGE type) -- `feature_type`: Type of depth feature to extract. - - Options: "mean_depth", "depth_variance", "depth_range", "gradient_magnitude", "foreground_ratio", "midground_ratio", "background_ratio" - -""" -}) - -add_node_config("ColorFeatureNode", { - "TOP_DESCRIPTION": "Extracts color-related features from video frames for mask modulation.", - "ADDITIONAL_INFO": """ -- `feature_type`: Type of color feature to extract - - Options: "dominant_color" (most prevalent color), "color_variance" (variation in colors), "saturation" (color intensity), "red_ratio" (proportion of red), "green_ratio" (proportion of green), "blue_ratio" (proportion of blue) - -Analyzes the input video frames to extract the specified color-related feature. This feature can be used to modulate masks based on color information in the scene, creating effects that respond to color changes over time. -""" -}) - -add_node_config("BrightnessFeatureNode", { - "TOP_DESCRIPTION": "Extracts brightness-related features from video frames for mask modulation.", - "ADDITIONAL_INFO": """ -- `feature_type`: Type of brightness feature to extract - - Options: "mean_brightness" (average brightness), "brightness_variance" (variation in brightness), "dark_ratio" (proportion of dark areas), "mid_ratio" (proportion of mid-tone areas), "bright_ratio" (proportion of bright areas) - -Analyzes the input video frames to extract the specified brightness-related feature. This feature can be used to modulate masks based on lighting changes in the scene, allowing for effects that respond to overall brightness or specific tonal ranges. -""" -}) - -add_node_config("MotionFeatureNode", { - "TOP_DESCRIPTION": "Extracts motion-related features from video frames for mask modulation.", - "ADDITIONAL_INFO": """ -- `feature_type`: Type of motion feature to extract - - Options: "mean_motion" (average motion), "max_motion" (peak motion), "motion_direction" (overall direction), "horizontal_motion" (left-right movement), "vertical_motion" (up-down movement), "motion_complexity" (intricacy of motion) -- `flow_method`: Technique used for optical flow calculation - - Options: "Farneback" (dense flow), "LucasKanade" (sparse flow), "PyramidalLK" (multi-scale sparse flow) -- `flow_threshold`: Minimum motion magnitude to consider (0.0 to 10.0). Higher values ignore subtle movements. -- `magnitude_threshold`: Relative threshold for motion magnitude (0.0 to 1.0). Higher values focus on areas of stronger motion. - -Analyzes the input video frames to extract the specified motion-related feature using optical flow techniques. This feature can be used to modulate masks based on movement in the scene, creating effects that respond to motion intensity, direction, or complexity. -""" -}) - -add_node_config("AudioFeatureExtractor", { - "TOP_DESCRIPTION": "Analyzes the input audio to extract the specified feature. The resulting feature can be used to modulate masks based on audio characteristics.", - "ADDITIONAL_INFO": """ -- `audio`: Input audio to analyze (AUDIO type) -- `feature_pipe`: Feature pipe for frame information (FEATURE_PIPE type) -- `feature_type`: Type of audio feature to extract - - Options: "amplitude_envelope", "rms_energy", "spectral_centroid", "onset_detection", "chroma_features" - -""" -}) - -add_node_config("PitchFeatureExtractor", { - "TOP_DESCRIPTION": "Extracts pitch-related features from audio input.", - "ADDITIONAL_INFO": """ -- `audio`: Input audio to analyze (AUDIO type) -- `feature_pipe`: Feature pipe containing frame information (FEATURE_PIPE type) -- `feature_type`: Type of pitch feature to extract: - - "pitch_filtered": Filtered pitch values - - "pitch_direction": Direction of pitch changes - - "vibrato_signal": Vibrato signal - - "vibrato_intensity": Intensity of vibrato -- `window_size`: Size of the analysis window (0 for default) -- `pitch_tolerance`: Tolerance for pitch detection (0.0 to 1.0) -- `pitch_range_collections`: (Optional) Collections of pitch ranges to consider (PITCH_RANGE_COLLECTION type) - -This node extracts various pitch-related features from the input audio, which can be used for further analysis or mask modulation. -""" -}) - -add_node_config("PitchRangeByNoteNode", { - "TOP_DESCRIPTION": "Creates pitch ranges based on specified MIDI notes.", - "ADDITIONAL_INFO": """ -- `chord_only`: If true, only detects when all specified notes are present simultaneously (BOOLEAN) -- `pitch_tolerance_percent`: Tolerance percentage for pitch detection (0.0 to 100.0) -- `notes`: IGNORE THIS. Certain limitations prevent me from hiding it completely. Love, Ryan -- `previous_range_collection`: (Optional) Previous pitch range collection to append to (PITCH_RANGE_COLLECTION type) - -This node creates pitch ranges based on specified MIDI notes, which can be used for targeted pitch detection in audio analysis. -""" -}) - -add_node_config("PitchRangePresetNode", { - "TOP_DESCRIPTION": "Creates preset pitch ranges for common vocal ranges.", - "ADDITIONAL_INFO": """ -- `preset`: Preset vocal range to use: - - Options: "Bass", "Baritone", "Tenor", "Alto", "Mezzo-soprano", "Soprano", "Contralto" -- `previous_range_collection`: (Optional) Previous pitch range collection to append to (PITCH_RANGE_COLLECTION type) - -This node provides preset pitch ranges corresponding to common vocal ranges, which can be used for voice-specific audio analysis. -""" -}) - -add_node_config("PitchRangeNode", { - "TOP_DESCRIPTION": "Creates a custom pitch range for audio analysis.", - "ADDITIONAL_INFO": """ -- `min_pitch`: Minimum frequency of the pitch range in Hz (20.0 to 2000.0) -- `max_pitch`: Maximum frequency of the pitch range in Hz (20.0 to 2000.0) -- `previous_range_collection`: (Optional) Previous pitch range collection to append to (PITCH_RANGE_COLLECTION type) - -This node allows you to create a custom pitch range by specifying the minimum and maximum frequencies. This can be useful for targeting specific frequency ranges in audio analysis, such as isolating particular instruments or vocal ranges. - -The created pitch range can be combined with other pitch ranges or used independently in pitch-related feature extraction nodes. -""" -}) - -add_node_config("EmptyImageFromAudio", { - "TOP_DESCRIPTION": "Creates an empty image sequence based on audio input.", - "ADDITIONAL_INFO": """ -- `audio`: Input audio (AUDIO type) -- `frame_rate`: Frame rate of the output image sequence (0.1 to 120 fps) -- `height`: Height of the output images (16 to 4096 pixels) -- `width`: Width of the output images (16 to 4096 pixels) - -This node generates an empty image sequence dimensions and frame rate, based on the duration of the input audio. -It's useful for creating a blank canvas for further image processing or visualization that matches the length of an audio track. -""" -}) - -add_node_config("EmptyMaskFromAudio", { - "TOP_DESCRIPTION": "Creates an empty mask sequence based on audio input.", - "ADDITIONAL_INFO": """ -- `audio`: Input audio (AUDIO type) -- `frame_rate`: Frame rate of the output mask sequence (0.1 to 120 fps) -- `height`: Height of the output masks (16 to 4096 pixels) -- `width`: Width of the output masks (16 to 4096 pixels) - -This node generates an empty mask sequence with the specified dimensions and frame rate, based on the duration of the input audio. -It's useful for creating a blank mask for further processing or effects that match the length of an audio track. -""" -}) - -add_node_config("TimeFeatureNode", { - "TOP_DESCRIPTION": "Generates time-based features for mask modulation.", - "ADDITIONAL_INFO": """ -- `video_frames`: Input video frames (IMAGE type) -- `frame_rate`: Frame rate of the video -- `effect_type`: Type of time-based pattern to apply - - Options: "smooth" (gradual), "accelerate" (speeds up), "pulse" (rhythmic), "sawtooth" (repeating ramp), "bounce" (up and down) -- `speed`: How quickly the effect progresses (0.1 to 10.0, default: 1.0). Higher values create faster changes. -- `offset`: Shifts the starting point of the effect (0.0 to 1.0, default: 0.0). Useful for staggering multiple effects. - -Generates a feature that changes over time based on the selected effect type. This can be used to create dynamic, time-varying mask modulations. -""" -}) - -add_node_config("DepthFeatureNode", { - "TOP_DESCRIPTION": "Extracts depth-related features from depth maps for mask modulation.", - "ADDITIONAL_INFO": """ -- `video_frames`: Input video frames (IMAGE type) -- `frame_rate`: Frame rate of the video -- `depth_maps`: Input depth maps to analyze (IMAGE type) -- `feature_type`: Type of depth feature to extract - - Options: "mean_depth", "depth_variance", "depth_range", "gradient_magnitude", "foreground_ratio", "midground_ratio", "background_ratio" - -Analyzes the input depth maps to extract the specified depth-related feature. This feature can be used to modulate masks based on depth information in the scene. -""" -}) - -add_node_config("AreaFeatureNode", { - "TOP_DESCRIPTION": "Extracts area-related features from mask sequences for mask modulation.", - "ADDITIONAL_INFO": """ -- `masks`: Input mask sequence to analyze (MASK type) -- `feature_type`: Type of area feature to extract - - Options: - - "total_area" (sum of pixels above threshold) - - "largest_contour" (area of the largest contiguous region) - - "bounding_box" (area of the bounding box containing the largest region) -- `threshold`: Threshold value for considering pixels as part of the area (0.0 to 1.0) - -This node analyzes the input mask sequence to extract the specified area-related feature. The resulting feature can be used to modulate masks based on changes in area over time, allowing for effects that respond to the size or extent of masked regions in the scene. -""" -}) - -add_node_config("ProximityFeatureNode", { - "TOP_DESCRIPTION": "Calculates a proximity feature based on the distance between anchor and query locations in video frames.", - "ADDITIONAL_INFO": """ -- `video_frames`: Input video frames (IMAGE type) -- `frame_rate`: Frame rate of the video (FLOAT type, default: 30.0, min: 1.0, max: 120.0, step: 0.1) -- `anchor_locations`: Locations of anchor points (LOCATION type) -- `query_locations`: Locations of query points (LOCATION type) -- `distance_metric`: Distance metric to use for calculation (Options: "euclidean", "manhattan", "chebyshev") - -This node calculates a proximity feature based on the specified distance metric between anchor and query locations in the input video frames. The resulting feature can be used to modulate other effects based on spatial relationships. -""" -}) - -add_node_config("LocationFromMask", { - "TOP_DESCRIPTION": "This is for use with proximity features. This generates locations from mask inputs using various methods.", - "ADDITIONAL_INFO": """ -- `masks`: Input masks (MASK type) -- `method`: Method to use for location extraction (Options: "mask_center", "mask_boundary", "mask_top_left", "mask_bottom_right") -- `depth_maps`: (Optional) Input depth maps. The depth map provides a value for the z coordinate of every location. If no depth map is provided, the value defaults to .5. The z coordinate is far less granular than x and y, as all we have are relative normalized depth per frame (0 to 1). - -This node generates locations from the input masks using the specified method. The locations can be used as anchor or query points for proximity calculations or other spatially dependent effects. -""" -}) - -add_node_config("LocationFromPoint", { - "TOP_DESCRIPTION": "Generates locations from specified x, y, and z coordinates.", - "ADDITIONAL_INFO": """ -- `x`: X-coordinate of the location (FLOAT, default: 0.0, min: 0.0, step: 0.01) -- `y`: Y-coordinate of the location (FLOAT, default: 0.0, min: 0.0, step: 0.01) -- `batch_count`: Number of locations to generate (INT, default: 1, min: 1) -- `z`: Z-coordinate of the location (FLOAT, default: 0.0, min: 0.0, max: 1.0, step: 0.01) - -This node generates a batch of locations based on the specified x, y, and z coordinates. -""" -}) - -add_node_config("LocationTransform", { - "TOP_DESCRIPTION": "Transforms locations based on a feature and specified transformation type.", - "ADDITIONAL_INFO": """ -- `locations`: Input locations to be transformed (LOCATION type) -- `feature`: Feature used to modulate the transformation (FEATURE type) -- `transformation_type`: Type of transformation to apply ("translate" or "scale") -- `transformation_value`: Value of the transformation (FLOAT, default: 1.0) - -This node transforms the input locations based on the specified transformation type and value, modulated by the input feature. -""" -}) - -add_node_config("EmitterMovement", { - "TOP_DESCRIPTION": """These parameters work together to create complex, periodic movements for particle emitters. -By adjusting frequencies and amplitudes, you can achieve various patterns like circles, -figure-eights, or more chaotic motions. The direction parameters add extra dynamism by -altering the angle of particle emission over time.""", - "ADDITIONAL_INFO": """ -Position Control: -- `emitter_x_frequency`: How quickly the emitter moves horizontally (0.0 to 10.0). Higher values create faster side-to-side motion. -- `emitter_x_amplitude`: Maximum horizontal distance the emitter moves (0.0 to 0.5). Larger values create wider movements. -- `emitter_y_frequency`: How quickly the emitter moves vertically (0.0 to 10.0). Higher values create faster up-and-down motion. -- `emitter_y_amplitude`: Maximum vertical distance the emitter moves (0.0 to 0.5). Larger values create taller movements. -Direction Control: -- `direction_frequency`: How quickly the emission angle changes (0.0 to 10.0). Higher values create more rapid direction changes. -- `direction_amplitude`: Maximum angle change in degrees (0.0 to 180.0). Larger values allow for more extreme direction shifts. - -Feature Modulation: -- `feature`: Optional feature to modulate the movement (FEATURE type) -- `feature_param`: Parameter to be modulated by the feature ("emitter_x_frequency", "emitter_y_frequency", or "direction_frequency") - - -""" -}) - -add_node_config("ParticleEmitter", { - "TOP_DESCRIPTION": "This node creates a particle emitter with the specified properties. It can be used in conjunction with particle system mask nodes to create complex particle effects. They can be chained together to add many to a given simulation.", - "ADDITIONAL_INFO": """ -- `emitter_x`: X-coordinate of the emitter (0.0 to 1.0, left to right) -- `emitter_y`: Y-coordinate of the emitter (0.0 to 1.0, up to down) -- `particle_direction`: Direction of particle emission in degrees (0.0 to 360.0, clockwise) -- `particle_spread`: Spread angle of particle emission in degrees (0.0 to 360.0, clockwise) -- `particle_size`: Size of emitted particles (1.0 to 400.0) -- `particle_speed`: Speed of emitted particles (1.0 to 1000.0) -- `emission_rate`: Rate of particle emission (0.1 to 100.0) -- `color`: Color of emitted particles (RGB string) -- `initial_plume`: Initial burst of particles (0.0 to 1.0) -- `start_frame`: Frame to start the emission (0 to 10000) -- `end_frame`: Frame to end the emission (0 to 10000) -- `emission_radius`: Defaulting to 0 (a point), this value changes the radius of the area from which the particles are emitted. The open 'mouth' of the emitter. - -Optional inputs: -- `emitter_movement`: Movement settings for the emitter (EMITTER_MOVEMENT type) -- `spring_joint_setting`: Spring joint configuration for particles (SPRING_JOINT_SETTING type) -- `particle_modulation`: Modulation settings for particle properties over time (PARTICLE_MODULATION type) -""" -}) - -add_node_config("MovingShape", { - "TOP_DESCRIPTION": "Generate animated mask sequences featuring a moving shape with customizable parameters.", - "ADDITIONAL_INFO": """ -- `frame_width`: Width of each frame (1-3840 pixels) -- `frame_height`: Height of each frame (1-2160 pixels) -- `num_frames`: Number of frames in the sequence (1-120) -- `rgb`: Color of the shape in RGB format, e.g., "(255,255,255)" -- `shape`: Shape type ("square", "circle", or "triangle") -- `shape_width_percent`: Width of the shape as a percentage of frame width (0-100%) -- `shape_height_percent`: Height of the shape as a percentage of frame height (0-100%) -- `shape_start_position_x`: Starting X position of the shape (-100 to 100) -- `shape_start_position_y`: Starting Y position of the shape (-100 to 100) -- `shape_end_position_x`: Ending X position of the shape (-100 to 100) -- `shape_end_position_y`: Ending Y position of the shape (-100 to 100) -- `movement_type`: Type of movement ("linear", "ease_in_out", "bounce", or "elastic") -- `grow`: Growth factor of the shape during animation (0-100) -- `palindrome`: Whether to reverse the animation sequence (True/False) -- `delay`: Number of static frames at the start (0-60) - -This node creates a mask sequence with a moving shape, allowing for various animations and transformations. -""" -}) - -add_node_config("TextMaskNode", { - "TOP_DESCRIPTION": "Generate mask and image sequences featuring customizable text.", - "ADDITIONAL_INFO": """ -- `width`: Width of the output image (1-8192 pixels) -- `height`: Height of the output image (1-8192 pixels) -- `text`: The text to be rendered -- `font`: Font to be used (selectable from system fonts) -- `font_size`: Size of the font (1-1000) -- `font_color`: Color of the text in RGB format, e.g., "(255,255,255)" -- `background_color`: Color of the background in RGB format, e.g., "(0,0,0)" -- `x_position`: Horizontal position of the text (0.0-1.0, where 0.5 is center) -- `y_position`: Vertical position of the text (0.0-1.0, where 0.5 is center) -- `rotation`: Rotation angle of the text (0-360 degrees) -- `max_width_ratio`: Maximum width of text as a ratio of image width (0.1-1.0) -- `batch_size`: Number of images to generate in the batch (1-10000) -""" -}) - -add_node_config("_mfc", { - "TOP_DESCRIPTION": "Basic mask from color.", - "ADDITIONAL_INFO": """ -This is an abstract base class that provides common functionality for mask function components. -It is not meant to be used directly but serves as a foundation for other mask-related nodes. - -Key features: -- Implements common methods for mask operations -- Provides a structure for derived classes to follow -- Ensures consistency across different mask function components -""" -}) - -add_node_config("DownloadOpenUnmixModel", { - "TOP_DESCRIPTION": "Downloads and loads Open Unmix models for audio classification", - "ADDITIONAL_INFO": """ --umxl (default) trained on private stems dataset of compressed stems. Note, that the weights are only licensed for non-commercial use (CC BY-NC-SA 4.0). - --umxhq trained on MUSDB18-HQ which comprises the same tracks as in MUSDB18 but un-compressed which yield in a full bandwidth of 22050 Hz. - - -""" -}) - -add_node_config("FeatureMixer", { - "TOP_DESCRIPTION": "Advanced feature modulation node for fine-tuning and shaping feature values.", - "ADDITIONAL_INFO": """ -- `feature`: Input feature to be processed (FEATURE type) -- `base_gain`: Overall amplification of the feature values (0.0 to 10.0). Higher values increase the overall intensity. -- `floor`: Minimum value for the processed feature (0.0 to 1.0). Prevents values from going below this threshold. -- `ceiling`: Maximum value for the processed feature (0.0 to 10.0). Caps values at this upper limit. -- `peak_sharpness`: Sharpness of peaks in the feature curve (0.1 to 10.0). Higher values create more pronounced peaks. -- `valley_sharpness`: Sharpness of valleys in the feature curve (0.1 to 10.0). Higher values create deeper valleys. -- `attack`: Speed at which the envelope follower responds to increasing values (0.01 to 1.0). Lower values create slower attack. -- `release`: Speed at which the envelope follower responds to decreasing values (0.01 to 1.0). Lower values create slower release. -- `smoothing`: Amount of smoothing applied to the final curve (0.0 to 1.0). Higher values create smoother transitions. - -This node provides extensive control over feature modulation, allowing for complex shaping of feature values over time. It combines multiple processing stages including gain, waveshaping, envelope following, and smoothing to create highly customized feature curves for mask modulation. - -Outputs: -- Processed FEATURE -- Visualization of the processed feature (IMAGE type) -""" -}) - -add_node_config("FeatureAccumulate", { - "TOP_DESCRIPTION": "Accumulates feature values over time, creating a cumulative effect.", - "ADDITIONAL_INFO": """ -- `feature`: Input feature to be accumulated (FEATURE type) -- `start`: Starting value for the normalized output range (0.0 to 1.0) -- `end`: Ending value for the normalized output range (0.0 to 1.0) -- `threshold`: Minimum feature value to consider for accumulation (0.0 to 1.0) -- `skip_thresholded`: If True, keeps original values below threshold; if False, maintains last accumulated value (BOOLEAN) -- `invert_output`: Whether to invert the output feature values (BOOLEAN) - -This node accumulates feature values over time, creating a cumulative effect. It's useful for generating gradually increasing or decreasing effects based on feature intensity. - -The accumulation process works as follows: -1. For each frame, if the feature value is above the threshold, it's added to the cumulative sum. -2. If the value is below the threshold, the behavior depends on the `skip_thresholded` setting: - - If True, the original value is kept (useful for creating "gaps" in the effect). - - If False, the last accumulated value is maintained (for continuous effects). -3. The accumulated values are then normalized to fit between the specified `start` and `end` values. - -Use cases include: -1. Creating gradually intensifying effects based on audio features -2. Generating cumulative motion effects in response to video analysis -3. Producing threshold-based triggers that build up over time - -Outputs: -- Processed FEATURE with accumulated values -- Visualization of the accumulated feature (IMAGE type) -""" -}) - -add_node_config("FeatureContiguousInterpolate", { - "TOP_DESCRIPTION": "Applies interpolation to contiguous segments of a feature that meet a threshold criteria.", - "ADDITIONAL_INFO": """ -- `feature`: Input feature to be processed (FEATURE type) -- `threshold`: Minimum value for a feature point to be considered part of a segment (0.0 to 1.0) -- `start`: Starting value for the interpolation (0.0 to 1.0) -- `end`: Ending value for the interpolation (0.0 to 1.0) -- `easing`: Easing function to apply to the interpolation. Options include various easing types like linear, quadratic, cubic, and quartic easings (in, out, and in-out variants) -- `fade_out`: Number of frames over which to fade out after each segment (0 to 100) -- `invert_output`: Whether to invert the output feature values (True/False) - -This node identifies contiguous segments in the input feature where values are above the specified threshold. It then applies interpolation to these segments, transforming the values from the start value to the end value using the chosen easing function. After each segment, it can optionally apply a fade-out effect. - -Key features: -1. Segment identification based on threshold -2. Flexible interpolation with various easing functions -3. Optional fade-out after each segment -4. Visualization of the processed feature - -Use cases include: -1. Smoothing out feature transitions in audio-reactive animations -2. Creating more dynamic and interesting feature curves for visual effects -3. Emphasizing specific segments of a feature while de-emphasizing others - -Outputs: -- Processed FEATURE with interpolated segments -- Visualization of the interpolated feature (IMAGE type) -""" -}) - -add_node_config("FeatureRebase", { - "TOP_DESCRIPTION": "Rebases feature values within specified thresholds.", - "ADDITIONAL_INFO": """ -- `feature`: Input feature to be rebased (FEATURE type) -- `lower_threshold`: Lower threshold for feature values (FLOAT, default: 0.0, min: 0.0, max: 1.0, step: 0.01) -- `upper_threshold`: Upper threshold for feature values (FLOAT, default: 1.0, min: 0.0, max: 1.0, step: 0.01) -- `invert_output`: Whether to invert the output feature values (BOOLEAN, default: False) - -This node rebases the input feature values within the specified thresholds and normalizes them. -""" -}) - -add_node_config("FeatureMath", { - "TOP_DESCRIPTION": "Performs mathematical operations between a feature's values and a float value.", - "ADDITIONAL_INFO": """ -- `feature`: Input feature (FEATURE type) -- `y`: Input value (FLOAT type) -- `operation`: Mathematical operation to perform ("add", "subtract", "multiply", "divide", "max", "min"). Determines how the feature's values are combined with y. - -This node takes a feature and performs the specified operation between its values and the float value y, returning the processed feature and its visualization. -""" -}) - - -add_node_config("FeatureScaler", { - "TOP_DESCRIPTION": "Scales and transforms feature values using various mathematical functions.", - "ADDITIONAL_INFO": """ - - `feature`: Input feature to be scaled (FEATURE type) - - `scale_type`: Type of scaling to apply ("linear", "logarithmic", "exponential", "inverse") - - `min_output`: Minimum output value after scaling (0.0 to 1.0) - - `max_output`: Maximum output value after scaling (0.0 to 1.0) - - `exponent`: Exponent for exponential scaling (0.1 to 10.0) - """ -}) - -add_node_config("FeatureCombine", { - "TOP_DESCRIPTION": "Performs mathematical operations between two features.", - "ADDITIONAL_INFO": """ - - `feature1`: First input feature (FEATURE type) - - `feature2`: Second input feature (FEATURE type) - - `operation`: Mathematical operation to perform ("add", "subtract", "multiply", "divide", "max", "min"). Determines how the two features are combined. - - `weight1`: Weight applied to feature1 (0.0 to 1.0). Higher values give more importance to feature1 in the operation. - - `weight2`: Weight applied to feature2 (0.0 to 1.0). Higher values give more importance to feature2 in the operation. - """ -}) - -add_node_config("FeatureSmoothing", { - "TOP_DESCRIPTION": "Applies various smoothing techniques to a feature.", - "ADDITIONAL_INFO": """ - - `feature`: Input feature to be smoothed (FEATURE type) - - `smoothing_type`: Type of smoothing to apply ("moving_average", "exponential", "gaussian") - - `window_size`: Size of the smoothing window for moving average and gaussian (3 to 21, odd numbers only). Larger values create smoother transitions but may reduce responsiveness. - - `alpha`: Smoothing factor for exponential smoothing (0.0 to 1.0). Higher values make the feature respond more quickly to changes, while lower values create a more gradual, smoothed effect. - - `sigma`: Standard deviation for gaussian smoothing (0.1 to 5.0). Higher values create a more pronounced smoothing effect. - """ -}) - -add_node_config("FeatureOscillator", { - "TOP_DESCRIPTION": "Generates oscillating patterns based on the input feature.", - "ADDITIONAL_INFO": """ - - `feature`: Input feature to base oscillation on (FEATURE type) - - `oscillator_type`: Type of oscillation ("sine", "square", "sawtooth", "triangle") - - `frequency`: Frequency of oscillation (0.1 to 10.0) - - `amplitude`: Amplitude of oscillation (0.0 to 1.0) - - `phase_shift`: Phase shift of oscillation (0.0 to 2π) - - `blend`: Blend factor between original feature and oscillation (0.0 to 1.0) - """ -}) - -add_node_config("FeatureFade", { - "TOP_DESCRIPTION": "Fades between two features based on a fader value or a control feature.", - "ADDITIONAL_INFO": """ -- `feature1`: First input feature to fade from (FEATURE type) -- `feature2`: Second input feature to fade to (FEATURE type) -- `fader`: Static fader value to control the blend between feature1 and feature2 (0.0 to 1.0). 0.0 is 100 percent feature1, 1.0 is 100 percent feature2. -- `control_feature`: Optional feature to dynamically control the fader value (FEATURE type). If provided, the fader value will be modulated by this feature. - -Shoutout @cyncratic -""" -}) - -add_node_config("FeatureTruncateOrExtend", { - "TOP_DESCRIPTION": "Adjusts the length of a feature to match a target feature pipe, either by truncating or extending it.", - "ADDITIONAL_INFO": """ -- `feature`: Input feature to be adjusted (FEATURE type) -- `target_feature_pipe`: Target feature pipe to match the length (FEATURE type) -- `fill_method`: Method to use when extending the feature: - - "zeros": Fills with 0's - - "ones": Fills with 1's - - "average": Fills with the average value of the source feature - - "random": Fills with random values between 0 and 1 - - "repeat": Repeats the source values from the beginning -- `invert_output`: Whether to invert the output feature values (True/False) - -This node adjusts the length of the input feature to match the length of the target feature pipe. If the input feature is longer, it will be truncated. If it's shorter, it will be extended using the specified fill method. - -The "repeat" fill method is particularly useful for maintaining patterns or rhythms when extending the feature. - -Use cases: -1. Adapting audio-extracted features for shorter or longer video animations -2. Synchronizing features of different lengths for complex animations -3. Creating looping patterns by repeating shorter features - -Outputs: -- Adjusted FEATURE -- Visualization of the adjusted feature (IMAGE type) -""" -}) - - -add_node_config("FeatureToWeightsStrategy", { - "TOP_DESCRIPTION": "Converts a FEATURE input into a WEIGHTS_STRATEGY for use with IPAdapter nodes.", - "ADDITIONAL_INFO": """ -- `feature`: Input feature to be converted (FEATURE type) - -This node takes a FEATURE input and converts it into a WEIGHTS_STRATEGY that can be used with IPAdapter nodes. It creates a custom weights strategy based on the feature values for each frame. -This node is particularly useful for creating dynamic, feature-driven animations with IPAdapter, where the strength of the adaptation can vary over time based on extracted features from audio, video, or other sources. - -""" -}) - -NODE_CONFIGS["FlexImageBase"] = { - "BASE_DESCRIPTION": """ -- `images`: Input image sequence (IMAGE type) -- `feature`: Feature used to modulate the effect (FEATURE type) -- `feature_pipe`: Feature pipe containing frame information (FEATURE_PIPE type) -- `strength`: Overall strength of the effect (0.0 to 1.0) -- `feature_threshold`: Minimum feature value to apply the effect (0.0 to 1.0) -- `feature_mode`: How the feature modulates the parameter ("relative" or "absolute"). Relative mode adjusts the parameter based on its current value, while absolute mode directly sets the parameter to the feature value. -""" -} - -add_node_config("FlexImageHueShift", { - "TOP_DESCRIPTION": "Applies a hue shift effect to the image, modulated by a selected feature.", - "ADDITIONAL_INFO": """ -- `hue_shift`: Amount of hue shift to apply (0.0 to 360.0 degrees). A value of 180 degrees will invert the hues. -- `feature_param`: Parameter to modulate based on the feature. Options are "hue_shift" or "None". - -Optional inputs: -- `opt_mask`: Optional mask to apply the effect selectively (MASK type) - -This node shifts the hues of the input image by the specified amount. The hue shift can be dynamically modulated by the input feature, allowing for time-varying color effects. The optional mask input allows for selective application of the effect to specific areas of the image. - -The hue shift is applied in the HSV color space, which means it affects the color of the image without changing its brightness or saturation. This can create interesting color transformation effects, such as: - -1. Subtle color grading by applying small hue shifts -2. Creating psychedelic or surreal effects with large hue shifts -3. Simulating color filters or gels used in photography and film -4. Generating day-to-night transitions by shifting blues towards oranges - -When used with feature modulation, this node can create dynamic color effects that respond to audio, motion, or other extracted features, making it useful for creating reactive visuals or music videos. - -Note: Extreme hue shifts may produce unexpected colors, especially for hues that are close to the wrap-around point (red). For more natural-looking results, consider using smaller hue shift values or combining with other color adjustment effects. -""" -}) - -add_node_config("FlexImageHorizontalToVertical", { - "TOP_DESCRIPTION": "Converts horizontal images to vertical format with customizable background effects.", - "ADDITIONAL_INFO": """ -- Inherits base parameters from FlexImageBase: - - `images`: Input image sequence (IMAGE type) - - `feature`: Feature used to modulate the effect (FEATURE type) - - `strength`: Overall strength of the effect (0.0 to 1.0) - - `feature_threshold`: Minimum feature value to apply the effect (0.0 to 1.0) - -Additional Parameters: -- `blur_amount`: Amount of blur for background when using blur effect (0.1 to 100.0) -- `background_type`: Type of background effect to apply: - - "blur": Blurred version of original image - - "border": Solid color border - - "mirror": Mirrored version of the image - - "gradient": Gradient based on image colors - - "pixelate": Pixelated version of the image - - "waves": Wavy distortion effect -- `border_color`: Color of the border when using border background type ("black" or "white") -- `scale_factor`: Scale factor for the main image (0.1 to 2.0). Controls how large the original image appears in the vertical format. -- `effect_strength`: Intensity of the background effect (0.0 to 2.0) - -This node converts horizontal images to a vertical 16:9 format while maintaining aspect ratio. It's particularly useful for adapting landscape content for vertical video platforms like TikTok, Instagram Reels, or YouTube Shorts. - -The node only processes images that are wider than they are tall (horizontal). Vertical images pass through unchanged. -""" -}) - -add_node_config("FlexImageContrast", { - "TOP_DESCRIPTION": "Adjusts the contrast and brightness of the image, with an option to preserve luminosity.", - "ADDITIONAL_INFO": """ -- `contrast`: Controls the amount of contrast adjustment (0.0 to 3.0). Values greater than 1.0 increase contrast, while values less than 1.0 decrease it. -- `brightness`: Adjusts the overall brightness of the image (-1.0 to 1.0). Positive values brighten the image, negative values darken it. -- `preserve_luminosity`: When enabled, maintains the overall luminosity of the image after applying contrast and brightness adjustments (True/False). -- `feature_param`: Parameter to modulate based on the feature. Options are "contrast", "brightness", "preserve_luminosity", "None". - -This node allows for dynamic adjustment of image contrast and brightness, with the ability to preserve the overall luminosity of the image. It's useful for enhancing image details, adjusting exposure, or creating dramatic lighting effects. - -The contrast adjustment is applied around the mean value of the image, which helps maintain the overall balance of the image. The brightness adjustment is applied uniformly across the image. - -When 'preserve_luminosity' is enabled, the node calculates and adjusts the final luminosity to match the original image, which can help prevent over-brightening or over-darkening when applying strong contrast adjustments. - -Use cases include: -1. Enhancing low-contrast images -2. Creating high-contrast, dramatic effects -3. Correcting under or overexposed images -4. Dynamically adjusting image tone based on audio or other features -""" -}) - -add_node_config("FlexImageEdgeDetect", { - "TOP_DESCRIPTION": "Applies edge detection to the image using the Canny algorithm.", - "ADDITIONAL_INFO": """ -- `low_threshold`: Lower bound for the hysteresis thresholding (0 to 255). -- `high_threshold`: Upper bound for the hysteresis thresholding (0 to 255). -- `feature_param`: Parameter to modulate based on the feature. Options are "low_threshold", "high_threshold", "None". - -This node detects edges in the image using the Canny edge detection algorithm. The thresholds control the sensitivity of the edge detection. -""" -}) - -add_node_config("FlexImagePosterize", { - "TOP_DESCRIPTION": "Applies a posterization effect to the image, reducing the number of colors.", - "ADDITIONAL_INFO": """ -- `max_levels`: Maximum number of color levels per channel (2 to 256). -- `dither_strength`: Intensity of dithering effect (0.0 to 1.0). -- `channel_separation`: Degree of separation between color channels (0.0 to 1.0). -- `gamma`: Gamma correction applied before posterization (0.1 to 2.2). -- `feature_param`: Parameter to modulate based on the feature. Options are "max_levels", "dither_strength", "channel_separation", "gamma", "None". - -This node reduces the number of colors in the image, creating a posterized effect. Dithering can be applied to reduce banding. -""" -}) - -add_node_config("FlexImageKaleidoscope", { - "TOP_DESCRIPTION": "Creates a kaleidoscope effect by mirroring and rotating segments of the image.", - "ADDITIONAL_INFO": """ -- `segments`: Number of mirror segments (2 to 32). -- `center_x`: X-coordinate of the effect center (0.0 to 1.0). -- `center_y`: Y-coordinate of the effect center (0.0 to 1.0). -- `zoom`: Zoom factor for the effect (0.1 to 2.0). -- `rotation`: Rotation angle of the effect (0.0 to 360.0 degrees). -- `precession`: Rate of rotation change over time (-1.0 to 1.0). -- `speed`: Speed of the effect animation (0.1 to 5.0). -- `feature_param`: Parameter to modulate based on the feature. Options are "segments", "zoom", "rotation", "precession", "speed", "None". - -This node creates a kaleidoscope effect by mirroring and rotating segments of the image. -""" -}) - -add_node_config("FlexImageColorGrade", { - "TOP_DESCRIPTION": "Applies color grading to the image using a Look-Up Table (LUT).", - "ADDITIONAL_INFO": """ -- `intensity`: Strength of the color grading effect (0.0 to 1.0). -- `mix`: Blend factor between original and graded image (0.0 to 1.0). -- `lut_file`: Path to the LUT file (optional). -- `feature_param`: Parameter to modulate based on the feature. Options are "intensity", "mix", "None". - -This node applies color grading to the image using a LUT. The intensity and mix parameters control the strength and blend of the effect. -""" -}) - -add_node_config("FlexImageGlitch", { - "TOP_DESCRIPTION": "Creates a glitch effect by applying horizontal shifts and color channel separation.", - "ADDITIONAL_INFO": """ -- `shift_amount`: Magnitude of horizontal shift (0.0 to 1.0). -- `scan_lines`: Number of scan lines to add (0 to 100). -- `color_shift`: Amount of color channel separation (0.0 to 1.0). -- `feature_param`: Parameter to modulate based on the feature. Options are "shift_amount", "scan_lines", "color_shift", "None". - -This node creates a glitch effect by shifting pixels horizontally and separating color channels. -""" -}) - -add_node_config("FlexImageChromaticAberration", { - "TOP_DESCRIPTION": "Simulates chromatic aberration by shifting color channels.", - "ADDITIONAL_INFO": """ -- `shift_amount`: Magnitude of color channel shift (0.0 to 0.1). -- `angle`: Angle of the shift effect (0.0 to 360.0 degrees). -- `feature_param`: Parameter to modulate based on the feature. Options are "shift_amount", "angle", "None". - -This node simulates chromatic aberration by shifting the red and blue color channels in opposite directions. -""" -}) - -add_node_config("FlexImagePixelate", { - "TOP_DESCRIPTION": "Applies a pixelation effect to the image.", - "ADDITIONAL_INFO": """ -- `pixel_size`: Size of each pixelated block (1 to 100 pixels). -- `feature_param`: Parameter to modulate based on the feature. Options are "pixel_size", "None". - -This node reduces the resolution of the image by applying a pixelation effect. -""" -}) - -add_node_config("FlexImageBloom", { - "TOP_DESCRIPTION": "Adds a bloom effect to bright areas of the image.", - "ADDITIONAL_INFO": """ -- `threshold`: Brightness threshold for the bloom effect (0.0 to 1.0). -- `blur_amount`: Amount of blur applied to the bloom (0.0 to 50.0). -- `intensity`: Strength of the bloom effect (0.0 to 1.0). -- `feature_param`: Parameter to modulate based on the feature. Options are "threshold", "blur_amount", "intensity", "None". - -This node adds a bloom effect to bright areas of the image, creating a glowing effect. -""" -}) - -add_node_config("FlexImageTiltShift", { - "TOP_DESCRIPTION": "Creates a tilt-shift effect, simulating a shallow depth of field.", - "ADDITIONAL_INFO": """ -- `blur_amount`: Strength of the blur effect (0.0 to 50.0). -- `focus_position_x`: X-coordinate of the focus center (0.0 to 1.0). -- `focus_position_y`: Y-coordinate of the focus center (0.0 to 1.0). -- `focus_width`: Width of the focus area (0.0 to 1.0). -- `focus_height`: Height of the focus area (0.0 to 1.0). -- `focus_shape`: Shape of the focus area ("rectangle" or "ellipse"). -- `feature_param`: Parameter to modulate based on the feature. Options are "blur_amount", "focus_position_x", "focus_position_y", "focus_width", "focus_height", "None". - -This node creates a tilt-shift effect, simulating a shallow depth of field by blurring areas outside the focus region. -""" -}) - -add_node_config("FlexImageParallax", { - "TOP_DESCRIPTION": "Applies a parallax effect to the image using a depth map.", - "ADDITIONAL_INFO": """ -- `shift_x`: Horizontal shift factor for the parallax effect (-1.0 to 1.0). Positive values shift right, negative values shift left. -- `shift_y`: Vertical shift factor for the parallax effect (-1.0 to 1.0). Positive values shift up, negative values shift down. -- `depth_map`: Input depth map (IMAGE type). The depth map is used to determine the amount of shift for each pixel. -- `feature_param`: Parameter to modulate based on the feature. Options are "shift_x", "shift_y", "None". - -This node creates a parallax effect by shifting pixels in the image based on the corresponding values in the depth map. The shift factors `shift_x` and `shift_y` control the direction and magnitude of the parallax effect. The depth map should be provided as an image, where the intensity of each pixel represents the depth value. -""" -}) - -add_node_config("FlexImageHueShift", { - "TOP_DESCRIPTION": "Applies a hue shift effect to the image, modulated by a selected feature.", - "ADDITIONAL_INFO": """ -- `hue_shift`: Amount of hue shift to apply (0.0 to 360.0 degrees). A value of 180 degrees will invert the hues. -- `feature_param`: Parameter to modulate based on the feature. Options are "hue_shift" or "None". - -Optional inputs: -- `opt_mask`: Optional mask to apply the effect selectively (MASK type) - -This node shifts the hues of the input image by the specified amount. The hue shift can be dynamically modulated by the input feature, allowing for time-varying color effects. The optional mask input allows for selective application of the effect to specific areas of the image. - -The hue shift is applied in the HSV color space, which means it affects the color of the image without changing its brightness or saturation. This can create interesting color transformation effects, such as: - -1. Subtle color grading by applying small hue shifts -2. Creating psychedelic or surreal effects with large hue shifts -3. Simulating color filters or gels used in photography and film -4. Generating day-to-night transitions by shifting blues towards oranges - -When used with feature modulation, this node can create dynamic color effects that respond to audio, motion, or other extracted features, making it useful for creating reactive visuals or music videos. - -Note: Extreme hue shifts may produce unexpected colors, especially for hues that are close to the wrap-around point (red). For more natural-looking results, consider using smaller hue shift values or combining with other color adjustment effects. -""" -}) - -add_node_config("FlexImageDepthWarp", { - "TOP_DESCRIPTION": "Applies a depth-based warping effect to the image, modulated by a selected feature.", - "ADDITIONAL_INFO": """ -- `warp_strength`: Strength of the warping effect (-10.0 to 10.0). Negative values invert the warp direction. -- `feature_param`: Parameter to modulate based on the feature. Options are "warp_strength" or "None". - -Optional inputs: -- `depth_map`: Depth map for the input image (IMAGE type) - -This node applies a warping effect to the input image based on the provided depth map. The warping strength can be dynamically modulated by the input feature, allowing for time-varying distortion effects. The depth map is used to determine the amount of displacement for each pixel. - -The warping process works as follows: -1. The depth map is normalized to the range [0, 1]. -2. Displacements are computed based on the depth values and the warp strength. -3. The image is remapped using these displacements, creating a warped version of the original image. - -Use cases include: -1. Creating pseudo-3D effects by warping 2D images based on depth information -2. Simulating camera movements or parallax effects -3. Generating dynamic distortions that respond to audio or other features - -When no depth map is provided, the node will return the original image without any warping applied. - -Note: The strength and nature of the warping effect can vary significantly depending on the depth map and warp strength. Experiment with different values to achieve the desired effect. Also, be aware that extreme warping can introduce artifacts or distortions in the image. -""" -}) - -add_node_config("UtilityNode",{ - "BASE_DESCRIPTION":"Various Utils" -}) - -add_node_config("ImageIntervalSelect", { - "TOP_DESCRIPTION": "Selects images from a sequence at specified intervals.", - "ADDITIONAL_INFO": """ -- `image`: Input image sequence (IMAGE type) -- `interval`: Interval at which to select images (1 to 100000) -- `start_at`: Starting index for selection (0 to 100000) -- `end_at`: Ending index for selection (0 to 100000) -""" -}) - -add_node_config("ImageIntervalSelectPercentage", { - "TOP_DESCRIPTION": "Selects images from a sequence at specified percentage intervals.", - "ADDITIONAL_INFO": """ -- `image`: Input image sequence (IMAGE type) -- `interval_percentage`: Interval at which to select images as a percentage of the total sequence length (1 to 100) -- `start_percentage`: Starting percentage for selection (0 to 100) -- `end_percentage`: Ending percentage for selection (0 to 100) -""" -}) - -add_node_config("DepthInjection", { - "TOP_DESCRIPTION": "Modifies depth maps based on mask contours, creating spherical gradients.", - "ADDITIONAL_INFO": """ -- `depth_map`: Input depth map (IMAGE type) -- `mask`: Input mask to define areas for depth modification (MASK type) -- `gradient_steepness`: Controls the steepness of the spherical gradient (0.1 to 10.0). Higher values create sharper transitions. -- `depth_min`: Minimum depth value for the modified areas (0.0 to 1.0) -- `depth_max`: Maximum depth value for the modified areas (0.0 to 1.0) -- `strength`: Overall strength of the depth modification effect (0.0 to 1.0) - -This node modifies depth maps by creating spherical gradients based on the contours of the input mask. It's useful for adding depth variations to specific areas of an image, such as creating a sense of volume for masked objects. - -The process involves: -1. Finding contours in the mask -2. Generating spherical gradients for each contour -3. Scaling the gradients to the specified depth range -4. Blending the modified depth with the original depth map - -This node can be particularly effective for: -- Adding depth to flat objects in a scene -- Creating a sense of volume for masked areas -- Fine-tuning depth maps for more realistic 3D effects - -Note: The node currently doesn't use the feature modulation capabilities, but these could be added in future versions for dynamic depth modifications. -""" -}) - -add_node_config("ImageChunks", { - "TOP_DESCRIPTION": "Concatenates images into a grid.", - "ADDITIONAL_INFO": """ -- `image`: Input image sequence (IMAGE type) -- `padding`: Padding between images in the grid (default: 0) -- `normalize`: Whether to normalize the images (default: False) -- `scale_each`: Whether to scale each image individually (default: False) -- `pad_value`: Value for padding (default: 0) -""" -}) - -add_node_config("VideoChunks", { - "TOP_DESCRIPTION": "Chunks images into grids.", - "ADDITIONAL_INFO": """ -- `image`: Input image sequence (IMAGE type) -- `chunk_size`: Number of images per grid (default: 4, min: 1) -- `padding`: Padding between images in the grid (default: 2) -- `normalize`: Whether to normalize the images (default: False) -- `scale_each`: Whether to scale each image individually (default: False) -- `pad_value`: Value for padding (default: 0) -""" -}) - -add_node_config("SwapDevice", { - "TOP_DESCRIPTION": "Transfers the image and mask tensors to the specified device (CPU or CUDA).", - "ADDITIONAL_INFO": """ -- `device`: The target device to transfer the tensors to. Options are "cpu" or "cuda". -- `image`: (Optional) The image tensor to transfer. If not provided, a zero tensor is created. -- `mask`: (Optional) The mask tensor to transfer. If not provided, a zero tensor is created. - -This node checks if the specified device is available and transfers the image and mask tensors to that device. If the device is not available, it raises a ValueError. -""" -}) - -add_node_config("ImageShuffle", { - "TOP_DESCRIPTION": "Shuffles images in groups of specified size.", - "ADDITIONAL_INFO": """ -- `image`: Input image sequence (IMAGE type) -- `shuffle_size`: Number of images per shuffle group (default: 4, min: 1) -""" -}) - -add_node_config("ImageDifference", { - "TOP_DESCRIPTION": "Computes the difference between consecutive images.", - "ADDITIONAL_INFO": """ -- `image`: Input image sequence (IMAGE type) -""" -}) - -add_node_config("EffectVisualizer", { - "TOP_DESCRIPTION": "Visualizes feature values on video frames.", - "ADDITIONAL_INFO": """ -- `video_frames`: Input video frames (IMAGE type) -- `feature`: Feature to visualize (FEATURE type) -- `text_color`: Color for text overlay (RGB string, e.g., "(255,255,255)") -- `font_scale`: Scale factor for the font size (0.1 to 2.0) -""" -}) - -add_node_config("ProximityVisualizer", { - "TOP_DESCRIPTION": "Visualizes proximity relationships between anchor and query locations on video frames.", - "ADDITIONAL_INFO": """ -- `anchor_locations`: Locations of anchor points (LOCATION type) -- `query_locations`: Locations of query points (LOCATION type) -- `feature`: Proximity feature to visualize (FEATURE type) -- `anchor_color`: Color for anchor points (RGB string, e.g., "(255,0,0)") -- `query_color`: Color for query points (RGB string, e.g., "(0,255,0)") -- `line_color`: Color for the line connecting closest points (RGB string, e.g., "(0,0,255)") - - -The visualization helps in understanding spatial relationships and proximity-based effects in the video sequence. -""" -}) - -add_node_config("PitchVisualizer", { - "TOP_DESCRIPTION": "Visualizes pitch-related information on video frames.", - "ADDITIONAL_INFO": """ -- `video_frames`: Input video frames (IMAGE type) -- `feature`: Pitch feature to visualize (FEATURE type) -- `text_color`: Color of the text overlay (RGB string, e.g., "(255,255,255)") -- `font_scale`: Scale factor for the font size (0.1 to 2.0) - -This node overlays pitch-related information on video frames, including: -- Feature value -- Pitch value in Hz -- Confidence value of the pitch detection -- Approximate musical note - -The information is displayed as text on each frame, allowing for easy visualization of pitch characteristics alongside the video content. -""" -}) - -add_node_config("FlexVideoBase", { - "TOP_DESCRIPTION": "Base class for flexible video effect nodes.", - "ADDITIONAL_INFO": """ -- `images`: Input video frames (IMAGE type) -- `feature`: Feature used to modulate the effect (FEATURE type) -- `strength`: Overall strength of the effect (0.0 to 2.0) -- `feature_mode`: How the feature modulates the parameter ("relative" or "absolute") -- `feature_param`: Parameter to be modulated by the feature -- `feature_threshold`: Minimum feature value to apply the effect (0.0 to 1.0) -- `feature_pipe`: (Sometimes Optional) Feature pipe containing frame information (FEATURE_PIPE type) -""" -}) - -add_node_config("FlexVideoDirection", { - "TOP_DESCRIPTION": "Applies a direction-based effect to video frames based on feature values.", - "ADDITIONAL_INFO": """ -- Inherits parameters from FlexVideoBase -- `feature_pipe`: (Optional) Feature pipe containing frame information (FEATURE_PIPE type) - -This node creates a video effect by selecting frames based on the input feature values. It can create effects like reversing, speeding up, or creating loops in the video sequence. -""" -}) - -add_node_config("FlexVideoSpeed", { - "TOP_DESCRIPTION": "Adjusts the playback speed of video frames based on feature values.", - "ADDITIONAL_INFO": """ -- Inherits parameters from FlexVideoBase -- `feature_pipe`: Feature pipe containing frame information (FEATURE_PIPE type) -- `max_speed_percent`: Maximum speed as a percentage of the original speed (1.0 to 1000.0) -- `duration_adjustment_method`: Method to adjust video duration ("Interpolate" or "Truncate/Repeat") - -This node modifies the playback speed of the video based on the input feature values. It can create effects like slow motion, fast forward, or variable speed playback. -""" -}) - -add_node_config("FlexVideoFrameBlend", { - "TOP_DESCRIPTION": "Applies frame blending effect to video frames based on feature values.", - "ADDITIONAL_INFO": """ -- Inherits parameters from FlexVideoBase -- `blend_strength`: Strength of the frame blending effect (0.0 to 1.0) - -This node creates a frame blending effect, where each frame is blended with the next frame. The strength of the blend is modulated by the input feature values, allowing for dynamic motion blur effects. -""" -}) - -add_node_config("FlexVideoSeek", { - "TOP_DESCRIPTION": "Applies a seeking effect to video frames based on feature values.", - "ADDITIONAL_INFO": """ -- `images`: Input video frames (IMAGE type) -- `feature`: Feature used to modulate the seeking effect (FEATURE type) -- `strength`: Overall strength of the seeking effect (0.0 to 2.0) -- `feature_mode`: How the feature modulates the parameter ("relative" or "absolute") -- `feature_param`: Parameter to be modulated by the feature -- `feature_threshold`: Minimum feature value to apply the effect (0.0 to 1.0) -- `seek_speed`: Speed of the seeking effect (0.0 to 5.0) - -This node creates a dynamic seeking effect in the video based on the input feature values. The seek_speed parameter controls how quickly the video seeks through frames, while the feature values modulate this speed over time. This can create interesting time manipulation effects, such as speeding up or slowing down different parts of the video based on audio features or other inputs. - -The strength parameter allows for overall control of the effect intensity, while feature_mode determines whether the feature values are applied relatively or absolutely to the base seek_speed. - -Use cases include: -1. Creating music-reactive video effects where the video seeks based on audio features -2. Generating time-lapse-like effects with variable speeds -3. Producing glitch-like visuals by rapidly seeking through frames - -Note: This effect can significantly alter the temporal coherence of the video, so use it judiciously for artistic effects. -""" -}) - -add_node_config("AudioPad", { - "TOP_DESCRIPTION": "Pads the audio waveform with specified values on the left and right sides.", - "ADDITIONAL_INFO": """ -- `audio`: Input audio to be padded (AUDIO type) -- `pad_left`: Number of samples to pad on the left side (0 to 44100) -- `pad_right`: Number of samples to pad on the right side (0 to 44100) -- `pad_mode`: Method of padding ("constant", "reflect", "replicate", or "circular") - -This node allows you to add padding to the beginning and/or end of an audio waveform. It's useful for adjusting the length of audio clips or creating space for effects. -""" -}) - -add_node_config("AudioVolumeNormalization", { - "TOP_DESCRIPTION": "Normalizes the volume of the audio to a target level.", - "ADDITIONAL_INFO": """ -- `audio`: Input audio to be normalized (AUDIO type) -- `target_level`: Desired RMS level in decibels (-60.0 to 0.0 dB) - -This node adjusts the volume of the input audio to reach a specified target level. It's useful for ensuring consistent volume across different audio clips or adjusting the overall loudness of an audio sample. -""" -}) - -add_node_config("AudioResample", { - "TOP_DESCRIPTION": "Resamples the audio to a new sample rate.", - "ADDITIONAL_INFO": """ -- `audio`: Input audio to be resampled (AUDIO type) -- `new_sample_rate`: Desired new sample rate (8000 to 192000 Hz) - -This node changes the sample rate of the input audio. It's useful for matching sample rates between different audio sources or preparing audio for specific processing requirements. -""" -}) - -add_node_config("AudioChannelMerge", { - "TOP_DESCRIPTION": "Merges two mono audio inputs into a stereo output.", - "ADDITIONAL_INFO": """ -- `audio1`: First input audio channel (AUDIO type) -- `audio2`: Second input audio channel (AUDIO type) - -This node combines two mono audio inputs into a single stereo audio output. It's useful for creating stereo effects or combining separate audio tracks. -""" -}) - -add_node_config("AudioChannelSplit", { - "TOP_DESCRIPTION": "Splits a stereo audio input into two mono outputs.", - "ADDITIONAL_INFO": """ -- `audio`: Input stereo audio to be split (AUDIO type) - -This node separates a stereo audio input into two mono audio outputs. It's useful for processing individual channels separately or extracting a single channel from a stereo recording. -""" -}) - -add_node_config("AudioTimeStretch", { - "TOP_DESCRIPTION": "Stretches or compresses the audio in time without changing its pitch.", - "ADDITIONAL_INFO": """ -- `audio`: Input audio to be time-stretched (AUDIO type) -- `rate`: Time stretching factor (0.5 to 2.0) - -This node changes the duration of the audio without altering its pitch. A rate greater than 1.0 speeds up the audio, while a rate less than 1.0 slows it down. It's useful for adjusting the length of audio to fit a specific duration or creating time-based effects. -""" -}) - -add_node_config("AudioConcatenate", { - "TOP_DESCRIPTION": "Concatenates two audio inputs end-to-end.", - "ADDITIONAL_INFO": """ -- `audio1`: First input audio (AUDIO type) -- `audio2`: Second input audio (AUDIO type) - -This node joins two audio inputs sequentially, with the second audio following the first. It's useful for combining multiple audio clips into a single, longer audio stream. -""" -}) - -add_node_config("AudioCombine", { - "TOP_DESCRIPTION": "Combines two audio inputs by mixing them together with specified weights.", - "ADDITIONAL_INFO": """ -- `audio1`: First input audio (AUDIO type) -- `audio2`: Second input audio (AUDIO type) -- `weight1`: Weight for the first audio input (0.0 to 1.0) -- `weight2`: Weight for the second audio input (0.0 to 1.0) - -This node mixes two audio inputs together, allowing you to control the contribution of each input to the final output. It's useful for creating layered audio effects or blending different audio sources. -""" -}) - - -add_node_config("ImageScaleToTarget", { - "TOP_DESCRIPTION": "Scales an input image to match the dimensions of a target image.", - "ADDITIONAL_INFO": """ -- `image`: Input image to be scaled (IMAGE type) -- `target_image`: Image whose dimensions will be used as the target size (IMAGE type) -- `upscale_method`: Method used for upscaling. Options include: - - "nearest-exact": Nearest neighbor interpolation - - "bilinear": Bilinear interpolation - - "area": Area interpolation - - "bicubic": Bicubic interpolation - - "lanczos": Lanczos interpolation -- `crop`: Cropping method to use if aspect ratios don't match. Options are: - - "disabled": No cropping - - "center": Center crop - -This node scales the input image to match the dimensions of the target image. If the target image has a width or height of 0, the node will calculate the missing dimension to maintain the aspect ratio of the input image. - -The upscale_method parameter allows you to choose the interpolation method for scaling, which can affect the quality and characteristics of the output image. - -If the aspect ratios of the input and target images don't match, you can use the crop parameter to determine how to handle the mismatch. The "center" option will crop the scaled image from the center to match the target dimensions. - -Outputs: -- Scaled IMAGE matching the dimensions of the target image -""" -}) - -add_node_config("FlexAudioVisualizerCircular", { - "TOP_DESCRIPTION": "Creates a circular audio visualization based on frequency or waveform data.", - "ADDITIONAL_INFO": """ -- `audio`: Input audio to visualize -- `frame_rate`: Frame rate of the output visualization (1.0 to 240.0 fps) -- `screen_width`: Width of the output visualization (100 to 1920 pixels) -- `screen_height`: Height of the output visualization (100 to 1080 pixels) -- `strength`: Strength of parameter modulation (0.0 to 1.0) -- `feature_param`: Parameter to modulate based on the optional feature input -- `feature_mode`: Mode of parameter modulation ("relative" or "absolute") -- `audio_feature_param`: Parameter to modulate based on audio features -- `position_x`: Horizontal position of the visualization center (0.0 to 1.0) -- `position_y`: Vertical position of the visualization center (0.0 to 1.0) -- `visualization_method`: Choose between "bar" or "line" visualization styles -- `visualization_feature`: Select "frequency" or "waveform" as the data source -- `smoothing`: Amount of smoothing applied to the visualization (0.0 to 1.0) -- `rotation`: Rotation angle of the visualization in degrees (0.0 to 360.0) -- `num_points`: Number of points in the circular visualization (3 to 1000) -- `fft_size`: Size of the FFT window for frequency analysis (256 to 8192) -- `min_frequency`: Minimum frequency to visualize (20.0 to 20000.0 Hz) -- `max_frequency`: Maximum frequency to visualize (20.0 to 20000.0 Hz) -- `radius`: Radius of the circular visualization (10.0 to 1000.0 pixels) -- `line_width`: Width of the lines in the visualization (1 to 10 pixels) -- `amplitude_scale`: Scaling factor for the amplitude (1.0 to 1000.0) -- `base_radius`: Base radius for the visualization (10.0 to 1000.0 pixels) - -This node creates a circular audio visualization that can represent either frequency spectrum or waveform data. The visualization can be displayed as bars radiating from the center or as a continuous line forming a deformed circle. - -Key features: -1. Two visualization methods: bar and line -2. Option to visualize frequency spectrum or waveform data -3. Customizable parameters for fine-tuning the visualization appearance -4. Parameter modulation based on audio features or external inputs -5. Adjustable position and rotation -6. Outputs both visualization and mask - -The node outputs both an IMAGE tensor (visualization) and a MASK tensor that can be used for compositing. -""" -}) - -add_node_config("FlexAudioVisualizerLine", { - "TOP_DESCRIPTION": "Creates a linear audio visualization based on frequency or waveform data.", - "ADDITIONAL_INFO": """ -- `audio`: Input audio to visualize -- `frame_rate`: Frame rate of the output visualization (1.0 to 240.0 fps) -- `screen_width`: Width of the output visualization (100 to 1920 pixels) -- `screen_height`: Height of the output visualization (100 to 1080 pixels) -- `strength`: Strength of parameter modulation (0.0 to 1.0) -- `feature_param`: Parameter to modulate based on the optional feature input -- `feature_mode`: Mode of parameter modulation ("relative" or "absolute") -- `audio_feature_param`: Parameter to modulate based on audio features -- `position_x`: Horizontal position of the visualization (0.0 to 1.0) -- `position_y`: Vertical position of the visualization (0.0 to 1.0) -- `visualization_method`: Choose between "bar" or "line" visualization styles -- `visualization_feature`: Select "frequency" or "waveform" as the data source -- `smoothing`: Amount of smoothing applied to the visualization (0.0 to 1.0) -- `rotation`: Rotation angle of the visualization in degrees (0.0 to 360.0) -- `num_bars`: Number of bars or points in the visualization (1 to 1024) -- `max_height`: Maximum height of the visualization (10.0 to 2000.0 pixels) -- `min_height`: Minimum height of the visualization (0.0 to 500.0 pixels) -- `separation`: Separation between bars (0.0 to 100.0 pixels) -- `curvature`: Curvature of the bar corners (0.0 to 50.0) -- `reflect`: Whether to reflect the visualization vertically -- `curve_smoothing`: Amount of smoothing applied to the line visualization (0.0 to 1.0) -- `fft_size`: Size of the FFT window for frequency analysis (256 to 8192) -- `min_frequency`: Minimum frequency to visualize (20.0 to 20000.0 Hz) -- `max_frequency`: Maximum frequency to visualize (20.0 to 20000.0 Hz) - -This node creates a linear audio visualization that can represent either frequency spectrum or waveform data. The visualization can be displayed as vertical bars or as a continuous line. - -Key features: -1. Two visualization methods: bar and line -2. Option to visualize frequency spectrum or waveform data -3. Customizable parameters for fine-tuning the visualization appearance -4. Parameter modulation based on audio features or external inputs -5. Reflection and rotation options -6. Outputs both visualization and mask - -The node outputs both an IMAGE tensor (visualization) and a MASK tensor that can be used for compositing. -""" -}) \ No newline at end of file + NODE_CONFIGS[node_name] = config \ No newline at end of file diff --git a/nodes/audio/audio_nodes.py b/nodes/audio/audio_nodes.py index 23a5859..ae74efe 100644 --- a/nodes/audio/audio_nodes.py +++ b/nodes/audio/audio_nodes.py @@ -10,6 +10,7 @@ from ..flex.feature_pipe import FeaturePipe import hashlib import torchaudio +from ...tooltips import apply_tooltips class AudioNodeBase(RyanOnTheInside): @@ -23,6 +24,7 @@ def create_empty_tensor(audio, frame_rate, height, width, channels=None): else: return torch.zeros((num_frames, height, width, channels), dtype=torch.float32) +@apply_tooltips class DownloadOpenUnmixModel(AudioNodeBase): @classmethod def INPUT_TYPES(cls): @@ -59,68 +61,9 @@ def download_and_load_model(self, model_name): return (separator,) -class AudioSeparator(AudioNodeBase): - @classmethod - def INPUT_TYPES(cls): - return { - "required": { - "model": ("OPEN_UNMIX_MODEL",), - "audio": ("AUDIO",), - "video_frames": ("IMAGE",), - "frame_rate": ("FLOAT", {"default": 30, "min": 0.1, "max": 120, "step": 0.1}), - } - } - - RETURN_TYPES = ("AUDIO", "AUDIO", "AUDIO", "AUDIO", "AUDIO", "FEATURE_PIPE") - RETURN_NAMES = ("audio", "drums_audio", "vocals_audio", "bass_audio", "other_audio", "feature_pipe") - FUNCTION = "process_audio" - CATEGORY = "RyanOnTheInside/Audio/AudioSeparation" - def process_audio(self, model, audio, video_frames, frame_rate): - waveform = audio['waveform'] - sample_rate = audio['sample_rate'] - - num_frames, height, width, _ = video_frames.shape - - if waveform.dim() == 3: - waveform = waveform.squeeze(0) - if waveform.dim() == 1: - waveform = waveform.unsqueeze(0) # Add channel dimension if mono - if waveform.shape[0] != 2: - waveform = waveform.repeat(2, 1) # Duplicate mono to stereo if necessary - - waveform = waveform.unsqueeze(0) - - # Determine the device - device = next(model.parameters()).device - waveform = waveform.to(device) - estimates = model(waveform) - # Create isolated audio objects for each target - isolated_audio = {} - target_indices = {'drums': 1, 'vocals': 0, 'bass': 2, 'other': 3} # Corrected indices - for target, index in target_indices.items(): - target_waveform = estimates[:, index, :, :] # Shape: (1, 2, num_samples) - - isolated_audio[target] = { - 'waveform': target_waveform.cpu(), # Move back to CPU - 'sample_rate': sample_rate, - 'frame_rate': frame_rate - } - - # Create FeaturePipe - feature_pipe = FeaturePipe(frame_rate, video_frames) - - return ( - audio, - isolated_audio['drums'], - isolated_audio['vocals'], - isolated_audio['bass'], - isolated_audio['other'], - feature_pipe, - ) - -#to be primary in version2 +@apply_tooltips class AudioSeparatorSimple(AudioNodeBase): @classmethod def INPUT_TYPES(cls): @@ -174,6 +117,7 @@ def process_audio(self, model, audio): isolated_audio['other'] ) +@apply_tooltips class AudioFilter(AudioNodeBase): @classmethod def INPUT_TYPES(cls): @@ -267,6 +211,7 @@ def apply_single_filter(self, audio, filter_params, sample_rate): # return (model,) +@apply_tooltips class FrequencyFilterPreset(AudioNodeBase): @classmethod def INPUT_TYPES(cls): @@ -342,6 +287,7 @@ def get_preset_filters(self, preset): else: raise ValueError(f"Unknown preset: {preset}") +@apply_tooltips class FrequencyFilterCustom(AudioNodeBase): @classmethod def INPUT_TYPES(cls): @@ -376,6 +322,7 @@ def create_filter(self, filter_type, order, cutoff, previous_filter=None): else: return ([filter_params],) +@apply_tooltips class FrequencyRange(AudioNodeBase): @classmethod def INPUT_TYPES(cls): @@ -411,6 +358,7 @@ def create_frequency_range(self, low_cutoff, high_cutoff, order, previous_range= else: return ([range_params],) +@apply_tooltips class AudioFeatureVisualizer(AudioNodeBase): @classmethod def INPUT_TYPES(cls): @@ -495,6 +443,7 @@ def visualize_audio_feature(self, audio, video_frames, visualization_type, frame return (mask,) +@apply_tooltips class EmptyImageFromAudio(AudioNodeBase): @classmethod def INPUT_TYPES(cls): @@ -517,6 +466,7 @@ def create_empty_image(self, audio, frame_rate, height, width): frame_count = empty_image.shape[0] return (empty_image, frame_count) +@apply_tooltips class EmptyMaskFromAudio(AudioNodeBase): @classmethod @@ -585,8 +535,8 @@ def create_empty_mask(self, audio, frame_rate, height, width): # if not folder_paths.exists_annotated_filepath(audio): # return "Invalid audio file: {}".format(audio) # return True - -#TODO + +@apply_tooltips class EmptyImageAndMaskFromAudio(AudioNodeBase): @classmethod def INPUT_TYPES(cls): diff --git a/nodes/audio/audio_nodes_effects.py b/nodes/audio/audio_nodes_effects.py index 92b936b..3de88e0 100644 --- a/nodes/audio/audio_nodes_effects.py +++ b/nodes/audio/audio_nodes_effects.py @@ -5,7 +5,8 @@ apply_gain, time_stretch, ) -import torch +from ...tooltips import apply_tooltips + class AudioEffect(AudioNodeBase): def __init__(self): @@ -13,6 +14,7 @@ def __init__(self): CATEGORY = "RyanOnTheInside/Audio/Effects" +@apply_tooltips class AudioPitchShift(AudioEffect): @classmethod def INPUT_TYPES(cls): @@ -31,6 +33,7 @@ def pitch_shift_audio(self, audio, n_steps): shifted_waveform = pitch_shift(waveform, sample_rate, n_steps) return ({"waveform": shifted_waveform, "sample_rate": sample_rate},) +@apply_tooltips class AudioFade(AudioEffect): @classmethod def INPUT_TYPES(cls): @@ -51,6 +54,7 @@ def fade_audio_node(self, audio, fade_in_duration, fade_out_duration, shape): faded_waveform = fade_audio(waveform, sample_rate, fade_in_duration, fade_out_duration, shape) return ({"waveform": faded_waveform, "sample_rate": sample_rate},) +@apply_tooltips class AudioGain(AudioEffect): @classmethod def INPUT_TYPES(cls): @@ -69,8 +73,7 @@ def apply_gain_node(self, audio, gain_db): amplified_waveform = apply_gain(waveform, gain_db) return ({"waveform": amplified_waveform, "sample_rate": sample_rate},) - - +@apply_tooltips class AudioTimeStretch(AudioEffect): @classmethod def INPUT_TYPES(cls): diff --git a/nodes/audio/audio_nodes_utility.py b/nodes/audio/audio_nodes_utility.py index 00fe057..0fdda17 100644 --- a/nodes/audio/audio_nodes_utility.py +++ b/nodes/audio/audio_nodes_utility.py @@ -10,6 +10,8 @@ dither_audio, ) import torch +from ...tooltips import apply_tooltips +import librosa class AudioUtility(AudioNodeBase): def __init__(self): @@ -17,6 +19,7 @@ def __init__(self): CATEGORY = "RyanOnTheInside/Audio/Utility" +@apply_tooltips class AudioPad(AudioUtility): @classmethod def INPUT_TYPES(cls): @@ -37,6 +40,7 @@ def pad_audio_node(self, audio, pad_left, pad_right, pad_mode): padded_waveform = pad_audio(waveform, pad_left, pad_right, pad_mode) return ({"waveform": padded_waveform, "sample_rate": sample_rate},) +@apply_tooltips class AudioVolumeNormalization(AudioUtility): @classmethod def INPUT_TYPES(cls): @@ -55,6 +59,7 @@ def normalize_volume_node(self, audio, target_level): normalized_waveform = normalize_volume(waveform, target_level) return ({"waveform": normalized_waveform, "sample_rate": sample_rate},) +@apply_tooltips class AudioResample(AudioUtility): @classmethod def INPUT_TYPES(cls): @@ -73,6 +78,7 @@ def resample_audio_node(self, audio, new_sample_rate): resampled_waveform = resample_audio(waveform, sample_rate, new_sample_rate) return ({"waveform": resampled_waveform, "sample_rate": new_sample_rate},) +@apply_tooltips class AudioChannelMerge(AudioUtility): @classmethod def INPUT_TYPES(cls): @@ -97,6 +103,7 @@ def merge_channels_node(self, audio_list): merged_waveform = merge_channels(waveform_list) return ({"waveform": merged_waveform, "sample_rate": sample_rate},) +@apply_tooltips class AudioChannelSplit(AudioUtility): @classmethod def INPUT_TYPES(cls): @@ -115,6 +122,7 @@ def split_channels_node(self, audio): audio_list = [{"waveform": w, "sample_rate": sample_rate} for w in channel_waveforms] return (audio_list,) +@apply_tooltips class AudioConcatenate(AudioUtility): @classmethod def INPUT_TYPES(cls): @@ -136,6 +144,7 @@ def concatenate_audio_node(self, audio1, audio2): concatenated_waveform = concatenate_audio(audio1['waveform'], audio2['waveform']) return ({"waveform": concatenated_waveform, "sample_rate": sample_rate},) +@apply_tooltips class Audio_Combine(AudioUtility): @classmethod def INPUT_TYPES(cls): @@ -159,6 +168,7 @@ def combine_audio_node(self, audio1, audio2, weight1=0.5, weight2=0.5): combined_waveform = combine_audio(audio1['waveform'], audio2['waveform'], weight1, weight2) return ({"waveform": combined_waveform, "sample_rate": sample_rate},) +@apply_tooltips class AudioSubtract(AudioUtility): @classmethod def INPUT_TYPES(cls): @@ -189,27 +199,50 @@ def subtract_audio_node(self, audio1, audio2): subtracted_waveform = waveform1 - waveform2 return ({"waveform": subtracted_waveform, "sample_rate": sample_rate},) +#TODO: TOO SLOW +@apply_tooltips class AudioInfo(AudioUtility): @classmethod def INPUT_TYPES(cls): return { "required": { "audio": ("AUDIO",), + "frame_rate": ("FLOAT", {"default": 30, "min": 0.1, "max": 120, "step": 0.1}), } } - RETURN_TYPES = ("FLOAT", "INT", "INT", "INT", "FLOAT", "FLOAT", "FLOAT", "STRING") - RETURN_NAMES = ("duration_seconds", "sample_rate", "num_channels", "num_samples", - "max_amplitude", "mean_amplitude", "rms_amplitude", "bit_depth") + RETURN_TYPES = ("INT", "INT", "INT", "INT", "INT", "FLOAT", "FLOAT", "FLOAT", "INT", "INT", "INT", "FLOAT", "FLOAT", "FLOAT", "STRING") + RETURN_NAMES = ( + "total_frames", "frames_per_beat", "frames_per_bar", "frames_per_quarter", "frames_per_eighth", + "audio_duration", "beats_per_second", "detected_bpm", + "sample_rate", "num_channels", "num_samples", + "max_amplitude", "mean_amplitude", "rms_amplitude", "bit_depth" + ) FUNCTION = "get_audio_info" - def get_audio_info(self, audio): - waveform, sample_rate = audio['waveform'], audio['sample_rate'] + def get_audio_info(self, audio, frame_rate): + # Get basic audio info + waveform = audio['waveform'] + sample_rate = audio['sample_rate'] + + # Calculate original audio info first + num_channels = waveform.shape[1] if waveform.dim() > 2 else 1 + num_samples = waveform.shape[-1] + audio_duration = num_samples / sample_rate + + # Calculate total frames + total_frames = int(audio_duration * frame_rate) + + # Detect BPM using librosa + audio_mono = waveform.squeeze(0).mean(axis=0).cpu().numpy() + tempo, _ = librosa.beat.beat_track(y=audio_mono, sr=sample_rate) + beats_per_second = tempo / 60.0 - # Calculate basic properties - num_channels = waveform.shape[1] - num_samples = waveform.shape[2] - duration_seconds = num_samples / sample_rate + # Calculate frames per beat and musical divisions + frames_per_beat = int(frame_rate / beats_per_second) + frames_per_bar = frames_per_beat * 4 # Assuming 4/4 time signature + frames_per_quarter = frames_per_beat + frames_per_eighth = frames_per_beat // 2 # Calculate amplitude statistics max_amplitude = float(torch.max(torch.abs(waveform))) @@ -220,7 +253,14 @@ def get_audio_info(self, audio): bit_depth = str(waveform.dtype) return ( - duration_seconds, + total_frames, + frames_per_beat, + frames_per_bar, + frames_per_quarter, + frames_per_eighth, + audio_duration, + beats_per_second, + tempo, # detected_bpm sample_rate, num_channels, num_samples, @@ -230,6 +270,7 @@ def get_audio_info(self, audio): bit_depth ) +@apply_tooltips class AudioDither(AudioUtility): @classmethod def INPUT_TYPES(cls): diff --git a/nodes/audio/audio_processor_legacy.py b/nodes/audio/audio_processor_legacy.py index 1dab3e8..cb2b3df 100644 --- a/nodes/audio/audio_processor_legacy.py +++ b/nodes/audio/audio_processor_legacy.py @@ -9,11 +9,12 @@ import torch import cv2 import matplotlib.pyplot as plt +from ... import ProgressMixin -class BaseAudioProcessor: +class BaseAudioProcessor(ProgressMixin): def __init__(self, audio, num_frames, height, width, frame_rate): self.audio = audio['waveform'].squeeze(0).mean(axis=0).cpu().numpy() # Convert to mono and numpy array self.sample_rate = audio['sample_rate'] @@ -24,18 +25,7 @@ def __init__(self, audio, num_frames, height, width, frame_rate): self.audio_duration = len(self.audio) / self.sample_rate self.frame_duration = 1 / self.frame_rate if self.frame_rate > 0 else self.audio_duration / self.num_frames - self.progress_bar = None - def start_progress(self, total_steps, desc="Processing"): - self.progress_bar = ProgressBar(total_steps) - - def update_progress(self): - if self.progress_bar: - self.progress_bar.update(1) - - def end_progress(self): - self.progress_bar = None - def _normalize(self, data): return (data - data.min()) / (data.max() - data.min()) diff --git a/nodes/audio/flex_audio.py b/nodes/audio/flex_audio.py index f2f7bbe..0940e52 100644 --- a/nodes/audio/flex_audio.py +++ b/nodes/audio/flex_audio.py @@ -1,46 +1,39 @@ import torch import numpy as np -from abc import ABC, abstractmethod +from abc import abstractmethod from tqdm import tqdm from comfy.utils import ProgressBar from ... import RyanOnTheInside +from ..flex.flex_base import FlexBase from .audio_utils import pitch_shift, time_stretch -import torch -import numpy as np -from abc import ABC, abstractmethod +from ...tooltips import apply_tooltips -class FlexAudioBase(RyanOnTheInside, ABC): +@apply_tooltips +class FlexAudioBase(FlexBase, RyanOnTheInside): @classmethod def INPUT_TYPES(cls): + base_input_types = super().INPUT_TYPES() + base_required = base_input_types.get("required", {}) + base_optional = base_input_types.get("optional", {}) + + # Update required inputs + base_required.update({ + "audio": ("AUDIO",), + "target_fps": ("FLOAT", {"default": 3.0, "min": 1.0, "max": 60.0, "step": 1.0}), + }) + return { - "required": { - "audio": ("AUDIO",), - "feature": ("FEATURE",), - "feature_pipe": ("FEATURE_PIPE",), - "strength": ("FLOAT", {"default": 1.0, "min": 0.0, "max": 1.0, "step": 0.01}), - "feature_threshold": ("FLOAT", {"default": 0.0, "min": 0.0, "max": 1.0, "step": 0.01}), - "feature_param": (cls.get_modifiable_params(), {"default": cls.get_modifiable_params()[0]}), - "feature_mode": (["relative", "absolute"], {"default": "relative"}), - "target_fps": ("FLOAT", {"default": 3.0, "min": 1.0, "max": 60.0, "step": 1.0}), - } + "required": base_required, + "optional": base_optional, } - CATEGORY = "RyanOnTheInside/FlexAudio" + CATEGORY = "RyanOnTheInside/FlexFeatures/Targets/Audio" RETURN_TYPES = ("AUDIO",) FUNCTION = "apply_effect" def __init__(self): - self.progress_bar = None - - def start_progress(self, total_steps, desc="Processing"): - self.progress_bar = ProgressBar(total_steps) - - def update_progress(self): - if self.progress_bar: - self.progress_bar.update(1) + super().__init__() - def end_progress(self): - self.progress_bar = None @classmethod @abstractmethod @@ -48,24 +41,21 @@ def get_modifiable_params(cls): """Return a list of parameter names that can be modulated.""" return [] - def modulate_param(self, param_value, feature_value, strength, mode): - if mode == "relative": - # Adjust to vary between -param_value and +param_value - return param_value * (2 * feature_value - 1) * strength - else: # absolute - # Directly use feature_value to determine the shift - return param_value * (2 * feature_value - 1) - - def apply_effect(self, audio, feature, feature_pipe, strength, feature_threshold, feature_param, feature_mode, target_fps, **kwargs): + def apply_effect(self, audio, opt_feature=None, strength=1.0, feature_threshold=0.0, feature_param=None, feature_mode="relative", target_fps=3.0, **kwargs): waveform = audio['waveform'] # Shape: [Batch, Channels, Samples] sample_rate = audio['sample_rate'] - original_num_frames = feature_pipe.frame_count device = torch.device("cuda" if torch.cuda.is_available() else "cpu") waveform = waveform.to(device) audio_duration = waveform.shape[-1] / sample_rate - target_num_frames = int(audio_duration * target_fps) - num_frames = min(target_num_frames, original_num_frames) + num_frames = int(audio_duration * target_fps) + + if opt_feature is not None: + original_num_frames = opt_feature.frame_count + num_frames = min(num_frames, original_num_frames) + + # Initialize parameter scheduler + self.initialize_scheduler(num_frames, **kwargs) self.start_progress(num_frames, desc=f"Applying {self.__class__.__name__}") @@ -78,11 +68,18 @@ def apply_effect(self, audio, feature, feature_pipe, strength, feature_threshold # Initialize list to store processed frames processed_frames = [] - # Pre-compute averaged feature values - feature_values = np.array([feature.get_value_at_frame(i) for i in range(original_num_frames)]) - frames_per_segment = max(1, original_num_frames // num_frames) - averaged_features = [np.mean(feature_values[i:i+frames_per_segment]) - for i in range(0, original_num_frames, frames_per_segment)] + # Pre-compute averaged feature values if feature is provided + if opt_feature is not None: + feature_values = np.array([ + 0.5 if self.get_feature_value(i, opt_feature) is None + else self.get_feature_value(i, opt_feature) + for i in range(opt_feature.frame_count) + ]) + frames_per_segment = max(1, opt_feature.frame_count // num_frames) + averaged_features = [np.mean(feature_values[i:i+frames_per_segment]) + for i in range(0, opt_feature.frame_count, frames_per_segment)] + else: + averaged_features = [None] * num_frames # No feature modulation # Define cross-fade length (e.g., 10% of frame length) crossfade_length = int(samples_per_frame * 0.1) @@ -94,16 +91,24 @@ def apply_effect(self, audio, feature, feature_pipe, strength, feature_threshold feature_value = averaged_features[i] - kwargs['frame_index'] = i - kwargs['sample_rate'] = sample_rate + # Process parameters using base class functionality + processed_kwargs = self.process_parameters( + frame_index=i, + feature_value=feature_value, + feature_threshold=feature_threshold, + strength=strength, + feature_param=feature_param, + feature_mode=feature_mode, + sample_rate=sample_rate, + **kwargs + ) - if feature_value >= feature_threshold: + if feature_value is not None and feature_value >= feature_threshold: try: processed_frame = self.process_audio_frame( - audio_frame, feature_value, strength, - feature_param=feature_param, + audio_frame,feature_param=feature_param, feature_mode=feature_mode, - **kwargs + **processed_kwargs ) except Exception as e: import traceback @@ -111,7 +116,8 @@ def apply_effect(self, audio, feature, feature_pipe, strength, feature_threshold traceback.print_exc() processed_frame = audio_frame else: - processed_frame = audio_frame + # Process without feature modulation + processed_frame = self.apply_effect_internal(audio_frame, **processed_kwargs) if i > 0: # Apply cross-fade with previous frame @@ -134,13 +140,14 @@ def apply_effect(self, audio, feature, feature_pipe, strength, feature_threshold def process_audio_frame(self, audio_frame: torch.Tensor, feature_value: float, strength: float, feature_param: str, feature_mode: str, **kwargs) -> torch.Tensor: - # Modulate the selected parameter - if feature_param in self.get_modifiable_params() and feature_param in kwargs: + # Modulate the selected parameter if feature_value is provided + if feature_value is not None and feature_param in self.get_modifiable_params() and feature_param in kwargs: + param_value = kwargs[feature_param] modulated_value = self.modulate_param( - kwargs[feature_param], feature_value, strength, feature_mode + feature_param, param_value, feature_value, strength, feature_mode ) - # Ensure n_steps is within the desired range - kwargs[feature_param] = max(-kwargs[feature_param], min(kwargs[feature_param], modulated_value)) + # Ensure the modulated value is within the desired range + kwargs[feature_param] = modulated_value # Call the child class's implementation return self.apply_effect_internal(audio_frame, **kwargs) @@ -150,18 +157,22 @@ def apply_effect_internal(self, audio_frame: torch.Tensor, **kwargs) -> torch.Te """Apply the effect to the audio frame. To be implemented by child classes.""" pass - - - - +@apply_tooltips class FlexAudioPitchShift(FlexAudioBase): @classmethod def INPUT_TYPES(cls): + base_input_types = super().INPUT_TYPES() + base_required = base_input_types.get("required", {}) + base_optional = base_input_types.get("optional", {}) + + # Update required inputs + base_required.update({ + "n_steps": ("FLOAT", {"default": 6.0, "min": 0.0, "max": 12.0, "step": 0.1}), + }) + return { - "required": { - **super().INPUT_TYPES()["required"], - "n_steps": ("FLOAT", {"default": 6.0, "min": 0.0, "max": 12.0, "step": 0.1}), - } + "required": base_required, + "optional": base_optional, } @classmethod @@ -170,18 +181,26 @@ def get_modifiable_params(cls): def apply_effect_internal(self, audio_frame: torch.Tensor, n_steps: float, **kwargs) -> torch.Tensor: sample_rate = kwargs.get('sample_rate', 44100) # Default to 44100 if not provided - - # Use the absolute value of n_steps for pitch shifting + + # Use the value of n_steps for pitch shifting return pitch_shift(audio_frame, sample_rate, n_steps) - + +@apply_tooltips class FlexAudioTimeStretch(FlexAudioBase): @classmethod def INPUT_TYPES(cls): + base_input_types = super().INPUT_TYPES() + base_required = base_input_types.get("required", {}) + base_optional = base_input_types.get("optional", {}) + + # Update required inputs + base_required.update({ + "rate": ("FLOAT", {"default": 1.0, "min": 0.5, "max": 2.0, "step": 0.01}), + }) + return { - "required": { - **super().INPUT_TYPES()["required"], - "rate": ("FLOAT", {"default": 1.0, "min": 0.5, "max": 2.0, "step": 0.01}), - } + "required": base_required, + "optional": base_optional, } @classmethod @@ -189,4 +208,4 @@ def get_modifiable_params(cls): return ["rate"] def apply_effect_internal(self, audio_frame: torch.Tensor, rate: float, **kwargs) -> torch.Tensor: - return time_stretch(audio_frame, rate) \ No newline at end of file + return time_stretch(audio_frame, rate) diff --git a/nodes/audio/flex_audio_visualizer.py b/nodes/audio/flex_audio_visualizer.py index 7477ba5..7ae5e65 100644 --- a/nodes/audio/flex_audio_visualizer.py +++ b/nodes/audio/flex_audio_visualizer.py @@ -1,9 +1,12 @@ import torch import numpy as np import cv2 -from abc import ABC, abstractmethod +from abc import abstractmethod from comfy.utils import ProgressBar +from ..flex.flex_base import FlexBase from ... import RyanOnTheInside +from ...tooltips import apply_tooltips + import matplotlib.pyplot as plt class BaseAudioProcessor: @@ -88,43 +91,39 @@ def update_spectrum(self, new_spectrum, smoothing): # Apply smoothing self.spectrum = smoothing * self.spectrum + (1 - smoothing) * new_spectrum -class FlexAudioVisualizerBase(RyanOnTheInside, ABC): +@apply_tooltips +class FlexAudioVisualizerBase(FlexBase, RyanOnTheInside): @classmethod def INPUT_TYPES(cls): - return { + base_inputs = super().INPUT_TYPES() + base_required = base_inputs.get("required", {}) + base_optional = base_inputs.get("optional", {}) + + new_inputs = { "required": { "audio": ("AUDIO",), "frame_rate": ("FLOAT", {"default": 30.0, "min": 1.0, "max": 240.0, "step": 1.0}), - "screen_width": ("INT", {"default": 800, "min": 100, "max": 1920, "step": 1}), - "screen_height": ("INT", {"default": 600, "min": 100, "max": 1080, "step": 1}), - "strength": ("FLOAT", {"default": 1.0, "min": 0.0, "max": 1.0, "step": 0.01}), - "feature_param": (cls.get_modifiable_params(), {"default": cls.get_modifiable_params()[0]}), - "feature_mode": (["relative", "absolute"], {"default": "relative"}), - "audio_feature_param": (cls.get_modifiable_params(), {"default": "None"}), + "screen_width": ("INT", {"default": 768, "min": 100, "max": 1920, "step": 1}), + "screen_height": ("INT", {"default": 464, "min": 100, "max": 1080, "step": 1}), "position_x": ("FLOAT", {"default": 0.5, "min": 0.0, "max": 1.0, "step": 0.01}), "position_y": ("FLOAT", {"default": 0.5, "min": 0.0, "max": 1.0, "step": 0.01}), }, "optional": { - "opt_feature": ("FEATURE",) + "opt_feature": ("FEATURE",), } } - CATEGORY = "RyanOnTheInside/FlexAudioVisualizer" - RETURN_TYPES = ("IMAGE","MASK") - FUNCTION = "apply_effect" + required = {**base_required, **new_inputs["required"]} + optional = {**base_optional, **new_inputs["optional"]} - def __init__(self): - self.progress_bar = None - - def start_progress(self, total_steps, desc="Processing"): - self.progress_bar = ProgressBar(total_steps) - - def update_progress(self): - if self.progress_bar: - self.progress_bar.update(1) + return { + "required": required, + "optional": optional + } - def end_progress(self): - self.progress_bar = None + CATEGORY = "RyanOnTheInside/FlexFeatures/Targets/Audio/Visualizers" + RETURN_TYPES = ("IMAGE", "MASK") + FUNCTION = "apply_effect" @classmethod @abstractmethod @@ -132,72 +131,6 @@ def get_modifiable_params(cls): """Return a list of parameter names that can be modulated.""" pass - def modulate_param(self, param_name, param_value, feature_value, strength, mode): - if mode == "relative": - modulated_value = param_value * (1 + (feature_value - 0.5) * strength * 2) - else: # absolute - modulated_value = param_value * feature_value * strength - # Ensure type consistency - return type(param_value)(modulated_value) - - def apply_effect(self, audio, frame_rate, screen_width, screen_height, strength, feature_param, feature_mode, - audio_feature_param, opt_feature=None, **kwargs): - # Calculate num_frames based on audio duration and frame_rate - audio_duration = len(audio['waveform'].squeeze(0).mean(axis=0)) / audio['sample_rate'] - num_frames = int(audio_duration * frame_rate) - - # Initialize the audio processor - processor = BaseAudioProcessor(audio, num_frames, screen_height, screen_width, frame_rate) - - # Initialize results list - result = [] - - self.start_progress(num_frames, desc=f"Applying {self.__class__.__name__}") - - for i in range(num_frames): - # Make a copy of kwargs for this frame to avoid altering original parameters - frame_kwargs = kwargs.copy() - - # Get audio data for visualization (returns audio_feature_value) - audio_feature_value = self.get_audio_data(processor, i, **frame_kwargs) - - # Modulate parameters based on opt_feature if provided - if opt_feature is not None and feature_param != "None": - # Get feature value from opt_feature - feature_value = opt_feature.get_value_at_frame(i) - - if feature_value is not None: - # Modulate the specified parameter using feature_value - original_value = frame_kwargs[feature_param] - modulated_value = self.modulate_param(feature_param, original_value, feature_value, strength, feature_mode) - # Ensure the modulated value is within valid ranges - modulated_value = self.validate_param(feature_param, modulated_value) - frame_kwargs[feature_param] = modulated_value - - # Modulate parameters based on audio feature value if audio_feature_param is set - if audio_feature_param != "None" and audio_feature_value is not None: - original_value = frame_kwargs[audio_feature_param] - modulated_value = self.modulate_param(audio_feature_param, original_value, audio_feature_value, strength, feature_mode) - # Ensure the modulated value is within valid ranges - modulated_value = self.validate_param(audio_feature_param, modulated_value) - frame_kwargs[audio_feature_param] = modulated_value - - # Generate the image for the current frame using frame_kwargs - image = self.draw(processor, **frame_kwargs) - result.append(image) - - self.update_progress() - - self.end_progress() - - # Convert the list of numpy arrays to a single numpy array - result_np = np.stack(result) # Shape: (N, H, W, 3) - - #lazy - result_tensor = torch.from_numpy(result_np).float() - mask = result_tensor[:, :, :, 0] - return (result_tensor,mask,) - def validate_param(self, param_name, param_value): """ Ensure that modulated parameter values stay within valid ranges. @@ -221,7 +154,6 @@ def validate_param(self, param_name, param_value): 'radius': lambda x: max(1.0, x), 'base_radius': lambda x: max(1.0, x), 'amplitude_scale': lambda x: max(0.0, x), - # Add other parameters as needed } if param_name in valid_params: @@ -248,7 +180,7 @@ def get_audio_data(self, processor: BaseAudioProcessor, frame_index, **kwargs): pass @abstractmethod - def draw(self, processor: BaseAudioProcessor, **kwargs) -> np.ndarray: + def apply_effect_internal(self, processor: BaseAudioProcessor, **kwargs) -> np.ndarray: """ Abstract method to generate the image for the current frame. Returns: @@ -296,34 +228,100 @@ def process_audio_data(self, processor: BaseAudioProcessor, frame_index, visuali feature_value = np.mean(np.abs(processor.spectrum)) return processor.spectrum.copy(), feature_value + def apply_effect(self, audio, frame_rate, screen_width, screen_height, + strength, feature_param, feature_mode, feature_threshold, + opt_feature=None, **kwargs): + # Calculate num_frames based on audio duration and frame_rate + audio_duration = len(audio['waveform'].squeeze(0).mean(axis=0)) / audio['sample_rate'] + num_frames = int(audio_duration * frame_rate) + + # Initialize the audio processor + processor = BaseAudioProcessor(audio, num_frames, screen_height, screen_width, frame_rate) + + # Initialize results list + result = [] + + self.start_progress(num_frames, desc=f"Applying {self.__class__.__name__}") + + for i in range(num_frames): + processor.current_frame = i + + # First process parameters to get the correct values for this frame + processed_kwargs = self.process_parameters( + frame_index=i, + feature_value=self.get_feature_value(i, opt_feature) if opt_feature is not None else None, + feature_param=feature_param if opt_feature is not None else None, + feature_mode=feature_mode if opt_feature is not None else None, + strength=strength, + feature_threshold=feature_threshold, + **kwargs + ) + processed_kwargs["frame_index"] = i + + # Get audio data using the processed parameters + spectrum, _ = self.process_audio_data( + processor, + i, + processed_kwargs.get('visualization_feature'), + processed_kwargs.get('num_points', processed_kwargs.get('num_bars')), + processed_kwargs.get('smoothing'), + processed_kwargs.get('fft_size'), + processed_kwargs.get('min_frequency'), + processed_kwargs.get('max_frequency') + ) + + # Generate the image for the current frame + image = self.apply_effect_internal(processor, **processed_kwargs) + result.append(image) + + self.update_progress() + + self.end_progress() + + # Convert result to tensor + result_np = np.stack(result) + result_tensor = torch.from_numpy(result_np).float() + mask = result_tensor[:, :, :, 0] + + return (result_tensor, mask,) + +@apply_tooltips class FlexAudioVisualizerLine(FlexAudioVisualizerBase): @classmethod def INPUT_TYPES(cls): - return { - **super().INPUT_TYPES(), + base_inputs = super().INPUT_TYPES() + base_required = base_inputs.get("required", {}) + base_optional = base_inputs.get("optional", {}) + + new_inputs = { "required": { - **super().INPUT_TYPES()["required"], "visualization_method": (["bar", "line"], {"default": "bar"}), "visualization_feature": (["frequency", "waveform"], {"default": "frequency"}), # Parameters common to both methods/features "smoothing": ("FLOAT", {"default": 0.5, "min": 0.0, "max": 1.0, "step": 0.01}), - "rotation": ("FLOAT", {"default":0.0, "min": 0.0, "max": 360.0, "step": 1.0}), - # "position_y": ("FLOAT", {"default":0.5, "min":0.0, "max":1.0,"step":0.01}), - # Additional parameters - "num_bars": ("INT", {"default":64, "min":1, "max":1024, "step":1}), - "max_height": ("FLOAT", {"default":200.0, "min":10.0, "max":2000.0, "step":10.0}), - "min_height": ("FLOAT", {"default":10.0, "min":0.0, "max":500.0, "step":5.0}), - "separation": ("FLOAT", {"default":5.0, "min":0.0, "max":100.0, "step":1.0}), - "curvature": ("FLOAT", {"default":0.0, "min":0.0, "max":50.0, "step":1.0}), + "rotation": ("FLOAT", {"default": 0.0, "min": 0.0, "max": 360.0, "step": 1.0}), + "length": ("FLOAT", {"default": 0.0, "min": 0.0, "max": 4000.0, "step": 10.0}), + # Parameters common to both methods/features + "num_bars": ("INT", {"default": 64, "min": 1, "max": 1024, "step": 1}), + "max_height": ("FLOAT", {"default": 200.0, "min": 10.0, "max": 2000.0, "step": 10.0}), + "min_height": ("FLOAT", {"default": 10.0, "min": 0.0, "max": 500.0, "step": 5.0}), + "separation": ("FLOAT", {"default": 5.0, "min": 0.0, "max": 100.0, "step": 1.0}), + "curvature": ("FLOAT", {"default": 0.0, "min": 0.0, "max": 50.0, "step": 1.0}), + "curve_smoothing": ("FLOAT", {"default": 0.0, "min": 0.0, "max": 1.0, "step": 0.01}), + "fft_size": ("INT", {"default": 2048, "min": 256, "max": 8192, "step": 256}), + "min_frequency": ("FLOAT", {"default": 20.0, "min": 20.0, "max": 20000.0, "step": 10.0}), + "max_frequency": ("FLOAT", {"default": 8000.0, "min": 20.0, "max": 20000.0, "step": 10.0}), "reflect": ("BOOLEAN", {"default": False}), - "curve_smoothing": ("FLOAT", {"default":0.0, "min": 0.0, "max":1.0, "step": 0.01}), - "fft_size": ("INT", {"default":2048, "min":256, "max":8192, "step":256}), - "min_frequency": ("FLOAT", {"default":20.0, "min":20.0, "max":20000.0, "step":10.0}), - "max_frequency": ("FLOAT", {"default":8000.0, "min":20.0, "max":20000.0, "step":10.0}), } } - FUNCTION = "apply_effect" + required = {**base_required, **new_inputs["required"]} + optional = base_optional + + return { + "required": required, + "optional": optional + } @classmethod def get_modifiable_params(cls): @@ -333,7 +331,6 @@ def get_modifiable_params(cls): def __init__(self): super().__init__() - self.bars = None def get_audio_data(self, processor: BaseAudioProcessor, frame_index, **kwargs): visualization_feature = kwargs.get('visualization_feature') @@ -345,7 +342,7 @@ def get_audio_data(self, processor: BaseAudioProcessor, frame_index, **kwargs): max_frequency = kwargs.get('max_frequency') # Use the base class method - self.bars, feature_value = self.process_audio_data( + _, feature_value = self.process_audio_data( processor, frame_index, visualization_feature, @@ -358,60 +355,78 @@ def get_audio_data(self, processor: BaseAudioProcessor, frame_index, **kwargs): return feature_value - def draw(self, processor: BaseAudioProcessor, **kwargs): + def apply_effect_internal(self, processor: BaseAudioProcessor, **kwargs): visualization_method = kwargs.get('visualization_method') screen_width = processor.width screen_height = processor.height rotation = kwargs.get('rotation') % 360 position_y = kwargs.get('position_y') - reflect = kwargs.get('reflect') - num_bars = kwargs.get('num_bars') # Get the potentially modulated num_bars - - image = np.zeros((screen_height, screen_width, 3), dtype=np.float32) + position_x = kwargs.get('position_x') + reflect = kwargs.get('reflect', False) + num_bars = kwargs.get('num_bars') + length = kwargs.get('length', 0.0) + max_height = kwargs.get('max_height') + min_height = kwargs.get('min_height') - # Ensure self.bars matches the current num_bars - if self.bars is None or len(self.bars) != num_bars: - if self.bars is not None: - # Interpolate existing data to match new num_bars - old_indices = np.linspace(0, 1, len(self.bars)) - new_indices = np.linspace(0, 1, num_bars) - self.bars = np.interp(new_indices, old_indices, self.bars) + # Calculate visualization length based on rotation when length is 0 + if length == 0: + # Convert rotation to radians + rotation_rad = np.deg2rad(rotation) + # For rotation 0° or 180°, use width + # For rotation 90° or 270°, use height + # For other angles, calculate the appropriate length + cos_theta = abs(np.cos(rotation_rad)) + sin_theta = abs(np.sin(rotation_rad)) + + if cos_theta > sin_theta: + # Closer to horizontal (0° or 180°) + visualization_length = screen_width / cos_theta else: - self.bars = np.zeros(num_bars) + # Closer to vertical (90° or 270°) + visualization_length = screen_height / sin_theta + else: + visualization_length = length - max_height = kwargs.get('max_height') - min_height = kwargs.get('min_height') + # Create a larger canvas to handle rotation without clipping + # Ensure all dimensions are integers + padding = int(max(visualization_length, max_height) * 0.5) + padded_width = int(visualization_length + 2 * padding) + padded_height = int(screen_height + 2 * padding) + padded_image = np.zeros((padded_height, padded_width, 3), dtype=np.float32) + + # Get the current spectrum data + data = processor.spectrum if visualization_method == 'bar': curvature = kwargs.get('curvature') separation = kwargs.get('separation') - - # Calculate bar width + # Calculate bar width based on visualization length total_separation = separation * (num_bars - 1) - total_bar_width = screen_width - total_separation + total_bar_width = visualization_length - total_separation bar_width = total_bar_width / num_bars - # Baseline Y position - baseline_y = int(screen_height * position_y) + # Center the visualization at the middle of the padded image + baseline_y = padded_height // 2 + x_offset = (padded_width - visualization_length) // 2 # Draw bars - for i, bar_value in enumerate(self.bars): - x = int(i * (bar_width + separation)) + for i, bar_value in enumerate(data): + x = int(x_offset + i * (bar_width + separation)) bar_h = min_height + (max_height - min_height) * bar_value - # Draw bar depending on reflect + # Draw bar based on reflect direction if reflect: - y_start = int(baseline_y - bar_h) + y_start = int(baseline_y) y_end = int(baseline_y + bar_h) else: y_start = int(baseline_y - bar_h) y_end = int(baseline_y) # Ensure y_start and y_end are within bounds - y_start = max(min(y_start, screen_height - 1), 0) - y_end = max(min(y_end, screen_height - 1), 0) + y_start = max(0, y_start) + y_end = min(padded_height - 1, y_end) # Swap y_start and y_end if necessary if y_start > y_end: @@ -431,22 +446,21 @@ def draw(self, processor: BaseAudioProcessor, **kwargs): mask = np.full((rect_height, rect_width), 0, dtype=np.uint8) cv2.rectangle(mask, (0, 0), (rect_width - 1, rect_height - 1), 255, -1) if radius > 1: - mask = cv2.GaussianBlur(mask, (radius*2+1, radius*2+1), 0) + mask = cv2.GaussianBlur(mask, (radius * 2 + 1, radius * 2 + 1), 0) # Apply mask rect[mask > 0] = color # Place rect onto image - image[y_start:y_end, x:x+rect_width] = rect + padded_image[y_start:y_end, x:x + rect_width] = rect else: - cv2.rectangle(image, (x, y_start), (x_end, y_end), color, thickness=-1) + cv2.rectangle(padded_image, (x, y_start), (x_end, y_end), color, thickness=-1) elif visualization_method == 'line': curve_smoothing = kwargs.get('curve_smoothing') - - # Baseline Y position - baseline_y = screen_height * position_y + # Center the visualization + baseline_y = padded_height // 2 + x_offset = (padded_width - visualization_length) // 2 # Apply curve smoothing if specified - data = self.bars if curve_smoothing > 0: window_size = int(len(data) * curve_smoothing) if window_size % 2 == 0: @@ -462,35 +476,37 @@ def draw(self, processor: BaseAudioProcessor, **kwargs): amplitude_range = max_height - min_height amplitude = min_height + data_smooth * amplitude_range - # X-axis + # X-axis using visualization length num_points = len(amplitude) - x_values = np.linspace(0, screen_width, num_points) + x_values = np.linspace(x_offset, x_offset + visualization_length, num_points) + # Single visualization with direction based on reflect if reflect: - # Reflect the visualization - y_values_up = baseline_y - amplitude - y_values_down = baseline_y + amplitude - - points_up = np.array([x_values, y_values_up]).T.astype(np.int32) - points_down = np.array([x_values, y_values_down]).T.astype(np.int32) - - # Draw the curves - if len(points_up) > 1: - cv2.polylines(image, [points_up], False, (1.0, 1.0, 1.0)) - if len(points_down) > 1: - cv2.polylines(image, [points_down], False, (1.0, 1.0, 1.0)) + y_values = baseline_y + amplitude else: - # Single visualization y_values = baseline_y - amplitude - points = np.array([x_values, y_values]).T.astype(np.int32) + points = np.array([x_values, y_values]).T.astype(np.int32) - if len(points) > 1: - cv2.polylines(image, [points], False, (1.0, 1.0, 1.0)) + if len(points) > 1: + cv2.polylines(padded_image, [points], False, (1.0, 1.0, 1.0)) # Apply rotation if needed if rotation != 0: - image = self.rotate_image(image, rotation) + # Rotate around center of padded image + M = cv2.getRotationMatrix2D((padded_width // 2, padded_height // 2), rotation, 1.0) + padded_image = cv2.warpAffine(padded_image, M, (padded_width, padded_height)) + + # Calculate final position + target_x = int(screen_width * position_x) + target_y = int(screen_height * position_y) + + # Calculate the region to extract from padded image + start_x = padded_width // 2 - target_x + start_y = padded_height // 2 - target_y + + # Extract the correctly positioned region + image = padded_image[start_y:start_y + screen_height, start_x:start_x + screen_width] return image @@ -502,31 +518,40 @@ def smooth_curve(self, y, window_size): y_smooth = np.convolve(y, box, mode='same') return y_smooth +@apply_tooltips class FlexAudioVisualizerCircular(FlexAudioVisualizerBase): @classmethod def INPUT_TYPES(cls): - return { - **super().INPUT_TYPES(), + base_inputs = super().INPUT_TYPES() + base_required = base_inputs.get("required", {}) + base_optional = base_inputs.get("optional", {}) + + new_inputs = { "required": { - **super().INPUT_TYPES()["required"], "visualization_method": (["bar", "line"], {"default": "bar"}), "visualization_feature": (["frequency", "waveform"], {"default": "frequency"}), # Parameters common to both methods/features - "smoothing": ("FLOAT", {"default":0.5, "min":0.0, "max":1.0, "step":0.01}), - "rotation": ("FLOAT", {"default": 0.0, "min":0.0, "max":360.0, "step":1.0}), - "num_points": ("INT", {"default":360, "min":3, "max":1000, "step":1}), + "smoothing": ("FLOAT", {"default": 0.5, "min": 0.0, "max": 1.0, "step": 0.01}), + "rotation": ("FLOAT", {"default": 0.0, "min": 0.0, "max": 360.0, "step": 1.0}), + "num_points": ("INT", {"default": 360, "min": 3, "max": 1000, "step": 1}), # Additional parameters - "fft_size": ("INT", {"default":2048, "min":256, "max":8192, "step":256}), - "min_frequency": ("FLOAT", {"default":20.0, "min":20.0, "max":20000.0, "step":10.0}), - "max_frequency": ("FLOAT", {"default":8000.0, "min":20.0, "max":20000.0, "step":10.0}), - "radius": ("FLOAT", {"default":200.0, "min":10.0, "max":1000.0, "step":10.0}), - "line_width": ("INT", {"default":2, "min":1, "max":10, "step":1}), - "amplitude_scale": ("FLOAT", {"default":100.0, "min":1.0, "max":1000.0, "step":10.0}), - "base_radius": ("FLOAT", {"default":200.0, "min":10.0, "max":1000.0, "step":10.0}), + "fft_size": ("INT", {"default": 2048, "min": 256, "max": 8192, "step": 256}), + "min_frequency": ("FLOAT", {"default": 20.0, "min": 20.0, "max": 20000.0, "step": 10.0}), + "max_frequency": ("FLOAT", {"default": 8000.0, "min": 20.0, "max": 20000.0, "step": 10.0}), + "radius": ("FLOAT", {"default": 200.0, "min": 10.0, "max": 1000.0, "step": 10.0}), + "line_width": ("INT", {"default": 2, "min": 1, "max": 10, "step": 1}), + "amplitude_scale": ("FLOAT", {"default": 100.0, "min": 1.0, "max": 1000.0, "step": 10.0}), + "base_radius": ("FLOAT", {"default": 200.0, "min": 10.0, "max": 1000.0, "step": 10.0}), } } - FUNCTION = "apply_effect" + required = {**base_required, **new_inputs["required"]} + optional = base_optional + + return { + "required": required, + "optional": optional + } @classmethod def get_modifiable_params(cls): @@ -560,7 +585,7 @@ def get_audio_data(self, processor: BaseAudioProcessor, frame_index, **kwargs): return feature_value - def draw(self, processor: BaseAudioProcessor, **kwargs): + def apply_effect_internal(self, processor: BaseAudioProcessor, **kwargs): visualization_method = kwargs.get('visualization_method') rotation = kwargs.get('rotation') % 360 num_points = kwargs.get('num_points') @@ -621,8 +646,245 @@ def draw(self, processor: BaseAudioProcessor, **kwargs): return image +@apply_tooltips +class FlexAudioVisualizerContour(FlexAudioVisualizerBase): + @classmethod + def INPUT_TYPES(cls): + base_inputs = super().INPUT_TYPES() + base_required = base_inputs.get("required", {}) + base_optional = base_inputs.get("optional", {}) + # Remove screen_width, screen_height, position_x, and position_y + for param in ["screen_width", "screen_height", "position_x", "position_y"]: + if param in base_required: + del base_required[param] + new_inputs = { + "required": { + "mask": ("MASK",), # Input mask to find contour + "visualization_method": (["bar", "line"], {"default": "bar"}), + "visualization_feature": (["frequency", "waveform"], {"default": "frequency"}), + # Parameters common to both methods + "smoothing": ("FLOAT", {"default": 0.5, "min": 0.0, "max": 1.0, "step": 0.01}), + "num_points": ("INT", {"default": 360, "min": 3, "max": 1000, "step": 1}), + # Audio processing parameters + "fft_size": ("INT", {"default": 2048, "min": 256, "max": 8192, "step": 256}), + "min_frequency": ("FLOAT", {"default": 20.0, "min": 20.0, "max": 20000.0, "step": 10.0}), + "max_frequency": ("FLOAT", {"default": 8000.0, "min": 20.0, "max": 20000.0, "step": 10.0}), + # Visualization parameters + "bar_length": ("FLOAT", {"default": 20.0, "min": 1.0, "max": 100.0, "step": 1.0}), + "line_width": ("INT", {"default": 2, "min": 1, "max": 10, "step": 1}), + "contour_smoothing": ("INT", {"default": 0, "min": 0, "max": 50, "step": 1}), + "rotation": ("FLOAT", {"default": 0.0, "min": 0.0, "max": 360.0, "step": 1.0}), + # New parameters for direction and multi-contour + "direction": (["outward", "inward", "both"], {"default": "outward"}), + "min_contour_area": ("FLOAT", {"default": 100.0, "min": 0.0, "max": 10000.0, "step": 10.0}), + "max_contours": ("INT", {"default": 5, "min": 1, "max": 20, "step": 1}), + "distribute_by": (["area", "perimeter", "equal"], {"default": "perimeter"}), + } + } + required = {**base_required, **new_inputs["required"]} + optional = base_optional + return { + "required": required, + "optional": optional + } + + @classmethod + def get_modifiable_params(cls): + return ["smoothing", "rotation", "num_points", "fft_size", "min_frequency", "max_frequency", + "bar_length", "line_width", "contour_smoothing", "direction", "min_contour_area", + "max_contours", "None"] + + def apply_effect(self, audio, frame_rate, mask, strength, feature_param, feature_mode, + feature_threshold, opt_feature=None, **kwargs): + # Get dimensions from mask + batch_size, screen_height, screen_width = mask.shape + + # Add mask to kwargs for the draw method + kwargs['mask'] = mask + + # Call parent with mask dimensions as screen dimensions + return super().apply_effect( + audio, frame_rate, screen_width, screen_height, + strength, feature_param, feature_mode, feature_threshold, + opt_feature, **kwargs + ) + + def get_audio_data(self, processor: BaseAudioProcessor, frame_index, **kwargs): + # Reuse existing audio processing logic + visualization_feature = kwargs.get('visualization_feature') + smoothing = kwargs.get('smoothing') + num_points = kwargs.get('num_points') + fft_size = kwargs.get('fft_size') + min_frequency = kwargs.get('min_frequency') + max_frequency = kwargs.get('max_frequency') + + processor.spectrum, feature_value = self.process_audio_data( + processor, frame_index, visualization_feature, num_points, + smoothing, fft_size, min_frequency, max_frequency + ) + return feature_value + + def apply_effect_internal(self, processor: BaseAudioProcessor, **kwargs): + # Get parameters + mask = kwargs.get('mask') + visualization_method = kwargs.get('visualization_method') + batch_size, screen_height, screen_width = mask.shape + line_width = kwargs.get('line_width') + bar_length = kwargs.get('bar_length') + contour_smoothing = kwargs.get('contour_smoothing') + rotation = kwargs.get('rotation', 0.0) % 360.0 + direction = kwargs.get('direction', 'outward') + min_contour_area = kwargs.get('min_contour_area', 100.0) + max_contours = kwargs.get('max_contours', 5) + distribute_by = kwargs.get('distribute_by', 'perimeter') + + # Get the frame index from the processor's current state + frame_index = processor.current_frame if hasattr(processor, 'current_frame') else 0 + + # Create output image + image = np.zeros((screen_height, screen_width, 3), dtype=np.float32) + + # Use the mask corresponding to the current frame + frame_index = min(frame_index, batch_size - 1) # Ensure we don't exceed batch size + mask_uint8 = (mask[frame_index].numpy() * 255).astype(np.uint8) + + # Find contours + contours, _ = cv2.findContours(mask_uint8, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE) + + if not contours: + return image + + # Filter and sort contours by area + valid_contours = [c for c in contours if cv2.contourArea(c) >= min_contour_area] + valid_contours.sort(key=cv2.contourArea, reverse=True) + valid_contours = valid_contours[:max_contours] + + if not valid_contours: + return image + + # Calculate distribution weights based on chosen method + if distribute_by == 'area': + weights = [cv2.contourArea(c) for c in valid_contours] + elif distribute_by == 'perimeter': + weights = [cv2.arcLength(c, True) for c in valid_contours] + else: # 'equal' + weights = [1] * len(valid_contours) + + # Normalize weights + total_weight = sum(weights) + if total_weight == 0: + weights = [1 / len(weights)] * len(weights) + else: + weights = [w / total_weight for w in weights] + + # Get spectrum data + data = processor.spectrum + + # Function to process a single contour + def process_contour(contour, start_idx, end_idx, direction_multiplier=1.0): + # Apply contour smoothing if specified + if contour_smoothing > 0: + epsilon = contour_smoothing * cv2.arcLength(contour, True) * 0.01 + contour = cv2.approxPolyDP(contour, epsilon, True) + + # Prepare contour points + contour = contour.squeeze() + if len(contour.shape) < 2: # Handle single-point contours + return + + contour_length = len(contour) + if contour_length < 2: + return + + # Ensure the contour is closed + if not np.array_equal(contour[0], contour[-1]): + contour = np.vstack([contour, contour[0]]) + contour_length += 1 + + # Apply rotation as an offset along the contour + rotation_offset = int((rotation / 360.0) * contour_length) + + # Get the portion of data for this contour + contour_data = data[start_idx:end_idx] + num_points = len(contour_data) + + # Create points along the contour with rotation offset + indices = (np.linspace(0, contour_length - 1, num_points) + rotation_offset) % (contour_length - 1) + + # Interpolate contour points + x_coords = np.interp(indices, range(contour_length), contour[:, 0]) + y_coords = np.interp(indices, range(contour_length), contour[:, 1]) + + # Calculate normals along the contour + dx = np.gradient(x_coords) + dy = np.gradient(y_coords) + + # Normalize the normals + lengths = np.sqrt(dx**2 + dy**2) + lengths = np.where(lengths > 0, lengths, 1.0) + normals_x = -dy / lengths + normals_y = dx / lengths + + # Replace any NaN values + normals_x = np.nan_to_num(normals_x, 0.0) + normals_y = np.nan_to_num(normals_y, 0.0) + + if visualization_method == 'bar': + # Draw bars along the contour + for i, amplitude in enumerate(contour_data): + x1, y1 = int(x_coords[i]), int(y_coords[i]) + + # Apply direction multiplier to the bar length + bar_height = amplitude * bar_length * direction_multiplier + x2 = int(x1 + normals_x[i] * bar_height) + y2 = int(y1 + normals_y[i] * bar_height) + + # Clip coordinates to image bounds + x1 = np.clip(x1, 0, screen_width - 1) + y1 = np.clip(y1, 0, screen_height - 1) + x2 = np.clip(x2, 0, screen_width - 1) + y2 = np.clip(y2, 0, screen_height - 1) + + cv2.line(image, (x1, y1), (x2, y2), (1.0, 1.0, 1.0), thickness=line_width) + + else: # line mode + # Calculate points for the continuous line + points = np.column_stack([ + x_coords + normals_x * contour_data * bar_length * direction_multiplier, + y_coords + normals_y * contour_data * bar_length * direction_multiplier + ]).astype(np.int32) + + # Clip points to image bounds + points[:, 0] = np.clip(points[:, 0], 0, screen_width - 1) + points[:, 1] = np.clip(points[:, 1], 0, screen_height - 1) + + # Draw the continuous line + cv2.polylines(image, [points], True, (1.0, 1.0, 1.0), thickness=line_width) + + # Distribute data points among contours + total_points = len(data) + start_idx = 0 + + for i, (contour, weight) in enumerate(zip(valid_contours, weights)): + num_points = int(round(total_points * weight)) + if i == len(valid_contours) - 1: # Last contour gets remaining points + num_points = total_points - start_idx + end_idx = start_idx + num_points + + if direction == "both": + # For "both" direction, process the contour twice with half amplitude + process_contour(contour, start_idx, end_idx, 0.5) # Outward + process_contour(contour, start_idx, end_idx, -0.5) # Inward + else: + # For single direction, process once with full amplitude + direction_multiplier = -1.0 if direction == "inward" else 1.0 + process_contour(contour, start_idx, end_idx, direction_multiplier) + + start_idx = end_idx + + return image diff --git a/nodes/depth/depth_base.py b/nodes/depth/depth_base.py index a5aaddb..80723f6 100644 --- a/nodes/depth/depth_base.py +++ b/nodes/depth/depth_base.py @@ -1,24 +1,23 @@ import torch import numpy as np from abc import ABC, abstractmethod -from tqdm import tqdm from comfy.utils import ProgressBar -from ... import RyanOnTheInside +from ..flex.flex_base import FlexBase import cv2 +from ...tooltips import apply_tooltips -class FlexDepthBase(RyanOnTheInside, ABC): +#NOTE: in hindsight, much of this would have been better suited as mask-based operations +@apply_tooltips +class FlexDepthBase(FlexBase): @classmethod def INPUT_TYPES(cls): return { + **super().INPUT_TYPES(), "required": { + **super().INPUT_TYPES()["required"], "depth_maps": ("IMAGE",), - "feature": ("FEATURE",), - "feature_pipe": ("FEATURE_PIPE",), - "strength": ("FLOAT", {"default": 1.0, "min": 0.0, "max": 1.0, "step": 0.01}), - "feature_threshold": ("FLOAT", {"default": 0.0, "min": 0.0, "max": 1.0, "step": 0.01}), - "feature_param": (cls.get_modifiable_params(), {"default": cls.get_modifiable_params()[0]}), - "feature_mode": (["relative", "absolute"], {"default": "relative"}), - } + }, + # Optional inputs are inherited from FlexBase } CATEGORY = "RyanOnTheInside/DepthEffects" @@ -26,21 +25,12 @@ def INPUT_TYPES(cls): FUNCTION = "apply_effect" def __init__(self): - self.progress_bar = None - - def start_progress(self, total_steps, desc="Processing"): - self.progress_bar = ProgressBar(total_steps) - - def update_progress(self): - if self.progress_bar: - self.progress_bar.update(1) - - def end_progress(self): - self.progress_bar = None + super().__init__() @classmethod @abstractmethod def get_modifiable_params(cls): + """Return a list of parameter names that can be modulated.""" return [] @@ -50,27 +40,59 @@ def modulate_param(self, param_name, param_value, feature_value, strength, mode) else: # absolute return param_value * feature_value * strength - def apply_effect(self, depth_maps, feature, feature_pipe, strength, feature_threshold, feature_param, feature_mode, **kwargs): - num_frames = feature_pipe.frame_count + def apply_effect( + self, + depth_maps, + strength, + feature_threshold, + feature_param, + feature_mode, + opt_feature=None, + **kwargs + ): + num_frames = depth_maps.shape[0] depth_maps_np = depth_maps.cpu().numpy() - self.start_progress(num_frames, desc=f"Applying {self.__class__.__name__}") - - result = [] - for i in range(num_frames): - depth_map = depth_maps_np[i] - feature_value = feature.get_value_at_frame(i) - kwargs['frame_index'] = i - if feature_value >= feature_threshold: - processed_depth_map = self.process_depth_map(depth_map, feature_value, strength, - feature_param=feature_param, - feature_mode=feature_mode, - **kwargs) - else: - processed_depth_map = depth_map - - result.append(processed_depth_map) - self.update_progress() + if opt_feature is None: + self.start_progress(num_frames, desc=f"Applying {self.__class__.__name__}") + + result = [] + for i in range(num_frames): + processed_depth_map = self.process_depth_map( + depth_maps_np[i], + 0.5, # Default feature value when no feature is provided + strength, + feature_param=feature_param, + feature_mode=feature_mode, + frame_index=i, + **kwargs + ) + result.append(processed_depth_map) + self.update_progress() + else: + num_frames = opt_feature.frame_count + self.start_progress(num_frames, desc=f"Applying {self.__class__.__name__}") + + result = [] + for i in range(num_frames): + depth_map = depth_maps_np[i] + feature_value = self.get_feature_value(i, opt_feature) + feature_value = 0.5 if feature_value is None else feature_value + kwargs['frame_index'] = i + if feature_value >= feature_threshold: + processed_depth_map = self.process_depth_map( + depth_map, + feature_value, + strength, + feature_param=feature_param, + feature_mode=feature_mode, + **kwargs + ) + else: + processed_depth_map = depth_map + + result.append(processed_depth_map) + self.update_progress() self.end_progress() @@ -81,20 +103,30 @@ def apply_effect(self, depth_maps, feature, feature_pipe, strength, feature_thre result_tensor = torch.from_numpy(result_np).float() # Ensure the tensor is in BHWC format - if result_tensor.shape[1] != depth_maps.shape[1]: # Adjust as needed + if result_tensor.shape[1] != depth_maps.shape[1]: result_tensor = result_tensor.permute(0, 2, 3, 1) return (result_tensor,) - def process_depth_map(self, depth_map: np.ndarray, feature_value: float, strength: float, - feature_param: str, feature_mode: str, **kwargs) -> np.ndarray: + def process_depth_map( + self, + depth_map: np.ndarray, + feature_value: float, + strength: float, + feature_param: str, + feature_mode: str, + **kwargs + ) -> np.ndarray: # Modulate the selected parameter for param_name in self.get_modifiable_params(): - if param_name in kwargs: - if param_name == feature_param: - kwargs[param_name] = self.modulate_param(param_name, kwargs[param_name], - feature_value, strength, feature_mode) - + if param_name in kwargs and param_name == feature_param: + kwargs[param_name] = self.modulate_param( + param_name, + kwargs[param_name], + feature_value, + strength, + feature_mode + ) # Call the child class's implementation return self.apply_effect_internal(depth_map, **kwargs) @@ -104,6 +136,7 @@ def apply_effect_internal(self, depth_map: np.ndarray, **kwargs) -> np.ndarray: pass +@apply_tooltips class DepthInjection(FlexDepthBase): @classmethod def INPUT_TYPES(cls): @@ -178,6 +211,7 @@ def apply_effect_internal(self, depth_map: np.ndarray, mask, frame_index, **kwar return modified_depth +@apply_tooltips class DepthBlender(FlexDepthBase): @classmethod def INPUT_TYPES(cls): @@ -197,13 +231,14 @@ def INPUT_TYPES(cls): def get_modifiable_params(cls): return ["strength", "None"] - def apply_effect_internal(self, depth_map: np.ndarray, other_depth_maps, frame_index, **kwargs) -> np.ndarray: - blend_mode = kwargs.get('blend_mode') + def apply_effect_internal(self, depth_map: np.ndarray, other_depth_maps, blend_mode, **kwargs) -> np.ndarray: strength = kwargs.get('strength', 1.0) - + frame_index = kwargs.get('frame_index') # Get the other depth map for the current frame + other_depth_map = other_depth_maps[frame_index].cpu().numpy() + if blend_mode == "add": blended_depth = depth_map + other_depth_map elif blend_mode == "subtract": @@ -224,6 +259,7 @@ def apply_effect_internal(self, depth_map: np.ndarray, other_depth_maps, frame_i return modified_depth +@apply_tooltips class DepthRippleEffect(FlexDepthBase): @classmethod def INPUT_TYPES(cls): @@ -284,3 +320,5 @@ def apply_effect_internal(self, depth_map: np.ndarray, frame_index, **kwargs) -> modified_depth = np.clip(modified_depth, 0.0, 1.0) return modified_depth + + diff --git a/nodes/flex/feature_extractors.py b/nodes/flex/feature_extractors.py index ebd98ac..e9b51bb 100644 --- a/nodes/flex/feature_extractors.py +++ b/nodes/flex/feature_extractors.py @@ -1,57 +1,65 @@ -from .feature_pipe import FeaturePipe -from ... import RyanOnTheInside -from .features import ManualFeature, TimeFeature, DepthFeature, ColorFeature, BrightnessFeature, MotionFeature, AreaFeature, BaseFeature +from .features import ManualFeature, TimeFeature, DepthFeature, ColorFeature, BrightnessFeature, MotionFeature, AreaFeature, BaseFeature, DrawableFeature, FloatFeature from abc import ABC, abstractmethod -from tqdm import tqdm -from comfy.utils import ProgressBar -import typing import numpy as np -import torch from scipy.interpolate import interp1d +import json +from ...tooltips import apply_tooltips +from ... import ProgressMixin -class FeatureExtractorBase(RyanOnTheInside, ABC): + + +@apply_tooltips +class FeatureExtractorBase(ProgressMixin, ABC): @classmethod @abstractmethod + def feature_type(cls) -> type[BaseFeature]: pass @classmethod def INPUT_TYPES(cls): feature_class = cls.feature_type() + extraction_methods = feature_class.get_extraction_methods() return { "required": { - "extraction_method": (feature_class.get_extraction_methods(), {"default": feature_class.get_extraction_methods()[0]}), + "extraction_method": (extraction_methods, {"default": extraction_methods[0]}), + "frame_rate": ("FLOAT", {"default": 30.0, "min": 1.0, "max": 120.0, "step": 0.1}), + "frame_count": ("INT", {"default": 30, "min": 1}), + "width": ("INT", {"default": 512, "min": 64, "max": 4096, "step": 64}), + "height": ("INT", {"default": 512, "min": 64, "max": 4096, "step": 64}), + } + } + + CATEGORY="RyanOnTheInside/FlexFeatures/Sources" + +@apply_tooltips +class FloatFeatureNode(FeatureExtractorBase): + @classmethod + def feature_type(cls) -> type[BaseFeature]: + return FloatFeature + + @classmethod + def INPUT_TYPES(cls): + parent_inputs = super().INPUT_TYPES()["required"] + return { + "required": { + **parent_inputs, + "floats": ("FLOAT", {"default": 0.5, "min": 0.0, "max": 1.0, "step": 0.01, "forceInput": True}), } } - def __init__(self): - self.progress_bar = None - self.tqdm_bar = None - self.current_progress = 0 - self.total_steps = 0 - - def start_progress(self, total_steps, desc="Processing"): - self.progress_bar = ProgressBar(total_steps) - self.tqdm_bar = tqdm(total=total_steps, desc=desc, leave=False) - self.current_progress = 0 - self.total_steps = total_steps - - def update_progress(self, step=1): - self.current_progress += step - if self.progress_bar: - self.progress_bar.update(step) - if self.tqdm_bar: - self.tqdm_bar.update(step) - - def end_progress(self): - if self.tqdm_bar: - self.tqdm_bar.close() - self.progress_bar = None - self.tqdm_bar = None - self.current_progress = 0 - self.total_steps = 0 - CATEGORY="RyanOnTheInside/FlexFeatures" + RETURN_TYPES = ("FEATURE",) + FUNCTION = "create_feature" + + def create_feature(self, value, frame_rate, frame_count, width, height, extraction_method): + values = value if isinstance(value, list) else [value] + + float_feature = FloatFeature("float_feature", frame_rate, frame_count, width, height, values, extraction_method) + float_feature.extract() + return (float_feature,) + +@apply_tooltips class ManualFeatureNode(FeatureExtractorBase): @classmethod def feature_type(cls) -> type[BaseFeature]: @@ -62,32 +70,30 @@ def INPUT_TYPES(cls): return { **super().INPUT_TYPES(), "required": { - "frame_rate": ("FLOAT", {"default": 30.0, "min": 1.0, "max": 120.0, "step": 0.1}), - "frame_count": ("INT", {"default": 30, "min": 1}), + **super().INPUT_TYPES()["required"], "frame_numbers": ("STRING", {"default": "0,10,20"}), "values": ("STRING", {"default": "0.0,0.5,1.0"}), "last_value": ("FLOAT", {"default": 1.0}), - "width": ("INT", {"default": 1920, "min": 1}), - "height": ("INT", {"default": 1080, "min": 1}), "interpolation_method": (["none", "linear", "ease_in", "ease_out"], {"default": "none"}), } } - RETURN_TYPES = ("FEATURE", "FEATURE_PIPE") + RETURN_TYPES = ("FEATURE",) FUNCTION = "create_feature" + CATEGORY = f"{FeatureExtractorBase.CATEGORY}/Manual" - def _apply_interpolation(self, feature_pipe, frame_numbers, values, last_value, interpolation_method): + def _apply_interpolation(self, frame_count, frame_rate, frame_numbers, values, last_value, interpolation_method, width=None, height=None): """Shared interpolation logic""" - manual_feature = ManualFeature("manual_feature", feature_pipe.frame_rate, feature_pipe.frame_count, - frame_numbers[0], frame_numbers[-1], values[0], values[-1], - method=interpolation_method) + manual_feature = ManualFeature("manual_feature", frame_rate, frame_count, width, height, + frame_numbers[0], frame_numbers[-1], values[0], values[-1], + method=interpolation_method) - manual_feature.data = np.zeros(feature_pipe.frame_count, dtype=np.float32) + manual_feature.data = np.zeros(frame_count, dtype=np.float32) interpolation_kind = 'linear' if len(frame_numbers) < 3 else 'quadratic' if interpolation_method == 'none': for frame, value in zip(frame_numbers, values): - if 0 <= frame < feature_pipe.frame_count: + if 0 <= frame < frame_count: manual_feature.data[frame] = value else: raise ValueError(f"Frame number {frame} is out of bounds.") @@ -100,7 +106,7 @@ def _apply_interpolation(self, feature_pipe, frame_numbers, values, last_value, reversed_values = [values[-1] - (v - values[0]) for v in values] f = interp1d(frame_numbers, reversed_values, kind=interpolation_kind, fill_value="extrapolate") - x = np.arange(feature_pipe.frame_count) + x = np.arange(frame_count) manual_feature.data = f(x) if interpolation_method == 'ease_out': @@ -108,7 +114,7 @@ def _apply_interpolation(self, feature_pipe, frame_numbers, values, last_value, return manual_feature - def create_feature(self, frame_rate, frame_count, frame_numbers, values, last_value, width, height, interpolation_method): + def create_feature(self, frame_rate, frame_count, frame_numbers, values, last_value, width, height, interpolation_method, extraction_method): # Parse inputs frame_numbers = list(map(int, frame_numbers.split(','))) values = list(map(float, values.split(','))) @@ -120,15 +126,12 @@ def create_feature(self, frame_rate, frame_count, frame_numbers, values, last_va if max(frame_numbers) >= frame_count: raise ValueError(f"Frame numbers must be less than frame_count ({frame_count})") - # Create feature pipe with specified frame_count - video_frames = torch.zeros((frame_count, height, width, 3), dtype=torch.float32) - feature_pipe = FeaturePipe(frame_rate, video_frames) - # Apply interpolation - manual_feature = self._apply_interpolation(feature_pipe, frame_numbers, values, last_value, interpolation_method) + manual_feature = self._apply_interpolation(frame_count, frame_rate, frame_numbers, values, last_value, interpolation_method, width, height) - return (manual_feature, feature_pipe) + return (manual_feature,) +@apply_tooltips class ManualFeatureFromPipe(ManualFeatureNode): @classmethod def INPUT_TYPES(cls): @@ -143,6 +146,7 @@ def INPUT_TYPES(cls): } FUNCTION = "create_feature_from_pipe" + CATEGORY = f"{FeatureExtractorBase.CATEGORY}/Manual" def create_feature_from_pipe(self, feature_pipe, frame_numbers, values, last_value, interpolation_method): # Parse inputs @@ -157,31 +161,70 @@ def create_feature_from_pipe(self, feature_pipe, frame_numbers, values, last_val values.append(last_value) # Apply interpolation using parent class method - manual_feature = self._apply_interpolation(feature_pipe, frame_numbers, values, last_value, interpolation_method) + manual_feature = self._apply_interpolation(feature_pipe.frame_count, feature_pipe.frame_rate, frame_numbers, values, last_value, interpolation_method) return (manual_feature, feature_pipe) -class FirstFeature(FeatureExtractorBase): +@apply_tooltips +class DrawableFeatureNode(FeatureExtractorBase): @classmethod def feature_type(cls) -> type[BaseFeature]: - pass + return DrawableFeature @classmethod def INPUT_TYPES(cls): - return { + return { **super().INPUT_TYPES(), "required": { **super().INPUT_TYPES()["required"], - "video_frames": ("IMAGE",), - "frame_rate": ("FLOAT", {"default": 30.0, "min": 1.0, "max": 120.0, "step": 0.1}), + "points": ("STRING", {"default": "[]"}), # JSON string of points + "min_value": ("FLOAT", {"default": 0.0, "min": -100.0, "max": 100.0, "step": 0.1}), + "max_value": ("FLOAT", {"default": 1.0, "min": -100.0, "max": 100.0, "step": 0.1}), + "interpolation_method": (["linear", "cubic", "nearest", "zero", "hold", "ease_in", "ease_out"], {"default": "linear"}), + "fill_value": ("FLOAT", {"default": 0.0, "min": -100.0, "max": 100.0, "step": 0.1}), } } - RETURN_TYPES = ("FEATURE", "FEATURE_PIPE") + RETURN_TYPES = ("FEATURE",) FUNCTION = "create_feature" + CATEGORY = f"{FeatureExtractorBase.CATEGORY}/Manual" + + def create_feature(self, points, frame_rate, frame_count, width, height, extraction_method, interpolation_method, min_value, max_value, fill_value): + try: + point_data = json.loads(points) + if not isinstance(point_data, list): + raise ValueError("Points data must be a list") + # Validate points format + for point in point_data: + if not isinstance(point, list) or len(point) != 2: + raise ValueError("Each point must be a [frame, value] pair") + if not (isinstance(point[0], (int, float)) and isinstance(point[1], (float))): + raise ValueError("Frame must be number, value must be float") + if point[0] < 0 or point[0] > frame_count: + raise ValueError(f"Frame {point[0]} out of bounds") + if point[1] < min_value or point[1] > max_value: + raise ValueError(f"Value {point[1]} outside range [{min_value}, {max_value}]") + except json.JSONDecodeError: + raise ValueError("Invalid JSON format for points") + + drawable_feature = DrawableFeature( + "drawable_feature", + frame_rate, + frame_count, + width, + height, + point_data, + method=interpolation_method, + min_value=min_value, + max_value=max_value, + fill_value=fill_value + ) + drawable_feature.extract() + return (drawable_feature,) -class TimeFeatureNode(FirstFeature): +@apply_tooltips +class TimeFeatureNode(FeatureExtractorBase): @classmethod def feature_type(cls) -> type[BaseFeature]: return TimeFeature @@ -192,115 +235,139 @@ def INPUT_TYPES(cls): **super().INPUT_TYPES(), "required": { **super().INPUT_TYPES()["required"], - "speed": ("FLOAT", {"default": 1.0, "min": 0.1, "max": 10.0, "step": 0.1}), + "frames_per_cycle": ("INT", {"default": 30, "min": 1, "max": 1000, "step": 1}), # Number of frames for one cycle "offset": ("FLOAT", {"default": 0.0, "min": 0.0, "max": 1.0, "step": 0.01}), } } - + RETURN_TYPES = ("FEATURE",) + FUNCTION = "create_feature" - def create_feature(self, extraction_method, speed, offset, video_frames, frame_rate): - feature_pipe = FeaturePipe(frame_rate, video_frames) - time_feature = TimeFeature("time_effect", feature_pipe.frame_rate, feature_pipe.frame_count, - effect_type=extraction_method, speed=speed, offset=offset) + def create_feature(self, extraction_method, frames_per_cycle, offset, frame_rate, frame_count, width, height): + time_feature = TimeFeature("time_effect", frame_rate, frame_count, width, height, + effect_type=extraction_method, speed=frames_per_cycle, offset=offset) time_feature.extract() - return (time_feature, feature_pipe) + return (time_feature,) -class DepthFeatureNode(FirstFeature): +@apply_tooltips +class DepthFeatureNode(FeatureExtractorBase): @classmethod def feature_type(cls) -> type[BaseFeature]: return DepthFeature @classmethod def INPUT_TYPES(cls): + parent_inputs = super().INPUT_TYPES()["required"] + parent_inputs.pop("frame_count", None) return { - **super().INPUT_TYPES(), "required": { - **super().INPUT_TYPES()["required"], + **parent_inputs, "depth_maps": ("IMAGE",), } } - def create_feature(self, depth_maps, frame_rate, video_frames, extraction_method): - feature_pipe = FeaturePipe(frame_rate, video_frames) - depth_feature = DepthFeature("depth_feature", feature_pipe.frame_rate, feature_pipe.frame_count, depth_maps, extraction_method) + RETURN_TYPES = ("FEATURE",) + FUNCTION = "create_feature" + + def create_feature(self, depth_maps, frame_rate, width, height, extraction_method): + frame_count = len(depth_maps) + depth_feature = DepthFeature("depth_feature", frame_rate, frame_count, width, height, depth_maps, extraction_method) depth_feature.extract() - return (depth_feature, feature_pipe) + return (depth_feature,) -class ColorFeatureNode(FirstFeature): +@apply_tooltips +class ColorFeatureNode(FeatureExtractorBase): @classmethod def feature_type(cls) -> type[BaseFeature]: return ColorFeature @classmethod def INPUT_TYPES(cls): + parent_inputs = super().INPUT_TYPES()["required"] + parent_inputs.pop("frame_count", None) return { - **super().INPUT_TYPES(), "required": { - **super().INPUT_TYPES()["required"], + **parent_inputs, + "images": ("IMAGE",), } } - def create_feature(self, video_frames, frame_rate, extraction_method): - feature_pipe = FeaturePipe(frame_rate, video_frames) - color_feature = ColorFeature("color_feature", feature_pipe.frame_rate, feature_pipe.frame_count, video_frames, extraction_method) + RETURN_TYPES = ("FEATURE",) + FUNCTION = "create_feature" + + def create_feature(self, images, frame_rate, width, height, extraction_method): + frame_count = len(images) + color_feature = ColorFeature("color_feature", frame_rate, frame_count, width, height, images, extraction_method) color_feature.extract() - return (color_feature, feature_pipe) + return (color_feature,) -class BrightnessFeatureNode(FirstFeature): +@apply_tooltips +class BrightnessFeatureNode(FeatureExtractorBase): @classmethod def feature_type(cls) -> type[BaseFeature]: return BrightnessFeature @classmethod def INPUT_TYPES(cls): + parent_inputs = super().INPUT_TYPES()["required"] + parent_inputs.pop("frame_count", None) return { - **super().INPUT_TYPES(), "required": { - **super().INPUT_TYPES()["required"], + **parent_inputs, + "images": ("IMAGE",), } } - def create_feature(self, video_frames, frame_rate, extraction_method): - feature_pipe = FeaturePipe(frame_rate, video_frames) - brightness_feature = BrightnessFeature("brightness_feature", feature_pipe.frame_rate, feature_pipe.frame_count, video_frames, extraction_method) + RETURN_TYPES = ("FEATURE",) + FUNCTION = "create_feature" + + def create_feature(self, images, frame_rate, width, height, extraction_method): + frame_count = len(images) + brightness_feature = BrightnessFeature("brightness_feature", frame_rate, frame_count, width, height, images, extraction_method) brightness_feature.extract() - return (brightness_feature, feature_pipe) + return (brightness_feature,) -class MotionFeatureNode(FirstFeature): +@apply_tooltips +class MotionFeatureNode(FeatureExtractorBase): @classmethod def feature_type(cls) -> type[BaseFeature]: return MotionFeature @classmethod def INPUT_TYPES(cls): + # Get parent input types but exclude frame_count + parent_inputs = super().INPUT_TYPES()["required"] + parent_inputs.pop("frame_count", None) + return { - **super().INPUT_TYPES(), "required": { - **super().INPUT_TYPES()["required"], + **parent_inputs, + "images": ("IMAGE",), "flow_method": (["Farneback", "LucasKanade", "PyramidalLK"],), "flow_threshold": ("FLOAT", {"default": 0.0, "min": 0.0, "max": 10.0, "step": 0.1}), "magnitude_threshold": ("FLOAT", {"default": 0.0, "min": 0.0, "max": 1.0, "step": 0.01}), } } - RETURN_TYPES = ("FEATURE", "FEATURE_PIPE") + RETURN_TYPES = ("FEATURE",) FUNCTION = "create_feature" - def create_feature(self, video_frames, frame_rate, extraction_method, flow_method, flow_threshold, magnitude_threshold): - feature_pipe = FeaturePipe(frame_rate, video_frames) - num_frames = feature_pipe.frame_count - - self.start_progress(num_frames, desc="Extracting motion features") - + def create_feature(self, images, frame_rate, width, height, extraction_method, flow_method, flow_threshold, magnitude_threshold): + # Use length of images as frame_count + frame_count = len(images) + def progress_callback(current_step, total_steps): self.update_progress(current_step - self.current_progress) + self.start_progress(frame_count, desc="Extracting motion features") + motion_feature = MotionFeature( "motion_feature", - feature_pipe.frame_rate, - feature_pipe.frame_count, - video_frames, + frame_rate, + frame_count, + width, + height, + images, extraction_method, flow_method, flow_threshold, @@ -311,35 +378,77 @@ def progress_callback(current_step, total_steps): motion_feature.extract() self.end_progress() - return (motion_feature, feature_pipe) + return (motion_feature,) -class AreaFeatureNode(FirstFeature): +@apply_tooltips +class AreaFeatureNode(FeatureExtractorBase): @classmethod def feature_type(cls) -> type[BaseFeature]: return AreaFeature @classmethod def INPUT_TYPES(cls): + parent_inputs = super().INPUT_TYPES()["required"] + parent_inputs.pop("frame_count", None) return { - **super().INPUT_TYPES(), "required": { - **super().INPUT_TYPES()["required"], + **parent_inputs, "masks": ("MASK",), "threshold": ("FLOAT", {"default": 0.5, "min": 0.0, "max": 1.0, "step": 0.01}), } } - RETURN_TYPES = ("FEATURE", "FEATURE_PIPE") + RETURN_TYPES = ("FEATURE",) FUNCTION = "create_feature" - def create_feature(self, masks, video_frames, frame_rate, extraction_method, threshold): - feature_pipe = FeaturePipe(frame_rate, video_frames) - area_feature = AreaFeature("area_feature", feature_pipe.frame_rate, feature_pipe.frame_count, - masks, feature_type=extraction_method, threshold=threshold) + def create_feature(self, masks, frame_rate, width, height, extraction_method, threshold): + frame_count = len(masks) + area_feature = AreaFeature("area_feature", frame_rate, frame_count, width, height, masks, extraction_method, threshold) area_feature.extract() - return (area_feature, feature_pipe) + return (area_feature,) + + +@apply_tooltips +class FeatureInfoNode(): + """ + Node that extracts common information from feature inputs. + """ + def __init__(self): + pass + @classmethod + def INPUT_TYPES(cls): + return { + "required": { + "feature": ("FEATURE",), # Accepts any feature type + } + } + RETURN_TYPES = ("STRING", "STRING", "INT","FLOAT", "INT", "INT", "INT", "FLOAT", "FLOAT") + RETURN_NAMES = ("name", "type", "frame_rate","frame_rate_float", "frame_count", "width", "height", "min_value", "max_value") + FUNCTION = "get_info" + CATEGORY = "RyanOnTheInside/FlexFeatures/Utilities" + + def get_info(self, feature): + """Extract common information from the feature""" + + + #TODO: rename attr to thresholds impending + values = [feature.get_value_at_frame(i) for i in range(feature.frame_count)] # Use feature.min_value and feature.max_value if available, otherwise use actual min/max + min_val = getattr(feature, 'min_value', min(values)) + max_val = getattr(feature, 'max_value', max(values)) + + return ( + feature.name, + feature.type, + feature.frame_rate, + float(feature.frame_rate), + feature.frame_count, + feature.width if feature.width is not None else 0, + feature.height if feature.height is not None else 0, + min_val, + max_val + ) diff --git a/nodes/flex/feature_extractors_audio.py b/nodes/flex/feature_extractors_audio.py index 8fc3151..ee167ac 100644 --- a/nodes/flex/feature_extractors_audio.py +++ b/nodes/flex/feature_extractors_audio.py @@ -1,72 +1,59 @@ -from .feature_extractors import FeatureExtractorBase, FirstFeature -from .feature_pipe import FeaturePipe +from .feature_extractors import FeatureExtractorBase from .features_audio import AudioFeature, PitchFeature, PitchRange, BaseFeature, RhythmFeature from ... import RyanOnTheInside from ..audio.audio_nodes import AudioNodeBase +from ...tooltips import apply_tooltips -class AudioFeatureExtractor(FeatureExtractorBase): - @classmethod - def feature_type(cls) -> type[BaseFeature]: - return AudioFeature +_category = f"{FeatureExtractorBase.CATEGORY}/Audio" +class AudioFeatureExtractorMixin: @classmethod def INPUT_TYPES(cls): + parent_inputs = super().INPUT_TYPES()["required"] + parent_inputs["frame_count"] = ("INT", {"default": 0, "min": 0}) return { **super().INPUT_TYPES(), "required": { - **super().INPUT_TYPES()["required"], + **parent_inputs, "audio": ("AUDIO",), - "feature_pipe": ("FEATURE_PIPE",), } } - RETURN_TYPES = ("FEATURE", "FEATURE_PIPE") - FUNCTION = "extract_feature" - - - def extract_feature(self, audio, feature_pipe, extraction_method): - feature = AudioFeature(extraction_method, audio, feature_pipe.frame_count, feature_pipe.frame_rate, extraction_method) - feature.extract() - return (feature, feature_pipe) + def calculate_target_frame_count(self, audio, frame_rate, frame_count): + """Calculate the target frame count based on audio length and specified frame count""" + waveform = audio["waveform"] + sample_rate = audio["sample_rate"] + natural_frame_count = int((waveform.shape[-1] / sample_rate) * frame_rate) + return frame_count if frame_count > 0 else natural_frame_count -#todo: create base class in prep for version 2 -class AudioFeatureExtractorFirst(FeatureExtractorBase): +@apply_tooltips +class AudioFeatureExtractor(AudioFeatureExtractorMixin, FeatureExtractorBase): @classmethod def feature_type(cls) -> type[BaseFeature]: return AudioFeature - @classmethod - def INPUT_TYPES(cls): - return { - **super().INPUT_TYPES(), - "required": { - **super().INPUT_TYPES()["required"], - "audio": ("AUDIO",), - "width": ("INT", {"default": 512, "min": 64, "max": 4096, "step": 64}), - "height": ("INT", {"default": 512, "min": 64, "max": 4096, "step": 64}), - "frame_rate": ("FLOAT", {"default": 30.0, "min": 0.1, "max": 240.0, "step": 0.1}), - } - } - - RETURN_TYPES = ("FEATURE", "FEATURE_PIPE", "INT") - RETURN_NAMES = ("feature", "feature_pipe", "frame_count") + RETURN_TYPES = ("FEATURE", "INT",) + RETURN_NAMES = ("feature", "frame_count",) FUNCTION = "extract_feature" - CATEGORY = "RyanOnTheInside/FlexFeatures/Audio" + CATEGORY = _category + + def extract_feature(self, audio, frame_rate, frame_count, width, height, extraction_method): + target_frame_count = self.calculate_target_frame_count(audio, frame_rate, frame_count) - def extract_feature(self, audio, width, height, frame_rate, extraction_method): - empty_frames = AudioNodeBase.create_empty_tensor(audio, frame_rate, height, width, channels=3) - feature_pipe = FeaturePipe(frame_rate, empty_frames) feature = AudioFeature( + width=width, + height=height, feature_name=extraction_method, audio=audio, - frame_count=feature_pipe.frame_count, - frame_rate=feature_pipe.frame_rate, + frame_count=target_frame_count, + frame_rate=frame_rate, feature_type=extraction_method ) feature.extract() - return (feature, feature_pipe, feature_pipe.frame_count) + return (feature, target_frame_count) -class RhythmFeatureExtractor(FirstFeature): +@apply_tooltips +class RhythmFeatureExtractor(AudioFeatureExtractorMixin, FeatureExtractorBase): @classmethod def feature_type(cls) -> type[BaseFeature]: return RhythmFeature @@ -77,32 +64,35 @@ def INPUT_TYPES(cls): **super().INPUT_TYPES(), "required": { **super().INPUT_TYPES()["required"], - "audio": ("AUDIO",), "time_signature": ("INT", {"default": 4, "min": 1, "max": 12, "step": 1}), }, } - RETURN_TYPES = ("FEATURE", "FEATURE_PIPE") + RETURN_TYPES = ("FEATURE",) FUNCTION = "extract_feature" - CATEGORY = "RyanOnTheInside/FlexFeatures/Audio/Rhythm" + CATEGORY = _category + + def extract_feature(self, audio, extraction_method, time_signature, frame_rate, frame_count, width, height): + target_frame_count = self.calculate_target_frame_count(audio, frame_rate, frame_count) - def extract_feature(self, audio, extraction_method, time_signature, frame_rate, video_frames): - feature_pipe = FeaturePipe(frame_rate, video_frames) feature = RhythmFeature( + width=width, + height=height, feature_name=extraction_method, audio=audio, - frame_count=feature_pipe.frame_count, - frame_rate=feature_pipe.frame_rate, + frame_count=target_frame_count, + frame_rate=frame_rate, feature_type=extraction_method, time_signature=time_signature ) feature.extract() - return (feature, feature_pipe) + return (feature,) -class PitchFeatureExtractor(FeatureExtractorBase): +@apply_tooltips +class PitchFeatureExtractor(AudioFeatureExtractorMixin, FeatureExtractorBase): @classmethod def feature_type(cls) -> type[BaseFeature]: - return PitchFeature + return PitchFeature @classmethod def INPUT_TYPES(cls): @@ -110,37 +100,41 @@ def INPUT_TYPES(cls): **super().INPUT_TYPES(), "required": { **super().INPUT_TYPES()["required"], - "audio": ("AUDIO",), - "feature_pipe": ("FEATURE_PIPE",), "opt_crepe_model":(["none", "medium", "tiny", "small", "large", "full"], {"default": "medium"}) }, "optional": { "opt_pitch_range_collections": ("PITCH_RANGE_COLLECTION",), - # "": ("CREPE_MODEL",), }, } - RETURN_TYPES = ("FEATURE", "FEATURE_PIPE") + RETURN_TYPES = ("FEATURE",) FUNCTION = "extract_feature" + CATEGORY = _category - def extract_feature(self, audio, feature_pipe, extraction_method, opt_pitch_range_collections=None, opt_crepe_model=None): + def extract_feature(self, audio, frame_rate, frame_count, width, height, extraction_method, opt_pitch_range_collections=None, opt_crepe_model=None): if opt_pitch_range_collections is None: opt_pitch_range_collections = [] + + target_frame_count = self.calculate_target_frame_count(audio, frame_rate, frame_count) + feature = PitchFeature( + width=width, + height=height, feature_name=extraction_method, audio=audio, - frame_count=feature_pipe.frame_count, - frame_rate=feature_pipe.frame_rate, + frame_count=target_frame_count, + frame_rate=frame_rate, pitch_range_collections=opt_pitch_range_collections, feature_type=extraction_method, crepe_model=opt_crepe_model ) feature.extract() - return (feature, feature_pipe) + return (feature,) class PitchAbstraction(RyanOnTheInside): CATEGORY="RyanOnTheInside/FlexFeatures/Audio/Pitch" +@apply_tooltips class PitchRangeNode(PitchAbstraction): @classmethod def INPUT_TYPES(cls): @@ -156,8 +150,7 @@ def INPUT_TYPES(cls): RETURN_TYPES = ("PITCH_RANGE_COLLECTION",) FUNCTION = "create_pitch_range" - - CATEGORY = "RyanOnTheInside/FlexFeatures" + CATEGORY = _category def create_pitch_range(self, min_pitch, max_pitch, previous_range_collection=None): pitch_range = PitchRange(min_pitch, max_pitch) @@ -171,6 +164,7 @@ def create_pitch_range(self, min_pitch, max_pitch, previous_range_collection=Non collections = previous_range_collection + [pitch_range_collection] return (collections,) +@apply_tooltips class PitchRangePresetNode(PitchAbstraction): @classmethod def INPUT_TYPES(cls): @@ -195,8 +189,7 @@ def INPUT_TYPES(cls): RETURN_TYPES = ("PITCH_RANGE_COLLECTION",) FUNCTION = "create_pitch_range_preset" - - CATEGORY = "RyanOnTheInside/FlexFeatures" + CATEGORY = _category def create_pitch_range_preset(self, preset, previous_range_collection=None): presets = { @@ -221,6 +214,7 @@ def create_pitch_range_preset(self, preset, previous_range_collection=None): collections = previous_range_collection + [pitch_range_collection] return (collections,) +@apply_tooltips class PitchRangeByNoteNode(PitchAbstraction): @classmethod def INPUT_TYPES(cls): @@ -237,8 +231,7 @@ def INPUT_TYPES(cls): RETURN_TYPES = ("PITCH_RANGE_COLLECTION",) FUNCTION = "create_note_pitch_ranges" - - CATEGORY = "RyanOnTheInside/FlexFeatures" + CATEGORY = _category def create_note_pitch_ranges(self, chord_only, notes, pitch_tolerance_percent, previous_range_collection=None): if not notes: @@ -276,5 +269,4 @@ def create_note_pitch_ranges(self, chord_only, notes, pitch_tolerance_percent, p def _midi_to_frequency(self, midi_note): import librosa return librosa.midi_to_hz(midi_note) - - # The _calculate_tolerance method has been removed from here \ No newline at end of file + # The _calculate_tolerance method has been removed from here diff --git a/nodes/flex/feature_extractors_midi.py b/nodes/flex/feature_extractors_midi.py index 9a390d0..5ec3240 100644 --- a/nodes/flex/feature_extractors_midi.py +++ b/nodes/flex/feature_extractors_midi.py @@ -1,20 +1,19 @@ import mido import os -from .feature_pipe import FeaturePipe import folder_paths from server import PromptServer from aiohttp import web import shutil from .features_midi import MIDIFeature from .feature_extractors import FeatureExtractorBase +from ...tooltips import apply_tooltips +@apply_tooltips class MIDILoadAndExtract(FeatureExtractorBase): @classmethod def feature_type(cls) -> type[MIDIFeature]: return MIDIFeature - - @classmethod def INPUT_TYPES(cls): return { @@ -22,18 +21,16 @@ def INPUT_TYPES(cls): **super().INPUT_TYPES()["required"], "midi_file": (folder_paths.get_filename_list("midi_files"),), "track_selection": (["all"],), - "frame_rate": ("FLOAT", {"default": 30, "min": 0.1, "max": 120, "step": 0.1}), - "video_frames": ("IMAGE",), "chord_only": ("BOOLEAN", {"default": False}), "notes": ("STRING", {"default": ""}), }, } - RETURN_TYPES = ("MIDI", "FEATURE", "FEATURE_PIPE") + RETURN_TYPES = ("MIDI", "FEATURE") FUNCTION = "process_midi" - CATEGORY = "RyanOnTheInside/Audio" + - def process_midi(self, midi_file, track_selection, notes, extraction_method, frame_rate, video_frames, chord_only=False): + def process_midi(self, midi_file, track_selection, notes, extraction_method, frame_rate, frame_count, width, height, chord_only=False): try: midi_path = folder_paths.get_full_path("midi_files", midi_file) if not midi_path or not os.path.exists(midi_path): @@ -42,23 +39,27 @@ def process_midi(self, midi_file, track_selection, notes, extraction_method, fra midi_data = mido.MidiFile(midi_path) selected_notes = [int(n.strip()) for n in notes.split(',') if n.strip().isdigit()] - feature_pipe = FeaturePipe(frame_rate, video_frames) # Convert friendly attribute name to internal attribute name internal_attribute = MIDIFeature.get_attribute_value(extraction_method) - feature = MIDIFeature(f"midi_{internal_attribute}", midi_data, internal_attribute, - feature_pipe.frame_rate, feature_pipe.frame_count, - notes=selected_notes, chord_only=chord_only) + feature = MIDIFeature( + f"midi_{internal_attribute}", + midi_data, + internal_attribute, + frame_rate, + frame_count, + width, + height, + notes=selected_notes, + chord_only=chord_only + ) feature.extract() - return (midi_data, feature, feature_pipe) + return (midi_data, feature) except Exception as e: - # error_msg = f"Error in MIDILoadAndExtract.process_midi: {type(e).__name__}: {str(e)}\n" - # error_msg += traceback.format_exc() - # print(error_msg) raise RuntimeError(f"Error processing MIDI file: {type(e).__name__}: {str(e)}") @classmethod diff --git a/nodes/flex/feature_extractors_proximity.py b/nodes/flex/feature_extractors_proximity.py index 5f048ea..3ee0cf2 100644 --- a/nodes/flex/feature_extractors_proximity.py +++ b/nodes/flex/feature_extractors_proximity.py @@ -1,38 +1,46 @@ -from .features_proximity import Location, ProximityFeature -from .feature_extractors import FirstFeature +from .features_proximity import Location, ProximityFeature +from .feature_extractors import FeatureExtractorBase from ... import RyanOnTheInside -from .feature_pipe import FeaturePipe +from ...tooltips import apply_tooltips import numpy as np import cv2 +_category = f"{FeatureExtractorBase.CATEGORY}/Proximity" + +@apply_tooltips +class ProximityFeatureNode(FeatureExtractorBase): + @classmethod + def feature_type(cls) -> type: + return ProximityFeature -class ProximityFeatureNode(FirstFeature): @classmethod def INPUT_TYPES(cls): return { + **super().INPUT_TYPES(), "required": { - "video_frames": ("IMAGE",), - "frame_rate": ("FLOAT", {"default": 30.0, "min": 1.0, "max": 120.0, "step": 0.1}), + **super().INPUT_TYPES()["required"], "anchor_locations": ("LOCATION",), "query_locations": ("LOCATION",), "normalization_method": (["frame", "minmax"],), } } - RETURN_TYPES = ("FEATURE", "FEATURE_PIPE") - RETURN_NAMES = ("proximity_feature", "feature_pipe") + RETURN_TYPES = ("FEATURE",) + RETURN_NAMES = ("proximity_feature",) FUNCTION = "create_feature" + CATEGORY = _category - def create_feature(self, video_frames, frame_rate, anchor_locations, query_locations, normalization_method): - feature_pipe = FeaturePipe(frame_rate, video_frames) - frame_dimensions = (video_frames.shape[2], video_frames.shape[1]) # width, height + def create_feature(self, frame_rate, frame_count, width, height, anchor_locations, query_locations, normalization_method, extraction_method): + frame_dimensions = (width, height) proximity_feature = ProximityFeature( + width=width, + height=height, name="proximity_feature", anchor_locations=anchor_locations, query_locations=query_locations, frame_rate=frame_rate, - frame_count=len(video_frames), + frame_count=frame_count, frame_dimensions=frame_dimensions, normalization_method=normalization_method ) @@ -50,15 +58,14 @@ def create_feature(self, video_frames, frame_rate, anchor_locations, query_locat location.points = location.points[:, :2] print("Depth ignored. Depth must be included for all points or no points.") - # self.start_progress(len(video_frames), desc="Calculating proximity") proximity_feature.extract() - # self.end_progress() - return (proximity_feature, feature_pipe) + return (proximity_feature,) class ProximityFeatureInput(RyanOnTheInside): - CATEGORY="RyanOnTheInside/Proximity" + CATEGORY=_category +@apply_tooltips class LocationFromMask(ProximityFeatureInput): @classmethod def INPUT_TYPES(cls): @@ -120,6 +127,7 @@ def generate_locations(self, masks, method, depth_maps=None): return (locations,) +@apply_tooltips class LocationFromPoint(ProximityFeatureInput): @classmethod def INPUT_TYPES(cls): @@ -134,7 +142,7 @@ def INPUT_TYPES(cls): RETURN_TYPES = ("LOCATION",) FUNCTION = "generate_locations" - + CATEGORY = _category def generate_locations(self, x, y, batch_count, z): locations = [] for _ in range(batch_count): @@ -143,6 +151,7 @@ def generate_locations(self, x, y, batch_count, z): return (locations,) +@apply_tooltips class LocationTransform(ProximityFeatureInput): @classmethod def INPUT_TYPES(cls): diff --git a/nodes/flex/feature_extractors_whisper.py b/nodes/flex/feature_extractors_whisper.py new file mode 100644 index 0000000..5cb0334 --- /dev/null +++ b/nodes/flex/feature_extractors_whisper.py @@ -0,0 +1,756 @@ +from .features import WhisperFeature, BaseFeature +from .feature_extractors import FeatureExtractorBase +import json +import torch +import torch.nn.functional as F +from pathlib import Path +import textwrap +from PIL import Image, ImageDraw, ImageFont +import numpy as np +from ...tooltips import apply_tooltips + +#NOTE: below is an example of the data we are expecting. +# This is built to work with ComfyUI-Whisper, but only the json structure below is required. +# # text: + # We're telling a story about water and then about fire and then we're going to do ice and then psychedelic awesomeness. Okay. + + # #segement_alignment + # [{"value": "We're telling a story about water and then about fire and then we're going to do ice and then", "start": 0.0, "end": 6.26}, {"value": "psychedelic awesomeness. Okay.", "start": 7.9799999999999995, "end": 9.38}] + + # #words_alignment + # [{"value": "We're", "start": 0.0, "end": 0.26}, {"value": "telling", "start": 0.26, "end": 0.46}, {"value": "a", "start": 0.46, "end": 0.6}, {"value": "story", "start": 0.6, "end": 0.88}, {"value": "about", "start": 0.88, "end": 1.14}, {"value": "water", "start": 1.14, "end": 1.58}, {"value": "and", "start": 1.58, "end": 2.24}, {"value": "then", "start": 2.24, "end": 2.44}, {"value": "about", "start": 2.44, "end": 3.24}, {"value": "fire", "start": 3.24, "end": 3.66}, {"value": "and", "start": 3.66, "end": 4.1}, {"value": "then", "start": 4.1, "end": 4.3}, {"value": "we're", "start": 4.3, "end": 4.7}, {"value": "going", "start": 4.7, "end": 4.88}, {"value": "to", "start": 4.88, "end": 5.02}, {"value": "do", "start": 5.02, "end": 5.18}, {"value": "ice", "start": 5.18, "end": 5.44}, {"value": "and", "start": 5.44, "end": 5.98}, {"value": "then", "start": 5.98, "end": 6.26}, {"value": "psychedelic", "start": 7.9799999999999995, "end": 8.52}, {"value": "awesomeness.", "start": 8.52, "end": 9.06}, {"value": "Okay.", "start": 9.2, "end": 9.38}] + +_category = f"{FeatureExtractorBase.CATEGORY}/Whisper" + +class TriggerSet: + def __init__(self): + self.triggers = [] + self._expected_image_shape = None # Store the expected shape for validation + + def add_trigger(self, pattern: str, values: tuple, mode: str, fade: str, + duration: int, blend_mode: str, fill_behavior: str, image=None): + # Validate image shape if provided + if image is not None: + current_shape = tuple(image.shape[1:]) # HWC shape (ignore batch dimension) + + if self._expected_image_shape is None: + # First image sets the expected shape + self._expected_image_shape = current_shape + elif current_shape != self._expected_image_shape: + raise ValueError( + f"Image shape mismatch! Expected shape {self._expected_image_shape}, " + f"but got {current_shape}. All trigger images must have the same dimensions." + ) + + trigger = { + "pattern": pattern, + "values": values, + "mode": mode, + "fade": fade, + "duration": duration, + "blend_mode": blend_mode, + "fill_behavior": fill_behavior, + "image": image, + "image_batch_size": image.shape[0] if image is not None else 1 + } + self.triggers.append(trigger) + return self + + def extend(self, other_trigger_set): + if other_trigger_set: + # Validate image shapes from other trigger set + for trigger in other_trigger_set.triggers: + if trigger.get("image") is not None: + current_shape = tuple(trigger["image"].shape[1:]) + if self._expected_image_shape is None: + self._expected_image_shape = current_shape + elif current_shape != self._expected_image_shape: + raise ValueError( + f"Image shape mismatch in trigger set combination! " + f"Expected shape {self._expected_image_shape}, but got {current_shape}. " + f"All trigger images must have the same dimensions." + ) + + self.triggers.extend(other_trigger_set.triggers) + return self + +@apply_tooltips +class WhisperFeatureNode(FeatureExtractorBase): + @classmethod + def feature_type(cls) -> type[BaseFeature]: + return WhisperFeature + + @classmethod + def INPUT_TYPES(cls): + parent_inputs = super().INPUT_TYPES()["required"] + return { + **super().INPUT_TYPES(), + "required": { + **parent_inputs, + "alignment_data": ("whisper_alignment",), + }, + "optional": { + "trigger_set": ("TRIGGER_SET",), + "context_size": ("INT", {"default": +3, "min": 0, "max": 10}), + "overlap_mode": (["blend", "replace", "add"], {"default": "blend"}), + } + } + + RETURN_TYPES = ("FEATURE", "IMAGE") + FUNCTION = "create_feature" + CATEGORY = _category + + def create_feature(self, frame_rate, frame_count, width, height, extraction_method, + alignment_data, trigger_set=None, context_size=3, overlap_mode="blend"): + + # Parse alignment data + try: + data = alignment_data if not isinstance(alignment_data, str) else json.loads(alignment_data) + except (json.JSONDecodeError, KeyError, TypeError) as e: + raise ValueError(f"Invalid alignment data format: {e}") + + # Parse trigger set if provided + triggers = None + if trigger_set: + try: + triggers = json.loads(trigger_set) if isinstance(trigger_set, str) else trigger_set + except json.JSONDecodeError: + print("Warning: Could not parse trigger_set JSON") + + # Create the WhisperFeature with the requested extraction method + whisper_feature = WhisperFeature( + name="whisper_feature", + frame_rate=frame_rate, + frame_count=frame_count, + alignment_data=alignment_data, + trigger_pairs=trigger_set, + feature_name=extraction_method, + width=width, + height=height + ) + + whisper_feature.extract() + + # Process images if triggers contain them + output_images = None + if trigger_set and any(t.get("image") is not None for t in trigger_set.triggers): + try: + print(f"Processing {len(trigger_set.triggers)} triggers with images") + image_sequence = [] + current_frame = 0 + + sorted_triggers = whisper_feature.sort_triggers_by_occurrence(trigger_set.triggers) + print(f"Sorted triggers: {len(sorted_triggers)}") + + # Instead of processing trigger by trigger, let's collect all occurrences first + all_occurrences = [] + for trigger in sorted_triggers: + if trigger.get("image") is not None: + frame_ranges = whisper_feature.find_all_trigger_frames(trigger["pattern"]) + for start_frame, end_frame in frame_ranges: + all_occurrences.append({ + "trigger": trigger, + "start_frame": start_frame, + "end_frame": end_frame + }) + + # Sort all occurrences by start frame to maintain chronological order + all_occurrences.sort(key=lambda x: x["start_frame"]) + print(f"Processing {len(all_occurrences)} total trigger occurrences in chronological order") + + # Process occurrences in order + for occurrence in all_occurrences: + trigger = occurrence["trigger"] + start_frame = occurrence["start_frame"] + end_frame = occurrence["end_frame"] + + # Convert back to tensor + images = torch.tensor(trigger["image"]) if isinstance(trigger["image"], list) else trigger["image"] + batch_size = trigger["image_batch_size"] + frame_count = end_frame - start_frame + + # Handle batch images based on fill behavior + if trigger["fill_behavior"] == "none": + frame_count = 1 + images = images[:1] + else: + # Handle fill behaviors + if batch_size > 1: + if trigger["fill_behavior"] == "loop": + repeats = (frame_count + batch_size - 1) // batch_size + images = images.repeat((repeats, 1, 1, 1))[:frame_count] + elif trigger["fill_behavior"] == "hold": + if frame_count > batch_size: + last_frame = images[-1:] + extra_frames = frame_count - batch_size + images = torch.cat([images, last_frame.repeat((extra_frames, 1, 1, 1))]) + else: + if frame_count > 1: + images = images.repeat((frame_count, 1, 1, 1)) + + if trigger["fill_behavior"] != "none": + # Only fill gaps if not "none" + if current_frame < start_frame: + zero_frames = start_frame - current_frame + zero_image = torch.zeros_like(images[0]) + image_sequence.extend([zero_image] * zero_frames) + + image_sequence.extend(images.unbind(0)) + current_frame = end_frame if trigger["fill_behavior"] != "none" else start_frame + 1 + + if image_sequence: + print(f"Final sequence length: {len(image_sequence)}") + output_images = torch.stack(image_sequence) + else: + print("No images in sequence") + + except Exception as e: + print(f"Error processing trigger images: {e}") + import traceback + traceback.print_exc() + output_images = None + + # Set feature back to requested extraction method + whisper_feature.set_active_feature(extraction_method) + + return (whisper_feature, output_images) if output_images is not None else (whisper_feature, None) + +@apply_tooltips +class TriggerBuilder: + """Creates triggers that respond to specific words or phrases in the Whisper transcription. + Can be chained together to create complex trigger combinations. + + Example Usage: + 1. Single trigger for "amazing": + - pattern: "amazing" + - start_value: 0.0 + - end_value: 1.0 + + 2. Chain multiple triggers: + TriggerBuilder("happy") -> TriggerBuilder("sad") + Each trigger specifies how it blends with the accumulated result + """ + + @classmethod + def INPUT_TYPES(cls): + return { + "required": { + "pattern": ("STRING", {"multiline": False, "default": "hello"}), + "start_value": ("FLOAT", {"default": 0.0, "min": 0.0, "max": 1.0}), + "end_value": ("FLOAT", {"default": 1.0, "min": 0.0, "max": 1.0}), + "match_mode": (["exact", "contains", "regex", "phonetic"], {"default": "contains"}), + "fade_type": (["none", "linear", "smooth"], {"default": "linear"}), + "duration_frames": ("INT", {"default": 0, "min": 0}), + "blend_mode": (["blend", "add", "multiply", "max"], {"default": "blend"}), + "fill_behavior": (["none", "hold", "loop"], {"default": "none"}), + }, + "optional": { + "previous_triggers": ("TRIGGER_SET",), + "trigger_image": ("IMAGE",), + } + } + + RETURN_TYPES = ("TRIGGER_SET",) + FUNCTION = "build" + CATEGORY = _category + + def build(self, pattern: str, start_value: float, end_value: float, + match_mode: str, fade_type: str, duration_frames: int, + blend_mode: str, fill_behavior: str, previous_triggers=None, + trigger_image=None) -> tuple: + + trigger_set = TriggerSet() + + # Add new trigger + trigger_set.add_trigger( + pattern=pattern, + values=(start_value, end_value), + mode=match_mode, + fade=fade_type, + duration=duration_frames, + blend_mode=blend_mode, + fill_behavior=fill_behavior, + image=trigger_image + ) + + # Combine with previous triggers if any + trigger_set.extend(previous_triggers) + + return (trigger_set,) + +@apply_tooltips +class ContextModifier: + """Modifies trigger behavior based on context. + + Example Usage: + 1. Amplify long words: + - modifier_type: "timing" + - condition: "duration > 0.5" + - value_adjust: 1.5 + + 2. Create sequence effects: + - modifier_type: "sequence" + - condition: "index % 2 == 0" + - value_adjust: 0.8 + """ + + @classmethod + def INPUT_TYPES(cls): + return { + "required": { + "trigger_set": ("TRIGGER_SET",), + + # Type of context to consider: + # - timing: Word duration and position + # - sentiment: Positive/negative context + # - speaker: Who is speaking + # - sequence: Pattern in word sequence + "modifier_type": (["timing", "sentiment", "speaker", "sequence"], + {"default": "timing"}), + + # Python expression that determines when to apply modification + # Available variables depend on modifier_type: + # - timing: duration, start, end + # - sentiment: is_positive, sentiment_score + # - speaker: speaker_id, is_new_speaker + # - sequence: index, total_words + "condition": ("STRING", {"multiline": True, + "default": "duration > 0.5"}), + + # How much to modify the trigger value when condition is true + # 1.0 = no change, >1.0 amplify, <1.0 reduce + "value_adjust": ("FLOAT", {"default": 1.2, "min": 0.0, "max": 2.0}), + + # How many words to look at for context + "window_size": ("INT", {"default": 3, "min": 1, "max": 10}), + } + } + + RETURN_TYPES = ("TRIGGER_SET",) + FUNCTION = "modify" + CATEGORY = _category + + def modify(self, trigger_set: str, modifier_type: str, condition: str, + value_adjust: float, window_size: int) -> tuple: + trigger_data = json.loads(trigger_set) + + context_mod = { + "type": modifier_type, + "condition": condition, + "adjustment": value_adjust, + "window": window_size + } + + trigger_data["context_modifier"] = context_mod + return (json.dumps(trigger_data),) + +import json +@apply_tooltips +class WhisperToPromptTravel: + """Converts Whisper alignment data to prompt travel format""" + + @classmethod + def INPUT_TYPES(cls): + return { + "required": { + "alignment_data": ("whisper_alignment",), + "fps": ("FLOAT", {"default": 24.0, "min": 0.1, "max": 120.0}), + } + } + + RETURN_TYPES = ("STRING",) + FUNCTION = "convert" + CATEGORY = _category + + def convert(self, segments_alignment, fps): + import json + + # Parse the alignment data + try: + segments = json.loads(segments_alignment) + except json.JSONDecodeError: + raise ValueError("Invalid segments_alignment JSON format") + + # Create frame-to-prompt mapping + prompt_travel = {} + + for segment in segments: + # Convert time to frame number + frame = int(segment["start"] * fps) + prompt_travel[str(frame)] = segment["value"] + + # Convert to string format + result = "{\n" + for frame, prompt in sorted(prompt_travel.items(), key=lambda x: int(x[0])): + result += f'"{frame}":"{prompt}",\n' + result = result.rstrip(",\n") + "\n}" + + return (result,) + +@apply_tooltips +class WhisperTextRenderer: + """Renders text overlays from Whisper alignment data with animations""" + + # Built-in fonts that are OS-agnostic + BUILTIN_FONTS = { + "arial": "arial.ttf", + "times": "times.ttf", + "courier": "courier.ttf", + "helvetica": "helvetica.ttf" + } + + @classmethod + def INPUT_TYPES(cls): + return { + "required": { + "images": ("IMAGE",), # Input video frames + "feature": ("FEATURE",), + "font_size": ("INT", {"default": 32, "min": 8, "max": 256}), + "font_name": (list(cls.BUILTIN_FONTS.keys()), {"default": "arial"}), + "position": (["top", "middle", "bottom"], {"default": "bottom"}), + "horizontal_align": (["left", "center", "right"], {"default": "center"}), + "margin": ("INT", {"default": 20, "min": 0, "max": 200}), + "animation_type": (["none", "fade", "pop", "slide"], {"default": "fade"}), + "animation_duration": ("INT", {"default": 15, "min": 1, "max": 60}), + }, + "optional": { + "max_width": ("INT", {"default": 0, "min": 0}), # 0 = full width + "bg_color": ("STRING", {"default": "#000000"}), + "text_color": ("STRING", {"default": "#FFFFFF"}), + "opacity": ("FLOAT", {"default": 0.8, "min": 0.0, "max": 1.0}), + } + } + + RETURN_TYPES = ("IMAGE",) + FUNCTION = "render" + CATEGORY = _category + + def render(self, images, feature, font_size, font_name, position, horizontal_align, + margin, animation_type, animation_duration, max_width=0, + bg_color="#000000", text_color="#FFFFFF", opacity=0.8): + + # Get dimensions from input images + B, H, W, C = images.shape + device = images.device + + # Create output tensor + output = torch.zeros((B, H, W, 4), device=device) + output[..., 3] = 1.0 # Set alpha to 1 + + # Load font + font_path = self._get_font_path(font_name) + font = ImageFont.truetype(str(font_path), font_size) + + # Process each word/segment + for item in feature.alignment_data: + text = item["value"] + start_frame = int(item["start"] * feature.frame_rate) + end_frame = int(item["end"] * feature.frame_rate) + + # Create text mask using PIL (temporarily on CPU) + text_mask = self._create_text_mask( + text, (W, H), font, position, horizontal_align, + margin, max_width + ) + + # Convert mask to tensor and move to GPU + text_mask = torch.from_numpy(text_mask).to(device) + + # Apply animation and colors + self._apply_animation_and_colors( + output, text_mask, start_frame, end_frame, + animation_type, animation_duration, + text_color, bg_color, opacity + ) + + # Composite with input images + output = images * (1 - output[..., 3:]) + output[..., :3] * output[..., 3:] + + return (output,) + + def _create_text_mask(self, text, size, font, position, align, margin, max_width): + """Creates a binary mask for text using PIL""" + W, H = size + img = Image.new('L', size, 0) + draw = ImageDraw.Draw(img) + + # Word wrap if needed + if max_width > 0: + text = textwrap.fill(text, width=max_width) + + # Get text size + bbox = draw.textbbox((0, 0), text, font=font) + text_w = bbox[2] - bbox[0] + text_h = bbox[3] - bbox[1] + + # Calculate position + if align == "left": + x = margin + elif align == "right": + x = W - text_w - margin + else: # center + x = (W - text_w) // 2 + + if position == "top": + y = margin + elif position == "bottom": + y = H - text_h - margin + else: # middle + y = (H - text_h) // 2 + + # Draw text + draw.text((x, y), text, font=font, fill=255) + + return np.array(img) / 255.0 + + def _apply_animation_and_colors(self, output, mask, start_frame, end_frame, + animation_type, duration, text_color, bg_color, opacity): + """Applies animation and colors to the text mask""" + + # Convert colors to RGB tensors + text_rgb = torch.tensor(self._hex_to_rgb(text_color), device=output.device) / 255.0 + bg_rgb = torch.tensor(self._hex_to_rgb(bg_color), device=output.device) / 255.0 + + for frame in range(start_frame, end_frame + 1): + if frame >= len(output): + break + + # Calculate animation factor + if animation_type == "none": + factor = 1.0 + elif animation_type == "fade": + factor = self._get_fade_factor(frame, start_frame, end_frame, duration) + elif animation_type == "pop": + factor = self._get_pop_factor(frame, start_frame, end_frame, duration) + else: # slide + factor = self._get_slide_factor(frame, start_frame, end_frame, duration) + + # Apply animation and colors + alpha = mask * factor * opacity + output[frame, ..., :3] = (text_rgb * alpha[..., None] + + bg_rgb * (1 - alpha[..., None])) + output[frame, ..., 3] = alpha + + @staticmethod + def _hex_to_rgb(hex_color): + """Converts hex color to RGB values""" + hex_color = hex_color.lstrip('#') + return tuple(int(hex_color[i:i+2], 16) for i in (0, 2, 4)) + + @staticmethod + def _get_fade_factor(frame, start, end, duration): + """Calculate fade animation factor""" + if frame < start + duration: + return min(1.0, (frame - start) / duration) + elif frame > end - duration: + return max(0.0, (end - frame) / duration) + return 1.0 + + @staticmethod + def _get_pop_factor(frame, start, end, duration): + """Calculate pop animation factor""" + if frame < start + duration: + t = (frame - start) / duration + return min(1.0, 1.2 * (1 - (1 - t) ** 2)) # Overshoot and settle + elif frame > end - duration: + t = (end - frame) / duration + return max(0.0, t) + return 1.0 + + @staticmethod + def _get_slide_factor(frame, start, end, duration): + """Calculate slide animation factor""" + if frame < start + duration: + return min(1.0, (frame - start) / duration) + elif frame > end - duration: + return max(0.0, (end - frame) / duration) + return 1.0 + + def _get_font_path(self, font_name): + """Get built-in font path""" + current_dir = Path(__file__).parent + fonts_dir = current_dir / "fonts" + return fonts_dir / self.BUILTIN_FONTS[font_name] + +@apply_tooltips +class ManualWhisperAlignmentData: + """Creates alignment data from manually entered text and timings. + + You can enter either word alignments or segment alignments. + Format should match ComfyUI-Whisper output. + + Note: For proper whisper alignment data, you should use ComfyUI-Whisper: + https://github.com/yuvraj108c/ComfyUI-Whisper + """ + + @classmethod + def INPUT_TYPES(cls): + return { + "required": { + "alignment_text": ("STRING", { + "multiline": True, + "default": """ +[{"value": "This is a manual alignment node. You should use ComfyUI-Whisper instead", "start": 0.0, "end": 6.26}, {"value": "for proper speech-to-text with timing. https://github.com/yuvraj108c/ComfyUI-Whisper", "start": 7.98, "end": 9.38}] +""" + }), + } + } + + RETURN_TYPES = ("whisper_alignment",) + RETURN_NAMES = ("alignment_data",) + FUNCTION = "parse" + CATEGORY = _category + + def parse(self, alignment_text: str) -> tuple: + return (alignment_text,) + +@apply_tooltips +class WhisperTimeAdjuster: + """Manually adjust timing in Whisper alignment data""" + + @classmethod + def INPUT_TYPES(cls): + return { + "required": { + "alignment_data": ("whisper_alignment",), + "time_offset": ("FLOAT", { + "default": 0.0, + "min": -1000.0, + "max": 1000.0, + "step": 0.1, + "description": "Seconds to shift all timestamps (positive = delay, negative = earlier)" + }), + } + } + + RETURN_TYPES = ("whisper_alignment",) + FUNCTION = "adjust" + CATEGORY = _category + + def adjust(self, alignment_data, time_offset): + try: + data = alignment_data if not isinstance(alignment_data, str) else json.loads(alignment_data) + + # Adjust all timestamps by offset + adjusted_data = [] + for segment in data: + adjusted_segment = segment.copy() + adjusted_segment["start"] = segment["start"] + time_offset + adjusted_segment["end"] = segment["end"] + time_offset + adjusted_data.append(adjusted_segment) + + return (adjusted_data,) + + except (json.JSONDecodeError, KeyError) as e: + raise ValueError(f"Invalid alignment data format: {e}") + +@apply_tooltips +class WhisperAutoAdjust: + """Automatically adjusts Whisper timing by detecting meaningful audio start""" + + @classmethod + def INPUT_TYPES(cls): + return { + "required": { + "alignment_data": ("whisper_alignment",), + "audio": ("AUDIO",), # Video Helper Suite audio format + "detection_window": ("INT", { + "default": 1024, + "min": 256, + "max": 8192, + "step": 256, + "description": "Window size for energy detection" + }), + "energy_threshold": ("FLOAT", { + "default": 0.0001, + "min": 0.00001, + "max": 0.001, + "step": 0.00001, + "description": "Energy threshold (lower = more sensitive)" + }) + } + } + + RETURN_TYPES = ("whisper_alignment",) + FUNCTION = "adjust" + CATEGORY = _category + + def detect_audio_start(self, audio_dict, window_size, threshold): + # Extract waveform and convert to mono numpy array, like BaseAudioProcessor + audio = audio_dict['waveform'].squeeze(0).mean(axis=0).cpu().numpy() + sample_rate = audio_dict['sample_rate'] + + print(f"Audio shape before processing: {audio_dict['waveform'].shape}") + print(f"Audio shape after mono conversion: {audio.shape}") + print(f"Sample rate: {sample_rate}") + + # Calculate energy in windows using numpy for efficiency + num_windows = (len(audio) - window_size) // (window_size // 2) + energies = np.zeros(num_windows) + + for i in range(num_windows): + start = i * (window_size // 2) + end = start + window_size + window = audio[start:end] + energies[i] = np.mean(window ** 2) + + print(f"Energy shape: {energies.shape}") + print(f"Max energy: {energies.max():.6f}") + print(f"Min energy: {energies.min():.6f}") + + # Find first window above threshold + start_window = np.where(energies > threshold)[0] + if len(start_window) == 0: + print(f"No windows above threshold {threshold}") + return 0 + + # Convert window index to sample + start_sample = start_window[0] * (window_size // 2) + start_time = start_sample / sample_rate + + print(f"Found start time: {start_time:.3f}s") + return start_time + + def adjust(self, alignment_data, audio, detection_window=1024, energy_threshold=0.0001): + try: + data = alignment_data if not isinstance(alignment_data, str) else json.loads(alignment_data) + + print("Original whisper timings:") + for segment in data[:3]: # Print first 3 segments + print(f" {segment['start']:.3f} -> {segment['end']:.3f}: {segment['value']}") + + # Detect meaningful audio start + audio_start = self.detect_audio_start(audio, detection_window, energy_threshold) + print(f"\nDetected audio start: {audio_start}") + + # Get first whisper timestamp + whisper_start = min(segment["start"] for segment in data) + print(f"First whisper timestamp: {whisper_start}") + + # Calculate needed offset + time_offset = audio_start - whisper_start + print(f"Calculated offset: {time_offset}") + + # Adjust all timestamps + adjusted_data = [] + for segment in data: + adjusted_segment = segment.copy() + adjusted_segment["start"] = segment["start"] + time_offset + adjusted_segment["end"] = segment["end"] + time_offset + adjusted_data.append(adjusted_segment) + + print("\nAdjusted whisper timings:") + for segment in adjusted_data[:3]: # Print first 3 segments + print(f" {segment['start']:.3f} -> {segment['end']:.3f}: {segment['value']}") + + return (adjusted_data,) + + except Exception as e: + print(f"Error during adjustment: {str(e)}") + import traceback + traceback.print_exc() + raise ValueError(f"Error during alignment: {str(e)}") + + + + diff --git a/nodes/flex/feature_modulation.py b/nodes/flex/feature_modulation.py index d3d92df..2444f2c 100644 --- a/nodes/flex/feature_modulation.py +++ b/nodes/flex/feature_modulation.py @@ -1,12 +1,13 @@ from ... import RyanOnTheInside import numpy as np -import matplotlib.pyplot as plt import torch -from io import BytesIO -from PIL import Image import random from ..node_utilities import apply_easing +from ...tooltips import apply_tooltips +from scipy.interpolate import interp1d +from scipy.signal import find_peaks +@apply_tooltips class FeatureModulationBase(RyanOnTheInside): CATEGORY = "RyanOnTheInside/FlexFeatures/FeatureModulators" FUNCTION = "modulate" @@ -19,55 +20,6 @@ def INPUT_TYPES(cls): } } - def visualize(self, feature, width=1920, height=1080): - values = [feature.get_value_at_frame(i) for i in range(feature.frame_count)] - frames = len(values) - - plt.figure(figsize=(width/100, height/100), dpi=100) - plt.style.use('dark_background') - - plt.plot(values, color='dodgerblue', linewidth=2) - - plt.xlabel('Frame', color='white', fontsize=14) - plt.ylabel('Value', color='white', fontsize=14) - - plt.grid(True, linestyle='--', alpha=0.3, color='gray') - - plt.tick_params(axis='both', colors='white', labelsize=12) - - max_ticks = 10 - step = max(1, frames // max_ticks) - x_ticks = range(0, frames, step) - plt.xticks(x_ticks, [str(x) for x in x_ticks]) - - y_min, y_max = min(values), max(values) - y_range = y_max - y_min - plt.ylim(y_min - 0.05*y_range, y_max + 0.05*y_range) - - plt.gca().spines['top'].set_visible(False) - plt.gca().spines['right'].set_visible(False) - plt.gca().spines['bottom'].set_color('white') - plt.gca().spines['left'].set_color('white') - - plt.title(f'Feature: {feature.name}', color='white', fontsize=16) - - plt.tight_layout(pad=0.5) - - buf = BytesIO() - plt.savefig(buf, format='png', facecolor='black', edgecolor='none') - buf.seek(0) - - img = Image.open(buf) - img_array = np.array(img) - img_tensor = torch.from_numpy(img_array).float() / 255.0 - if img_tensor.dim() == 3: - img_tensor = img_tensor.unsqueeze(0) - - plt.close() - buf.close() - - return img_tensor - def create_processed_feature(self, original_feature, processed_values, name_prefix="Processed", invert_output=False): class ProcessedFeature(type(original_feature)): def __init__(self, original_feature, processed_values, invert_output): @@ -75,8 +27,7 @@ def __init__(self, original_feature, processed_values, invert_output): self.name = f"{name_prefix}_{original_feature.name}" if invert_output: self.name = f"Inverted_{self.name}" - self.frame_rate = original_feature.frame_rate - self.frame_count = len(processed_values) + if invert_output: min_val, max_val = min(processed_values), max(processed_values) @@ -92,6 +43,7 @@ def get_value_at_frame(self, frame_index): return ProcessedFeature(original_feature, processed_values, invert_output) +@apply_tooltips class FeatureMixer(FeatureModulationBase): @classmethod def INPUT_TYPES(cls): @@ -113,8 +65,8 @@ def INPUT_TYPES(cls): } } - RETURN_TYPES = ("FEATURE", "IMAGE") - RETURN_NAMES = ("FEATURE", "FEATURE_VISUALIZATION") + RETURN_TYPES = ("FEATURE",) + RETURN_NAMES = ("FEATURE",) FUNCTION = "modulate" def modulate(self, feature, base_gain, floor, ceiling, peak_sharpness, valley_sharpness, attack, release, smoothing, feature_threshold, rise_detection_threshold, rise_smoothing_factor, invert_output): @@ -130,12 +82,10 @@ def modulate(self, feature, base_gain, floor, ceiling, peak_sharpness, valley_sh gained = [v * base_gain for v in normalized] - def waveshape(v): return v**peak_sharpness if v > 0.5 else 1 - (1-v)**valley_sharpness waveshaped = [waveshape(v) for v in gained] - def apply_envelope(values, attack, release): envelope = [] current = values[0] @@ -147,8 +97,7 @@ def apply_envelope(values, attack, release): envelope.append(current) return envelope enveloped = apply_envelope(waveshaped, attack, release) - - + def smooth_values(values, smoothing_factor): smoothed = values.copy() for i in range(1, len(values)): @@ -163,7 +112,7 @@ def smooth_values(values, smoothing_factor): final_values = [max(floor, min(ceiling, v)) for v in adjusted] processed_feature = self.create_processed_feature(feature, final_values, "Processed", invert_output) - return (processed_feature, self.visualize(processed_feature)) + return (processed_feature,) def apply_rise_time_adjustment(self, values, rise_detection_threshold, rise_smoothing_factor): if all(v == 0 for v in values): @@ -188,6 +137,7 @@ def apply_rise_time_adjustment(self, values, rise_detection_threshold, rise_smoo return adjusted +@apply_tooltips class FeatureScaler(FeatureModulationBase): @classmethod def INPUT_TYPES(cls): @@ -202,8 +152,8 @@ def INPUT_TYPES(cls): } } - RETURN_TYPES = ("FEATURE", "IMAGE") - RETURN_NAMES = ("FEATURE", "FEATURE_VISUALIZATION") + RETURN_TYPES = ("FEATURE",) + RETURN_NAMES = ("FEATURE",) def modulate(self, feature, scale_type, min_output, max_output, exponent, invert_output): values = [feature.get_value_at_frame(i) for i in range(feature.frame_count)] @@ -223,8 +173,9 @@ def modulate(self, feature, scale_type, min_output, max_output, exponent, invert final_values = [min_output + v * (max_output - min_output) for v in scaled] processed_feature = self.create_processed_feature(feature, final_values, "Scaled", invert_output) - return (processed_feature, self.visualize(processed_feature)) + return (processed_feature,) +@apply_tooltips class FeatureCombine(FeatureModulationBase): @classmethod def INPUT_TYPES(cls): @@ -239,8 +190,8 @@ def INPUT_TYPES(cls): } } - RETURN_TYPES = ("FEATURE", "IMAGE") - RETURN_NAMES = ("FEATURE", "FEATURE_VISUALIZATION") + RETURN_TYPES = ("FEATURE",) + RETURN_NAMES = ("FEATURE",) def modulate(self, feature1, feature2, operation, weight1, weight2, invert_output): values1 = [feature1.get_value_at_frame(i) for i in range(feature1.frame_count)] @@ -265,8 +216,9 @@ def modulate(self, feature1, feature2, operation, weight1, weight2, invert_outpu combined = [min(weight1 * v1, weight2 * v2) for v1, v2 in zip(values1, values2)] processed_feature = self.create_processed_feature(feature1, combined, "Combined", invert_output) - return (processed_feature, self.visualize(processed_feature)) + return (processed_feature,) +@apply_tooltips class FeatureMath(FeatureModulationBase): @classmethod def INPUT_TYPES(cls): @@ -279,8 +231,8 @@ def INPUT_TYPES(cls): } } - RETURN_TYPES = ("FEATURE", "IMAGE") - RETURN_NAMES = ("FEATURE", "FEATURE_VISUALIZATION") + RETURN_TYPES = ("FEATURE",) + RETURN_NAMES = ("FEATURE",) FUNCTION = "modulate" def modulate(self, feature, y, operation, invert_output): @@ -300,8 +252,9 @@ def modulate(self, feature, y, operation, invert_output): result = [min(v, y) for v in values] processed_feature = self.create_processed_feature(feature, result, "MathResult", invert_output) - return (processed_feature, self.visualize(processed_feature)) + return (processed_feature,) +@apply_tooltips class FeatureSmoothing(FeatureModulationBase): @classmethod def INPUT_TYPES(cls): @@ -316,8 +269,8 @@ def INPUT_TYPES(cls): } } - RETURN_TYPES = ("FEATURE", "IMAGE") - RETURN_NAMES = ("FEATURE", "FEATURE_VISUALIZATION") + RETURN_TYPES = ("FEATURE",) + RETURN_NAMES = ("FEATURE",) def modulate(self, feature, smoothing_type, window_size, alpha, sigma, invert_output): values = [feature.get_value_at_frame(i) for i in range(feature.frame_count)] @@ -344,8 +297,9 @@ def modulate(self, feature, smoothing_type, window_size, alpha, sigma, invert_ou adjusted_smoothed = [v + adjustment for v in smoothed] processed_feature = self.create_processed_feature(feature, adjusted_smoothed, "Smoothed", invert_output) - return (processed_feature, self.visualize(processed_feature)) + return (processed_feature,) +@apply_tooltips class FeatureOscillator(FeatureModulationBase): @classmethod def INPUT_TYPES(cls): @@ -361,8 +315,8 @@ def INPUT_TYPES(cls): } } - RETURN_TYPES = ("FEATURE", "IMAGE") - RETURN_NAMES = ("FEATURE", "FEATURE_VISUALIZATION") + RETURN_TYPES = ("FEATURE",) + RETURN_NAMES = ("FEATURE",) def modulate(self, feature, oscillator_type, frequency, amplitude, phase_shift, blend, invert_output): values = [feature.get_value_at_frame(i) for i in range(feature.frame_count)] @@ -380,10 +334,11 @@ def modulate(self, feature, oscillator_type, frequency, amplitude, phase_shift, blended = [v * (1 - blend) + osc * blend for v, osc in zip(values, oscillation)] processed_feature = self.create_processed_feature(feature, blended, "Oscillated", invert_output) - return (processed_feature, self.visualize(processed_feature)) + return (processed_feature,) #NOTE separated from FeatureMath for ease of use. +@apply_tooltips class FeatureFade(FeatureModulationBase): @classmethod def INPUT_TYPES(cls): @@ -399,8 +354,8 @@ def INPUT_TYPES(cls): } } - RETURN_TYPES = ("FEATURE", "IMAGE") - RETURN_NAMES = ("FEATURE", "FEATURE_VISUALIZATION") + RETURN_TYPES = ("FEATURE",) + RETURN_NAMES = ("FEATURE",) def modulate(self, feature1, feature2, fader, invert_output, control_feature=None): values1 = [feature1.get_value_at_frame(i) for i in range(feature1.frame_count)] @@ -421,9 +376,10 @@ def modulate(self, feature1, feature2, fader, invert_output, control_feature=Non combined = [(1 - f) * v1 + f * v2 for v1, v2, f in zip(values1, values2, fader_values)] processed_feature = self.create_processed_feature(feature1, combined, "Faded", invert_output) - return (processed_feature, self.visualize(processed_feature)) + return (processed_feature,) #NOTE: this class is technically redundant to FeatureMixer, but it's kept for clarity and ease of use. +@apply_tooltips class FeatureRebase(FeatureModulationBase): @classmethod def INPUT_TYPES(cls): @@ -436,17 +392,15 @@ def INPUT_TYPES(cls): } } - RETURN_TYPES = ("FEATURE", "IMAGE") - RETURN_NAMES = ("FEATURE", "FEATURE_VISUALIZATION") + RETURN_TYPES = ("FEATURE",) + RETURN_NAMES = ("FEATURE",) FUNCTION = "rebase" def rebase(self, feature, lower_threshold, upper_threshold, invert_output): values = [feature.get_value_at_frame(i) for i in range(feature.frame_count)] - # Apply thresholds rebased_values = [v if lower_threshold <= v <= upper_threshold else 0 for v in values] - # Re-normalize the values min_val, max_val = min(rebased_values), max(rebased_values) if min_val == max_val: normalized = [0 for _ in rebased_values] # All values are the same, normalize to 0 @@ -454,8 +408,9 @@ def rebase(self, feature, lower_threshold, upper_threshold, invert_output): normalized = [(v - min_val) / (max_val - min_val) for v in rebased_values] processed_feature = self.create_processed_feature(feature, normalized, "Rebased", invert_output) - return (processed_feature, self.visualize(processed_feature)) + return (processed_feature,) +@apply_tooltips class FeatureRenormalize(FeatureModulationBase): @classmethod def INPUT_TYPES(cls): @@ -467,19 +422,17 @@ def INPUT_TYPES(cls): **super().INPUT_TYPES()["required"], } } - RETURN_TYPES = ("FEATURE", "IMAGE") - RETURN_NAMES = ("FEATURE", "FEATURE_VISUALIZATION") + RETURN_TYPES = ("FEATURE",) + RETURN_NAMES = ("FEATURE",) FUNCTION = "renormalize" def renormalize(self, feature, lower_threshold, upper_threshold, invert_output): values = [feature.get_value_at_frame(i) for i in range(feature.frame_count)] - # Calculate the range for normalization range_size = upper_threshold - lower_threshold - # Normalize values to fit between lower and upper threshold if max(values) == min(values): - normalized = [lower_threshold for _ in values] # All values are the same + normalized = [lower_threshold for _ in values] else: normalized = [ lower_threshold + (range_size * (v - min(values)) / (max(values) - min(values))) @@ -487,34 +440,9 @@ def renormalize(self, feature, lower_threshold, upper_threshold, invert_output): ] processed_feature = self.create_processed_feature(feature, normalized, "Renormalized", invert_output) - return (processed_feature, self.visualize(processed_feature)) - -class PreviewFeature(FeatureModulationBase): - @classmethod - def INPUT_TYPES(cls): - return { - "required": { - "feature": ("FEATURE",), - **super().INPUT_TYPES()["required"], - } - } - - RETURN_TYPES = ("IMAGE",) - RETURN_NAMES = ("FEATURE_PREVIEW",) - FUNCTION = "preview" - - def preview(self, feature, invert_output): - values = [feature.get_value_at_frame(i) for i in range(feature.frame_count)] - - if invert_output: - min_val, max_val = min(values), max(values) - inverted_values = [max_val - v + min_val for v in values] - processed_feature = self.create_processed_feature(feature, inverted_values, "Inverted", invert_output) - else: - processed_feature = feature - - return (self.visualize(processed_feature),) + return (processed_feature,) +@apply_tooltips class FeatureTruncateOrExtend(FeatureModulationBase): @classmethod def INPUT_TYPES(cls): @@ -527,8 +455,8 @@ def INPUT_TYPES(cls): } } - RETURN_TYPES = ("FEATURE", "IMAGE") - RETURN_NAMES = ("FEATURE", "FEATURE_VISUALIZATION") + RETURN_TYPES = ("FEATURE",) + RETURN_NAMES = ("FEATURE",) FUNCTION = "truncate_or_extend" def truncate_or_extend(self, feature, target_feature_pipe, fill_method, invert_output): @@ -560,9 +488,10 @@ def truncate_or_extend(self, feature, target_feature_pipe, fill_method, invert_o adjusted_values = source_values processed_feature = self.create_processed_feature(feature, adjusted_values, "TruncatedOrExtended", invert_output) - return (processed_feature, self.visualize(processed_feature)) + return (processed_feature,) +@apply_tooltips class FeatureAccumulate(FeatureModulationBase): @classmethod def INPUT_TYPES(cls): @@ -579,8 +508,8 @@ def INPUT_TYPES(cls): } } - RETURN_TYPES = ("FEATURE", "IMAGE") - RETURN_NAMES = ("FEATURE", "FEATURE_VISUALIZATION") + RETURN_TYPES = ("FEATURE",) + RETURN_NAMES = ("FEATURE",) FUNCTION = "accumulate" def accumulate(self, feature, start, end, threshold, skip_thresholded, frames_window, deccumulate, invert_output): @@ -626,13 +555,13 @@ def accumulate(self, feature, start, end, threshold, skip_thresholded, frames_wi normalized = [start + (v - min_val) * (end - start) / (max_val - min_val) for v in accumulated] processed_feature = self.create_processed_feature(feature, normalized, "Accumulated", invert_output) - return (processed_feature, self.visualize(processed_feature)) + return (processed_feature,) - import numpy as np from scipy.interpolate import interp1d +@apply_tooltips class FeatureContiguousInterpolate(FeatureModulationBase): @classmethod def INPUT_TYPES(cls): @@ -650,8 +579,8 @@ def INPUT_TYPES(cls): } } - RETURN_TYPES = ("FEATURE", "IMAGE") - RETURN_NAMES = ("FEATURE", "FEATURE_VISUALIZATION") + RETURN_TYPES = ("FEATURE",) + RETURN_NAMES = ("FEATURE",) FUNCTION = "interpolate" def interpolate(self, feature, threshold, start, end, easing, fade_out, invert_output): @@ -697,5 +626,156 @@ def interpolate(self, feature, threshold, start, end, easing, fade_out, invert_o interpolated[idx] = fade_out_values[i] processed_feature = self.create_processed_feature(feature, interpolated, "Interpolated", invert_output) - return (processed_feature, self.visualize(processed_feature)) + return (processed_feature,) + +@apply_tooltips +class FeatureInterpolator(FeatureModulationBase): + @classmethod + def INPUT_TYPES(cls): + return { + "required": { + "feature": ("FEATURE",), + "interpolation_method": (["zero", "hold", "linear", "cubic", "nearest", "previous", "next", "quadratic"],), + "threshold": ("FLOAT", {"default": 0.0, "min": 0.0, "max": 1.0, "step": 0.01}), + "min_difference": ("FLOAT", {"default": 0.0, "min": 0.0, "max": 1.0, "step": 0.01}), + "min_distance": ("INT", {"default": 1, "min": 1, "max": 100, "step": 1}), + "extrapolate": ("BOOLEAN", {"default": False}), + **super().INPUT_TYPES()["required"], + } + } + + RETURN_TYPES = ("FEATURE",) + RETURN_NAMES = ("FEATURE",) + FUNCTION = "modulate" + + def modulate(self, feature, interpolation_method, threshold, min_difference, min_distance, extrapolate, invert_output): + # Get feature values + values = [feature.get_value_at_frame(i) for i in range(feature.frame_count)] + + # Find significant points based on threshold and difference + significant_indices = [] + last_value = None + last_index = None + + for i, v in enumerate(values): + # Check threshold directly + if v >= threshold: + # Check minimum difference from last point + if last_value is None or abs(v - last_value) >= min_difference: + # Check minimum distance from last point + if last_index is None or (i - last_index) >= min_distance: + significant_indices.append(i) + last_value = v + last_index = i + + if not significant_indices: + # If no significant points found, return original feature + return (feature,) + + significant_values = [values[i] for i in significant_indices] + + # Create interpolation function + x = np.array(significant_indices) + y = np.array(significant_values) + + # Handle extrapolation + fill_value = "extrapolate" if extrapolate else (significant_values[0], significant_values[-1]) + + # Generate output values + if interpolation_method == "zero": + # Only set values at exact points, everything else is zero + interpolated = np.zeros(feature.frame_count) + for idx, val in zip(significant_indices, significant_values): + interpolated[idx] = val + elif interpolation_method == "hold": + # Hold each value until the next point + interpolated = np.zeros(feature.frame_count) + for i in range(len(significant_indices)-1): + start_idx = significant_indices[i] + end_idx = significant_indices[i+1] + interpolated[start_idx:end_idx] = significant_values[i] + # Handle the last point + interpolated[significant_indices[-1]:] = significant_values[-1] + # Handle the beginning if needed + if significant_indices[0] > 0: + interpolated[:significant_indices[0]] = significant_values[0] if extrapolate else 0 + else: + # Create interpolator based on method + if interpolation_method == "linear": + f = interp1d(x, y, kind='linear', bounds_error=False, fill_value=fill_value) + elif interpolation_method == "cubic": + # Need at least 4 points for cubic, fallback to quadratic if not enough points + if len(x) >= 4: + f = interp1d(x, y, kind='cubic', bounds_error=False, fill_value=fill_value) + else: + f = interp1d(x, y, kind='quadratic', bounds_error=False, fill_value=fill_value) + elif interpolation_method == "nearest": + f = interp1d(x, y, kind='nearest', bounds_error=False, fill_value=fill_value) + elif interpolation_method == "previous": + f = interp1d(x, y, kind='previous', bounds_error=False, fill_value=fill_value) + elif interpolation_method == "next": + f = interp1d(x, y, kind='next', bounds_error=False, fill_value=fill_value) + elif interpolation_method == "quadratic": + # Need at least 3 points for quadratic, fallback to linear if not enough points + if len(x) >= 3: + f = interp1d(x, y, kind='quadratic', bounds_error=False, fill_value=fill_value) + else: + f = interp1d(x, y, kind='linear', bounds_error=False, fill_value=fill_value) + + # Generate interpolated values for all frames + x_new = np.arange(feature.frame_count) + interpolated = f(x_new) + + # Create processed feature + processed_feature = self.create_processed_feature(feature, interpolated, "Interpolated", invert_output) + return (processed_feature,) + +@apply_tooltips +class FeaturePeakDetector(FeatureModulationBase): + @classmethod + def INPUT_TYPES(cls): + return { + "required": { + "feature": ("FEATURE",), + "prominence": ("FLOAT", {"default": 0.1, "min": 0.0, "max": 1.0, "step": 0.01}), + "distance": ("INT", {"default": 1, "min": 1, "max": 100, "step": 1}), + "width": ("INT", {"default": 1, "min": 1, "max": 100, "step": 1}), + "plateau_size": ("INT", {"default": 1, "min": 1, "max": 100, "step": 1}), + "detect_valleys": ("BOOLEAN", {"default": False}), + **super().INPUT_TYPES()["required"], + } + } + + RETURN_TYPES = ("FEATURE",) + RETURN_NAMES = ("FEATURE",) + FUNCTION = "modulate" + + def modulate(self, feature, prominence, distance, width, plateau_size, detect_valleys, invert_output): + # Get feature values + values = [feature.get_value_at_frame(i) for i in range(feature.frame_count)] + + # Convert to numpy array for processing + signal = np.array(values) + + # If detecting valleys, invert the signal temporarily + if detect_valleys: + signal = -signal + + # Find peaks with given parameters + peaks, properties = find_peaks( + signal, + prominence=prominence, # Minimum prominence of peaks + distance=distance, # Minimum distance between peaks + width=width, # Minimum width of peaks + plateau_size=plateau_size # Minimum size of flat peaks + ) + + # Create output signal where peaks are 1.0 and everything else is 0.0 + peak_signal = np.zeros_like(signal) + peak_signal[peaks] = 1.0 + + # Create processed feature + name_prefix = "Valleys" if detect_valleys else "Peaks" + processed_feature = self.create_processed_feature(feature, peak_signal, name_prefix, invert_output) + return (processed_feature,) diff --git a/nodes/flex/features.py b/nodes/flex/features.py index 4651d7a..a0697d0 100644 --- a/nodes/flex/features.py +++ b/nodes/flex/features.py @@ -4,16 +4,54 @@ import cv2 from ..masks.mask_utils import calculate_optical_flow from scipy.interpolate import interp1d, make_interp_spline - +import json class BaseFeature(ABC): - def __init__(self, name, feature_type, frame_rate, frame_count): + def __init__(self, name, feature_type, frame_rate, frame_count, width, height): self.name = name self.type = feature_type self.frame_rate = frame_rate self.frame_count = frame_count + self.width = width + self.height = height self.data = None self.features = None self.inverted = False + self._min_value = None + self._max_value = None + + @property + def min_value(self): + """Get minimum value - either set explicitly or calculated from data""" + if self._min_value is not None: + return self._min_value + + if self.data is not None: + return float(np.min(self.data)) + elif self.features is not None and hasattr(self, 'feature_name'): + return float(min(self.features[self.feature_name])) + return 0.0 # Default fallback + + @min_value.setter + def min_value(self, value): + """Set minimum value explicitly""" + self._min_value = float(value) + + @property + def max_value(self): + """Get maximum value - either set explicitly or calculated from data""" + if self._max_value is not None: + return self._max_value + + if self.data is not None: + return float(np.max(self.data)) + elif self.features is not None and hasattr(self, 'feature_name'): + return float(max(self.features[self.feature_name])) + return 1.0 # Default fallback + + @max_value.setter + def max_value(self, value): + """Set maximum value explicitly""" + self._max_value = float(value) @abstractmethod def extract(self): @@ -38,6 +76,13 @@ def normalize(self): if self.data is not None: self.data = (self.data - np.min(self.data)) / (np.max(self.data) - np.min(self.data)) return self + + + def get_normalized_data(self): + if self.data is not None: + return (self.data - np.min(self.data)) / (np.max(self.data) - np.min(self.data)) + return None + def invert(self): if self.data is not None: @@ -53,9 +98,42 @@ def invert(self): self.inverted = not self.inverted return self +class FloatFeature(BaseFeature): + def __init__(self, name, frame_rate, frame_count, width, height, float_values, feature_type='raw'): + super().__init__(name, "float", frame_rate, frame_count, width, height) + self.float_values = np.array(float_values) + self.feature_type = feature_type + self.available_features = self.get_extraction_methods() + + @classmethod + def get_extraction_methods(cls): + return ["raw", "smooth", "cumulative"] + + def extract(self): + if len(self.float_values) != self.frame_count: + # Interpolate to match frame count if necessary + x = np.linspace(0, 1, len(self.float_values)) + x_new = np.linspace(0, 1, self.frame_count) + self.float_values = np.interp(x_new, x, self.float_values) + + if self.feature_type == "raw": + self.data = self.float_values + elif self.feature_type == "smooth": + # Apply simple moving average smoothing + window_size = max(3, self.frame_count // 30) # Dynamic window size + kernel = np.ones(window_size) / window_size + self.data = np.convolve(self.float_values, kernel, mode='same') + elif self.feature_type == "cumulative": + # Cumulative sum of values + self.data = np.cumsum(self.float_values) + else: + raise ValueError(f"Unsupported feature type: {self.feature_type}") + + return self + class ManualFeature(BaseFeature): - def __init__(self, name, frame_rate, frame_count, start_frame, end_frame, start_value, end_value, method='linear'): - super().__init__(name, "manual", frame_rate, frame_count) + def __init__(self, name, frame_rate, frame_count, width, height, start_frame, end_frame, start_value, end_value, method='linear'): + super().__init__(name, "manual", frame_rate, frame_count, width, height) self.start_frame = start_frame self.end_frame = end_frame self.start_value = start_value @@ -109,11 +187,12 @@ def ease_out(t): return ease_out class TimeFeature(BaseFeature): - def __init__(self, name, frame_rate, frame_count, effect_type='smooth', speed=1.0, offset=0.0): + def __init__(self, name, frame_rate, frame_count, width, height, effect_type='smooth', speed=1, offset=0.0): + super().__init__(name, "time", frame_rate, frame_count, width, height) self.effect_type = effect_type - self.speed = speed + # speed is now in frames (how many frames to complete one cycle) + self.speed = max(1, int(speed)) # Ensure at least 1 frame self.offset = offset - super().__init__(name, "time", frame_rate, frame_count) @classmethod def get_extraction_methods(self): @@ -122,8 +201,10 @@ def get_extraction_methods(self): ] def extract(self): - t = np.linspace(0, self.frame_count / self.frame_rate, self.frame_count) - t = (t * self.speed + self.offset) % 1 + # Calculate time values based on frames directly + frames = np.arange(self.frame_count) + # Convert to cycle position (0 to 1) based on speed in frames + t = (frames / self.speed + self.offset) % 1 if self.effect_type == 'smooth': self.data = t @@ -138,15 +219,15 @@ def extract(self): else: raise ValueError("Unsupported effect type") - return self.normalize() + return self class DepthFeature(BaseFeature): - def __init__(self, name, frame_rate, frame_count, depth_maps, feature_name='mean_depth'): + def __init__(self, name, frame_rate, frame_count, width, height, depth_maps, feature_name='mean_depth'): + super().__init__(name, "depth", frame_rate, frame_count, width, height) self.depth_maps = depth_maps self.features = None self.feature_name = feature_name self.available_features = self.get_extraction_methods() - super().__init__(name, "depth", frame_rate, frame_count) @classmethod def get_extraction_methods(self): @@ -214,13 +295,13 @@ def set_active_feature(self, feature_name): raise ValueError(f"Invalid feature name. Available features are: {', '.join(self.available_features)}") class ColorFeature(BaseFeature): - def __init__(self, name, frame_rate, frame_count, images, feature_name='dominant_color'): + def __init__(self, name, frame_rate, frame_count, width, height, images, feature_name='dominant_color'): if images.dim() != 4 or images.shape[-1] != 3: raise ValueError(f"Expected images in BHWC format, but got shape {images.shape}") + super().__init__(name, "color", frame_rate, frame_count, width, height) self.images = images self.feature_name = feature_name self.available_features = self.get_extraction_methods() - super().__init__(name, "color", frame_rate, frame_count) @classmethod def get_extraction_methods(self): @@ -298,11 +379,11 @@ def set_active_feature(self, feature_name): raise ValueError(f"Invalid feature name. Available features are: {', '.join(self.available_features)}") class BrightnessFeature(BaseFeature): - def __init__(self, name, frame_rate, frame_count, images, feature_name='mean_brightness'): + def __init__(self, name, frame_rate, frame_count, width, height, images, feature_name='mean_brightness'): + super().__init__(name, "brightness", frame_rate, frame_count, width, height) self.images = images self.feature_name = feature_name self.available_features = self.get_extraction_methods() - super().__init__(name, "brightness", frame_rate, frame_count) @classmethod def get_extraction_methods(self): @@ -366,7 +447,8 @@ def set_active_feature(self, feature_name): raise ValueError(f"Invalid feature name. Available features are: {', '.join(self.available_features)}") class MotionFeature(BaseFeature): - def __init__(self, name, frame_rate, frame_count, images, feature_name='mean_motion', flow_method='Farneback', flow_threshold=0.0, magnitude_threshold=0.0, progress_callback=None): + def __init__(self, name, frame_rate, frame_count, width, height, images, feature_name='mean_motion', flow_method='Farneback', flow_threshold=0.0, magnitude_threshold=0.0, progress_callback=None): + super().__init__(name, "motion", frame_rate, frame_count, width, height) self.images = images self.feature_name = feature_name self.flow_method = flow_method @@ -374,7 +456,6 @@ def __init__(self, name, frame_rate, frame_count, images, feature_name='mean_mot self.magnitude_threshold = magnitude_threshold self.available_features = self.get_extraction_methods() self.progress_callback = progress_callback - super().__init__(name, "motion", frame_rate, frame_count) @classmethod def get_extraction_methods(self): @@ -465,12 +546,12 @@ def set_active_feature(self, feature_name): raise ValueError(f"Invalid feature name. Available features are: {', '.join(self.available_features)}") class AreaFeature(BaseFeature): - def __init__(self, name, frame_rate, frame_count, masks, feature_type='total_area', threshold=0.5): + def __init__(self, name, frame_rate, frame_count, width, height, masks, feature_type='total_area', threshold=0.5): + super().__init__(name, "area", frame_rate, frame_count, width, height) self.masks = masks self.feature_type = feature_type self.threshold = threshold self.available_features = self.get_extraction_methods() - super().__init__(name, "area", frame_rate, frame_count) @classmethod def get_extraction_methods(self): @@ -504,7 +585,7 @@ def extract(self): self.data.append(area) - return self.normalize() + return self def normalize(self): if self.data: @@ -524,10 +605,295 @@ def get_value_at_frame(self, frame_index): def set_active_feature(self, feature_name): if feature_name in self.available_features: - self.feature_type = feature_name + self.feature_name = feature_name self.extract() # Re-extract the data with the new feature type else: raise ValueError(f"Invalid feature name. Available features are: {', '.join(self.available_features)}") +class DrawableFeature(BaseFeature): + """A feature that can be drawn on a graph interface""" + + @classmethod + def get_extraction_methods(cls): + return ["drawn"] + + def __init__(self, name, frame_rate, frame_count, width, height, points, method="linear", min_value=0.0, max_value=1.0, fill_value=0.0): + super().__init__(name, "drawn", frame_rate, frame_count, width, height) + self.points = points # List of (frame, value) tuples + self.method = method + self._min_value = float(min_value) + self._max_value = float(max_value) + self.fill_value = fill_value + + + + def extract(self): + """Convert drawn points into a continuous feature curve""" + if not self.points: + self.data = np.full(self.frame_count, self.fill_value, dtype=np.float32) + return self + + # Sort points by frame number + sorted_points = sorted(self.points, key=lambda x: x[0]) + frames, values = zip(*sorted_points) + frames = np.array(frames) + values = np.array(values) + x = np.arange(self.frame_count) + + # Initialize with fill value + self.data = np.full(self.frame_count, self.fill_value, dtype=np.float32) + + if len(frames) == 1: + # Single point - just set that point + self.data[int(frames[0])] = values[0] + else: + # Multiple points - interpolate based on method + if self.method == "linear": + f = interp1d(frames, values, kind='linear', bounds_error=False, fill_value=self.fill_value) + self.data = f(x).astype(np.float32) + + elif self.method == "cubic": + if len(frames) >= 4: + from scipy.interpolate import CubicSpline + f = CubicSpline(frames, values, bc_type='natural') + mask = (x >= frames[0]) & (x <= frames[-1]) + self.data[mask] = f(x[mask]).astype(np.float32) + else: + # Fall back to linear if not enough points + f = interp1d(frames, values, kind='linear', bounds_error=False, fill_value=self.fill_value) + self.data = f(x).astype(np.float32) + + elif self.method == "nearest": + f = interp1d(frames, values, kind='nearest', bounds_error=False, fill_value=self.fill_value) + self.data = f(x).astype(np.float32) + + elif self.method == "zero": + # Only set values at exact points + for frame, value in zip(frames, values): + self.data[int(frame)] = value + + elif self.method == "hold": + # Hold each value until the next point + mask = (x >= frames[0]) & (x <= frames[-1]) + for i in range(len(frames)-1): + self.data[int(frames[i]):int(frames[i+1])] = values[i] + self.data[int(frames[-1])] = values[-1] + + elif self.method == "ease_in": + # Quadratic ease-in + mask = (x >= frames[0]) & (x <= frames[-1]) + t = np.zeros_like(x, dtype=float) + t[mask] = (x[mask] - frames[0]) / (frames[-1] - frames[0]) + f = interp1d(frames, values, kind='linear', bounds_error=False, fill_value=self.fill_value) + self.data[mask] = (t[mask] * t[mask] * f(x[mask])).astype(np.float32) + + elif self.method == "ease_out": + # Quadratic ease-out + mask = (x >= frames[0]) & (x <= frames[-1]) + t = np.zeros_like(x, dtype=float) + t[mask] = (x[mask] - frames[0]) / (frames[-1] - frames[0]) + f = interp1d(frames, values, kind='linear', bounds_error=False, fill_value=self.fill_value) + self.data[mask] = ((2 - t[mask]) * t[mask] * f(x[mask])).astype(np.float32) + + else: + raise ValueError(f"Unsupported interpolation method: {self.method}") + + # Normalize the data to 0-1 range + if self.max_value > self.min_value: + self.data = (self.data - self.min_value) / (self.max_value - self.min_value) + + return self + +class WhisperFeature(BaseFeature): + def __init__(self, name, frame_rate, frame_count, width, height, alignment_data, trigger_pairs=None, feature_name='word_timing'): + super().__init__(name, "whisper", frame_rate, frame_count, width, height) + # Handle both string and dict/list alignment data + if isinstance(alignment_data, str): + try: + self.alignment_data = json.loads(alignment_data) + except json.JSONDecodeError: + raise ValueError("Invalid alignment data format: must be valid JSON string or dict/list") + else: + self.alignment_data = alignment_data + self.trigger_pairs = trigger_pairs # Now a TriggerSet instance + self.feature_name = feature_name + self.available_features = self.get_extraction_methods() + + @classmethod + def get_extraction_methods(cls): + return [ + "trigger_values", # Uses trigger pairs to create value sequences + "word_timing", # Creates peaks at word starts + "segment_timing", # Creates plateaus during segments + "speech_density", # Measures words per second over time + "silence_ratio" # Ratio of silence vs speech + ] + + def extract(self): + self.features = {self.feature_name: [0.0] * self.frame_count} + + if self.feature_name == "word_timing": + self._extract_word_timing() + elif self.feature_name == "segment_timing": + self._extract_segment_timing() + elif self.feature_name == "trigger_values": + self._extract_trigger_values() + elif self.feature_name == "speech_density": + self._extract_speech_density() + elif self.feature_name == "silence_ratio": + self._extract_silence_ratio() + + self._normalize_features() + return self + + def _extract_word_timing(self): + feature_data = [0.0] * self.frame_count + for item in self.alignment_data: + start_frame = int(item["start"] * self.frame_rate) + if 0 <= start_frame < self.frame_count: + feature_data[start_frame] = 1.0 + self.features[self.feature_name] = feature_data + + def _extract_segment_timing(self): + feature_data = [0.0] * self.frame_count + for item in self.alignment_data: + start_frame = int(item["start"] * self.frame_rate) + end_frame = int(item["end"] * self.frame_rate) + for frame in range(max(0, start_frame), min(end_frame + 1, self.frame_count)): + feature_data[frame] = 1.0 + self.features[self.feature_name] = feature_data + + def _extract_trigger_values(self): + if not self.trigger_pairs: + raise ValueError("Trigger pairs required for trigger_values feature") + + feature_data = [0.0] * self.frame_count + accumulated_data = [0.0] * self.frame_count + + for item in self.alignment_data: + text = item["value"].lower() + start_frame = int(item["start"] * self.frame_rate) + end_frame = int(item["end"] * self.frame_rate) + + for trigger in self.trigger_pairs.triggers: # Access triggers directly from TriggerSet + pattern = trigger["pattern"].lower() + if pattern in text: + start_val, end_val = trigger["values"] + blend_mode = trigger.get("blend_mode", "blend") + + # Create temporary array for this trigger's values + trigger_data = [0.0] * self.frame_count + if start_frame < self.frame_count: + trigger_data[start_frame] = start_val + if end_frame < self.frame_count: + trigger_data[end_frame] = end_val + + # Blend with accumulated result based on blend mode + for i in range(self.frame_count): + if blend_mode == "blend": + accumulated_data[i] = (accumulated_data[i] + trigger_data[i]) / 2 + elif blend_mode == "add": + accumulated_data[i] = min(1.0, accumulated_data[i] + trigger_data[i]) + elif blend_mode == "multiply": + accumulated_data[i] = accumulated_data[i] * trigger_data[i] + elif blend_mode == "max": + accumulated_data[i] = max(accumulated_data[i], trigger_data[i]) + + self.features[self.feature_name] = accumulated_data + + def _extract_speech_density(self): + feature_data = [0.0] * self.frame_count + window_size = int(self.frame_rate) # 1-second window + + for item in self.alignment_data: + start_frame = int(item["start"] * self.frame_rate) + if 0 <= start_frame < self.frame_count: + # Add word density over a window + for i in range(max(0, start_frame - window_size), min(start_frame + window_size, self.frame_count)): + feature_data[i] += 1.0 / (2 * window_size) + + self.features[self.feature_name] = feature_data + + def _extract_silence_ratio(self): + feature_data = [1.0] * self.frame_count # Initialize as silence + + for item in self.alignment_data: + start_frame = int(item["start"] * self.frame_rate) + end_frame = int(item["end"] * self.frame_rate) + for frame in range(max(0, start_frame), min(end_frame + 1, self.frame_count)): + feature_data[frame] = 0.0 # Mark as speech + + self.features[self.feature_name] = feature_data + + def _normalize_features(self): + if self.feature_name != "trigger_values": # Don't normalize trigger values + feature_array = np.array(self.features[self.feature_name]) + feature_min = np.min(feature_array) + feature_max = np.max(feature_array) + if feature_max > feature_min: + self.features[self.feature_name] = ((feature_array - feature_min) / + (feature_max - feature_min)).tolist() + + def get_feature_sequence(self, feature_name=None): + if self.features is None: + self.extract() + if feature_name is None: + feature_name = self.feature_name + return self.features.get(feature_name, None) + + def set_active_feature(self, feature_name): + if feature_name in self.available_features: + self.feature_name = feature_name + self.extract() + else: + raise ValueError(f"Invalid feature name. Available features are: {', '.join(self.available_features)}") + + def find_trigger_start_time(self, pattern): + """Find the start time of when a pattern appears in the alignment data""" + for segment in self.alignment_data: + if pattern.lower() in segment["value"].lower(): + return segment["start"] + return None + + def find_trigger_end_time(self, pattern): + """Find the end time of when a pattern appears in the alignment data""" + for segment in self.alignment_data: + if pattern.lower() in segment["value"].lower(): + return segment["end"] + return None + + def sort_triggers_by_occurrence(self, triggers): + """Sort triggers based on when their patterns appear in the text""" + def find_first_occurrence(pattern): + text = " ".join(segment["value"] for segment in self.alignment_data) + return text.lower().find(pattern.lower()) + + return sorted(triggers, key=lambda t: find_first_occurrence(t["pattern"])) + + def get_trigger_frames(self, pattern): + """Get the frame range where a trigger pattern occurs""" + start_time = self.find_trigger_start_time(pattern) + if start_time is None: + return None, None + + end_time = self.find_trigger_end_time(pattern) + start_frame = int(start_time * self.frame_rate) + end_frame = int(end_time * self.frame_rate) + + return start_frame, end_frame + + def find_all_trigger_frames(self, pattern): + """Find all frame ranges where a trigger pattern occurs""" + frame_ranges = [] + pattern = pattern.lower() + + for segment in self.alignment_data: + if pattern in segment["value"].lower(): + start_frame = int(segment["start"] * self.frame_rate) + end_frame = int(segment["end"] * self.frame_rate) + frame_ranges.append((start_frame, end_frame)) + + return frame_ranges + #TODO volume feature diff --git a/nodes/flex/features_audio.py b/nodes/flex/features_audio.py index 613bd72..2baf3cf 100644 --- a/nodes/flex/features_audio.py +++ b/nodes/flex/features_audio.py @@ -19,8 +19,8 @@ def get_extraction_methods(cls): """Return a list of parameter names that can be modulated.""" return [] - def __init__(self, name, audio, frame_count, frame_rate): - super().__init__(name, "audio", frame_rate, frame_count) + def __init__(self, name, audio, frame_count, frame_rate, width, height): + super().__init__(name, "audio", frame_rate, frame_count, width, height) self.audio = audio self.sample_rate = None self.frame_duration = None @@ -68,8 +68,8 @@ def set_active_feature(self, feature_name): class AudioFeature(BaseAudioFeature): - def __init__(self, feature_name, audio, frame_count, frame_rate, feature_type='amplitude_envelope'): - super().__init__(feature_name, audio, frame_count, frame_rate) + def __init__(self, feature_name, audio, frame_count, frame_rate, width, height, feature_type='amplitude_envelope'): + super().__init__(feature_name, audio, frame_count, frame_rate, width, height) self.feature_type = feature_type self.available_features = self.get_extraction_methods() self.feature_name = feature_type @@ -128,8 +128,8 @@ def _normalize_features(self): import librosa class RhythmFeature(BaseAudioFeature): - def __init__(self, feature_name, audio, frame_count, frame_rate, feature_type='beat_locations', time_signature=4): - super().__init__(feature_name, audio, frame_count, frame_rate) + def __init__(self, feature_name, audio, frame_count, frame_rate, width, height, feature_type='beat_locations', time_signature=4): + super().__init__(feature_name, audio, frame_count, frame_rate, width, height) self.feature_type = feature_type self.available_features = self.get_extraction_methods() self.feature_name = feature_type @@ -282,13 +282,15 @@ def __init__( audio, frame_count, frame_rate, + width, + height, pitch_range_collections=None, feature_type='frequency', window_size=0, vibrato_options=None, crepe_model="none" ): - super().__init__(feature_name, audio, frame_count, frame_rate) + super().__init__(feature_name, audio, frame_count, frame_rate, width, height) self.available_features = self.get_extraction_methods() self.feature_type = feature_type self.pitch_range_collections = pitch_range_collections or [] diff --git a/nodes/flex/features_midi.py b/nodes/flex/features_midi.py index 8916d2a..30de863 100644 --- a/nodes/flex/features_midi.py +++ b/nodes/flex/features_midi.py @@ -26,8 +26,8 @@ def get_extraction_methods(cls): """Return a list of parameter names that can be modulated.""" return list(cls.ATTRIBUTE_MAP.keys()) - def __init__(self, name, midi_data, attribute, frame_rate, frame_count, notes=None, chord_only=False): - super().__init__(name, "midi", frame_rate, frame_count) + def __init__(self, name, midi_data, attribute, frame_rate, frame_count, width, height, notes=None, chord_only=False): + super().__init__(name, "midi", frame_rate, frame_count, width, height) self.midi_data = midi_data self.attribute = attribute self.notes = set(notes) if notes is not None else set() diff --git a/nodes/flex/features_proximity.py b/nodes/flex/features_proximity.py index 2b941d4..84aae2e 100644 --- a/nodes/flex/features_proximity.py +++ b/nodes/flex/features_proximity.py @@ -6,14 +6,15 @@ from .features import BaseFeature class ProximityFeature(BaseFeature): - def __init__(self, name, anchor_locations, query_locations, frame_rate, frame_count, frame_dimensions, normalization_method='frame'): - super().__init__(name, "proximity", frame_rate, frame_count) + def __init__(self, name, anchor_locations, query_locations, frame_rate, frame_count, frame_dimensions, width, height, normalization_method='frame'): + super().__init__(name, "proximity", frame_rate, frame_count, width, height) self.anchor_locations = anchor_locations self.query_locations = query_locations self.frame_diagonal = np.sqrt(frame_dimensions[0]**2 + frame_dimensions[1]**2) self.proximity_values = None self.normalization_method = normalization_method + @classmethod def get_extraction_methods(self): return ["normalization_method"] diff --git a/nodes/flex/flex_base.py b/nodes/flex/flex_base.py new file mode 100644 index 0000000..c94752d --- /dev/null +++ b/nodes/flex/flex_base.py @@ -0,0 +1,194 @@ +from abc import ABC, abstractmethod +from comfy.utils import ProgressBar +import numpy as np +import torch +from ...tooltips import apply_tooltips +from .parameter_scheduling import ParameterScheduler +from ... import ProgressMixin + +@apply_tooltips +class FlexBase(ProgressMixin, ABC): + @classmethod + def INPUT_TYPES(cls): + + base_inputs = { + "required": { + "strength": ("FLOAT", {"default": 1.0, "min": 0.0, "max": 1.0, "step": 0.01}), + "feature_threshold": ("FLOAT", {"default": 0.0, "min": 0.0, "max": 1.0, "step": 0.01}), + "feature_param": ( + cls.get_modifiable_params(), + {"default": cls.get_modifiable_params()[0] if cls.get_modifiable_params() else "None"} + ), + "feature_mode": (["relative", "absolute"], {"default": "relative"}), + }, + "optional": { + "opt_feature": ("FEATURE",), + } + } + + return base_inputs + + + def __init__(self): + self.parameter_scheduler = None + self.frame_count = None + + + def initialize_scheduler(self, frame_count: int, **kwargs): + """Initialize parameter scheduler with all numeric parameters""" + self.frame_count = frame_count + self.parameter_scheduler = ParameterScheduler(frame_count) + for key, value in kwargs.items(): + if isinstance(value, (int, float, list, tuple)): + self.parameter_scheduler.register_parameter(key, value) + + + def get_feature_value(self, frame_index: int, feature=None, param_name=None): + """Get feature value from a provided feature""" + if feature is not None: + return feature.get_value_at_frame(frame_index) + return None + + @classmethod + @abstractmethod + def get_modifiable_params(cls): + """Return a list of parameter names that can be modulated.""" + return [] + + def modulate_param(self, param_name: str, param_value: float | list | tuple | np.ndarray, + feature_value: float, strength: float, mode: str, + frame_index: int = 0) -> float: + """Modulate a parameter value based on a feature value. + + Args: + param_name: Name of the parameter being modulated + param_value: Value to modulate (can be single value or array-like) + feature_value: Feature value to use for modulation (0-1) + strength: Strength of the modulation (0-1) + mode: Modulation mode ("relative" or "absolute") + frame_index: Frame index for array-like parameters + + Returns: + Modulated parameter value + """ + # Handle array-like parameters + if isinstance(param_value, (list, tuple, np.ndarray)): + try: + base_value = float(param_value[frame_index]) + except (IndexError, TypeError): + base_value = float(param_value[0]) + else: + base_value = float(param_value) + + # Apply modulation + if mode == "relative": + # Adjust parameter relative to its value and the feature + return base_value * (1 + (feature_value - 0.5) * 2 * strength) + else: # absolute + # Adjust parameter directly based on the feature + return base_value * feature_value * strength + + @abstractmethod + def apply_effect(self, *args, **kwargs): + """Apply the effect with potential parameter scheduling""" + pass + + @abstractmethod + def apply_effect_internal(self, *args, **kwargs): + """Internal method to be implemented by subclasses.""" + pass + + def process_parameters(self, frame_index: int = 0, feature_value: float = None, + feature_param: str = None, feature_mode: str = "relative", **kwargs) -> dict: + """Process parameters considering both scheduling and feature modulation. + feature_value is treated as pure input and never modulated.""" + # Initialize parameter scheduler if not already done + if self.parameter_scheduler is None: + frame_count = kwargs.get('frame_count', 1) + for value in kwargs.values(): + if isinstance(value, (list, tuple, np.ndarray)): + frame_count = len(value) + break + self.initialize_scheduler(frame_count, **kwargs) + + # Get input types to determine parameter types + input_types = self.INPUT_TYPES()["required"] + + # Get all parameters that could be scheduled + processed_kwargs = {} + + # Helper function to process schedulable parameters + def process_schedulable_param(param_name: str, default_value: float) -> float: + value = kwargs.get(param_name, default_value) + if isinstance(value, (list, tuple, np.ndarray)): + try: + value = float(value[frame_index]) + except (IndexError, TypeError): + value = float(value[0]) + else: + value = float(value) + processed_kwargs[param_name] = value + return value + + # Process parameters needed for feature modulation + strength = process_schedulable_param('strength', 1.0) + feature_threshold = process_schedulable_param('feature_threshold', 0.0) + + # Process remaining parameters + for param_name, value in kwargs.items(): + if param_name in ['strength', 'feature_threshold']: # Skip already processed parameters + continue + + # Pass through any non-numeric parameters + if param_name not in input_types or input_types[param_name][0] not in ["INT", "FLOAT"]: + processed_kwargs[param_name] = value + continue + + try: + # Handle different types of inputs + if isinstance(value, (list, tuple, np.ndarray)): + if isinstance(value, np.ndarray): + if value.ndim > 1: + value = value.flatten().tolist() + else: + value = value.tolist() + try: + base_value = float(value[frame_index]) + except (IndexError, TypeError): + base_value = float(value[0]) + else: + base_value = float(value) + + # Only modulate if: + # 1. This parameter is the target parameter + # 2. We have a feature value + # 3. The parameter isn't the feature value itself + if (param_name == feature_param and + feature_value is not None and + feature_param != 'feature_value'): # Changed this line + + if feature_value >= feature_threshold: + processed_value = self.modulate_param(param_name, base_value, feature_value, strength, feature_mode) + else: + processed_value = base_value + + if input_types[param_name][0] == "INT": + processed_kwargs[param_name] = int(processed_value) + else: + processed_kwargs[param_name] = processed_value + else: + if input_types[param_name][0] == "INT": + processed_kwargs[param_name] = int(base_value) + else: + processed_kwargs[param_name] = base_value + except (ValueError, TypeError): + processed_kwargs[param_name] = value + + # Ensure feature_value is passed through unmodified + if feature_value is not None: + processed_kwargs['feature_value'] = feature_value + processed_kwargs['frame_index'] = frame_index + processed_kwargs['feature_param'] = feature_param + processed_kwargs['feature_mode'] = feature_mode + return processed_kwargs + diff --git a/nodes/flex/feature_externals.py b/nodes/flex/flex_externals.py similarity index 89% rename from nodes/flex/feature_externals.py rename to nodes/flex/flex_externals.py index 124c8a1..8b2bc96 100644 --- a/nodes/flex/feature_externals.py +++ b/nodes/flex/flex_externals.py @@ -2,6 +2,9 @@ import torch.nn.functional as F import numpy as np from ... import RyanOnTheInside +import os +import sys +import importlib.util import cv2 import torch import torch.nn.functional as F @@ -12,10 +15,57 @@ from skimage.segmentation import watershed from scipy import ndimage as ndi import math +from ...tooltips import apply_tooltips +from ... import ProgressMixin + class FlexExternalModulator(RyanOnTheInside): - CATEGORY = "RyanOnTheInside/FlexExternalMod" + CATEGORY = "RyanOnTheInside/FlexFeatures/Targets/ExternalTargets" + + @staticmethod + def import_module_from_path(module_name, module_path): + """Helper method to import external modules from other custom node packs. + + Args: + module_name: Name to give the imported module + module_path: Path to the module file + + Returns: + The imported module + """ + package_dir = os.path.dirname(module_path) + original_sys_path = sys.path.copy() + + try: + # Add the parent directory to sys.path + parent_dir = os.path.dirname(package_dir) + if parent_dir not in sys.path: + sys.path.insert(0, parent_dir) + + # Create module spec + spec = importlib.util.spec_from_file_location(module_name, module_path) + if spec is None: + raise ImportError(f"Cannot create a module spec for {module_path}") + + module = importlib.util.module_from_spec(spec) + + # Add the module to sys.modules + sys.modules[module_name] = module + + # Set up package structure + package_name = os.path.basename(package_dir).replace('-', '_') + module.__package__ = package_name + + # Execute the module + spec.loader.exec_module(module) + + return module + + finally: + # Restore original sys.path + sys.path = original_sys_path +@apply_tooltips class FeatureToWeightsStrategy(FlexExternalModulator): @classmethod def INPUT_TYPES(s): @@ -50,6 +100,9 @@ def convert(self, feature): return (weights_strategy,) +_spline_category = f"{FlexExternalModulator.CATEGORY}/Spline" + +@apply_tooltips class FeatureToSplineData(FlexExternalModulator): @classmethod def INPUT_TYPES(cls): @@ -105,10 +158,12 @@ def INPUT_TYPES(cls): RETURN_TYPES = ("MASK", "STRING", "FLOAT", "INT", "STRING",) RETURN_NAMES = ("mask", "coord_str", "float", "count", "normalized_str",) FUNCTION = "convert" + CATEGORY = _spline_category def convert(self, feature, mask_width, mask_height, sampling_method, interpolation, tension, repeat_output, float_output_type, min_value=0.0, max_value=1.0): import torch + import numpy as np import json @@ -168,6 +223,7 @@ def convert(self, feature, mask_width, mask_height, sampling_method, interpolati import json from scipy.interpolate import interp1d +@apply_tooltips class SplineFeatureModulator(FlexExternalModulator): @classmethod def INPUT_TYPES(cls): @@ -190,7 +246,7 @@ def INPUT_TYPES(cls): RETURN_TYPES = ("MASK", "STRING", "FLOAT", "INT", "STRING",) RETURN_NAMES = ("mask", "coord_str", "float", "count", "normalized_str",) FUNCTION = "modulate_spline" - CATEGORY = "RyanOnTheInside/SplineFeatureModulator" + CATEGORY = _spline_category def modulate_spline(self, coordinates, feature, mask_width, mask_height, min_speed, max_speed, float_output_type, @@ -266,6 +322,7 @@ def modulate_spline(self, coordinates, feature, mask_width, mask_height, return (masks_out, coord_str, out_floats, len(out_floats), coord_str) +@apply_tooltips class SplineRhythmModulator(FlexExternalModulator): @classmethod def INPUT_TYPES(cls): @@ -288,7 +345,7 @@ def INPUT_TYPES(cls): RETURN_TYPES = ("MASK", "STRING", "FLOAT", "INT", "STRING",) RETURN_NAMES = ("mask", "coord_str", "float", "count", "normalized_str",) FUNCTION = "modulate_rhythm" - + CATEGORY = _spline_category def modulate_rhythm(self, coordinates, feature, mask_width, mask_height, smoothing, direction, float_output_type, min_value=0.0, max_value=1.0): @@ -423,7 +480,8 @@ def modulate_rhythm(self, coordinates, feature, mask_width, mask_height, coord_str = json.dumps(sampled_coordinates) return (masks_out, coord_str, out_floats, len(out_floats), coord_str) - + +@apply_tooltips class FeatureToFloat(FlexExternalModulator): @classmethod def INPUT_TYPES(cls): @@ -435,7 +493,7 @@ def INPUT_TYPES(cls): RETURN_TYPES = ("FLOAT",) FUNCTION = "get_audio_weights" - CATEGORY = "RyanOnTheInside/Audio" + def get_audio_weights(self, feature): data = [] @@ -443,8 +501,11 @@ def get_audio_weights(self, feature): data.append(feature.get_value_at_frame(i)) return (data,) -#TODO: sub somthing else -#TODO: really, sub something else + + +#TODO: sub somthing logical +_depth_category = "RyanOnTheInside/DepthModifiers" +@apply_tooltips class DepthShapeModifier(FlexExternalModulator): @classmethod def INPUT_TYPES(cls): @@ -463,7 +524,7 @@ def INPUT_TYPES(cls): RETURN_TYPES = ("IMAGE",) FUNCTION = "modify_depth" - CATEGORY = "RyanOnTheInside/DepthModifiers" + CATEGORY = _depth_category def modify_depth(self, depth_map, mask, gradient_steepness, depth_min, depth_max, strength): device = depth_map.device @@ -543,6 +604,8 @@ def modify_feature_param(self, feature, feature_param, gradient_steepness, depth return gradient_steepness, depth_min, depth_max, strength + +@apply_tooltips class DepthShapeModifierPrecise(FlexExternalModulator): @classmethod def INPUT_TYPES(cls): @@ -560,7 +623,7 @@ def INPUT_TYPES(cls): RETURN_TYPES = ("IMAGE",) FUNCTION = "modify_depth" - CATEGORY = "RyanOnTheInside/DepthModifiers" + CATEGORY = _depth_category def modify_depth(self, depth_map, mask, gradient_steepness, depth_min, depth_max, strength, composite_method): device = depth_map.device @@ -689,3 +752,42 @@ def modify_feature_param(self, feature, feature_param, gradient_steepness, depth strength *= value return gradient_steepness, depth_min, depth_max, strength + +@apply_tooltips +class FeatureToMask(FlexExternalModulator): + @classmethod + def INPUT_TYPES(cls): + return { + "required": { + "feature": ("FEATURE",), + } + } + + RETURN_TYPES = ("MASK",) + FUNCTION = "convert" + + def convert(self, feature): + # Get dimensions from feature + height = feature.height + width = feature.width + + # Get normalized data as numpy array + normalized_data = feature.get_normalized_data() + if normalized_data is None: + # If no data available, use frame-by-frame normalization + normalized_data = np.array([feature.get_value_at_frame(i) for i in range(feature.frame_count)]) + if len(normalized_data) > 0: + min_val = np.min(normalized_data) + max_val = np.max(normalized_data) + if max_val > min_val: + normalized_data = (normalized_data - min_val) / (max_val - min_val) + else: + normalized_data = np.zeros_like(normalized_data) + + # Convert to torch tensor and reshape for broadcasting + normalized_tensor = torch.from_numpy(normalized_data).float() + + # Create masks for all frames at once by expanding the normalized data + masks_out = normalized_tensor.unsqueeze(-1).unsqueeze(-1).expand(-1, height, width) + return (masks_out,) + diff --git a/nodes/flex/flex_externals_advanced_controlnet.py b/nodes/flex/flex_externals_advanced_controlnet.py new file mode 100644 index 0000000..1d68db1 --- /dev/null +++ b/nodes/flex/flex_externals_advanced_controlnet.py @@ -0,0 +1,119 @@ +import os +from ... import RyanOnTheInside +from ...tooltips import apply_tooltips +from .flex_externals import FlexExternalModulator +import torch +import numpy as np + +# Get paths +current_file_path = os.path.abspath(__file__) +current_directory = os.path.dirname(current_file_path) +custom_nodes_dir = os.path.abspath(os.path.join(current_directory, '..', '..', '..')) + +# Import Advanced-ControlNet components +adv_controlnet_dir = os.path.join(custom_nodes_dir, 'ComfyUI-Advanced-ControlNet') +adv_controlnet_utils_path = os.path.join(adv_controlnet_dir, 'adv_control', 'utils.py') +adv_controlnet_nodes_path = os.path.join(adv_controlnet_dir, 'adv_control', 'nodes_keyframes.py') + +# Import the modules using the helper from FlexExternalModulator +acn_utils = FlexExternalModulator.import_module_from_path('acn_utils', adv_controlnet_utils_path) +acn_nodes = FlexExternalModulator.import_module_from_path('acn_nodes', adv_controlnet_nodes_path) + +# Get required classes +TimestepKeyframe = acn_utils.TimestepKeyframe +TimestepKeyframeGroup = acn_utils.TimestepKeyframeGroup +LatentKeyframe = acn_utils.LatentKeyframe +LatentKeyframeGroup = acn_utils.LatentKeyframeGroup +SI = acn_utils.StrengthInterpolation + +_acn_category = f"{FlexExternalModulator.CATEGORY}/Advanced-ControlNet" + +@apply_tooltips +class FeatureToTimestepKeyframe(FlexExternalModulator): + @classmethod + def INPUT_TYPES(s): + return { + "required": { + "feature": ("FEATURE",), + "select_every": ("INT", {"default": 1, "min": 1, "max": 999}), + "guarantee_steps": ("INT", {"default": 1, "min": 0, "max": 10000}), + "inherit_missing": ("BOOLEAN", {"default": True}), + }, + "optional": { + "prev_timestep_kf": ("TIMESTEP_KEYFRAME",), + "cn_weights": ("CONTROL_NET_WEIGHTS",), + "latent_keyframe": ("LATENT_KEYFRAME",), + } + } + + RETURN_TYPES = ("TIMESTEP_KEYFRAME",) + FUNCTION = "convert" + CATEGORY = _acn_category + + def convert(self, feature, select_every, guarantee_steps, inherit_missing, + prev_timestep_kf=None, cn_weights=None, latent_keyframe=None): + # Create or clone keyframe group + if prev_timestep_kf is None: + keyframe_group = TimestepKeyframeGroup() + else: + keyframe_group = prev_timestep_kf.clone() + + # Get number of frames from feature + num_frames = feature.frame_count + + # Create keyframes for every nth frame based on select_every + for i in range(0, num_frames, select_every): + # Calculate percentage through animation for this frame + start_percent = i / (num_frames - 1) if num_frames > 1 else 0.0 + + # Get strength value for this frame + strength = float(feature.get_value_at_frame(i)) + + # Create keyframe with the values + keyframe = TimestepKeyframe( + start_percent=start_percent, + strength=strength, + control_weights=cn_weights, + latent_keyframes=latent_keyframe, + inherit_missing=inherit_missing, + guarantee_steps=guarantee_steps + ) + keyframe_group.add(keyframe) + + return (keyframe_group,) + +@apply_tooltips +class FeatureToLatentKeyframe(FlexExternalModulator): + @classmethod + def INPUT_TYPES(s): + return { + "required": { + "feature": ("FEATURE",), + }, + "optional": { + "prev_latent_kf": ("LATENT_KEYFRAME",), + } + } + + RETURN_TYPES = ("LATENT_KEYFRAME",) + FUNCTION = "convert" + CATEGORY = _acn_category + + def convert(self, feature, prev_latent_kf=None): + # Create or clone keyframe group + if prev_latent_kf is None: + keyframe_group = LatentKeyframeGroup() + else: + keyframe_group = prev_latent_kf.clone() + + # For each frame in the feature sequence + for frame_idx in range(feature.frame_count): + # Get strength value for this frame + strength = float(feature.get_value_at_frame(frame_idx)) + + # Create keyframe for this frame's strength value + # Here frame_idx correctly maps to batch_index for animation + keyframe = LatentKeyframe(frame_idx, strength) + keyframe_group.add(keyframe) + + return (keyframe_group,) diff --git a/nodes/flex/flex_advanced_live_portrait.py b/nodes/flex/flex_externals_advanced_live_portrait.py similarity index 98% rename from nodes/flex/flex_advanced_live_portrait.py rename to nodes/flex/flex_externals_advanced_live_portrait.py index 456af35..a587650 100644 --- a/nodes/flex/flex_advanced_live_portrait.py +++ b/nodes/flex/flex_externals_advanced_live_portrait.py @@ -12,9 +12,14 @@ import yaml from ultralytics import YOLO import importlib.util +from .flex_externals import FlexExternalModulator + +#TODO / NOTE: this more robust import module from path should logically be moved to the FlexExternals baseclass. #NOTE: attempt to import advanced live portrait def import_module_from_path(module_name, module_path): + + package_dir = os.path.dirname(module_path) original_sys_path = sys.path.copy() @@ -148,10 +153,11 @@ def INPUT_TYPES(cls): RETURN_NAMES = ("image", "flex_motion_link", "save_exp", "command") FUNCTION = "run" OUTPUT_NODE = True - CATEGORY = "AdvancedLivePortrait" - + CATEGORY = f"{FlexExternalModulator.CATEGORY}/Advanced-Live-Portrait" @classmethod def get_modifiable_params(cls): + + return ["rotate_pitch", "rotate_yaw", "rotate_roll", "blink", "eyebrow", "wink", "pupil_x", "pupil_y", "aaa", "eee", "woo", "smile", "None"] diff --git a/nodes/flex/flex_externals_animatediff.py b/nodes/flex/flex_externals_animatediff.py new file mode 100644 index 0000000..d834e6f --- /dev/null +++ b/nodes/flex/flex_externals_animatediff.py @@ -0,0 +1,164 @@ +import os +from ... import RyanOnTheInside +from ...tooltips import apply_tooltips +from .flex_externals import FlexExternalModulator +import torch + +#NOTE: work in progress + +# Get paths +current_file_path = os.path.abspath(__file__) +current_directory = os.path.dirname(current_file_path) +custom_nodes_dir = os.path.abspath(os.path.join(current_directory, '..', '..', '..')) + +# Import AnimateDiff components +animatediff_dir = os.path.join(custom_nodes_dir, 'ComfyUI-AnimateDiff-Evolved') +animatediff_nodes_path = os.path.join(animatediff_dir, 'animatediff', 'nodes_gen2.py') +animatediff_camera_path = os.path.join(animatediff_dir, 'animatediff', 'nodes_cameractrl.py') +animatediff_pia_path = os.path.join(animatediff_dir, 'animatediff', 'nodes_pia.py') + +# Import the modules using the helper from FlexExternalModulator +ad_nodes = FlexExternalModulator.import_module_from_path('animatediff_nodes', animatediff_nodes_path) +ad_camera = FlexExternalModulator.import_module_from_path('animatediff_camera', animatediff_camera_path) +ad_pia = FlexExternalModulator.import_module_from_path('animatediff_pia', animatediff_pia_path) + +# Get required classes +ADKeyframeGroup = ad_nodes.ADKeyframeGroup +ADKeyframe = ad_nodes.ADKeyframe +CAM = ad_camera.CAM +PIA_RANGES = ad_pia.PIA_RANGES +InputPIA_PaperPresets = ad_pia.InputPIA_PaperPresets + +_ad_category = f"{FlexExternalModulator.CATEGORY}/AnimateDiff" + +@apply_tooltips +class FeatureToADKeyframe(FlexExternalModulator): + + @classmethod + def INPUT_TYPES(s): + return { + "required": { + "select_every": ("INT", {"default": 1, "min": 1, "max": 999}), + }, + "optional": { + "scale_feature": ("FEATURE",), + "effect_feature": ("FEATURE",), + } + } + + RETURN_TYPES = ("AD_KEYFRAMES",) + FUNCTION = "convert" + CATEGORY = _ad_category + + + def convert(self, select_every: int, scale_feature=None, effect_feature=None): + if scale_feature is None and effect_feature is None: + raise ValueError("At least one of scale_feature or effect_feature must be provided") + + # Create new keyframe group + keyframes = ADKeyframeGroup() + + # Get number of frames from whichever feature is provided + if scale_feature is not None: + num_frames = scale_feature.frame_count + else: + num_frames = effect_feature.frame_count + + # Create keyframes for every nth frame based on select_every + for i in range(0, num_frames, select_every): + # Calculate percentage through animation for this frame + start_percent = i / (num_frames - 1) if num_frames > 1 else 0.0 + + # Get values for this frame if features are provided + scale_val = float(scale_feature.get_value_at_frame(i)) if scale_feature is not None else None + effect_val = float(effect_feature.get_value_at_frame(i)) if effect_feature is not None else None + + # Create keyframe with the values + keyframe = ADKeyframe( + start_percent=start_percent, + scale_multival=scale_val, + effect_multival=effect_val + ) + keyframes.add(keyframe) + + return (keyframes,) + +@apply_tooltips +class FeatureToCameraKeyframe(FlexExternalModulator): + @classmethod + def INPUT_TYPES(s): + return { + "required": { + "feature": ("FEATURE",), + "camera_motion": (CAM._LIST,), + "select_every": ("INT", {"default": 1, "min": 1, "max": 999}), + "inherit_missing": ("BOOLEAN", {"default": True}), + } + } + + RETURN_TYPES = ("AD_KEYFRAMES",) + FUNCTION = "convert" + CATEGORY = _ad_category + + def convert(self, feature, camera_motion, select_every, inherit_missing): + # Create a new keyframe group + keyframe_group = ADKeyframeGroup() + + # Create keyframes for every nth frame based on select_every + for i in range(0, feature.frame_count, select_every): + # Calculate percentage through animation for this frame + start_percent = i / (feature.frame_count - 1) if feature.frame_count > 1 else 0.0 + + # Get camera value for this frame + camera_val = float(feature.get_value_at_frame(i)) + + # Create keyframe with camera control value + keyframe = ADKeyframe( + start_percent=start_percent, + cameractrl_multival=camera_val, # Single value for this frame + inherit_missing=inherit_missing + ) + + keyframe_group.add(keyframe) + + return (keyframe_group,) + +@apply_tooltips +class FeatureToPIAKeyframe(FlexExternalModulator): + @classmethod + def INPUT_TYPES(s): + return { + "required": { + "feature": ("FEATURE",), + "preset": (PIA_RANGES._LIST_ALL,), + "start_percent": ("FLOAT", {"default": 0.0, "min": 0.0, "max": 1.0, "step": 0.001}), + "guarantee_steps": ("INT", {"default": 1, "min": 0, "max": 10000}), + "inherit_missing": ("BOOLEAN", {"default": True}), + } + } + + RETURN_TYPES = ("AD_KEYFRAMES",) + FUNCTION = "convert" + CATEGORY = _ad_category + + def convert(self, feature, preset, start_percent, guarantee_steps, inherit_missing): + # Create a new keyframe group + keyframe_group = ADKeyframeGroup() + + # Create PIA input with the feature values + pia_input = InputPIA_PaperPresets( + preset=preset, + index=0, # Will be determined by frame index + mult_multival=[feature.get_value_at_frame(i) for i in range(feature.frame_count)] + ) + + # Create keyframe with PIA settings + keyframe = ADKeyframe( + start_percent=start_percent, + pia_input=pia_input, + inherit_missing=inherit_missing, + guarantee_steps=guarantee_steps + ) + + keyframe_group.add(keyframe) + return (keyframe_group,) \ No newline at end of file diff --git a/nodes/flex/parameter_scheduling.py b/nodes/flex/parameter_scheduling.py new file mode 100644 index 0000000..f735130 --- /dev/null +++ b/nodes/flex/parameter_scheduling.py @@ -0,0 +1,164 @@ +from typing import Union, List, Any +import numpy as np +from abc import ABC, abstractmethod +from ... import RyanOnTheInside +from ...tooltips import apply_tooltips + +class ScheduledParameter: + """Wrapper class for parameters that can be either single values or sequences""" + def __init__(self, value: Union[float, int, List[Union[float, int]]], frame_count: int): + self.original_value = value + self.frame_count = frame_count + self._sequence = None + self._initialize_sequence() + + def _initialize_sequence(self): + if isinstance(self.original_value, (list, tuple)): + # If it's a sequence, interpolate to match frame count + x = np.linspace(0, 1, len(self.original_value)) + y = np.array(self.original_value) + f = np.interp(np.linspace(0, 1, self.frame_count), x, y) + self._sequence = f + else: + # If it's a single value, repeat it + self._sequence = np.full(self.frame_count, self.original_value) + + def get_value(self, frame_index: int) -> Union[float, int]: + """Get the parameter value for a specific frame""" + if frame_index < 0 or frame_index >= self.frame_count: + raise ValueError(f"Frame index {frame_index} out of bounds [0, {self.frame_count})") + return float(self._sequence[frame_index]) + + def get_normalized_sequence(self) -> np.ndarray: + """Get the sequence normalized to [0,1] range for feature-like behavior""" + if self._sequence is None: + return None + seq = np.array(self._sequence) + min_val = np.min(seq) + max_val = np.max(seq) + if max_val > min_val: + return (seq - min_val) / (max_val - min_val) + return np.full_like(seq, 0.5) # If all values are the same, return 0.5 + + @property + def is_scheduled(self) -> bool: + """Returns True if the parameter is a sequence, False if it's a single value""" + return isinstance(self.original_value, (list, tuple)) + +class ParameterScheduler: + """Helper class to manage scheduled parameters for a node""" + def __init__(self, frame_count: int): + self.frame_count = frame_count + self.parameters = {} + + def register_parameter(self, name: str, value: Any) -> None: + """Register a parameter that might be scheduled""" + if isinstance(value, (int, float)) or (isinstance(value, (list, tuple)) and all(isinstance(x, (int, float)) for x in value)): + self.parameters[name] = ScheduledParameter(value, self.frame_count) + + def get_value(self, name: str, frame_index: int) -> Any: + """Get the value of a parameter for a specific frame""" + if name in self.parameters: + return self.parameters[name].get_value(frame_index) + raise KeyError(f"Parameter {name} not registered") + + def get_as_feature(self, name: str) -> np.ndarray: + """Get a parameter's sequence normalized as a feature (0-1 range)""" + if name in self.parameters: + return self.parameters[name].get_normalized_sequence() + return None + + def is_scheduled(self, name: str) -> bool: + """Check if a parameter is scheduled""" + if name in self.parameters: + return self.parameters[name].is_scheduled + return False + + def has_scheduled_parameters(self) -> bool: + """Check if any parameters are scheduled""" + return any(param.is_scheduled for param in self.parameters.values()) + + +#TODO: abstract normalize function from here and FeatureRenormalize and place in utils or something. +@apply_tooltips +class SchedulerNode(RyanOnTheInside): + """Base class for nodes that convert features to schedulable parameters""" + CATEGORY = "RyanOnTheInside/FlexFeatures/Scheduling" + FUNCTION = "convert" + + @classmethod + def INPUT_TYPES(cls): + return { + "required": { + "feature": ("FEATURE",), + "invert_output": ("BOOLEAN", {"default": False}), + } + } + + def process_values(self, feature, lower_threshold, upper_threshold, invert_output): + values = [feature.get_value_at_frame(i) for i in range(feature.frame_count)] + + # Calculate the range for normalization + range_size = upper_threshold - lower_threshold + + # Use feature.min_value and feature.max_value if available, otherwise use actual min/max + min_val = getattr(feature, 'min_value', min(values)) + max_val = getattr(feature, 'max_value', max(values)) + + # Normalize values to fit between lower and upper threshold + if max_val == min_val: + normalized = [lower_threshold for _ in values] # All values are the same + else: + normalized = [ + lower_threshold + (range_size * (v - min_val) / (max_val - min_val)) + for v in values + ] + + if invert_output: + normalized = [upper_threshold - (v - lower_threshold) for v in normalized] + + return normalized + +@apply_tooltips +class FeatureToFlexIntParam(SchedulerNode): + """Converts a feature to a schedulable integer parameter""" + + @classmethod + def INPUT_TYPES(cls): + return { + "required": { + **super().INPUT_TYPES()["required"], + "lower_threshold": ("INT", {"default": 0, "min": -10000, "max": 10000, "step": 1}), + "upper_threshold": ("INT", {"default": 100, "min": -10000, "max": 10000, "step": 1}), + } + } + + RETURN_TYPES = ("INT",) + RETURN_NAMES = ("PARAMETER",) + + def convert(self, feature, lower_threshold, upper_threshold, invert_output): + values = self.process_values(feature, lower_threshold, upper_threshold, invert_output) + # Round to integers + int_values = [int(round(v)) for v in values] + return (int_values,) + +@apply_tooltips +class FeatureToFlexFloatParam(SchedulerNode): + """Converts a feature to a schedulable float parameter""" + + @classmethod + def INPUT_TYPES(cls): + return { + "required": { + **super().INPUT_TYPES()["required"], + "lower_threshold": ("FLOAT", {"default": 0.0, "min": -10000.0, "max": 10000.0, "step": 0.01}), + "upper_threshold": ("FLOAT", {"default": 1.0, "min": -10000.0, "max": 10000.0, "step": 0.01}), + } + } + + RETURN_TYPES = ("FLOAT",) + RETURN_NAMES = ("PARAMETER",) + + def convert(self, feature, lower_threshold, upper_threshold, invert_output): + values = self.process_values(feature, lower_threshold, upper_threshold, invert_output) + return (values,) \ No newline at end of file diff --git a/nodes/flex/visualizers.py b/nodes/flex/visualizers.py index 2d1e2df..c495959 100644 --- a/nodes/flex/visualizers.py +++ b/nodes/flex/visualizers.py @@ -4,6 +4,12 @@ import torch from scipy.spatial.distance import cdist import math +import matplotlib.pyplot as plt +from PIL import Image +from io import BytesIO +import os +import random +import folder_paths class EffectVisualizer(RyanOnTheInside): @classmethod @@ -19,7 +25,7 @@ def INPUT_TYPES(cls): RETURN_TYPES = ("IMAGE",) FUNCTION = "visualize" - CATEGORY = "RyanOnTheInside/FlexFeatures/EffectVisualizers" + CATEGORY = "RyanOnTheInside/FlexFeatures/Utilities/Previews" def visualize(self, video_frames, feature, text_color, font_scale): text_color = self.parse_color(text_color) @@ -195,3 +201,90 @@ def visualize_pitch(self, video_frames, feature, text_color, font_scale): output_tensor = torch.from_numpy(np.stack(output_frames)).float() / 255.0 return (output_tensor,) + + +class PreviewFeature(RyanOnTheInside): + CATEGORY = "RyanOnTheInside/FlexFeatures/Utilities/Previews" + + @classmethod + def INPUT_TYPES(cls): + return { + "required": { + "feature": ("FEATURE",), + }, + "hidden": {"prompt": "PROMPT", "extra_pnginfo": "EXTRA_PNGINFO"}, + } + + RETURN_TYPES = () + FUNCTION = "preview" + OUTPUT_NODE = True + + def preview(self, feature, prompt=None, extra_pnginfo=None): + width=960 + height=540 + values = [feature.get_value_at_frame(i) for i in range(feature.frame_count)] + + plt.figure(figsize=(width/100, height/100), dpi=100) + plt.style.use('dark_background') + + plt.plot(values, color='dodgerblue', linewidth=2) + + plt.xlabel('Frame', color='white', fontsize=14) + plt.ylabel('Value', color='white', fontsize=14) + + plt.grid(True, linestyle='--', alpha=0.3, color='gray') + + plt.tick_params(axis='both', colors='white', labelsize=12) + + max_ticks = 10 + step = max(1, len(values) // max_ticks) + x_ticks = range(0, len(values), step) + plt.xticks(x_ticks, [str(x) for x in x_ticks]) + + # Use feature's min_value and max_value properties + y_min, y_max = feature.min_value, feature.max_value + y_range = y_max - y_min + plt.ylim(y_min - 0.05*y_range, y_max + 0.05*y_range) + + plt.gca().spines['top'].set_visible(False) + plt.gca().spines['right'].set_visible(False) + plt.gca().spines['bottom'].set_color('white') + plt.gca().spines['left'].set_color('white') + + plt.title(f'Feature: {feature.name}', color='white', fontsize=16) + + plt.tight_layout(pad=0.5) + + buf = BytesIO() + plt.savefig(buf, format='png', facecolor='black', edgecolor='none') + buf.seek(0) + + img = Image.open(buf) + img_array = np.array(img) + img_tensor = torch.from_numpy(img_array).float() / 255.0 + if img_tensor.dim() == 3: + img_tensor = img_tensor.unsqueeze(0) + + plt.close() + buf.close() + + # Save the image to a temporary file like PreviewImage does + output_dir = folder_paths.get_temp_directory() + type = "temp" + prefix = "feature_preview_" + ''.join(random.choice("abcdefghijklmnopqrstupvxyz") for x in range(5)) + + full_output_folder, filename, counter, subfolder, filename_prefix = folder_paths.get_save_image_path(prefix, output_dir, img_tensor.shape[2], img_tensor.shape[1]) + + # Save the image + i = 255. * img_tensor.cpu().numpy() + img = Image.fromarray(np.clip(i[0], 0, 255).astype(np.uint8)) + file = f"{filename}_{counter:05}_.png" + img.save(os.path.join(full_output_folder, file), compress_level=1) + + results = [{ + "filename": file, + "subfolder": subfolder, + "type": type + }] + + return ({"ui": {"images": results}}) \ No newline at end of file diff --git a/nodes/images/flex_image_base.py b/nodes/images/flex_image_base.py new file mode 100644 index 0000000..206ecfa --- /dev/null +++ b/nodes/images/flex_image_base.py @@ -0,0 +1,99 @@ +import torch +import numpy as np +from abc import ABC, abstractmethod +from tqdm import tqdm +from comfy.utils import ProgressBar +from ... import RyanOnTheInside +from ..flex.flex_base import FlexBase +from ...tooltips import apply_tooltips + +@apply_tooltips +class FlexImageBase(RyanOnTheInside, FlexBase): + @classmethod + def INPUT_TYPES(cls): + base_inputs = super().INPUT_TYPES() + base_inputs["required"].update({ + "images": ("IMAGE",), + }) + return base_inputs + + CATEGORY = "RyanOnTheInside/FlexFeatures/Targets/Images" + RETURN_TYPES = ("IMAGE",) + FUNCTION = "apply_effect" + + def __init__(self): + super().__init__() # Initialize FlexBase + + @classmethod + @abstractmethod + def get_modifiable_params(cls): + """Return a list of parameter names that can be modulated.""" + return [] + + def apply_effect( + self, + images, + strength, + feature_threshold, + feature_param, + feature_mode, + opt_feature=None, + **kwargs + ): + # Convert images to numpy for processing + images_np = images.cpu().numpy() + + # Determine frame count from either feature or longest parameter list + if opt_feature is not None: + num_frames = opt_feature.frame_count + else: + # Start with number of input frames + num_frames = images_np.shape[0] + # Check all parameters for lists/arrays that might be longer + for value in kwargs.values(): + if isinstance(value, (list, tuple, np.ndarray)): + num_frames = max(num_frames, len(value)) + + self.start_progress(num_frames, desc=f"Applying {self.__class__.__name__}") + + result = [] + for i in range(num_frames): + # Get the appropriate image frame, handling possible shorter image sequences + image = images_np[i % images_np.shape[0]] + + # Process parameters using base class functionality + processed_kwargs = self.process_parameters( + frame_index=i, + feature_value=self.get_feature_value(i, opt_feature) if opt_feature is not None else None, + feature_param=feature_param if opt_feature is not None else None, + feature_mode=feature_mode if opt_feature is not None else None, + strength=strength, + feature_threshold=feature_threshold, + **kwargs + ) + processed_kwargs["frame_index"] = i + + #TODO: Currently dont care about a threshold check here, but may want to add it in the future + # Apply the effect with processed parameters + processed_image = self.apply_effect_internal(image, **processed_kwargs) + + + + + result.append(processed_image) + self.update_progress() + + self.end_progress() + + # Convert the list of numpy arrays to a single numpy array + result_np = np.stack(result) + + # Convert the numpy array to a PyTorch tensor in BHWC format + result_tensor = torch.from_numpy(result_np).float() + + return (result_tensor,) + + @abstractmethod + def apply_effect_internal(self, image: np.ndarray, **kwargs) -> np.ndarray: + """Apply the effect with processed parameters. To be implemented by child classes.""" + pass diff --git a/nodes/images/flex_images.py b/nodes/images/flex_images.py index a20f103..4b25a08 100644 --- a/nodes/images/flex_images.py +++ b/nodes/images/flex_images.py @@ -1,13 +1,17 @@ import cv2 import torch import numpy as np -from .image_base import FlexImageBase +from .flex_image_base import FlexImageBase from scipy.ndimage import gaussian_filter import torch.nn.functional as F -from .image_utils import transform_image +from .image_utils import transform_image, apply_gaussian_blur_gpu +from ...tooltips import apply_tooltips +from ..node_utilities import string_to_rgb +@apply_tooltips class FlexImageEdgeDetect(FlexImageBase): @classmethod + def INPUT_TYPES(cls): base_inputs = super().INPUT_TYPES() base_inputs["required"].update({ @@ -30,6 +34,7 @@ def apply_effect_internal(self, image: np.ndarray, low_threshold: float, high_th return edges_rgb.astype(float) / 255.0 +@apply_tooltips class FlexImagePosterize(FlexImageBase): @classmethod def INPUT_TYPES(cls): @@ -39,6 +44,7 @@ def INPUT_TYPES(cls): "dither_strength": ("FLOAT", {"default": 0.3, "min": 0.0, "max": 1.0, "step": 0.01}), "channel_separation": ("FLOAT", {"default": 0.2, "min": 0.0, "max": 1.0, "step": 0.01}), "gamma": ("FLOAT", {"default": 1.2, "min": 0.1, "max": 2.2, "step": 0.1}), + "dither_method": (["ordered", "floyd", "none"], {"default": "ordered"}), }) return base_inputs @@ -47,42 +53,61 @@ def get_modifiable_params(cls): return ["max_levels", "dither_strength", "channel_separation", "gamma", "None"] def apply_effect_internal(self, image: np.ndarray, max_levels: int, dither_strength: float, - channel_separation: float, gamma: float, **kwargs) -> np.ndarray: + channel_separation: float, gamma: float, dither_method: str, **kwargs) -> np.ndarray: # Apply gamma correction image_gamma = np.power(image, gamma) - # Convert image to uint8 - image_uint8 = (image_gamma * 255).astype(np.uint8) + # Initialize result array + result = np.zeros_like(image_gamma) - posterized = np.zeros_like(image_uint8) + # Create ordered dither pattern if needed + if dither_method == "ordered": + bayer_pattern = np.array([[0, 8, 2, 10], + [12, 4, 14, 6], + [3, 11, 1, 9], + [15, 7, 13, 5]], dtype=np.float32) / 16.0 + h, w = image.shape[:2] + # Tile the pattern to match image size + pattern_h = (h + 3) // 4 + pattern_w = (w + 3) // 4 + dither_pattern = np.tile(bayer_pattern, (pattern_h, pattern_w))[:h, :w] + dither_pattern = dither_pattern[..., np.newaxis] * dither_strength for c in range(3): # RGB channels - # Calculate levels for each channel + # Calculate levels for each channel with separation channel_levels = int(np.clip(2 + (max_levels - 2) * (1 + channel_separation * (c - 1)), 2, max_levels)) - # Posterize - div = 256 // channel_levels - posterized[:,:,c] = (image_uint8[:,:,c] // div) * div + # Get current channel + channel = image_gamma[..., c] + + if dither_method == "ordered": + # Add ordered dither pattern + channel = np.clip(channel + dither_pattern[..., 0] - 0.5 * dither_strength, 0, 1) + + # Quantize + scale = (channel_levels - 1) + quantized = np.round(channel * scale) / scale + + if dither_method == "floyd": + # Efficient Floyd-Steinberg dithering using convolution + error = (channel - quantized) * dither_strength + + # Prepare error diffusion kernel + kernel = np.array([[0, 0, 0], + [0, 0, 7/16], + [3/16, 5/16, 1/16]]) + + # Apply error diffusion + from scipy.signal import convolve2d + error_diffused = convolve2d(error, kernel, mode='same') + quantized = np.clip(quantized + error_diffused, 0, 1) + + result[..., c] = quantized - if dither_strength > 0: - # Apply Floyd-Steinberg dithering with adjustable strength - error = (image_uint8.astype(np.float32) - posterized) * dither_strength - h, w = image.shape[:2] - for c in range(3): # RGB channels - for i in range(h - 1): - for j in range(w - 1): - old_pixel = posterized[i, j, c] - new_pixel = np.clip(old_pixel + error[i, j, c], 0, 255) - quant_error = old_pixel - new_pixel - posterized[i, j, c] = new_pixel - error[i, j+1, c] += quant_error * 7 / 16 - error[i+1, j-1, c] += quant_error * 3 / 16 - error[i+1, j, c] += quant_error * 5 / 16 - error[i+1, j+1, c] += quant_error * 1 / 16 - - # Convert back to float32 and apply gamma correction - return np.power(posterized.astype(np.float32) / 255.0, 1/gamma) + # Apply inverse gamma correction + return np.power(result, 1/gamma) +@apply_tooltips class FlexImageKaleidoscope(FlexImageBase): @classmethod def INPUT_TYPES(cls): @@ -135,6 +160,7 @@ def apply_effect_internal(self, image: np.ndarray, segments: int, center_x: floa return result.clip(0, 1) +@apply_tooltips class FlexImageColorGrade(FlexImageBase): @classmethod def INPUT_TYPES(cls): @@ -184,49 +210,167 @@ def apply_effect_internal(self, image: np.ndarray, intensity: float, mix: float, return np.clip(result, 0, 1) +@apply_tooltips class FlexImageGlitch(FlexImageBase): @classmethod def INPUT_TYPES(cls): base_inputs = super().INPUT_TYPES() base_inputs["required"].update({ - "shift_amount": ("FLOAT", {"default": 0.1, "min": 0.0, "max": 1.0, "step": 0.01}), - "scan_lines": ("INT", {"default": 10, "min": 0, "max": 100, "step": 1}), - "color_shift": ("FLOAT", {"default": 0.1, "min": 0.0, "max": 1.0, "step": 0.01}), + "glitch_type": (["digital", "analog", "compression", "wave", "corrupt"], {"default": "digital"}), + "intensity": ("FLOAT", {"default": 0.5, "min": 0.0, "max": 1.0, "step": 0.01}), + "block_size": ("INT", {"default": 32, "min": 8, "max": 128, "step": 8}), + "wave_amplitude": ("FLOAT", {"default": 0.1, "min": 0.0, "max": 1.0, "step": 0.01}), + "wave_frequency": ("FLOAT", {"default": 5.0, "min": 0.1, "max": 20.0, "step": 0.1}), + "corruption_amount": ("FLOAT", {"default": 0.1, "min": 0.0, "max": 1.0, "step": 0.01}), + "time_seed": ("INT", {"default": 0, "min": 0, "max": 10000, "step": 1}), }) return base_inputs @classmethod def get_modifiable_params(cls): - return ["shift_amount", "scan_lines", "color_shift", "None"] + return ["intensity", "block_size", "wave_amplitude", "wave_frequency", "corruption_amount", "time_seed", "None"] - def apply_effect_internal(self, image: np.ndarray, shift_amount: float, scan_lines: int, color_shift: float, **kwargs) -> np.ndarray: + def apply_effect_internal(self, image: np.ndarray, glitch_type: str, intensity: float, + block_size: int, wave_amplitude: float, wave_frequency: float, + corruption_amount: float, time_seed: int, **kwargs) -> np.ndarray: h, w = image.shape[:2] - - # Apply horizontal shift - shift = int(w * shift_amount) - result = np.roll(image, shift, axis=1) - - # Add scan lines - if scan_lines > 0: - scan_line_mask = np.zeros((h, w)) - scan_line_mask[::scan_lines] = 1 - result = result * (1 - scan_line_mask)[:,:,np.newaxis] + scan_line_mask[:,:,np.newaxis] - - # Apply color channel shift - if color_shift > 0: - color_shift_amount = int(w * color_shift) - result[:,:,0] = np.roll(result[:,:,0], color_shift_amount, axis=1) - result[:,:,2] = np.roll(result[:,:,2], -color_shift_amount, axis=1) - + + # Add smart padding - using reflection for most natural look + pad_size = max(int(min(h, w) * 0.1), 32) # At least 32 pixels or 10% of size + padded = cv2.copyMakeBorder(image, pad_size, pad_size, pad_size, pad_size, + cv2.BORDER_REFLECT_101) + + ph, pw = padded.shape[:2] + result = padded.copy() + + # Set random seed for reproducibility + np.random.seed(time_seed) + + # Apply effects as before, but now working with padded image + if glitch_type == "digital": + for c in range(3): + shift_x = int(pw * intensity * np.random.uniform(-0.1, 0.1)) + shift_y = int(ph * intensity * np.random.uniform(-0.1, 0.1)) + result[..., c] = np.roll(np.roll(padded[..., c], shift_x, axis=1), shift_y, axis=0) + + num_blocks = int(intensity * 10) + for _ in range(num_blocks): + x = np.random.randint(0, pw - block_size) + y = np.random.randint(0, ph - block_size) + block = result[y:y+block_size, x:x+block_size].copy() + + shift_x = int(block_size * np.random.uniform(-1, 1)) + shift_y = int(block_size * np.random.uniform(-1, 1)) + + new_x = np.clip(x + shift_x, 0, pw - block_size) + new_y = np.clip(y + shift_y, 0, ph - block_size) + + result[new_y:new_y+block_size, new_x:new_x+block_size] = block + + elif glitch_type == "compression": + # Simulate JPEG compression artifacts + num_blocks_y = ph // block_size + num_blocks_x = pw // block_size + + for by in range(num_blocks_y): + for bx in range(num_blocks_x): + y1, y2 = by * block_size, (by + 1) * block_size + x1, x2 = bx * block_size, (bx + 1) * block_size + + # Random block corruption + if np.random.random() < corruption_amount: + # Quantization effect + block = result[y1:y2, x1:x2] + # Simulate DCT quantization + quant_level = int(8 * intensity) + block = (block * quant_level).astype(int) / quant_level + # Add blocking artifacts + block += np.random.uniform(-0.1, 0.1, block.shape) * intensity + result[y1:y2, x1:x2] = block + + elif glitch_type == "wave": + y_coords, x_coords = np.mgrid[0:ph, 0:pw] + + for i in range(3): + freq = wave_frequency * (i + 1) + amp = wave_amplitude / (i + 1) + + x_offset = amp * pw * np.sin(2 * np.pi * y_coords / ph * freq + time_seed * 0.1) + y_offset = amp * ph * np.cos(2 * np.pi * x_coords / pw * freq + time_seed * 0.1) + + x_map = (x_coords + x_offset * intensity).astype(np.float32) + y_map = (y_coords + y_offset * intensity).astype(np.float32) + + x_map = np.clip(x_map, 0, pw-1) + y_map = np.clip(y_map, 0, ph-1) + + result = cv2.remap(result, x_map, y_map, cv2.INTER_LINEAR) + + elif glitch_type == "corrupt": + # Data corruption simulation + for _ in range(int(corruption_amount * 20)): + # Random line corruption + if np.random.random() < 0.5: + y = np.random.randint(0, ph) + length = int(pw * np.random.uniform(0.1, 0.5)) + start = np.random.randint(0, pw - length) + + # Corrupt line with various effects + corrupt_type = np.random.choice(['repeat', 'shift', 'noise']) + if corrupt_type == 'repeat': + result[y, start:start+length] = result[y, start] + elif corrupt_type == 'shift': + shift = np.random.randint(-50, 50) + result[y, start:start+length] = np.roll(result[y, start:start+length], shift, axis=0) + else: # noise + result[y, start:start+length] = np.random.random((length, 3)) + + # Block corruption + else: + y = np.random.randint(0, ph - block_size) + x = np.random.randint(0, pw - block_size) + + # Different corruption patterns + pattern = np.random.choice(['solid', 'noise', 'repeat']) + if pattern == 'solid': + result[y:y+block_size, x:x+block_size] = np.random.random(3) + elif pattern == 'noise': + result[y:y+block_size, x:x+block_size] = np.random.random((block_size, block_size, 3)) + else: # repeat + result[y:y+block_size, x:x+block_size] = result[y, x] + + elif glitch_type == "analog": + # Simulate analog TV distortion + # Add scan lines + scan_lines = np.ones((ph, pw, 3)) + scan_lines[::2] *= 0.8 + result *= scan_lines + + # Add noise + noise = np.random.normal(0, 0.1 * intensity, (ph, pw, 3)) + result += noise + + # Add vertical hold distortion + hold_offset = int(ph * 0.1 * intensity * np.sin(time_seed * 0.1)) + result = np.roll(result, hold_offset, axis=0) + + # Add ghosting + ghost = np.roll(result, int(pw * 0.05 * intensity), axis=1) * 0.3 + result = result * 0.7 + ghost + + # Extract the center portion (removing padding) + result = result[pad_size:pad_size+h, pad_size:pad_size+w] + return np.clip(result, 0, 1) +@apply_tooltips class FlexImageChromaticAberration(FlexImageBase): @classmethod def INPUT_TYPES(cls): base_inputs = super().INPUT_TYPES() base_inputs["required"].update({ - "shift_amount": ("FLOAT", {"default": 0.01, "min": 0.0, "max": 0.1, "step": 0.001}), - "angle": ("FLOAT", {"default": 0.0, "min": 0.0, "max": 360.0, "step": 1.0}), + "shift_amount": ("FLOAT", {"default": 0.01, "min": 0.0, "max": 0.5, "step": 0.001}), + "angle": ("FLOAT", {"default": 0.0, "min": 0.0, "max": 720.0, "step": 1.0}), }) return base_inputs @@ -249,6 +393,7 @@ def apply_effect_internal(self, image: np.ndarray, shift_amount: float, angle: f return np.clip(result, 0, 1) +@apply_tooltips class FlexImagePixelate(FlexImageBase): @classmethod def INPUT_TYPES(cls): @@ -282,6 +427,7 @@ def apply_effect_internal(self, image: np.ndarray, pixel_size: int, **kwargs) -> return result +@apply_tooltips class FlexImageBloom(FlexImageBase): @classmethod def INPUT_TYPES(cls): @@ -290,26 +436,133 @@ def INPUT_TYPES(cls): "threshold": ("FLOAT", {"default": 0.7, "min": 0.0, "max": 1.0, "step": 0.01}), "blur_amount": ("FLOAT", {"default": 10.0, "min": 0.0, "max": 50.0, "step": 0.1}), "intensity": ("FLOAT", {"default": 0.5, "min": 0.0, "max": 1.0, "step": 0.01}), + "num_passes": ("INT", {"default": 4, "min": 1, "max": 8, "step": 1}), + "color_bleeding": ("FLOAT", {"default": 0.2, "min": 0.0, "max": 1.0, "step": 0.01}), + "falloff": ("FLOAT", {"default": 1.2, "min": 0.1, "max": 3.0, "step": 0.1}), + }) + base_inputs["optional"].update({ + "opt_normal_map": ("IMAGE",), + "opt_mask": ("MASK",), }) return base_inputs @classmethod def get_modifiable_params(cls): - return ["threshold", "blur_amount", "intensity", "None"] + return ["intensity", "threshold", "blur_amount", "num_passes", "color_bleeding", "falloff", "None"] def apply_effect_internal(self, image: np.ndarray, threshold: float, blur_amount: float, - intensity: float, **kwargs) -> np.ndarray: - # Extract bright areas - bright_areas = np.maximum(image - threshold, 0) / (1 - threshold) - - # Apply gaussian blur - blurred = gaussian_filter(bright_areas, sigma=blur_amount) - - # Combine with original image - result = image + blurred * intensity - + intensity: float, num_passes: int, color_bleeding: float, + falloff: float, opt_normal_map: np.ndarray = None, + opt_mask: np.ndarray = None, **kwargs) -> np.ndarray: + # Set up device (GPU if available, CPU if not) + device = torch.device('cuda' if torch.cuda.is_available() else 'cpu') + + # Convert input image to tensor + image_tensor = torch.from_numpy(image).to(device) + + # Extract bright areas with smooth threshold + brightness = torch.max(image_tensor, dim=2)[0] + bright_mask = torch.clip((brightness - threshold) / (1 - threshold), 0, 1) + bright_mask = torch.pow(bright_mask, falloff) + + # Process optional mask if provided + if opt_mask is not None: + # Convert mask to tensor and ensure correct shape + if torch.is_tensor(opt_mask): + mask_tensor = opt_mask.to(device) + else: + mask_tensor = torch.from_numpy(opt_mask).to(device) + + # Handle batched masks + if len(mask_tensor.shape) > 2: + frame_index = kwargs.get('frame_index', 0) + mask_tensor = mask_tensor[frame_index] + + # Ensure mask is 2D + if len(mask_tensor.shape) > 2: + mask_tensor = mask_tensor.squeeze() + + # Resize mask if needed + if mask_tensor.shape != bright_mask.shape: + mask_tensor = torch.nn.functional.interpolate( + mask_tensor.unsqueeze(0).unsqueeze(0), + size=bright_mask.shape, + mode='bilinear' + ).squeeze() + + # Combine mask with brightness mask + bright_mask = bright_mask * mask_tensor + + # Pre-calculate color bleeding contribution + if color_bleeding > 0: + mean_color = torch.mean(image_tensor, dim=2, keepdim=True) + color_contribution = image_tensor * (1 - color_bleeding) + mean_color * color_bleeding + else: + color_contribution = image_tensor + + # Initialize accumulator and calculate pass weights + bloom_accumulator = torch.zeros_like(image_tensor) + pass_weights = torch.tensor([1.0 / (2 ** i) for i in range(num_passes)], device=device) + pass_weights /= pass_weights.sum() + + # Process normal map if provided + if opt_normal_map is not None: + if torch.is_tensor(opt_normal_map): + normal_tensor = opt_normal_map.to(device) + else: + normal_tensor = torch.from_numpy(opt_normal_map).to(device) + + if len(normal_tensor.shape) > 3: + normal_tensor = normal_tensor[kwargs.get('frame_index', 0)] + + # Convert normal map to [-1,1] range + normals = normal_tensor * 2.0 - 1.0 + + # Calculate surface alignment + view_vector = torch.tensor([0, 0, 1], device=device) + surface_alignment = torch.sum(normals * view_vector, dim=2) + surface_alignment = (surface_alignment + 1) * 0.5 + + # Multi-pass gaussian blur + for i in range(num_passes): + # Calculate kernel size based on blur amount + kernel_size = int(blur_amount * (1 + i)) | 1 # Ensure odd + kernel_size = max(3, min(kernel_size, min(image.shape[:2]))) + sigma = kernel_size / 6.0 + + # Apply bright mask with color contribution + pass_contribution = color_contribution * bright_mask.unsqueeze(-1) + + # Apply gaussian blur + if opt_normal_map is not None: + # Apply directional blur based on normal map + pass_contribution = apply_gaussian_blur_gpu( + pass_contribution.permute(2, 0, 1), + kernel_size, + sigma + ).permute(1, 2, 0) + + # Modulate by surface alignment + pass_contribution = pass_contribution * (1 - surface_alignment.unsqueeze(-1)) + else: + # Standard gaussian blur + pass_contribution = apply_gaussian_blur_gpu( + pass_contribution.permute(2, 0, 1), + kernel_size, + sigma + ).permute(1, 2, 0) + + # Add weighted contribution to accumulator + bloom_accumulator += pass_contribution * pass_weights[i] + + # Combine with original image using intensity + result = image_tensor + bloom_accumulator * intensity + + # Convert back to numpy and ensure range + result = result.cpu().numpy() return np.clip(result, 0, 1) - + +@apply_tooltips class FlexImageTiltShift(FlexImageBase): @classmethod def INPUT_TYPES(cls): @@ -320,40 +573,100 @@ def INPUT_TYPES(cls): "focus_position_y": ("FLOAT", {"default": 0.5, "min": 0.0, "max": 1.0, "step": 0.01}), "focus_width": ("FLOAT", {"default": 0.2, "min": 0.0, "max": 1.0, "step": 0.01}), "focus_height": ("FLOAT", {"default": 0.2, "min": 0.0, "max": 1.0, "step": 0.01}), - "focus_shape": (["rectangle", "ellipse"], {"default": "rectangle"}), + "focus_shape": (["rectangle", "ellipse", "gradient"], {"default": "gradient"}), + "bokeh_shape": (["circular", "hexagonal", "star"], {"default": "circular"}), + "bokeh_size": ("FLOAT", {"default": 0.5, "min": 0.1, "max": 2.0, "step": 0.1}), + "bokeh_brightness": ("FLOAT", {"default": 1.2, "min": 0.5, "max": 2.0, "step": 0.1}), + "chromatic_aberration": ("FLOAT", {"default": 0.0, "min": 0.0, "max": 1.0, "step": 0.01}), }) return base_inputs @classmethod def get_modifiable_params(cls): - return ["blur_amount", "focus_position_x", "focus_position_y", "focus_width", "focus_height", "None"] + return ["blur_amount", "focus_position_x", "focus_position_y", "focus_width", "focus_height", + "bokeh_size", "bokeh_brightness", "chromatic_aberration", "None"] + + def _create_bokeh_kernel(self, size, shape, brightness): + # Create bokeh kernel based on shape + kernel_size = int(size * 20) | 1 # Ensure odd size + center = kernel_size // 2 + kernel = np.zeros((kernel_size, kernel_size), dtype=np.float32) + + if shape == "circular": + y, x = np.ogrid[-center:center+1, -center:center+1] + mask = x*x + y*y <= center*center + kernel[mask] = 1.0 + + elif shape == "hexagonal": + for y in range(kernel_size): + for x in range(kernel_size): + # Hexagonal distance calculation + dx = abs(x - center) + dy = abs(y - center) + if dx * 0.866025 + dy * 0.5 <= center: + kernel[y, x] = 1.0 + + elif shape == "star": + for y in range(kernel_size): + for x in range(kernel_size): + dx = x - center + dy = y - center + angle = np.arctan2(dy, dx) + dist = np.sqrt(dx*dx + dy*dy) + # Create 6-point star shape + star_factor = np.abs(np.sin(3 * angle)) + if dist <= center * (0.8 + 0.2 * star_factor): + kernel[y, x] = 1.0 + + # Normalize and apply brightness + kernel = kernel / np.sum(kernel) * brightness + return kernel def apply_effect_internal(self, image: np.ndarray, blur_amount: float, focus_position_x: float, focus_position_y: float, focus_width: float, focus_height: float, - focus_shape: str, **kwargs) -> np.ndarray: + focus_shape: str, bokeh_shape: str, bokeh_size: float, + bokeh_brightness: float, chromatic_aberration: float, **kwargs) -> np.ndarray: h, w = image.shape[:2] - mask = np.zeros((h, w), dtype=np.float32) center_x, center_y = int(w * focus_position_x), int(h * focus_position_y) width, height = int(w * focus_width), int(h * focus_height) + # Create focus mask + mask = np.zeros((h, w), dtype=np.float32) if focus_shape == "rectangle": cv2.rectangle(mask, (center_x - width//2, center_y - height//2), (center_x + width//2, center_y + height//2), 1, -1) - else: # ellipse + elif focus_shape == "ellipse": cv2.ellipse(mask, (center_x, center_y), (width//2, height//2), 0, 0, 360, 1, -1) - + else: # gradient + y, x = np.ogrid[0:h, 0:w] + # Create smooth gradient based on distance from focus center + dx = (x - center_x) / (width/2) + dy = (y - center_y) / (height/2) + dist = np.sqrt(dx*dx + dy*dy) + mask = np.clip(1 - dist, 0, 1) + + # Apply gaussian blur to mask for smooth transition mask = cv2.GaussianBlur(mask, (0, 0), sigmaX=min(width, height) / 6) - blurred = cv2.GaussianBlur(image, (0, 0), sigmaX=blur_amount) - result = image * mask[:,:,np.newaxis] + blurred * (1 - mask[:,:,np.newaxis]) + + # Create bokeh kernel + bokeh_kernel = self._create_bokeh_kernel(bokeh_size, bokeh_shape, bokeh_brightness) + + # Process each channel separately for chromatic aberration + result = np.zeros_like(image) + for c in range(3): + # Apply channel-specific blur offset for chromatic aberration + offset = (c - 1) * chromatic_aberration * blur_amount + channel_blur = cv2.filter2D(image[..., c], -1, bokeh_kernel * (blur_amount + offset)) + result[..., c] = image[..., c] * mask + channel_blur * (1 - mask) return np.clip(result, 0, 1) - +@apply_tooltips class FlexImageParallax(FlexImageBase): @classmethod def INPUT_TYPES(cls): @@ -423,6 +736,7 @@ def apply_effect_internal( return np.clip(result, 0, 1) +@apply_tooltips class FlexImageContrast(FlexImageBase): @classmethod def INPUT_TYPES(cls): @@ -462,6 +776,7 @@ def apply_effect_internal(self, image: np.ndarray, contrast: float, brightness: import numpy as np import cv2 +@apply_tooltips class FlexImageWarp(FlexImageBase): @classmethod def INPUT_TYPES(cls): @@ -510,7 +825,12 @@ def apply_effect_internal(self, image: np.ndarray, warp_type: str, warp_strength for _ in range(warp_octaves): freq = warp_frequency * (2 ** _) amp = warp_strength / (2 ** _) - noise += amp * np.random.rand(h, w, 2) * np.sin(freq * np.stack((y, x)) / np.array([h, w])) + # Calculate phase grid + phase_x = freq * x / w + phase_y = freq * y / h + # Generate random noise and modulate with sine waves + rand_noise = np.random.rand(h, w, 2) + noise += amp * rand_noise * np.stack((np.sin(phase_y), np.sin(phase_x)), axis=-1) x_warped = x + noise[:,:,0] * w * mask y_warped = y + noise[:,:,1] * h * mask @@ -534,11 +854,12 @@ def apply_effect_internal(self, image: np.ndarray, warp_type: str, warp_strength y_warped = np.clip(y_warped, 0, h-1) # Remap image - warped = cv2.remap(image, x_warped, y_warped, cv2.INTER_LINEAR) + warped = cv2.remap(image, x_warped.astype(np.float32), y_warped.astype(np.float32), cv2.INTER_LINEAR) return warped +@apply_tooltips class FlexImageVignette(FlexImageBase): @classmethod def INPUT_TYPES(cls): @@ -592,6 +913,7 @@ def apply_effect_internal(self, image: np.ndarray, intensity: float, radius: flo return np.clip(result, 0, 1) +@apply_tooltips class FlexImageTransform(FlexImageBase): @classmethod def INPUT_TYPES(cls): @@ -610,12 +932,13 @@ def get_modifiable_params(cls): def apply_effect_internal(self, image: np.ndarray, transform_type: str, x_value: float, y_value: float, **kwargs) -> np.ndarray: return transform_image(image, transform_type, x_value, y_value) +@apply_tooltips class FlexImageHueShift(FlexImageBase): @classmethod def INPUT_TYPES(cls): base_inputs = super().INPUT_TYPES() base_inputs["required"].update({ - "hue_shift": ("FLOAT", {"default": 0.0, "min": 0.0, "max": 360.0, "step": 1.0}), + "hue_shift": ("INT", {"default": 0, "min": 0, "max": 360, "step": 1}), }) base_inputs["optional"].update({ "opt_mask": ("MASK",), @@ -627,39 +950,72 @@ def get_modifiable_params(cls): return ["hue_shift", "None"] def apply_effect_internal(self, image: np.ndarray, hue_shift: float, opt_mask: np.ndarray = None, **kwargs) -> np.ndarray: - # Convert RGB to HSV - hsv_image = cv2.cvtColor(image, cv2.COLOR_RGB2HSV) - - # Create a copy of the original HSV image - result_hsv = hsv_image.copy() + # Convert to float32 for better precision + image = image.astype(np.float32) - # Apply hue shift - result_hsv[:,:,0] = (result_hsv[:,:,0] + hue_shift / 2) % 180 + # Convert RGB to LCH color space for better hue manipulation + # First convert to LAB + lab = cv2.cvtColor(image, cv2.COLOR_RGB2LAB) + + # Convert LAB to LCH (cylindrical color space) + L = lab[:,:,0] + a = lab[:,:,1] + b = lab[:,:,2] + + # Calculate C (chroma) and H (hue) from a,b + C = np.sqrt(np.square(a) + np.square(b)) + H = np.arctan2(b, a) + + # Apply hue shift in radians (convert from degrees) + H_shifted = H + (hue_shift * np.pi / 180.0) + + # Convert back to LAB + a_new = C * np.cos(H_shifted) + b_new = C * np.sin(H_shifted) + + # Reconstruct LAB image + lab_shifted = np.stack([L, a_new, b_new], axis=2) + + # Convert back to RGB + result = cv2.cvtColor(lab_shifted, cv2.COLOR_LAB2RGB) if opt_mask is not None: - # Ensure mask has the same shape as the image - if opt_mask.shape[:2] != image.shape[:2]: - opt_mask = cv2.resize(opt_mask, (image.shape[1], image.shape[0])) + # Convert mask to numpy if it's a tensor + if torch.is_tensor(opt_mask): + opt_mask = opt_mask.cpu().numpy() + + # Select the correct frame from the mask batch + frame_index = kwargs.get('frame_index', 0) + if len(opt_mask.shape) > 2: + opt_mask = opt_mask[frame_index] + + # Ensure mask is 2D + if len(opt_mask.shape) > 2: + opt_mask = opt_mask.squeeze() + + # Get target dimensions and resize if needed + target_height, target_width = image.shape[:2] + if opt_mask.shape != (target_height, target_width): + opt_mask = cv2.resize(opt_mask.astype(np.float32), (target_width, target_height)) # Normalize mask to range [0, 1] if opt_mask.max() > 1: opt_mask = opt_mask / 255.0 - # Expand mask dimensions to match HSV image + # Expand mask dimensions to match image mask_3d = np.expand_dims(opt_mask, axis=2) - # Apply the mask - result_hsv = hsv_image * (1 - mask_3d) + result_hsv * mask_3d - - # Convert back to RGB - result = cv2.cvtColor(result_hsv, cv2.COLOR_HSV2RGB) + # Apply the mask by blending original and shifted images + result = image * (1 - mask_3d) + result * mask_3d return np.clip(result, 0, 1) + import numpy as np import cv2 +@apply_tooltips class FlexImageDepthWarp(FlexImageBase): @classmethod @@ -722,6 +1078,8 @@ def apply_effect_internal( print("Warning: No depth map provided.") return image + +@apply_tooltips class FlexImageHorizontalToVertical(FlexImageBase): @classmethod def INPUT_TYPES(cls): @@ -833,4 +1191,5 @@ def apply_effect_internal(self, image: np.ndarray, blur_amount: float, backgroun return np.clip(result, 0, 1) + \ No newline at end of file diff --git a/nodes/images/image_base.py b/nodes/images/image_base.py deleted file mode 100644 index 7f405a7..0000000 --- a/nodes/images/image_base.py +++ /dev/null @@ -1,125 +0,0 @@ -import torch -import numpy as np -from abc import ABC, abstractmethod -from tqdm import tqdm -from comfy.utils import ProgressBar -from ... import RyanOnTheInside - -class FlexImageBase(RyanOnTheInside, ABC): - @classmethod - def INPUT_TYPES(cls): - return { - "required": { - "images": ("IMAGE",), - "strength": ("FLOAT", {"default": 1.0, "min": 0.0, "max": 1.0, "step": 0.01}), - "feature_threshold": ("FLOAT", {"default": 0.0, "min": 0.0, "max": 1.0, "step": 0.01}), - "feature_param": (cls.get_modifiable_params(), {"default": cls.get_modifiable_params()[0]}), - "feature_mode": (["relative", "absolute"], {"default": "relative"}), - }, - "optional": { - "opt_feature": ("FEATURE",), - "opt_feature_pipe": ("FEATURE_PIPE",), - } - } - - CATEGORY = "RyanOnTheInside/FlexImage" - RETURN_TYPES = ("IMAGE",) - FUNCTION = "apply_effect" - - def __init__(self): - self.progress_bar = None - - def start_progress(self, total_steps, desc="Processing"): - self.progress_bar = ProgressBar(total_steps) - - def update_progress(self): - if self.progress_bar: - self.progress_bar.update(1) - - def end_progress(self): - self.progress_bar = None - - @classmethod - @abstractmethod - def get_modifiable_params(cls): - """Return a list of parameter names that can be modulated.""" - return [] - - def modulate_param(self, param_name, param_value, feature_value, strength, mode): - if mode == "relative": - return param_value * (1 + (feature_value - 0.5) * strength) - else: # absolute - return param_value * feature_value * strength - - def apply_effect(self, images, strength, feature_threshold, feature_param, feature_mode, opt_feature=None, opt_feature_pipe=None, **kwargs): - if (opt_feature is None) != (opt_feature_pipe is None): - raise ValueError("Both opt_feature and opt_feature_pipe must be provided together, or neither should be provided.") - - if opt_feature is None and opt_feature_pipe is None: - # If neither feature nor feature_pipe is provided, process all frames without modulation - num_frames = images.shape[0] - images_np = images.cpu().numpy() - - self.start_progress(num_frames, desc=f"Applying {self.__class__.__name__}") - - result = [] - for i in range(num_frames): - processed_image = self.process_image(images_np[i], 0.5, strength, - feature_param=feature_param, - feature_mode=feature_mode, - **kwargs) - result.append(processed_image) - self.update_progress() - else: - # Original behavior when both feature and feature_pipe are provided - num_frames = opt_feature_pipe.frame_count - images_np = images.cpu().numpy() - - self.start_progress(num_frames, desc=f"Applying {self.__class__.__name__}") - - result = [] - for i in range(num_frames): - image = images_np[i] - feature_value = opt_feature.get_value_at_frame(i) - kwargs['frame_index'] = i - if feature_value >= feature_threshold: - processed_image = self.process_image(image, feature_value, strength, - feature_param=feature_param, - feature_mode=feature_mode, - **kwargs) - else: - processed_image = image - - result.append(processed_image) - self.update_progress() - - self.end_progress() - - # Convert the list of numpy arrays to a single numpy array - result_np = np.stack(result) - - # Convert the numpy array to a PyTorch tensor and ensure it's in BHWC format - result_tensor = torch.from_numpy(result_np).float() - - # If the tensor is not in BHWC format, transpose it - if result_tensor.shape[1] == 3: # If it's in BCHW format - result_tensor = result_tensor.permute(0, 2, 3, 1) - - return (result_tensor,) - - def process_image(self, image: np.ndarray, feature_value: float, strength: float, - feature_param: str, feature_mode: str, **kwargs) -> np.ndarray: - # Modulate the selected parameter - for param_name in self.get_modifiable_params(): - if param_name in kwargs: - if param_name == feature_param: - kwargs[param_name] = self.modulate_param(param_name, kwargs[param_name], - feature_value, strength, feature_mode) - - # Call the child class's implementation - return self.apply_effect_internal(image, **kwargs) - - @abstractmethod - def apply_effect_internal(self, image: np.ndarray, **kwargs) -> np.ndarray: - """Apply the effect to the image. To be implemented by child classes.""" - pass diff --git a/nodes/images/image_utility_nodes.py b/nodes/images/image_utility_nodes.py index 84b9c06..26463ff 100644 --- a/nodes/images/image_utility_nodes.py +++ b/nodes/images/image_utility_nodes.py @@ -2,23 +2,14 @@ import torch.nn.functional as F from ..node_utilities import string_to_rgb from ... import RyanOnTheInside -from comfy.utils import ProgressBar +from comfy.utils import ProgressBar, common_upscale +from ... import ProgressMixin +from ...tooltips import apply_tooltips -class ImageUtilityNode(RyanOnTheInside): - def __init__(self): - self.progress_bar = None - - def start_progress(self, total_steps, desc="Processing"): - self.progress_bar = ProgressBar(total_steps) - - def update_progress(self): - if self.progress_bar: - self.progress_bar.update(1) - - def end_progress(self): - self.progress_bar = None - CATEGORY = "RyanOnTheInside/image/utility" +class ImageUtilityNode(ProgressMixin): + CATEGORY = "RyanOnTheInside/Utility/Images" +@apply_tooltips class DyeImage(ImageUtilityNode): @classmethod def INPUT_TYPES(s): @@ -51,6 +42,7 @@ def dye_image(self, image, source_rgb, target_rgb, tolerance): # From https://github.com/Jamy-L/Pytorch-Contrast-Adaptive-Sharpening/ # THEN from comfyui essentials shoutout MATEO +@apply_tooltips class ImageCASBatch(ImageUtilityNode): @classmethod def INPUT_TYPES(cls): @@ -63,7 +55,6 @@ def INPUT_TYPES(cls): } RETURN_TYPES = ("IMAGE",) - CATEGORY = "essentials/image processing" FUNCTION = "execute" def execute(self, image, amount, batch_size): @@ -122,7 +113,8 @@ def process_batch(self, batch, amount): return output -from comfy.utils import common_upscale + +@apply_tooltips class ImageScaleToTarget(ImageUtilityNode): upscale_methods = ["nearest-exact", "bilinear", "area", "bicubic", "lanczos"] crop_methods = ["disabled", "center"] @@ -136,8 +128,6 @@ def INPUT_TYPES(s): RETURN_TYPES = ("IMAGE",) FUNCTION = "upscale" - CATEGORY = "image/upscaling" - def upscale(self, image, upscale_method, target_image, crop): b,height,width,c = target_image.shape if width == 0 and height == 0: @@ -154,3 +144,54 @@ def upscale(self, image, upscale_method, target_image, crop): s = s.movedim(1,-1) return (s,) + +import json + +class ColorPicker: + """ + A node that provides a color picker interface and outputs hex color, RGB color, and hue values. + """ + + CATEGORY = "RyanOnTheInside" + FUNCTION = "process_color" + RETURN_TYPES = ("STRING", "STRING", "INT") + RETURN_NAMES = ("hex_color", "rgb_color", "hue_shift") + + @classmethod + def INPUT_TYPES(cls): + return { + "required": { + "color": ("STRING", {"default": '{"hex":"#FF0000","rgb":"255,0,0","hue":0}'}) + } + } + + def process_color(self, color): + try: + # Parse the JSON data from the widget + color_data = json.loads(color) + + # Extract values with defaults + hex_color = color_data.get("hex", "#FF0000").upper() # Ensure uppercase for consistency + rgb_value = color_data.get("rgb", "255,0,0") + hue = color_data.get("hue", 0) + + # Convert RGB string to integers for validation + try: + r, g, b = map(int, rgb_value.split(',')) + # Ensure RGB values are in valid range + r = max(0, min(255, r)) + g = max(0, min(255, g)) + b = max(0, min(255, b)) + # Reconstruct validated RGB string + rgb_value = f"{r},{g},{b}" + except ValueError: + rgb_value = "255,0,0" # Default if parsing fails + + # Ensure hue is in valid range (0-360) + hue = max(0, min(360, int(hue))) + + return (hex_color, rgb_value, hue) + + except (json.JSONDecodeError, KeyError): + # Return defaults if JSON parsing fails + return ("#FF0000", "255,0,0", 0) \ No newline at end of file diff --git a/nodes/images/image_utils.py b/nodes/images/image_utils.py index 38528c5..5642b64 100644 --- a/nodes/images/image_utils.py +++ b/nodes/images/image_utils.py @@ -1,5 +1,6 @@ import numpy as np import cv2 +import torch def apply_blend_mode(base_image: np.ndarray, blend_image: np.ndarray, mode: str, opacity: float) -> np.ndarray: """ @@ -117,43 +118,58 @@ def apply_blur(image: np.ndarray, intensity: float, kernel_size: int, sigma: flo blurred = cv2.GaussianBlur(image, (kernel_size, kernel_size), sigma) return blurred -def apply_sharpen(image: np.ndarray, intensity: float, kernel_size: int, sigma: float = 1.0) -> np.ndarray: - blurred = cv2.GaussianBlur(image, (kernel_size, kernel_size), sigma) - sharpened = cv2.addWeighted(image, 1 + intensity, blurred, -intensity, 0) - return np.clip(sharpened, 0, 1) - -def apply_edge_detect(image: np.ndarray, intensity: float, kernel_size: int) -> np.ndarray: - gray = cv2.cvtColor(image, cv2.COLOR_RGB2GRAY) - edges = cv2.Canny(np.uint8(gray * 255), 100, 200) - edges = edges.astype(float) / 255.0 - return np.clip(image * (1 - intensity) + np.dstack([edges] * 3) * intensity, 0, 1) - -def apply_emboss(image: np.ndarray, intensity: float, kernel_size: int) -> np.ndarray: - kernel = np.array([[-1,-1,0], [-1,0,1], [0,1,1]]) - if kernel_size > 3: - kernel = cv2.resize(kernel, (kernel_size, kernel_size), interpolation=cv2.INTER_LINEAR) - gray = cv2.cvtColor(image, cv2.COLOR_RGB2GRAY) - embossed = cv2.filter2D(gray, -1, kernel * intensity) - embossed = (embossed - np.min(embossed)) / (np.max(embossed) - np.min(embossed)) - return np.clip(image * (1 - intensity) + np.dstack([embossed] * 3) * intensity, 0, 1) - -def apply_posterize(image: np.ndarray, intensity: float, levels: int, dither: bool = False) -> np.ndarray: - effective_levels = int(np.clip(levels * (1 - intensity) + 2 * intensity, 2, levels)) - quantized = np.round(image * (effective_levels - 1)) / (effective_levels - 1) - if dither: - error = image - quantized - quantized += np.random.uniform(-0.5/effective_levels, 0.5/effective_levels, image.shape) - return np.clip(quantized, 0, 1) - -def apply_brightness(image: np.ndarray, intensity: float, midpoint: float = 0.5, preserve_luminosity: bool = False) -> np.ndarray: - adjusted = image + intensity +def create_gaussian_kernel_gpu(kernel_size: int, sigma: float, device: torch.device) -> torch.Tensor: + """ + Create a 2D Gaussian kernel for GPU-accelerated blur operations. - if preserve_luminosity: - original_luminosity = np.mean(image) - adjusted_luminosity = np.mean(adjusted) - adjusted *= original_luminosity / adjusted_luminosity + :param kernel_size: Size of the kernel (must be odd) + :param sigma: Standard deviation of the Gaussian + :param device: PyTorch device (GPU or CPU) + :return: Gaussian kernel tensor ready for convolution + """ + # Create 1D Gaussian kernel + x = torch.linspace(-kernel_size // 2 + 1, kernel_size // 2, kernel_size, device=device) + gauss = torch.exp(-x.pow(2) / (2 * sigma ** 2)) + kernel = gauss / gauss.sum() - return np.clip(adjusted, 0, 1) + # Create 2D kernel by outer product + kernel = kernel.unsqueeze(0) * kernel.unsqueeze(1) + + # Normalize and reshape for conv2d + kernel = kernel / kernel.sum() + kernel = kernel.view(1, 1, kernel_size, kernel_size) + return kernel.repeat(3, 1, 1, 1) # Repeat for RGB channels + +def apply_gaussian_blur_gpu(x: torch.Tensor, kernel_size: int, sigma: float) -> torch.Tensor: + """ + Apply Gaussian blur using GPU acceleration via PyTorch. + + :param x: Input tensor in format (C, H, W) or (N, C, H, W) + :param kernel_size: Size of the Gaussian kernel (must be odd) + :param sigma: Standard deviation of the Gaussian + :return: Blurred tensor in same format as input + """ + if kernel_size < 3: + return x + + # Ensure input is in the right format (N, C, H, W) + if len(x.shape) == 3: + x = x.unsqueeze(0) + + # Create gaussian kernel + kernel = create_gaussian_kernel_gpu(kernel_size, sigma, x.device) + + # Apply padding to prevent border artifacts + pad_size = kernel_size // 2 + x_padded = torch.nn.functional.pad(x, (pad_size, pad_size, pad_size, pad_size), mode='reflect') + + # Apply convolution for each channel + groups = x.shape[1] # Number of channels + blurred = torch.nn.functional.conv2d(x_padded, kernel, groups=groups, padding=0) + + return blurred.squeeze(0) if len(x.shape) == 4 else blurred + + def apply_contrast(image: np.ndarray, intensity: float, midpoint: float = 0.5, preserve_luminosity: bool = False) -> np.ndarray: factor = 1 + intensity @@ -249,4 +265,125 @@ def transform_image(image: np.ndarray, transform_type: str, x_value: float, y_va elif transform_type == "scale": return scale_image(image, 1 + x_value, 1 + y_value) else: - raise ValueError(f"Unknown transform type: {transform_type}") \ No newline at end of file + raise ValueError(f"Unknown transform type: {transform_type}") + +def create_wave_distortion_map(height: int, width: int, frequency: float, amplitude: float, device: torch.device) -> torch.Tensor: + """ + Create a wave distortion displacement map for image warping. + + :param height: Image height + :param width: Image width + :param frequency: Wave frequency + :param amplitude: Wave amplitude + :param device: PyTorch device (GPU/CPU) + :return: Displacement map tensor + """ + y, x = torch.meshgrid( + torch.arange(height, device=device), + torch.arange(width, device=device), + indexing='ij' + ) + + displacement = amplitude * torch.sin(2 * np.pi * frequency * y.float()) + return displacement + +def extract_and_move_blocks(image: torch.Tensor, block_size: int, shift_range: float, device: torch.device) -> torch.Tensor: + """ + Extract and randomly move blocks in the image. + + :param image: Input tensor (H,W,C) + :param block_size: Size of blocks to move + :param shift_range: Maximum shift distance as fraction of image size + :param device: PyTorch device (GPU/CPU) + :return: Image with moved blocks + """ + h, w = image.shape[:2] + result = image.clone() + + # Calculate maximum shift in pixels + max_shift = int(min(h, w) * shift_range) + + # Create block positions + y_blocks = torch.arange(0, h - block_size + 1, block_size, device=device) + x_blocks = torch.arange(0, w - block_size + 1, block_size, device=device) + + # Random shifts for each block + shifts_y = torch.randint(-max_shift, max_shift + 1, (len(y_blocks), len(x_blocks)), device=device) + shifts_x = torch.randint(-max_shift, max_shift + 1, (len(y_blocks), len(x_blocks)), device=device) + + # Apply shifts using tensor operations + for i, y in enumerate(y_blocks): + for j, x in enumerate(x_blocks): + # Source block coordinates + y1, y2 = y, y + block_size + x1, x2 = x, x + block_size + + # Target coordinates with shift + new_y = torch.clamp(y + shifts_y[i,j], 0, h - block_size) + new_x = torch.clamp(x + shifts_x[i,j], 0, w - block_size) + + # Move block + result[new_y:new_y+block_size, new_x:new_x+block_size] = image[y1:y2, x1:x2] + + return result + +def apply_compression_artifacts(image: torch.Tensor, block_size: int, quality: float, device: torch.device) -> torch.Tensor: + """ + Simulate compression artifacts using block-wise operations. + + :param image: Input tensor (H,W,C) + :param block_size: Size of compression blocks + :param quality: Quality factor (0-1) + :param device: PyTorch device (GPU/CPU) + :return: Image with compression artifacts + """ + h, w = image.shape[:2] + result = image.clone() + + # Quantization levels based on quality + levels = int(2 + (1 - quality) * 14) # 2-16 levels + + # Process blocks + for y in range(0, h - block_size + 1, block_size): + for x in range(0, w - block_size + 1, block_size): + block = image[y:y+block_size, x:x+block_size] + + # Quantize block values + block_q = torch.round(block * (levels - 1)) / (levels - 1) + + # Add block edges + edge_strength = (1 - quality) * 0.1 + block_q += edge_strength * (torch.rand_like(block_q) - 0.5) + + result[y:y+block_size, x:x+block_size] = block_q + + return torch.clamp(result, 0, 1) + +def apply_line_corruption(image: torch.Tensor, corruption_probability: float, device: torch.device) -> torch.Tensor: + """ + Apply random line corruption effects. + + :param image: Input tensor (H,W,C) + :param corruption_probability: Probability of line corruption + :param device: PyTorch device (GPU/CPU) + :return: Image with corrupted lines + """ + h, w = image.shape[:2] + result = image.clone() + + # Generate random line positions + line_mask = torch.rand(h, device=device) < corruption_probability + + # Different corruption types for selected lines + for y in torch.where(line_mask)[0]: + corruption_type = torch.randint(0, 3, (1,), device=device) + + if corruption_type == 0: # Shift + shift = torch.randint(-w//4, w//4 + 1, (1,), device=device) + result[y] = torch.roll(image[y], shift.item(), dims=0) + elif corruption_type == 1: # Noise + result[y] = torch.rand_like(image[y]) + else: # Repeat + result[y] = image[y].roll(1, dims=0) + + return result \ No newline at end of file diff --git a/nodes/latents/flex_latent_base.py b/nodes/latents/flex_latent_base.py new file mode 100644 index 0000000..e8c5ecd --- /dev/null +++ b/nodes/latents/flex_latent_base.py @@ -0,0 +1,98 @@ +import numpy as np +import torch +from abc import abstractmethod +from ... import RyanOnTheInside +from ..flex.flex_base import FlexBase +from ...tooltips import apply_tooltips + +@apply_tooltips +class FlexLatentBase(RyanOnTheInside, FlexBase): + @classmethod + def INPUT_TYPES(cls): + return { + **super().INPUT_TYPES(), + "required": { + **super().INPUT_TYPES()["required"], + "latents": ("LATENT",), + }, + # Optional inputs are inherited from FlexBase + } + + CATEGORY = "RyanOnTheInside/FlexFeatures/Targets/Latents" + RETURN_TYPES = ("LATENT",) + FUNCTION = "apply_effect" + + def __init__(self): + super().__init__() + + def process_below_threshold(self, latent, feature_value=None, **kwargs): + """Default behavior for when feature value is below threshold: return latent unchanged.""" + return latent + + def apply_effect( + self, + latents, + strength, + feature_threshold, + feature_param, + feature_mode, + opt_feature=None, + **kwargs + ): + latents_np = latents["samples"].cpu().numpy() + + num_frames = latents_np.shape[0] + + self.start_progress(num_frames, desc=f"Applying {self.__class__.__name__}") + + result = [] + for i in range(num_frames): + # Get the appropriate latent frame, handling possible shorter sequences + latent = latents_np[i % latents_np.shape[0]] + + # Get feature value + feature_value = self.get_feature_value(i, opt_feature) + + # Process parameters using FlexBase functionality + processed_kwargs = self.process_parameters( + frame_index=i, + feature_value=feature_value, + feature_threshold=feature_threshold, + strength=strength, + feature_param=feature_param, + feature_mode=feature_mode, + **kwargs + ) + + # Ensure frame_index is included in processed_kwargs + processed_kwargs['frame_index'] = i + + # Determine if effect should be applied based on feature value and threshold + if feature_value is not None and feature_value >= processed_kwargs['feature_threshold']: + processed_latent = self.apply_effect_internal( + latent, + **processed_kwargs + ) + else: + processed_latent = self.process_below_threshold( + latent, + **processed_kwargs + ) + + result.append(processed_latent) + self.update_progress() + + self.end_progress() + + # Stack results and convert back to tensor + result_np = np.stack(result) + result_tensor = torch.from_numpy(result_np).float() + + return ({"samples": result_tensor},) + + @abstractmethod + def apply_effect_internal(self, latent: np.ndarray, feature_value: float, strength: float, + feature_param: str, feature_mode: str, **kwargs) -> np.ndarray: + """Apply the effect with processed parameters. To be implemented by child classes.""" + pass + diff --git a/nodes/latents/latent_base.py b/nodes/latents/flex_latents.py similarity index 63% rename from nodes/latents/latent_base.py rename to nodes/latents/flex_latents.py index c202d48..184c6fa 100644 --- a/nodes/latents/latent_base.py +++ b/nodes/latents/flex_latents.py @@ -1,91 +1,38 @@ -# custom_nodes/ComfyUI_RyanOnTheInside/nodes/latents/latent_base.py - +from .flex_latent_base import FlexLatentBase import numpy as np -import torch -from abc import ABC, abstractmethod -from comfy.utils import ProgressBar -from ... import RyanOnTheInside - -#NOTE: this is a work in progress, it sucks +from ...tooltips import apply_tooltips -class FlexLatentBase(RyanOnTheInside, ABC): +@apply_tooltips +class FlexLatentInterpolate(FlexLatentBase): @classmethod def INPUT_TYPES(cls): - return { - "required": { - "latents": ("LATENT",), - "feature": ("FEATURE",), - "feature_pipe": ("FEATURE_PIPE",), - "strength": ("FLOAT", {"default": 1.0, "min": 0.0, "max": 1.0, "step": 0.01}), - "feature_threshold": ("FLOAT", {"default": 0.0, "min": 0.0, "max": 1.0, "step": 0.01}), - "feature_param": (cls.get_modifiable_params(), {"default": cls.get_modifiable_params()[0]}), - "feature_mode": (["relative", "absolute"], {"default": "relative"}), - } - } - - CATEGORY = "RyanOnTheInside/FlexLatent" - RETURN_TYPES = ("LATENT",) - FUNCTION = "apply_effect" - - def __init__(self): - self.progress_bar = None - - def start_progress(self, total_steps, desc="Processing"): - self.progress_bar = ProgressBar(total_steps) - - def update_progress(self): - if self.progress_bar: - self.progress_bar.update(1) - - def end_progress(self): - self.progress_bar = None + inputs = super().INPUT_TYPES() + inputs["required"].update({ + "latent_2": ("LATENT",), + "interpolation_mode": (["Linear", "Spherical"], {"default": "Linear"}), + }) + return inputs @classmethod - @abstractmethod def get_modifiable_params(cls): - """Return a list of parameter names that can be modulated.""" - return [] - - def modulate_param(self, param_name, param_value, feature_value, strength, mode): - if mode == "relative": - return param_value * (1 + (feature_value - 0.5) * strength) - else: # absolute - return param_value * feature_value * strength - - def apply_effect(self, latents, feature, feature_pipe, strength, feature_threshold, feature_param, feature_mode, **kwargs): - num_frames = feature_pipe.frame_count - latents_np = latents["samples"].cpu().numpy() - - self.start_progress(num_frames, desc=f"Applying {self.__class__.__name__}") - - result = [] - for i in range(num_frames): - latent = latents_np[i] - feature_value = feature.get_value_at_frame(i) - kwargs['frame_index'] = i - kwargs['feature_value'] = feature_value - kwargs['strength'] = strength - kwargs['feature_param'] = feature_param - kwargs['feature_mode'] = feature_mode - - if feature_value >= feature_threshold: - processed_latent = self.process_latent(latent, **kwargs) - else: - processed_latent = latent - - result.append(processed_latent) - self.update_progress() - - self.end_progress() + return ["None"] - result_np = np.stack(result) - result_tensor = torch.from_numpy(result_np).float() + def apply_effect_internal(self, latent: np.ndarray, **kwargs) -> np.ndarray: + feature_value = kwargs['feature_value'] + strength = kwargs['strength'] + latent_2 = kwargs['latent_2'] + interpolation_mode = kwargs['interpolation_mode'] + frame_index = kwargs['frame_index'] - return ({"samples": result_tensor},) + latent_2_np = latent_2["samples"].cpu().numpy()[frame_index] - @abstractmethod - def process_latent(self, latent: np.ndarray, **kwargs) -> np.ndarray: - """Process the latent using subclass-specific logic.""" + # Perform interpolation + t = np.clip(feature_value * strength, 0.0, 1.0) + if interpolation_mode == "Linear": + result = (1 - t) * latent + t * latent_2_np + else: # Spherical interpolation + result = self.spherical_interpolation(latent, latent_2_np, t) + return result def spherical_interpolation(self, latent1, latent2, t): # Flatten the latents @@ -108,56 +55,7 @@ def spherical_interpolation(self, latent1, latent2, t): result = coef1 * latent1 + coef2 * latent2 return result.reshape(latent1.shape) -# custom_nodes/ComfyUI_RyanOnTheInside/nodes/latents/flex_latent_interpolate.py - -import numpy as np - -class FlexLatentInterpolate(FlexLatentBase): - @classmethod - def INPUT_TYPES(cls): - inputs = super().INPUT_TYPES() - inputs["required"].update({ - "latent_2": ("LATENT",), - "interpolation_mode": (["Linear", "Spherical"], {"default": "Linear"}), - }) - return inputs - - @classmethod - def get_modifiable_params(cls): - return ["None"] - - def process_latent(self, latent: np.ndarray, **kwargs) -> np.ndarray: - feature_value = kwargs['feature_value'] - strength = kwargs['strength'] - feature_param = kwargs['feature_param'] - feature_mode = kwargs['feature_mode'] - latent_2 = kwargs['latent_2'] - interpolation_mode = kwargs['interpolation_mode'] - - # Modulate any parameters if needed - if feature_param in self.get_modifiable_params(): - modulated_value = self.modulate_param( - feature_param, - kwargs.get(feature_param, 0), - feature_value, - strength, - feature_mode - ) - kwargs[feature_param] = modulated_value - - latent_2_np = latent_2["samples"].cpu().numpy()[kwargs['frame_index']] - - # Perform interpolation - t = np.clip(feature_value * strength, 0.0, 1.0) - if interpolation_mode == "Linear": - result = (1 - t) * latent + t * latent_2_np - else: # Spherical interpolation - result = self.spherical_interpolation(latent, latent_2_np, t) - return result - - -import numpy as np - +@apply_tooltips class EmbeddingGuidedLatentInterpolate(FlexLatentBase): @classmethod def INPUT_TYPES(cls): @@ -174,28 +72,15 @@ def INPUT_TYPES(cls): def get_modifiable_params(cls): return ["interpolation_mode", "None"] - def process_latent(self, latent: np.ndarray, **kwargs) -> np.ndarray: + def apply_effect_internal(self, latent: np.ndarray, **kwargs) -> np.ndarray: feature_value = kwargs['feature_value'] strength = kwargs['strength'] - feature_param = kwargs['feature_param'] - feature_mode = kwargs['feature_mode'] latent_2 = kwargs['latent_2'] embedding_1 = kwargs['embedding_1'] embedding_2 = kwargs['embedding_2'] interpolation_mode = kwargs['interpolation_mode'] frame_index = kwargs['frame_index'] - # Modulate any parameters if needed - if feature_param in self.get_modifiable_params(): - modulated_value = self.modulate_param( - feature_param, - kwargs.get(feature_param, 0), - feature_value, - strength, - feature_mode - ) - kwargs[feature_param] = modulated_value - latent_2_np = latent_2["samples"].cpu().numpy()[frame_index] embedding_1_np = embedding_1.cpu().numpy()[frame_index] embedding_2_np = embedding_2.cpu().numpy()[frame_index] @@ -239,8 +124,8 @@ def spherical_interpolation(self, latent1, latent2, t): coef2 = np.sin(t * omega) / sin_omega result = coef1 * latent1 + coef2 * latent2 return result.reshape(latent1.shape) - +@apply_tooltips class FlexLatentBlend(FlexLatentBase): @classmethod def INPUT_TYPES(cls): @@ -256,7 +141,7 @@ def INPUT_TYPES(cls): def get_modifiable_params(cls): return ["blend_strength", "None"] - def process_latent(self, latent: np.ndarray, **kwargs) -> np.ndarray: + def apply_effect_internal(self, latent: np.ndarray, **kwargs) -> np.ndarray: feature_value = kwargs['feature_value'] strength = kwargs['strength'] feature_param = kwargs['feature_param'] @@ -301,7 +186,8 @@ def apply_blend(self, latent1, latent2, mode): else: # Default to Add if mode is unrecognized return latent1 + latent2 - + +@apply_tooltips class FlexLatentNoise(FlexLatentBase): @classmethod def INPUT_TYPES(cls): @@ -316,7 +202,7 @@ def INPUT_TYPES(cls): def get_modifiable_params(cls): return ["noise_level", "None"] - def process_latent(self, latent: np.ndarray, **kwargs) -> np.ndarray: + def apply_effect_internal(self, latent: np.ndarray, **kwargs) -> np.ndarray: feature_value = kwargs['feature_value'] strength = kwargs['strength'] feature_param = kwargs['feature_param'] @@ -333,7 +219,7 @@ def process_latent(self, latent: np.ndarray, **kwargs) -> np.ndarray: strength, feature_mode ) - # Ensure noise_level remains within [0, 1] + # Ensure noise_level remains within [0.0, 1.0] noise_level = np.clip(noise_level, 0.0, 1.0) # Generate noise @@ -347,4 +233,5 @@ def process_latent(self, latent: np.ndarray, **kwargs) -> np.ndarray: # Add noise to the latent result = latent + noise - return result \ No newline at end of file + return result + diff --git a/nodes/latents/latent_frequency_blender.py b/nodes/latents/latent_frequency_blender.py index 023162c..a948f36 100644 --- a/nodes/latents/latent_frequency_blender.py +++ b/nodes/latents/latent_frequency_blender.py @@ -1,4 +1,4 @@ -from .latent_base import FlexLatentBase +from .flex_latent_base import FlexLatentBase import torch import numpy as np from scipy.signal import butter, sosfilt @@ -8,9 +8,11 @@ calculate_spectral_flux, calculate_zero_crossing_rate ) +from ...tooltips import apply_tooltips #NOTE just an experiment, it sucks #TODO: get to this +@apply_tooltips class LatentFrequencyBlender(FlexLatentBase): @classmethod def INPUT_TYPES(cls): @@ -42,7 +44,7 @@ def INPUT_TYPES(cls): RETURN_TYPES = ("LATENT",) FUNCTION = "apply_effect" - CATEGORY = "RyanOnTheInside/FlexLatent" + CATEGORY = "RyanOnTheInside/ExperimentalWIP" @classmethod def get_modifiable_params(cls): diff --git a/nodes/masks/flex_mask_base.py b/nodes/masks/flex_mask_base.py new file mode 100644 index 0000000..5493496 --- /dev/null +++ b/nodes/masks/flex_mask_base.py @@ -0,0 +1,158 @@ +from abc import ABC, abstractmethod +import numpy as np +import torch +from ..flex.flex_base import FlexBase +from .mask_base import MaskBase +from ...tooltips import apply_tooltips + +@apply_tooltips +class FlexMaskBase(FlexBase, MaskBase): + """Base class for Flex-enabled mask operations that combines FlexBase feature modulation with MaskBase operations.""" + + @classmethod + def INPUT_TYPES(cls): + # Get input types from FlexBase + base_inputs = super().INPUT_TYPES() + + # Get MaskBase inputs + mask_inputs = MaskBase.INPUT_TYPES() + + # First rename MaskBase's strength to mask_strength so as to not conflict with FlexBase's strength + mask_inputs["required"]["mask_strength"] = mask_inputs["required"].pop("strength") + + # Update the base inputs with mask inputs + base_inputs["required"].update(mask_inputs["required"]) + + + # Update optional inputs + if "optional" in mask_inputs: + if "optional" not in base_inputs: + base_inputs["optional"] = {} + base_inputs["optional"].update(mask_inputs["optional"]) + + return base_inputs + + CATEGORY = "RyanOnTheInside/FlexFeatures/Targets/Masks" + RETURN_TYPES = ("MASK",) + FUNCTION = "apply_effect" + + def __init__(self): + # Initialize both parent classes + FlexBase.__init__(self) + MaskBase.__init__(self) + self.parameter_scheduler = None + + @classmethod + @abstractmethod + def get_modifiable_params(cls): + """Return a list of parameter names that can be modulated.""" + return ["None"] + + + #TODO update this to make the contract more clear (feature_mode, feature_param, etc) + @abstractmethod + def apply_effect_internal(self, mask: np.ndarray, **kwargs) -> np.ndarray: + """Apply the effect with processed parameters. + + Args: + mask: The input mask to process + **kwargs: All parameters needed for the effect, already processed by the base class + + Returns: + The processed mask + """ + pass + + def process_mask(self, mask: np.ndarray, strength: float, **kwargs) -> np.ndarray: + """Implementation of MaskBase's abstract process_mask method.""" + # This satisfies MaskBase's interface by delegating to the flex system + return self.apply_effect( + masks=torch.from_numpy(mask).unsqueeze(0), # Add batch dimension + strength=strength, + **kwargs + )[0] # Remove batch dimension + + def process_below_threshold(self, mask, **kwargs): + """Default behavior for when feature value is below threshold: return mask unchanged.""" + return mask + + def apply_effect(self, masks, opt_feature=None, strength=1.0, feature_threshold=0.0, + mask_strength=1.0, invert=False, subtract_original=0.0, + grow_with_blur=0.0, feature_param=None, feature_mode="relative", **kwargs): + """Main entry point for the Flex system.""" + if opt_feature is not None: + num_frames = opt_feature.frame_count + else: + # Start with number of input frames + num_frames = masks.shape[0] + # Check all parameters for lists/arrays that might be longer + for value in kwargs.values(): + if isinstance(value, (list, tuple, np.ndarray)): + num_frames = max(num_frames, len(value)) + + original_masks = masks.clone() + + self.start_progress(num_frames, desc=f"Applying {self.__class__.__name__}") + + result = [] + for i in range(num_frames): + mask = masks[i % masks.shape[0]].numpy() + + # Get feature value + feature_value = self.get_feature_value(i, opt_feature) + + # Process parameters using FlexBase functionality + processed_kwargs = self.process_parameters( + frame_index=i, + feature_value=feature_value, + feature_threshold=feature_threshold, + strength=strength, + mask_strength=mask_strength, + subtract_original=subtract_original, + grow_with_blur=grow_with_blur, + feature_param=feature_param, + feature_mode=feature_mode, + **kwargs + ) + + # Determine if effect should be applied based on feature value and threshold + if feature_value is not None and feature_value >= processed_kwargs['feature_threshold']: + processed_mask = self.apply_effect_internal( + mask, + **processed_kwargs + ) + else: + processed_mask = self.process_below_threshold( + mask, + **processed_kwargs + ) + + # Apply mask operations using modulo for original mask indexing + frame_result = self.apply_mask_operation( + processed_mask[np.newaxis, ...], + original_masks[i % masks.shape[0]:i % masks.shape[0]+1], + processed_kwargs['mask_strength'], + invert, + processed_kwargs['subtract_original'], + processed_kwargs['grow_with_blur'], + progress_callback=self.update_progress + ) + result.append(frame_result) + + self.end_progress() + return (torch.cat(result, dim=0),) + def main_function(self, masks, opt_feature=None, strength=1.0, feature_threshold=0.0, + mask_strength=1.0, invert=False, subtract_original=0.0, + grow_with_blur=0.0, **kwargs): + """Implementation of MaskBase's abstract main_function.""" + return self.apply_effect( + masks=masks, + opt_feature=opt_feature, + strength=strength, + feature_threshold=feature_threshold, + mask_strength=mask_strength, + invert=invert, + subtract_original=subtract_original, + grow_with_blur=grow_with_blur, + **kwargs + ) diff --git a/nodes/masks/flex_masks.py b/nodes/masks/flex_masks.py index 676c7e0..286fba7 100644 --- a/nodes/masks/flex_masks.py +++ b/nodes/masks/flex_masks.py @@ -1,18 +1,18 @@ -from .mask_base import FlexMaskBase +from .flex_mask_base import FlexMaskBase from .mask_utils import morph_mask, warp_mask, transform_mask, combine_masks,apply_easing import math import numpy as np from .voronoi_noise import VoronoiNoise #NOTE credit for Voronoi goes to Alan Huang https://github.com/alanhuang67/ from comfy.model_management import get_torch_device import cv2 -from .mask_base import FlexMaskBase from scipy.ndimage import distance_transform_edt -from .mask_base import FlexMaskBase from .shape_utils import create_shape_mask, get_available_shapes import torch from typing import List import torch.nn.functional as F +from ...tooltips import apply_tooltips +@apply_tooltips class FlexMaskMorph(FlexMaskBase): @classmethod def INPUT_TYPES(cls): @@ -26,38 +26,54 @@ def INPUT_TYPES(cls): } } - def process_mask(self, mask: np.ndarray, feature_value: float, strength: float, morph_type: str, max_kernel_size: int, max_iterations: int, **kwargs) -> np.ndarray: - kernel_size = max(3, int(3 + (max_kernel_size - 3) * feature_value * strength)) - iterations = max(1, int(max_iterations * feature_value * strength)) - - return morph_mask(mask, morph_type, kernel_size, iterations) + @classmethod + def get_modifiable_params(cls): + """Return parameters that can be modulated by features""" + return ["max_kernel_size", "max_iterations", "None"] + + def apply_effect_internal(self, mask: np.ndarray, morph_type: str, **kwargs) -> np.ndarray: + # Get values from kwargs - they'll have the same names as defined in INPUT_TYPES + kernel_size = kwargs['max_kernel_size'] + iterations = kwargs['max_iterations'] - def main_function(self, masks, feature, feature_pipe, strength, feature_threshold, invert, subtract_original, grow_with_blur, morph_type, max_kernel_size, max_iterations, **kwargs): - return (self.apply_mask_operation(masks, feature, feature_pipe, strength, feature_threshold, invert, subtract_original, grow_with_blur, - morph_type=morph_type, max_kernel_size=max_kernel_size, max_iterations=max_iterations, **kwargs),) + # Ensure kernel_size is odd and >= 3 + kernel_size = max(3, int(kernel_size)) + if kernel_size % 2 == 0: + kernel_size += 1 + # Ensure iterations is >= 1 + iterations = max(1, int(iterations)) + + return morph_mask(mask, morph_type, kernel_size, iterations) + +@apply_tooltips class FlexMaskWarp(FlexMaskBase): + #TODO: check warp functions for efficacy..... @classmethod def INPUT_TYPES(cls): - return { - **super().INPUT_TYPES(), - "required": { - **super().INPUT_TYPES()["required"], - "warp_type": (["perlin", "radial", "swirl"],), - "frequency": ("FLOAT", {"default": 0.1, "min": 0.01, "max": 1.0, "step": 0.01}), - "max_amplitude": ("FLOAT", {"default": 30.0, "min": 0.1, "max": 500.0, "step": 0.1}), - "octaves": ("INT", {"default": 3, "min": 1, "max": 8, "step": 1}), - } - } + base_inputs = super().INPUT_TYPES() + base_inputs["required"].update({ + "warp_type": (["perlin", "radial", "swirl"],), + "frequency": ("FLOAT", {"default": 0.1, "min": 0.01, "max": 1.0, "step": 0.01}), + "max_amplitude": ("FLOAT", {"default": 30.0, "min": 0.1, "max": 500.0, "step": 0.1}), + "octaves": ("INT", {"default": 3, "min": 1, "max": 8, "step": 1}), + }) + return base_inputs - def process_mask(self, mask: np.ndarray, feature_value: float, strength: float, warp_type: str, frequency: float, max_amplitude: float, octaves: int, **kwargs) -> np.ndarray: - amplitude = max_amplitude * feature_value * strength + @classmethod + def get_modifiable_params(cls): + """Return parameters that can be modulated by features""" + return ["max_amplitude", "frequency", "octaves", "None"] + + def apply_effect_internal(self, mask: np.ndarray, warp_type: str, **kwargs) -> np.ndarray: + # Get values from kwargs - they'll have the same names as defined in INPUT_TYPES + amplitude = kwargs['max_amplitude'] + frequency = kwargs['frequency'] + octaves = kwargs['octaves'] + return warp_mask(mask, warp_type, frequency, amplitude, octaves) - def main_function(self, masks, feature, feature_pipe, strength, feature_threshold, invert, subtract_original, grow_with_blur, warp_type, frequency, max_amplitude, octaves, **kwargs): - return (self.apply_mask_operation(masks, feature, feature_pipe, strength, feature_threshold, invert, subtract_original, grow_with_blur, - warp_type=warp_type, frequency=frequency, max_amplitude=max_amplitude, octaves=octaves, **kwargs),) - +@apply_tooltips class FlexMaskTransform(FlexMaskBase): @classmethod def INPUT_TYPES(cls): @@ -71,15 +87,19 @@ def INPUT_TYPES(cls): } } - def process_mask(self, mask: np.ndarray, feature_value: float, strength: float, transform_type: str, max_x_value: float, max_y_value: float, **kwargs) -> np.ndarray: - x_value = max_x_value * feature_value * strength - y_value = max_y_value * feature_value * strength + @classmethod + def get_modifiable_params(cls): + """Return parameters that can be modulated by features""" + return ["max_x_value", "max_y_value", "None"] + + def apply_effect_internal(self, mask: np.ndarray, transform_type: str, **kwargs) -> np.ndarray: + # Get values from kwargs - they'll have the same names as defined in INPUT_TYPES + x_value = kwargs['max_x_value'] + y_value = kwargs['max_y_value'] + return transform_mask(mask, transform_type, x_value, y_value) - def main_function(self, masks, feature, feature_pipe, strength, feature_threshold, invert, subtract_original, grow_with_blur, transform_type, max_x_value, max_y_value, **kwargs): - return (self.apply_mask_operation(masks, feature, feature_pipe, strength, feature_threshold, invert, subtract_original, grow_with_blur, - transform_type=transform_type, max_x_value=max_x_value, max_y_value=max_y_value, **kwargs),) - +@apply_tooltips class FlexMaskMath(FlexMaskBase): @classmethod def INPUT_TYPES(cls): @@ -89,18 +109,26 @@ def INPUT_TYPES(cls): **super().INPUT_TYPES()["required"], "mask_b": ("MASK",), "combination_method": (["add", "subtract", "multiply", "minimum", "maximum"],), + "max_blend": ("FLOAT", {"default": 1.0, "min": 0.0, "max": 1.0, "step": 0.01}), } } - def process_mask(self, mask: np.ndarray, feature_value: float, strength: float, mask_b: np.ndarray, combination_method: str, **kwargs) -> np.ndarray: + @classmethod + def get_modifiable_params(cls): + """Return parameters that can be modulated by features""" + return ["max_blend", "None"] + + def apply_effect_internal(self, mask: np.ndarray, mask_b: torch.Tensor, combination_method: str, **kwargs) -> np.ndarray: + # Get the frame index and handle mask_b indexing frame_index = kwargs.get('frame_index', 0) mask_b = mask_b[frame_index].numpy() - return combine_masks(mask, mask_b, combination_method, feature_value * strength) + + # Get value from kwargs - it'll have the same name as defined in INPUT_TYPES + blend = kwargs['max_blend'] + + return combine_masks(mask, mask_b, combination_method, blend) - def main_function(self, masks, feature, feature_pipe, strength, feature_threshold, invert, subtract_original, grow_with_blur, mask_b, combination_method, **kwargs): - return (self.apply_mask_operation(masks, feature, feature_pipe, strength, feature_threshold, invert, subtract_original, grow_with_blur, - mask_b=mask_b, combination_method=combination_method, **kwargs),) - +@apply_tooltips class FlexMaskOpacity(FlexMaskBase): @classmethod def INPUT_TYPES(cls): @@ -112,15 +140,18 @@ def INPUT_TYPES(cls): } } - def process_mask(self, mask: np.ndarray, feature_value: float, strength: float, max_opacity: float, **kwargs) -> np.ndarray: - opacity = max_opacity * feature_value * strength + @classmethod + def get_modifiable_params(cls): + """Return parameters that can be modulated by features""" + return ["max_opacity", "None"] + + def apply_effect_internal(self, mask: np.ndarray, **kwargs) -> np.ndarray: + # Get value from kwargs - it'll have the same name as defined in INPUT_TYPES + opacity = kwargs['max_opacity'] + opacity = np.clip(opacity, 0.0, 1.0) # Ensure opacity stays in valid range return mask * opacity - def main_function(self, masks, feature, feature_pipe, strength, feature_threshold, invert, subtract_original, grow_with_blur, max_opacity, **kwargs): - return (self.apply_mask_operation(masks, feature, feature_pipe, strength, feature_threshold, invert, subtract_original, grow_with_blur, - max_opacity=max_opacity, **kwargs),) - -#NOTE credit for the heavy lifting in this class and all of the noise class goes to Alan Huang https://github.com/alanhuang67/ +@apply_tooltips class FlexMaskVoronoiScheduled(FlexMaskBase): formulas = { "Linear": lambda t, a, b: t * a / b, @@ -148,42 +179,37 @@ def INPUT_TYPES(cls): "seed": ("INT", {"default": 0, "min": 0, "max": 0xffffffffffffffff}), "x_offset": ("FLOAT", {"default": 0.0, "min": -1000.0, "max": 1000.0, "step": 0.1}), "y_offset": ("FLOAT", {"default": 0.0, "min": -1000.0, "max": 1000.0, "step": 0.1}), - "feature_param": (["scale", "detail", "randomness", "seed", "x_offset", "y_offset"],), + "feature_param": (["None", "scale", "detail", "randomness", "seed", "x_offset", "y_offset"],), "formula": (list(cls.formulas.keys()),), "a": ("FLOAT", {"default": 1.0, "min": 0.1, "max": 10.0, "step": 0.1}), "b": ("FLOAT", {"default": 1.0, "min": 0.1, "max": 10.0, "step": 0.1}), } } + @classmethod + def get_modifiable_params(cls): + """Return parameters that can be modulated by features""" + return ["scale", "detail", "randomness", "seed", "x_offset", "y_offset", "None"] + def generate_schedule(self, formula, feature_value, a, b): t = feature_value return self.formulas[formula](t, a, b) - def process_mask(self, mask: np.ndarray, feature_value: float, strength: float, - distance_metric: str, scale: float, detail: int, randomness: float, - seed: int, x_offset: float, y_offset: float, feature_param: str, - formula: str, a: float, b: float, **kwargs) -> np.ndarray: - + def apply_effect_internal(self, mask: np.ndarray, distance_metric: str, formula: str, a: float, b: float, feature_value: float, **kwargs) -> np.ndarray: height, width = mask.shape[:2] - # Generate schedule value + # Generate schedule value for modulation schedule_value = self.generate_schedule(formula, feature_value, a, b) - # Adjust the controlled parameter based on the schedule value and strength - if feature_param == "scale": - scale *= (1 + schedule_value * strength) - elif feature_param == "detail": - detail = int(detail * (1 + schedule_value * strength)) - elif feature_param == "randomness": - randomness *= (1 + schedule_value * strength) - elif feature_param == "seed": - seed = int(seed + (schedule_value * strength * 1000000)) - elif feature_param == "x_offset": - x_offset += width * schedule_value * strength - elif feature_param == "y_offset": - y_offset += height * schedule_value * strength - - # Create VoronoiNoise instance + # Get the pre-processed values from kwargs + scale = kwargs['scale'] + detail = max(10, int(kwargs['detail'])) # Ensure detail is at least 10 and an integer + randomness = max(0.0, kwargs['randomness']) # Ensure randomness is non-negative + seed = int(kwargs['seed']) + x_offset = kwargs['x_offset'] + y_offset = kwargs['y_offset'] + + # Create VoronoiNoise instance with parameters voronoi = VoronoiNoise( width=width, height=height, @@ -200,24 +226,11 @@ def process_mask(self, mask: np.ndarray, feature_value: float, strength: float, # Generate Voronoi noise voronoi_tensor = voronoi() - - # Convert to numpy array and extract the first channel (they're all the same) voronoi_mask = voronoi_tensor[0, :, :, 0].cpu().numpy() return voronoi_mask - def main_function(self, masks, feature, feature_pipe, strength, feature_threshold, - invert, subtract_original, grow_with_blur, distance_metric, - scale, detail, randomness, seed, x_offset, y_offset, - feature_param, formula, a, b, **kwargs): - return (self.apply_mask_operation(masks, feature, feature_pipe, strength, - feature_threshold, invert, subtract_original, - grow_with_blur, distance_metric=distance_metric, - scale=scale, detail=detail, randomness=randomness, - seed=seed, x_offset=x_offset, y_offset=y_offset, - feature_param=feature_param, - formula=formula, a=a, b=b, **kwargs),) - +@apply_tooltips class FlexMaskBinary(FlexMaskBase): @classmethod def INPUT_TYPES(cls): @@ -226,94 +239,23 @@ def INPUT_TYPES(cls): "required": { **super().INPUT_TYPES()["required"], "threshold": ("FLOAT", {"default": 0.5, "min": 0.0, "max": 1.0, "step": 0.01}), - "method": (["simple", "adaptive", "hysteresis", "edge"],), - "max_smoothing": ("INT", {"default": 21, "min": 0, "max": 51, "step": 2}), - "max_edge_enhancement": ("FLOAT", {"default": 2.0, "min": 0.0, "max": 10.0, "step": 0.1}), - "feature_param": (["threshold", "none", "smoothing", "edge_enhancement"],), - "use_epsilon": ("BOOLEAN", {"default": False}), } } - def process_mask(self, mask: np.ndarray, feature_value: float, strength: float, threshold: float, - method: str, max_smoothing: int, max_edge_enhancement: float, - feature_param: str, use_epsilon: bool, **kwargs) -> np.ndarray: - mask = mask.astype(np.float32) - mask = np.clip(mask, 0, 1) - - # Apply smoothing - if feature_param == "smoothing": - smoothing = int(max_smoothing * feature_value * strength) - else: - smoothing = int(max_smoothing * 0.5) - - if smoothing > 0: - mask = cv2.GaussianBlur(mask, (smoothing * 2 + 1, smoothing * 2 + 1), 0) - - # Apply edge enhancement - if feature_param == "edge_enhancement": - edge_enhancement = max_edge_enhancement * feature_value * strength - else: - edge_enhancement = max_edge_enhancement * 0.5 - - if edge_enhancement > 0: - laplacian = cv2.Laplacian(mask, cv2.CV_32F, ksize=3) - mask = np.clip(mask + edge_enhancement * laplacian, 0, 1) + @classmethod + def get_modifiable_params(cls): + return ["threshold", "None"] - # Adjust threshold - if feature_param == "threshold": - adjusted_threshold = threshold + (feature_value - 0.5) * strength * 0.5 - else: - adjusted_threshold = threshold - adjusted_threshold = max(0.0, min(1.0, adjusted_threshold)) - - if method == "simple": - if use_epsilon: - epsilon = 1e-7 # Small value to avoid exact comparisons - binary_mask = ((mask > adjusted_threshold + epsilon) | - (abs(mask - adjusted_threshold) < epsilon)).astype(np.float32) - else: - binary_mask = (mask > adjusted_threshold).astype(np.float32) - elif method == "adaptive": - mask_uint8 = (mask * 255).astype(np.uint8) - binary_mask = cv2.adaptiveThreshold( - mask_uint8, - 1, - cv2.ADAPTIVE_THRESH_GAUSSIAN_C, - cv2.THRESH_BINARY, - 11, # block size - 2 # C constant - ).astype(np.float32) - elif method == "hysteresis": - low_threshold = max(0, adjusted_threshold - 0.1) - high_threshold = min(1, adjusted_threshold + 0.1) - low_mask = mask > low_threshold - high_mask = mask > high_threshold - binary_mask = cv2.connectedComponents((high_mask * 255).astype(np.uint8))[1] - binary_mask = ((binary_mask > 0) & low_mask).astype(np.float32) - elif method == "edge": - mask_uint8 = (mask * 255).astype(np.uint8) - edges = cv2.Canny(mask_uint8, - int(adjusted_threshold * 255 * 0.5), - int(adjusted_threshold * 255 * 1.5)) - binary_mask = edges.astype(np.float32) / 255.0 - - return binary_mask - - def main_function(self, masks, feature, feature_pipe, strength, feature_threshold, invert, - subtract_original, grow_with_blur, threshold, method, max_smoothing, - max_edge_enhancement, feature_param, use_epsilon, **kwargs): - return (self.apply_mask_operation(masks, feature, feature_pipe, strength, feature_threshold, - invert, subtract_original, grow_with_blur, - threshold=threshold, method=method, - max_smoothing=max_smoothing, - max_edge_enhancement=max_edge_enhancement, - feature_param=feature_param, - use_epsilon=use_epsilon, **kwargs),) + def apply_effect_internal(self, mask: np.ndarray, **kwargs) -> np.ndarray: + # Get the pre-processed threshold value from kwargs + threshold = kwargs['threshold'] + return (mask > threshold).astype(np.float32) +#TODO: stateful node: make reset of state consistent, make state update pattern consistent, consistant state initialization in init +@apply_tooltips class FlexMaskWavePropagation(FlexMaskBase): @classmethod def INPUT_TYPES(cls): - cls.feature_threshold_default = 0.25 return { **super().INPUT_TYPES(), "required": { @@ -326,155 +268,172 @@ def INPUT_TYPES(cls): } } + @classmethod + def get_modifiable_params(cls): + """Return parameters that can be modulated by features""" + return ["wave_speed", "wave_amplitude", "wave_decay", "wave_frequency", "max_wave_field", "None"] + + def __init__(self): super().__init__() self.wave_field = None self.frame_count = 0 - def process_mask_below_threshold(self, mask, feature_value, strength, **kwargs): + def process_below_threshold(self, mask, feature_value, strength, **kwargs): + """Reset wave field when below threshold""" self.wave_field = None self.frame_count = 0 return mask - def process_mask(self, mask: np.ndarray, feature_value: float, strength: float, - wave_speed: float, wave_amplitude: float, wave_decay: float, - wave_frequency: float, max_wave_field: float, **kwargs) -> np.ndarray: - height, width = mask.shape - + def apply_effect_internal(self, mask: np.ndarray, **kwargs) -> np.ndarray: + # Get pre-processed values from kwargs + max_wave_field = kwargs['max_wave_field'] + wave_speed = kwargs['wave_speed'] + wave_amplitude = kwargs['wave_amplitude'] + wave_decay = kwargs['wave_decay'] + wave_frequency = kwargs['wave_frequency'] + + + # Initialize wave field if needed if self.wave_field is None: - self.wave_field = np.zeros((height, width), dtype=np.float32) - - # Find mask boundary - kernel = np.ones((3,3), np.uint8) - boundary = cv2.dilate(mask.astype(np.uint8), kernel, iterations=1) - mask.astype(np.uint8) - - # Reset wave field where the mask is not present - self.wave_field[mask == 0] *= wave_decay - - # Emit wave from boundary and propagate - self.wave_field += boundary * feature_value * wave_amplitude - self.wave_field = cv2.GaussianBlur(self.wave_field, (0, 0), sigmaX=wave_speed) - - # Apply decay - self.wave_field *= wave_decay - - # Normalize wave field if it exceeds max_wave_field - max_value = np.max(np.abs(self.wave_field)) - if max_value > max_wave_field: - self.wave_field *= (max_wave_field / max_value) - - time_factor = self.frame_count * wave_frequency - wave_pattern = np.sin(self.wave_field + time_factor) * 0.5 + 0.5 - - # Combine with original mask - result_mask = np.clip(mask + wave_pattern * strength, 0, 1) - - # Print debug information - print(f"Frame: {self.frame_count}") - print(f"Wave field min/max: {self.wave_field.min():.4f} / {self.wave_field.max():.4f}") - print(f"Wave pattern min/max: {wave_pattern.min():.4f} / {wave_pattern.max():.4f}") - print(f"Result mask min/max: {result_mask.min():.4f} / {result_mask.max():.4f}") - print("---") - + self.wave_field = np.zeros_like(mask) + self.frame_count = 0 + + # Update wave field + dt = 1.0 / 30.0 # Assuming 30 fps self.frame_count += 1 - - return result_mask.astype(np.float32) - def main_function(self, masks, feature, feature_pipe, strength, feature_threshold, - invert, subtract_original, grow_with_blur, **kwargs): - # Reset wave_field and frame_count for each new feature input - self.wave_field = None - self.frame_count = 0 - return (self.apply_mask_operation(masks, feature, feature_pipe, strength, - feature_threshold, invert, subtract_original, - grow_with_blur, **kwargs),) + # Create wave sources from mask + wave_sources = np.where(mask > 0.5) + for y, x in zip(*wave_sources): + source_amplitude = wave_amplitude * np.sin(2 * np.pi * wave_frequency * self.frame_count * dt) + self.wave_field[y, x] = source_amplitude + + # Propagate waves + new_field = np.zeros_like(self.wave_field) + for y in range(1, self.wave_field.shape[0] - 1): + for x in range(1, self.wave_field.shape[1] - 1): + # Simple wave equation discretization + laplacian = (self.wave_field[y+1, x] + self.wave_field[y-1, x] + + self.wave_field[y, x+1] + self.wave_field[y, x-1] - + 4 * self.wave_field[y, x]) + new_field[y, x] = self.wave_field[y, x] + wave_speed * dt * laplacian + # Apply decay + new_field *= np.exp(-wave_decay * dt) + + # Update wave field + self.wave_field = new_field + + # Normalize and clip + result = np.clip(self.wave_field / max_wave_field + mask, 0, 1) + return result.astype(np.float32) + +#TODO: stateful node: make reset of state consistent, make state update pattern consistent, consistant state initialization in init +#TODO: FIX THIS #IMPORTANT +@apply_tooltips class FlexMaskEmanatingRings(FlexMaskBase): @classmethod def INPUT_TYPES(cls): - cls.feature_threshold_default = 0.25 return { **super().INPUT_TYPES(), "required": { **super().INPUT_TYPES()["required"], - "num_rings": ("INT", {"default": 4, "min": 1, "max": 50, "step": 1}), - "max_ring_width": ("FLOAT", {"default": 0.5, "min": 0.01, "max": 0.9, "step": 0.01}), - "wave_speed": ("FLOAT", {"default": 0.05, "min": 0.01, "max": 0.5, "step": 0.01}), - "feature_param": (["num_rings", "ring_width", "wave_speed", "all"],), + "ring_speed": ("FLOAT", {"default": 0.05, "min": 0.01, "max": 0.2, "step": 0.01}), + "ring_width": ("FLOAT", {"default": 0.2, "min": 0.01, "max": 0.5, "step": 0.01}), + "ring_falloff": ("FLOAT", {"default": 0.5, "min": 0.0, "max": 1.0, "step": 0.01}), + "binary_mode": ("BOOLEAN", {"default": False}), } } + @classmethod + def get_modifiable_params(cls): + return ["ring_speed", "ring_width", "ring_falloff", "None"] + + def __init__(self): super().__init__() self.rings = [] + # Cache the distance transform result + self.last_mask = None + self.cached_distance = None + self.cached_max_distance = None + + def process_below_threshold(self, mask: np.ndarray, **kwargs) -> np.ndarray: + kwargs['feature_value'] = 0 + return self.apply_effect_internal(mask, **kwargs) + + def apply_effect_internal(self, mask: np.ndarray, **kwargs) -> np.ndarray: + # Get processed parameters + ring_speed = kwargs['ring_speed'] + ring_width = kwargs['ring_width'] + ring_falloff = kwargs['ring_falloff'] + feature_value = kwargs.get('feature_value', 0) + binary_mode = kwargs.get('binary_mode', False) + + # Use cached distance transform if mask hasn't changed + if self.last_mask is None or not np.array_equal(mask, self.last_mask): + distance = distance_transform_edt(1 - mask) + max_distance = np.max(distance) + if max_distance > 0: + normalized_distance = distance / max_distance + else: + normalized_distance = distance + # Cache results + self.last_mask = mask.copy() + self.cached_distance = normalized_distance + self.cached_max_distance = max_distance + else: + normalized_distance = self.cached_distance + max_distance = self.cached_max_distance - def process_mask(self, mask: np.ndarray, feature_value: float, strength: float, - num_rings: int, max_ring_width: float, wave_speed: float, - feature_param: str, **kwargs) -> np.ndarray: - height, width = mask.shape - distance = distance_transform_edt(1 - mask) - max_distance = np.max(distance) - normalized_distance = distance / max_distance - - # Update existing rings - new_rings = [] - for ring in self.rings: - ring['progress'] += ring['wave_speed'] - if ring['progress'] < 1: - new_rings.append(ring) - self.rings = new_rings + if max_distance == 0: + return mask.copy() - # Create new rings if feature_value > 0 + # Only spawn new ring if feature_value is non-zero if feature_value > 0: - if feature_param in ["num_rings", "all"]: - adjusted_num_rings = max(1, int(num_rings * feature_value * strength)) - else: - adjusted_num_rings = num_rings + self.rings.append({ + 'progress': 0.0, + 'speed': ring_speed, + 'width': ring_width, + 'intensity': feature_value, + 'birth_time': kwargs.get('frame_index', 0) + }) + + # Always start with the original mask + result = mask.copy() + new_rings = [] - if feature_param in ["ring_width", "all"]: - adjusted_max_ring_width = max_ring_width * feature_value * strength - else: - adjusted_max_ring_width = max_ring_width + # Process all rings at once using vectorized operations + if binary_mode: + # Binary mode - sharp rings without falloff + for ring in self.rings: + ring['progress'] += ring['speed'] + if ring['progress'] < 1.0: + # Create sharp ring boundaries + ring_outer = normalized_distance < ring['progress'] + ring_inner = normalized_distance < (ring['progress'] - ring['width']) + ring_mask = np.logical_xor(ring_outer, ring_inner) + result = np.logical_or(result, ring_mask) + new_rings.append(ring) + else: + # Smooth mode - with falloff + for ring in self.rings: + ring['progress'] += ring['speed'] + if ring['progress'] < 1.0: + # Vectorized ring calculation + ring_center = normalized_distance - ring['progress'] + ring_mask = np.exp(-np.square(ring_center/ring['width']) * 4) + fade = np.power(1.0 - ring['progress'], ring_falloff * 3) + ring_mask *= fade * ring['intensity'] + result = np.maximum(result, ring_mask) + new_rings.append(ring) - if feature_param in ["wave_speed", "all"]: - adjusted_wave_speed = wave_speed * feature_value * strength - else: - adjusted_wave_speed = wave_speed - - for i in range(adjusted_num_rings): - self.rings.append({ - 'progress': i / adjusted_num_rings, - 'ring_width': adjusted_max_ring_width, - 'wave_speed': adjusted_wave_speed - }) - - # Create emanating rings - rings = np.zeros_like(mask) - for ring in self.rings: - ring_progress = ring['progress'] % 1 - ring_width = ring['ring_width'] * (1 - ring_progress) # Rings get thinner as they move out - ring_outer = normalized_distance < ring_progress - ring_inner = normalized_distance < (ring_progress - ring_width) - rings = np.logical_or(rings, np.logical_xor(ring_outer, ring_inner)) - - # Combine with original mask - result = np.logical_or(mask, rings).astype(np.float32) - - return result - - def process_mask_below_threshold(self, mask: np.ndarray, feature_value: float, strength: float, **kwargs) -> np.ndarray: - # Continue the animation but don't create new rings - return self.process_mask(mask, 0, strength, **kwargs) - - def main_function(self, masks, feature, feature_pipe, strength, feature_threshold, - invert, subtract_original, grow_with_blur, num_rings, - max_ring_width, wave_speed, feature_param, **kwargs): - return (self.apply_mask_operation(masks, feature, feature_pipe, strength, - feature_threshold, invert, subtract_original, - grow_with_blur, num_rings=num_rings, - max_ring_width=max_ring_width, wave_speed=wave_speed, - feature_param=feature_param, **kwargs),) + self.rings = new_rings + return (result > 0.5 if binary_mode else result).astype(np.float32) +#TODO: stateful node: make reset of state consistent, make state update pattern consistent, consistant state initialization in init +@apply_tooltips class FlexMaskRandomShapes(FlexMaskBase): @classmethod def INPUT_TYPES(cls): @@ -490,63 +449,52 @@ def INPUT_TYPES(cls): "appearance_method": (["grow", "pop", "fade"],), "easing_function": (["linear","ease_in_out", "bounce","elastic"],), "shape_type": (get_available_shapes(),), - "feature_param": (["num_shapes", "shape_size", "appearance_duration", "disappearance_duration"],), + "feature_param": (["None", "max_num_shapes", "max_shape_size", "appearance_duration", "disappearance_duration"],), } } + @classmethod + def get_modifiable_params(cls): + """Return parameters that can be modulated by features""" + return ["max_num_shapes", "max_shape_size", "appearance_duration", "disappearance_duration", "None"] + def __init__(self): super().__init__() self.shapes = [] self.frame_count = 0 - def process_mask(self, mask: np.ndarray, feature_value: float, strength: float, - max_num_shapes: int, max_shape_size: float, appearance_duration: int, - disappearance_duration: int, appearance_method: str, easing_function: str, - shape_type: str, feature_param: str, **kwargs) -> np.ndarray: + def apply_effect_internal(self, mask: np.ndarray, appearance_method: str, easing_function: str, shape_type: str, **kwargs) -> np.ndarray: height, width = mask.shape result_mask = mask.copy() - # Adjust parameters based on feature_value and feature_param - if feature_param == "num_shapes": - num_shapes = max(1, int(max_num_shapes * feature_value * strength)) - else: - num_shapes = max_num_shapes - - if feature_param == "shape_size": - shape_size = max_shape_size * feature_value * strength - else: - shape_size = max_shape_size - - if feature_param == "appearance_duration": - app_duration = max(1, int(appearance_duration * feature_value * strength)) - else: - app_duration = appearance_duration - - if feature_param == "disappearance_duration": - disapp_duration = max(1, int(disappearance_duration * feature_value * strength)) - else: - disapp_duration = disappearance_duration + # Get pre-processed values from kwargs + num_shapes = max(1, int(kwargs['max_num_shapes'])) + shape_size = kwargs['max_shape_size'] + app_duration = max(1, int(kwargs['appearance_duration'])) + disapp_duration = max(1, int(kwargs['disappearance_duration'])) # Remove completed shapes self.shapes = [shape for shape in self.shapes if shape['frame'] < shape['total_frames']] - # Add new shapes if needed - while len(self.shapes) < num_shapes: - center = (np.random.randint(0, width), np.random.randint(0, height)) - if shape_type == "random": - selected_shape = np.random.choice(get_available_shapes()) - else: - selected_shape = shape_type - new_shape = { - 'center': center, - 'size': int(min(height, width) * shape_size), - 'type': selected_shape, - 'frame': 0, - 'total_frames': app_duration + disapp_duration, - 'app_duration': app_duration, - 'disapp_duration': disapp_duration, - } - self.shapes.append(new_shape) + # Add new shapes if needed (when feature_value > 0 or feature_param is None) + feature_value = kwargs.get('feature_value', 0) + if feature_value > 0 or kwargs.get('feature_param') == "None": + while len(self.shapes) < num_shapes: + center = (np.random.randint(0, width), np.random.randint(0, height)) + if shape_type == "random": + selected_shape = np.random.choice(get_available_shapes()) + else: + selected_shape = shape_type + new_shape = { + 'center': center, + 'size': int(min(height, width) * shape_size), + 'type': selected_shape, + 'frame': 0, + 'total_frames': app_duration + disapp_duration, + 'app_duration': app_duration, + 'disapp_duration': disapp_duration, + } + self.shapes.append(new_shape) # Update and draw shapes for shape in self.shapes: @@ -577,25 +525,16 @@ def process_mask(self, mask: np.ndarray, feature_value: float, strength: float, self.frame_count += 1 return result_mask - def main_function(self, masks, feature, feature_pipe, strength, feature_threshold, - invert, subtract_original, grow_with_blur, max_num_shapes, - max_shape_size, appearance_duration, disappearance_duration, - appearance_method, easing_function, shape_type, feature_param, **kwargs): - - self.shapes=[] - self.frame_count=0 - return (self.apply_mask_operation(masks, feature, feature_pipe, strength, - feature_threshold, invert, subtract_original, - grow_with_blur, max_num_shapes=max_num_shapes, - max_shape_size=max_shape_size, - appearance_duration=appearance_duration, - disappearance_duration=disappearance_duration, - appearance_method=appearance_method, - easing_function=easing_function, - shape_type=shape_type, - feature_param=feature_param, **kwargs),) - +@apply_tooltips class FlexMaskDepthChamber(FlexMaskBase): + """ + This class is a special case that handles its own parameter modulation instead of using the base class's modulation system. + This is intentional because: + 1. It uses paired parameters (z_front/z_back) that define a range and must be modulated together + 2. The feature_modes (squeeze, expand, move_forward, move_back) operate on both values in coordinated ways + 3. The relationship between parameters must be maintained (e.g., ensuring proper depth range) + 4. Moving this logic to the base class would add complexity without clear benefits + """ @classmethod def INPUT_TYPES(cls): return { @@ -605,47 +544,60 @@ def INPUT_TYPES(cls): "depth_map": ("IMAGE",), "z_front": ("FLOAT", {"default": 1.0, "min": 0.0, "max": 1.0, "step": 0.01}), "z_back": ("FLOAT", {"default": 0.0, "min": 0.0, "max": 1.0, "step": 0.01}), - "feature_param": (["none", "z_front", "z_back", "both"],), + # "feature_param": (["none", "z_front", "z_back", "both"],), "feature_mode": (["squeeze", "expand", "move_forward", "move_back"],), } } - def process_mask(self, mask: np.ndarray, feature_value: float, strength: float, - depth_map: torch.Tensor, z_front: float, z_back: float, feature_param: str, - feature_mode: str, **kwargs) -> np.ndarray: + @classmethod + def get_modifiable_params(cls): + """Return parameters that can be modulated by features""" + return ["z_front", "z_back", "both", "None"] + + def apply_effect_internal(self, mask: np.ndarray, depth_map: torch.Tensor, feature_mode: str, z_front: float, z_back: float, **kwargs) -> np.ndarray: frame_index = kwargs.get('frame_index', 0) depth_map_frame = depth_map[frame_index].cpu().numpy() - depth_map_frame = depth_map_frame[:, :, 0] - # Adjust z_front and z_back based on feature_mode and feature_param - if feature_param != "none": - if feature_mode == "squeeze": - if feature_param in ["z_front", "both"]: - z_front = z_front - (z_front - z_back) * strength * feature_value / 2 if z_front > z_back else z_front + (z_back - z_front) * strength * feature_value / 2 - if feature_param in ["z_back", "both"]: - z_back = z_back + (z_front - z_back) * strength * feature_value / 2 if z_back < z_front else z_back - (z_back - z_front) * strength * feature_value / 2 - elif feature_mode == "expand": - if feature_param in ["z_front", "both"]: - z_front = min(1.0, z_front + (z_front - z_back) * strength * feature_value / 2) if z_front > z_back else max(0.0, z_front - (z_back - z_front) * strength * feature_value / 2) - if feature_param in ["z_back", "both"]: - z_back = max(0.0, z_back - (z_front - z_back) * strength * feature_value / 2) if z_back < z_front else min(1.0, z_back + (z_back - z_front) * strength * feature_value / 2) - elif feature_mode == "move_forward": - if feature_param in ["z_front", "both"]: - z_front = min(1.0, z_front + strength * feature_value) - if feature_param in ["z_back", "both"]: - z_back = min(1.0, z_back + strength * feature_value) - elif feature_mode == "move_back": - if feature_param in ["z_front", "both"]: - z_front = max(0.0, z_front - strength * feature_value) - if feature_param in ["z_back", "both"]: - z_back = max(0.0, z_back - strength * feature_value) + #initialize values + z_front_val = z_front + z_back_val = z_back + + + feature_value = kwargs.get('feature_value', 0) + strength = kwargs.get('strength', 1.0) + feature_param = kwargs.get('feature_param', 'None') + # Apply modulation based on feature_mode and feature_param + if feature_mode == "squeeze": + if feature_param in ["z_front", "both"]: + z_front_val = z_front - (z_front - z_back) * strength * feature_value / 2 if z_front > z_back else z_front + (z_back - z_front) * strength * feature_value / 2 + if feature_param in ["z_back", "both"]: + z_back_val = z_back + (z_front - z_back) * strength * feature_value / 2 if z_back < z_front else z_back - (z_back - z_front) * strength * feature_value / 2 + elif feature_mode == "expand": + if feature_param in ["z_front", "both"]: + z_front_val = min(1.0, z_front + (z_front - z_back) * strength * feature_value / 2) if z_front > z_back else max(0.0, z_front - (z_back - z_front) * strength * feature_value / 2) + if feature_param in ["z_back", "both"]: + z_back_val = max(0.0, z_back - (z_front - z_back) * strength * feature_value / 2) if z_back < z_front else min(1.0, z_back + (z_back - z_front) * strength * feature_value / 2) + elif feature_mode == "move_forward": + if feature_param in ["z_front", "both"]: + z_front_val = min(1.0, z_front + strength * feature_value) + if feature_param in ["z_back", "both"]: + z_back_val = min(1.0, z_back + strength * feature_value) + elif feature_mode == "move_back": + if feature_param in ["z_front", "both"]: + z_front_val = max(0.0, z_front - strength * feature_value) + if feature_param in ["z_back", "both"]: + z_back_val = max(0.0, z_back - strength * feature_value) + else: + z_front_val = z_front + z_back_val = z_back # Create the depth mask - if z_back < z_front: - depth_mask = (depth_map_frame >= z_back) & (depth_map_frame <= z_front) + if z_back_val < z_front_val: + depth_mask = (depth_map_frame >= z_back_val) & (depth_map_frame <= z_front_val) + else: - depth_mask = (depth_map_frame >= z_back) | (depth_map_frame <= z_front) + depth_mask = (depth_map_frame >= z_back_val) | (depth_map_frame <= z_front_val) depth_mask_resized = cv2.resize(depth_mask.astype(np.float32), (mask.shape[1], mask.shape[0])) @@ -654,16 +606,17 @@ def process_mask(self, mask: np.ndarray, feature_value: float, strength: float, return combined_mask - def main_function(self, masks, feature, feature_pipe, strength, feature_threshold, - invert, subtract_original, grow_with_blur, depth_map, z_front, z_back, - feature_param, feature_mode, **kwargs): - return (self.apply_mask_operation(masks, feature, feature_pipe, strength, - feature_threshold, invert, subtract_original, - grow_with_blur, depth_map=depth_map, z_front=z_front, z_back=z_back, - feature_param=feature_param, feature_mode=feature_mode, - **kwargs),) - +@apply_tooltips class FlexMaskDepthChamberRelative(FlexMaskBase): + """ + This class is a special case that handles its own parameter modulation instead of using the base class's modulation system. + This is intentional because: + 1. It uses paired parameters (z1/z2) that define boundaries and must be modulated together + 2. The feature_modes (squeeze, expand) operate on both values in coordinated ways + 3. Both values must be scaled relative to ROI size, adding another layer of complexity + 4. The relationship between parameters must be maintained (e.g., proper ordering of z1/z2) + 5. Moving this logic to the base class would add complexity without clear benefits + """ @classmethod def INPUT_TYPES(cls): return { @@ -673,11 +626,16 @@ def INPUT_TYPES(cls): "depth_map": ("IMAGE",), "z1": ("FLOAT", {"default": 0.5, "min": 0.0, "max": 1.0, "step": 0.01}), "z2": ("FLOAT", {"default": 0.5, "min": 0.0, "max": 1.0, "step": 0.01}), - "feature_param": (["none", "z1", "z2", "both"],), + "feature_param": (["None", "z1", "z2", "both"],), "feature_mode": (["squeeze", "expand"],), } } + @classmethod + def get_modifiable_params(cls): + """Return parameters that can be modulated by features""" + return ["z1", "z2", "both", "None"] + def calculate_roi_size(self, mask: torch.Tensor) -> float: # Calculate the bounding box of the mask y_indices, x_indices = torch.where(mask > 0) @@ -690,57 +648,59 @@ def calculate_roi_size(self, mask: torch.Tensor) -> float: def calculate_reference_size(self, masks: List[torch.Tensor]) -> float: # Calculate the mean or median size of the ROI across all frames sizes = [self.calculate_roi_size(mask) for mask in masks] - return torch.median(torch.tensor(sizes)).item() # or torch.mean(torch.tensor(sizes)).item() + return torch.median(torch.tensor(sizes)).item() - def process_mask(self, mask: torch.Tensor, feature_value: float, strength: float, - depth_map: torch.Tensor, z1: float, z2: float, feature_param: str, - feature_mode: str, reference_size: float, **kwargs) -> torch.Tensor: + def apply_effect_internal(self, mask: torch.Tensor, depth_map: torch.Tensor, z1: float, z2: float, **kwargs) -> torch.Tensor: frame_index = kwargs.get('frame_index', 0) depth_map_frame = depth_map[frame_index, :, :, 0] + # Get feature parameters from kwargs + feature_value = kwargs.get('feature_value', 0) + strength = kwargs.get('strength', 1.0) + feature_param = kwargs.get('feature_param', 'None') + feature_mode = kwargs.get('feature_mode', 'squeeze') + # Calculate the ROI size for the current frame roi_size = self.calculate_roi_size(mask) + reference_size = kwargs.get('reference_size', roi_size) # Use current frame as reference if not provided - if feature_param == "z1": - z1 = z1 * (roi_size / reference_size) - elif feature_param == "z2": - z2 = z2 * (roi_size / reference_size) - elif feature_param == "both": - z1 = z1 * (roi_size / reference_size) - z2 = z2 * (roi_size / reference_size) + # If feature_param is None, use direct values without modulation + if feature_param == "None": + z1_val = z1 + z2_val = z2 + else: + # Apply modulation based on feature_param + if feature_param in ["z1", "both"]: + z1_val = self.modulate_param("z1", z1, feature_value, strength, feature_mode) + z1_val = z1_val * (roi_size / reference_size) + else: + z1_val = z1 * (roi_size / reference_size) + + if feature_param in ["z2", "both"]: + z2_val = self.modulate_param("z2", z2, feature_value, strength, feature_mode) + z2_val = z2_val * (roi_size / reference_size) + else: + z2_val = z2 * (roi_size / reference_size) # Ensure z1 is less than z2 - z1, z2 = min(z1, z2), max(z1, z2) + z1_val, z2_val = min(z1_val, z2_val), max(z1_val, z2_val) + # Apply depth masking based on feature_mode if feature_mode == "squeeze": - depth_mask = (depth_map_frame >= z1) & (depth_map_frame <= z2) + depth_mask = (depth_map_frame >= z1_val) & (depth_map_frame <= z2_val) elif feature_mode == "expand": - depth_mask = (depth_map_frame < z1) | (depth_map_frame > z2) - - depth_mask_resized = F.interpolate(depth_mask.unsqueeze(0).unsqueeze(0).float(), size=mask.shape[-2:], mode='nearest').squeeze(0).squeeze(0) + depth_mask = (depth_map_frame < z1_val) | (depth_map_frame > z2_val) + # Resize and combine with input mask + depth_mask_resized = F.interpolate(depth_mask.unsqueeze(0).unsqueeze(0).float(), + size=mask.shape[-2:], + mode='nearest').squeeze(0).squeeze(0) output_mask = mask.float() * depth_mask_resized return output_mask - def main_function(self, masks, feature, feature_pipe, strength, feature_threshold, - invert, subtract_original, grow_with_blur, depth_map, z1, z2, - feature_param, feature_mode, **kwargs): - reference_size = self.calculate_reference_size(masks) - - output_masks = [] - for frame_index, mask in enumerate(masks): - output_mask = self.process_mask(mask, feature_value=1.0, strength=1.0, - depth_map=depth_map, z1=z1, z2=z2, - feature_param=feature_param, feature_mode=feature_mode, - reference_size=reference_size, frame_index=frame_index) - output_masks.append(output_mask) - - # Stack the list of tensors into a single tensor - output_masks_tensor = torch.stack(output_masks) - - return (output_masks_tensor,) - +@apply_tooltips +#TODO: delete this or merge with Math, or make unique class FlexMaskInterpolate(FlexMaskBase): @classmethod def INPUT_TYPES(cls): @@ -754,14 +714,19 @@ def INPUT_TYPES(cls): "cubic", "sigmoid", "radial", "distance_transform", "random_noise" ],), + "max_blend": ("FLOAT", {"default": 1.0, "min": 0.0, "max": 1.0, "step": 0.01}), "invert_mask_b": ("BOOLEAN", {"default": False}), "blend_mode": (["normal", "add", "multiply", "overlay", "soft_light"],), } } - def process_mask(self, mask: np.ndarray, feature_value: float, strength: float, - mask_b: torch.Tensor, interpolation_method: str, invert_mask_b: bool, - blend_mode: str, **kwargs) -> np.ndarray: + @classmethod + def get_modifiable_params(cls): + """Return parameters that can be modulated by features""" + return ["max_blend", "None"] + + def apply_effect_internal(self, mask: np.ndarray, mask_b: torch.Tensor, interpolation_method: str, + invert_mask_b: bool, blend_mode: str, **kwargs) -> np.ndarray: frame_index = kwargs.get('frame_index', 0) mask_b_frame = mask_b[frame_index].numpy() @@ -772,39 +737,39 @@ def process_mask(self, mask: np.ndarray, feature_value: float, strength: float, if mask.shape != mask_b_frame.shape: mask_b_frame = cv2.resize(mask_b_frame, (mask.shape[1], mask.shape[0]), interpolation=cv2.INTER_LINEAR) - # Compute interpolation alpha based on feature_value and strength - alpha = np.clip(feature_value * strength, 0.0, 1.0) + # Get pre-processed blend value from kwargs + blend = kwargs['max_blend'] # Apply interpolation method to compute weight if interpolation_method == "linear": - weight = alpha + weight = blend elif interpolation_method == "ease_in": - weight = alpha ** 2 + weight = blend ** 2 elif interpolation_method == "ease_out": - weight = 1 - (1 - alpha) ** 2 + weight = 1 - (1 - blend) ** 2 elif interpolation_method == "ease_in_out": - weight = alpha ** 2 / (alpha ** 2 + (1 - alpha) ** 2 + 1e-6) + weight = blend ** 2 / (blend ** 2 + (1 - blend) ** 2 + 1e-6) elif interpolation_method == "cubic": - weight = 3 * alpha ** 2 - 2 * alpha ** 3 + weight = 3 * blend ** 2 - 2 * blend ** 3 elif interpolation_method == "sigmoid": - weight = 1 / (1 + np.exp(-12 * (alpha - 0.5))) + weight = 1 / (1 + np.exp(-12 * (blend - 0.5))) elif interpolation_method == "radial": # Create a radial gradient centered in the mask height, width = mask.shape X, Y = np.meshgrid(np.linspace(-1, 1, width), np.linspace(-1, 1, height)) distance = np.sqrt(X**2 + Y**2) - weight = np.clip(1 - distance / np.sqrt(2), 0, 1) * alpha + weight = np.clip(1 - distance / np.sqrt(2), 0, 1) * blend elif interpolation_method == "distance_transform": # Use distance transform on mask to calculate weights distance = cv2.distanceTransform((mask * 255).astype(np.uint8), cv2.DIST_L2, 5) max_dist = distance.max() if distance.max() != 0 else 1.0 - weight = (1 - distance / max_dist) * alpha + weight = (1 - distance / max_dist) * blend elif interpolation_method == "random_noise": # Use random noise as weight random_noise = np.random.rand(*mask.shape) - weight = random_noise * alpha + weight = random_noise * blend else: - weight = alpha + weight = blend # Apply blending modes if blend_mode == "normal": @@ -814,7 +779,9 @@ def process_mask(self, mask: np.ndarray, feature_value: float, strength: float, elif blend_mode == "multiply": interpolated_mask = mask * (mask_b_frame * weight + (1 - weight) * 1) elif blend_mode == "overlay": - overlay = np.where(mask < 0.5, 2 * mask * (mask_b_frame * weight), 1 - 2 * (1 - mask) * (1 - mask_b_frame * weight)) + overlay = np.where(mask < 0.5, + 2 * mask * (mask_b_frame * weight), + 1 - 2 * (1 - mask) * (1 - mask_b_frame * weight)) interpolated_mask = overlay elif blend_mode == "soft_light": soft_light = (1 - (1 - mask) * (1 - mask_b_frame * weight)) @@ -822,15 +789,4 @@ def process_mask(self, mask: np.ndarray, feature_value: float, strength: float, else: interpolated_mask = (1 - weight) * mask + weight * mask_b_frame - interpolated_mask = np.clip(interpolated_mask, 0.0, 1.0) - return interpolated_mask.astype(np.float32) - - def main_function(self, masks, feature, feature_pipe, strength, feature_threshold, - invert, subtract_original, grow_with_blur, mask_b, - interpolation_method, invert_mask_b, blend_mode, **kwargs): - return (self.apply_mask_operation(masks, feature, feature_pipe, strength, - feature_threshold, invert, subtract_original, - grow_with_blur, mask_b=mask_b, - interpolation_method=interpolation_method, - invert_mask_b=invert_mask_b, - blend_mode=blend_mode, **kwargs),) \ No newline at end of file + return np.clip(interpolated_mask, 0.0, 1.0).astype(np.float32) \ No newline at end of file diff --git a/nodes/masks/flex_masks_normal.py b/nodes/masks/flex_masks_normal.py index 9fb2ada..d35c294 100644 --- a/nodes/masks/flex_masks_normal.py +++ b/nodes/masks/flex_masks_normal.py @@ -1,8 +1,12 @@ import numpy as np import torch import cv2 -from .mask_base import FlexMaskBase +from .flex_mask_base import FlexMaskBase +from ...tooltips import apply_tooltips +#NOTE: this is a work in progress, it sucks +#TODO +@apply_tooltips class FlexMaskNormalBase(FlexMaskBase): @classmethod def INPUT_TYPES(cls): @@ -14,6 +18,8 @@ def INPUT_TYPES(cls): } } + CATEGORY = "RyanOnTheInside/Targets/Normals" + def normalize_vector(self, vector): return vector / np.linalg.norm(vector) @@ -22,10 +28,11 @@ def normal_map_to_array(self, normal_map: torch.Tensor) -> np.ndarray: normal_array = normal_map.cpu().numpy() * 2 - 1 return normal_array - def main_function(self, masks, feature, feature_pipe, strength, feature_threshold, invert, subtract_original, grow_with_blur, normal_map, **kwargs): + def main_function(self, masks, opt_feature=None, strength=1.0, feature_threshold=0.0, invert=False, subtract_original=0.0, grow_with_blur=0.0, normal_map=None, **kwargs): # This method should be overridden by child classes raise NotImplementedError("Subclasses must implement main_function") +@apply_tooltips class FlexMaskNormalLighting(FlexMaskNormalBase): @classmethod def INPUT_TYPES(cls): @@ -48,8 +55,9 @@ def process_mask(self, mask: np.ndarray, feature_value: float, strength: float, normal_map: torch.Tensor, light_direction_x: float, light_direction_y: float, light_direction_z: float, shadow_threshold: float, feature_param: str, feature_mode: str, **kwargs) -> np.ndarray: - - normal_array = self.normal_map_to_array(normal_map) + frame_index = kwargs.get('frame_index', 0) + normal_map_frame = normal_map[frame_index] + normal_array = self.normal_map_to_array(normal_map_frame) # Normalize light direction light_direction = self.normalize_vector(np.array([light_direction_x, light_direction_y, light_direction_z])) @@ -71,7 +79,7 @@ def process_mask(self, mask: np.ndarray, feature_value: float, strength: float, shadow_threshold = np.clip(shadow_threshold, 0.0, 1.0) # Calculate dot product between normal vectors and light direction - dot_product = np.einsum('bhwc,c->bhw', normal_array, light_direction) + dot_product = np.einsum('hwc,c->hw', normal_array, light_direction) # Create lighting mask lighting_mask = (dot_product > shadow_threshold).astype(np.float32) @@ -79,24 +87,4 @@ def process_mask(self, mask: np.ndarray, feature_value: float, strength: float, # Combine with input mask combined_mask = mask * lighting_mask - return combined_mask - - def main_function(self, masks, feature, feature_pipe, strength, feature_threshold, invert, subtract_original, grow_with_blur, normal_map, light_direction_x, light_direction_y, light_direction_z, shadow_threshold, feature_param, feature_mode, **kwargs): - processed_masks = [] - for i in range(masks.shape[0]): # Iterate over all frames - mask = masks[i].cpu().numpy() - feature_value = feature.get_value_at_frame(i) - - if feature_value >= feature_threshold: - processed_mask = self.process_mask( - mask, feature_value, strength, normal_map[i], - light_direction_x, light_direction_y, light_direction_z, - shadow_threshold, feature_param, feature_mode - ) - else: - processed_mask = mask - - processed_masks.append(processed_mask) - - processed_masks = np.stack(processed_masks) - return self.apply_mask_operation(torch.from_numpy(processed_masks), masks, strength, invert, subtract_original, grow_with_blur) \ No newline at end of file + return combined_mask \ No newline at end of file diff --git a/nodes/masks/mask_base.py b/nodes/masks/mask_base.py index ed36032..6230490 100644 --- a/nodes/masks/mask_base.py +++ b/nodes/masks/mask_base.py @@ -12,19 +12,19 @@ normalize_array ) from abc import ABC, abstractmethod -import pymunk -import math -import random from typing import List, Tuple import pymunk import cv2 -from ..audio.audio_processor_legacy import AudioFeatureExtractor -from ... import RyanOnTheInside +from ...tooltips import apply_tooltips +from ... import ProgressMixin -class MaskBase(RyanOnTheInside, ABC): + +@apply_tooltips +class MaskBase(ProgressMixin, ABC): @classmethod def INPUT_TYPES(cls): + return { "required": { "masks": ("MASK",), @@ -41,10 +41,6 @@ def INPUT_TYPES(cls): def __init__(self): self.pre_processors = [] self.post_processors = [] - self.progress_bar = None - self.tqdm_bar = None - self.current_progress = 0 - self.total_steps = 0 def add_pre_processor(self, func): self.pre_processors.append(func) @@ -64,26 +60,6 @@ def post_process(self, mask): mask = processor(mask) return mask - def start_progress(self, total_steps, desc="Processing"): - self.progress_bar = ProgressBar(total_steps) - self.tqdm_bar = tqdm(total=total_steps, desc=desc, leave=False) - self.current_progress = 0 - self.total_steps = total_steps - - def update_progress(self, step=1): - self.current_progress += step - if self.progress_bar: - self.progress_bar.update(step) - if self.tqdm_bar: - self.tqdm_bar.update(step) - - def end_progress(self): - if self.tqdm_bar: - self.tqdm_bar.close() - self.progress_bar = None - self.tqdm_bar = None - self.current_progress = 0 - self.total_steps = 0 @abstractmethod def process_mask(self, mask: np.ndarray, strength: float, **kwargs) -> np.ndarray: @@ -92,12 +68,14 @@ def process_mask(self, mask: np.ndarray, strength: float, **kwargs) -> np.ndarra """ pass - def apply_mask_operation(self, processed_masks: torch.Tensor, original_masks: torch.Tensor, strength: float, invert: bool, subtract_original: float, grow_with_blur: float, **kwargs) -> Tuple[torch.Tensor]: + def apply_mask_operation(self, processed_masks: torch.Tensor, original_masks: torch.Tensor, strength: float, invert: bool, subtract_original: float, grow_with_blur: float, progress_callback=None, **kwargs) -> Tuple[torch.Tensor]: processed_masks_np = processed_masks.cpu().numpy() if isinstance(processed_masks, torch.Tensor) else processed_masks original_masks_np = original_masks.cpu().numpy() if isinstance(original_masks, torch.Tensor) else original_masks num_frames = processed_masks_np.shape[0] - self.start_progress(num_frames, desc="Applying mask operation") + # Only start progress if no callback is provided + if progress_callback is None: + self.start_progress(num_frames, desc="Applying mask operation") result = [] for processed_mask, original_mask in zip(processed_masks_np, original_masks_np): @@ -125,9 +103,16 @@ def apply_mask_operation(self, processed_masks: torch.Tensor, original_masks: to processed_mask = np.clip(processed_mask, 0, 1) result.append(processed_mask) - self.update_progress() + + # Use callback if provided, otherwise use internal progress + if progress_callback: + progress_callback() + else: + self.update_progress() - self.end_progress() + # Only end progress if we started it + if progress_callback is None: + self.end_progress() return torch.from_numpy(np.stack(result)).float() @@ -139,6 +124,7 @@ def main_function(self, *args, **kwargs) -> Tuple[torch.Tensor]: """ pass +@apply_tooltips class TemporalMaskBase(MaskBase, ABC): @classmethod def INPUT_TYPES(cls): @@ -154,7 +140,7 @@ def INPUT_TYPES(cls): } } - CATEGORY="RyanOnTheInside/TemporalMasks" + CATEGORY="RyanOnTheInside/Masks/TemporalMasks" def __init__(self): super().__init__() @@ -211,8 +197,8 @@ def main_function(self, masks, strength, invert, subtract_original, grow_with_bl processed_masks = self.apply_temporal_mask_operation(masks, strength, start_frame, end_frame, effect_duration, temporal_easing, palindrome, **kwargs) ret = (self.apply_mask_operation(processed_masks[0], original_masks, strength, invert, subtract_original, grow_with_blur, **kwargs),) return ret - - + +@apply_tooltips class OpticalFlowMaskBase(MaskBase, ABC): @classmethod def INPUT_TYPES(cls): @@ -227,7 +213,7 @@ def INPUT_TYPES(cls): } } - CATEGORY="RyanOnTheInside/OpticalFlowMasks" + CATEGORY="RyanOnTheInside/OpticalFlow" def __init__(self): super().__init__() @@ -275,58 +261,5 @@ def main_function(self, masks, images, strength, flow_method, flow_threshold, ma processed_masks = np.stack(result) return self.apply_mask_operation(processed_masks, masks, strength, **kwargs) -#TODO check if input mask is blank and just skip, then check children -class FlexMaskBase(MaskBase): - feature_threshold_default=0.0 - @classmethod - def INPUT_TYPES(cls): - return { - "required": { - **super().INPUT_TYPES()["required"], - "feature": ("FEATURE",), - "feature_pipe": ("FEATURE_PIPE",), - "feature_threshold": ("FLOAT", {"default": cls.feature_threshold_default, "min": 0.0, "max": 1.0, "step": 0.01}), - } - } - - CATEGORY = "RyanOnTheInside/FlexMasks" - RETURN_TYPES = ("MASK",) - FUNCTION = "main_function" - @abstractmethod - def process_mask(self, mask: np.ndarray, feature_value: float, strength: float, **kwargs) -> np.ndarray: - pass - - def apply_mask_operation(self, masks, feature, feature_pipe, strength, feature_threshold, invert, subtract_original, grow_with_blur, **kwargs): - num_frames = feature_pipe.frame_count - original_masks = masks.clone() - - self.start_progress(num_frames, desc="Applying flex mask operation") - - result = [] - for i in range(num_frames): - kwargs['frame_index'] = i - mask = masks[i].numpy() - feature_value = feature.get_value_at_frame(i) - - if feature_value >= feature_threshold: - processed_mask = self.process_mask(mask, feature_value, strength, **kwargs) - else: - if hasattr(self, 'process_mask_below_threshold'): - processed_mask = self.process_mask_below_threshold(mask, feature_value, strength, **kwargs) - else: - processed_mask = mask - - - result.append(processed_mask) - self.update_progress() - - self.end_progress() - - processed_masks = torch.from_numpy(np.stack(result)).float() - return super().apply_mask_operation(processed_masks, original_masks, strength, invert, subtract_original, grow_with_blur, **kwargs) - - @abstractmethod - def main_function(self, masks, feature, feature_pipe, strength, feature_threshold, invert, subtract_original, grow_with_blur, **kwargs): - pass diff --git a/nodes/masks/mask_base_particle_system.py b/nodes/masks/mask_base_particle_system.py index 2bf921a..8c3e5c4 100644 --- a/nodes/masks/mask_base_particle_system.py +++ b/nodes/masks/mask_base_particle_system.py @@ -14,9 +14,11 @@ import pymunk import cv2 from .mask_base import MaskBase +from ...tooltips import apply_tooltips #TODO clean up the hamfisted resetting of all attributes +@apply_tooltips class ParticleSystemMaskBase(MaskBase, ABC): @classmethod def INPUT_TYPES(cls): @@ -45,7 +47,7 @@ def INPUT_TYPES(cls): RETURN_TYPES = ("MASK", "IMAGE") FUNCTION = "main_function" - CATEGORY="RyanOnTheInside/ParticleSystemMasks" + CATEGORY="RyanOnTheInside/ParticleSystems" def __init__(self): super().__init__() diff --git a/nodes/masks/mask_utility_nodes.py b/nodes/masks/mask_utility_nodes.py index db05d55..d1d923b 100644 --- a/nodes/masks/mask_utility_nodes.py +++ b/nodes/masks/mask_utility_nodes.py @@ -7,9 +7,14 @@ from tqdm import tqdm import comfy.utils from scipy import interpolate +from ...tooltips import apply_tooltips +from ... import ProgressMixin +_category = "RyanOnTheInside/Masks" -class MovingShape: + +@apply_tooltips +class MovingShape(ProgressMixin): @classmethod def INPUT_TYPES(s): return { @@ -34,7 +39,7 @@ def INPUT_TYPES(s): RETURN_TYPES = ("MASK",) FUNCTION = "generate" - CATEGORY = "RyanOnTheInside/masks/" + CATEGORY = _category def generate(self, frame_width, frame_height, num_frames, rgb, shape, shape_width_percent, shape_height_percent, shape_start_position_x, shape_start_position_y, shape_end_position_x, shape_end_position_y, movement_type, grow, palindrome, delay): rgb = self.parse_rgb_string(rgb) @@ -96,9 +101,9 @@ def elastic(x): progress = np.concatenate([np.zeros(delay), progress]) images = [] - pbar = comfy.utils.ProgressBar(num_frames) + self.start_progress(num_frames, desc="Generating moving shape frames") - for i, prog in tqdm(enumerate(progress), desc='Generating frames', total=num_frames): + for i, prog in enumerate(progress): mask = np.zeros((frame_height, frame_width, 1), dtype=np.float32) # Calculate shape position @@ -129,8 +134,9 @@ def elastic(x): cv2.fillPoly(mask, [points], 1) images.append(torch.from_numpy(mask)) - pbar.update(1) + self.update_progress() + self.end_progress() images_tensor = torch.stack(images, dim=0).squeeze(-1) return (images_tensor,) @@ -146,7 +152,8 @@ def parse_rgb_string(self, rgb_string): except ValueError: raise ValueError("Invalid RGB!") -class TextMaskNode: +@apply_tooltips +class TextMaskNode(ProgressMixin): @classmethod def INPUT_TYPES(s): font_list = sorted([f.name for f in matplotlib.font_manager.fontManager.ttflist]) @@ -170,8 +177,7 @@ def INPUT_TYPES(s): RETURN_TYPES = ("MASK", "IMAGE") FUNCTION = "create_text_mask" - - CATEGORY = "RyanOnTheInside/masks/" + CATEGORY = _category def parse_rgb(self, rgb_string): try: @@ -196,7 +202,6 @@ def create_text_mask(self, width, height, text, font, font_size, font_color, bac font_obj = ImageFont.load_default() max_width = int(width * max_width_ratio) - wrapped_text = textwrap.fill(text, width=max_width // font_size) temp_img = Image.new('RGB', (width, height)) @@ -209,7 +214,9 @@ def create_text_mask(self, width, height, text, font, font_size, font_color, bac x = int((width - text_width) * x_position) y = int((height - text_height) * y_position) - for _ in range(batch_size): + self.start_progress(batch_size, desc="Generating text masks") + + for i in range(batch_size): image = Image.new('RGB', (width, height), color=background_color) draw = ImageDraw.Draw(image) @@ -217,24 +224,25 @@ def create_text_mask(self, width, height, text, font, font_size, font_color, bac txt_draw = ImageDraw.Draw(txt_img) txt_draw.multiline_text((x, y), wrapped_text, font=font_obj, fill=font_color) - rotated_txt_img = txt_img.rotate(rotation, expand=1, fillcolor=(0, 0, 0, 0)) - image.paste(rotated_txt_img, (0, 0), rotated_txt_img) gray_image = image.convert('L') - mask = np.array(gray_image).astype(np.float32) / 255.0 masks.append(mask) image_np = np.array(image).astype(np.float32) / 255.0 images.append(image_np) + self.update_progress() + + self.end_progress() mask_tensor = torch.from_numpy(np.stack(masks)) image_tensor = torch.from_numpy(np.stack(images)) return (mask_tensor, image_tensor) +@apply_tooltips class _mfc: @classmethod def INPUT_TYPES(s): @@ -250,7 +258,7 @@ def INPUT_TYPES(s): RETURN_TYPES = ("MASK", "IMAGE") FUNCTION = "execute" - CATEGORY = "RyanOnTheInside/masks/" + CATEGORY = "RyanOnTheInside/Masks" def execute(self, image, red, green, blue, threshold): temp = (torch.clamp(image, 0, 1.0) * 255.0).round().to(torch.int) @@ -268,7 +276,7 @@ def execute(self, image, red, green, blue, threshold): return (mask, mask_image) - +@apply_tooltips class MaskCompositePlus: @classmethod def INPUT_TYPES(s): @@ -282,7 +290,7 @@ def INPUT_TYPES(s): RETURN_TYPES = ("MASK",) FUNCTION = "composite_masks" - CATEGORY = "RyanOnTheInside/masks/" + CATEGORY = _category def composite_masks(self, mask1, mask2, operation): # Ensure masks have the same shape @@ -308,4 +316,261 @@ def composite_masks(self, mask1, mask2, operation): else: raise ValueError(f"Unknown operation: {operation}") - return (result,) \ No newline at end of file + return (result,) + +@apply_tooltips +class AdvancedLuminanceMask(ProgressMixin): + @classmethod + def INPUT_TYPES(s): + return { + "required": { + "image": ("IMAGE",), + "luminance_threshold": ("FLOAT", {"default": 0.05, "min": 0.0, "max": 1.0, "step": 0.01}), + "glow_radius": ("INT", {"default": 5, "min": 0, "max": 50, "step": 1}), + "edge_preservation": ("FLOAT", {"default": 0.5, "min": 0.0, "max": 1.0, "step": 0.01}), + "background_samples": ("INT", {"default": 10, "min": 1, "max": 100, "step": 1}), + "denoise_strength": ("FLOAT", {"default": 0.3, "min": 0.0, "max": 1.0, "step": 0.01}), + } + } + + RETURN_TYPES = ("MASK", "IMAGE") + FUNCTION = "create_mask" + CATEGORY = _category + + def gaussian_kernel(self, kernel_size, sigma, device): + """Create a 2D Gaussian kernel on the specified device""" + x = torch.linspace(-kernel_size // 2, kernel_size // 2, kernel_size, device=device) + kernel_1d = torch.exp(-0.5 * (x / sigma).pow(2)) + kernel_2d = kernel_1d[:, None] * kernel_1d[None, :] + return kernel_2d / kernel_2d.sum() + + def gaussian_blur(self, x, kernel_size, sigma): + """Apply Gaussian blur using separable convolution""" + device = x.device + padding = kernel_size // 2 + kernel = self.gaussian_kernel(kernel_size, sigma, device) + kernel = kernel.view(1, 1, kernel_size, kernel_size) + + if len(x.shape) == 3: + x = x.unsqueeze(0) + + # Expand kernel for each input channel + if x.shape[1] > 1: + kernel = kernel.repeat(x.shape[1], 1, 1, 1) + + # Use groups parameter for efficient channel-wise convolution + return torch.nn.functional.conv2d( + torch.nn.functional.pad(x, (padding, padding, padding, padding), mode='reflect'), + kernel, + groups=x.shape[1] + ) + + def bilateral_filter_torch(self, x, d, sigma_color, sigma_space): + """GPU-optimized bilateral filter implementation""" + device = x.device + b, c, h, w = x.shape + + # Create coordinate grids + y_coords = torch.arange(-(d//2), d//2 + 1, device=device) + x_coords = torch.arange(-(d//2), d//2 + 1, device=device) + + # Create meshgrid + xx, yy = torch.meshgrid(x_coords, y_coords, indexing='ij') + + # Compute spatial weights + spatial_weight = torch.exp(-(xx.pow(2) + yy.pow(2)) / (2 * sigma_space ** 2)) + spatial_weight = spatial_weight.view(1, 1, d, d) + + pad_size = d // 2 + x_pad = torch.nn.functional.pad(x, (pad_size,)*4, mode='reflect') + + result = torch.zeros_like(x) + + # Process in chunks for memory efficiency + chunk_size = min(32, h) + num_chunks = (h + chunk_size - 1) // chunk_size + total_steps = num_chunks * b + + self.start_progress(total_steps, desc="Applying bilateral filter") + + for b_idx in range(b): + for i in range(0, h, chunk_size): + end_i = min(i + chunk_size, h) + chunk_height = end_i - i + + # Extract patches + patches = x_pad[b_idx:b_idx+1, :, i:end_i+d-1, :].unfold(2, d, 1).unfold(3, d, 1) + patches = patches.contiguous() + + # Get center pixels for the chunk + center = x[b_idx:b_idx+1, :, i:end_i, :].unsqueeze(-1).unsqueeze(-1) + + # Compute color weights for the chunk + diff = (patches - center).pow(2) + color_weight = torch.exp(-diff / (2 * sigma_color ** 2)) + + # Apply both weights + weights = spatial_weight * color_weight + norm_factor = weights.sum(dim=(-2, -1), keepdim=True).clamp(min=1e-8) + weights = weights / norm_factor + + # Apply weighted average + result[b_idx:b_idx+1, :, i:end_i, :] = (patches * weights).sum(dim=(-2, -1)) + + self.update_progress() + + self.end_progress() + return result + + def create_mask(self, image, luminance_threshold, glow_radius, edge_preservation, background_samples, denoise_strength): + device = image.device + batch_size = image.shape[0] if len(image.shape) == 4 else 1 + + if len(image.shape) == 3: + image = image.unsqueeze(0) + + # Ensure image is in BCHW format + if image.shape[-1] == 3: # If image is in BHWC format + image = image.permute(0, 3, 1, 2) + + # RGB to Grayscale conversion using torch + rgb_weights = torch.tensor([0.299, 0.587, 0.114], device=device) + gray = torch.einsum('bchw,c->bhw', image, rgb_weights).unsqueeze(1) + + # Background estimation using corner sampling + h, w = gray.shape[2:] + corner_size = max(h, w) // background_samples + corners = [ + gray[:, :, :corner_size, :corner_size], + gray[:, :, :corner_size, -corner_size:], + gray[:, :, -corner_size:, :corner_size], + gray[:, :, -corner_size:, -corner_size:] + ] + bg_value = torch.stack([c.median() for c in corners]).median().view(1, 1, 1, 1) + + # Create initial mask based on luminance difference + diff_from_bg = torch.abs(gray - bg_value) + # Instead of binary threshold, use a smooth ramp + initial_mask = torch.clamp(diff_from_bg / luminance_threshold, 0, 1) + + # Apply denoising if needed + if denoise_strength > 0: + d = max(3, int(denoise_strength * 10)) + sigma_color = denoise_strength * 75 + sigma_space = denoise_strength * 75 + initial_mask = self.bilateral_filter_torch(initial_mask, d, sigma_color, sigma_space) + + # Apply glow effect + if glow_radius > 0: + kernel_size = 2 * glow_radius + 1 + sigma = glow_radius / 3 + blurred = self.gaussian_blur(initial_mask, kernel_size, sigma) + mask = torch.maximum(initial_mask, blurred * edge_preservation) + else: + mask = initial_mask + + # Calculate luminance-based alpha + luminance = gray.squeeze(1) + alpha = torch.clamp(luminance * (1.0 / luminance_threshold), 0, 1) + + # Combine mask with alpha + final_mask = mask.squeeze(1) * alpha + + # Create visualization tensor + vis_tensor = final_mask.unsqueeze(-1).repeat(1, 1, 1, 3) + + return (final_mask, vis_tensor) + +@apply_tooltips +class TranslucentComposite(ProgressMixin): + @classmethod + def INPUT_TYPES(s): + return { + "required": { + "background": ("IMAGE",), + "foreground": ("IMAGE",), + "mask": ("MASK",), + "blend_mode": (["normal", "screen", "multiply", "overlay"],), + "opacity": ("FLOAT", {"default": 1.0, "min": 0.0, "max": 1.0, "step": 0.01}), + "preserve_transparency": ("BOOLEAN", {"default": True}), + "luminance_boost": ("FLOAT", {"default": 0.0, "min": -1.0, "max": 1.0, "step": 0.01}), + "background_influence": ("FLOAT", {"default": 0.3, "min": 0.0, "max": 1.0, "step": 0.01}), + } + } + + RETURN_TYPES = ("IMAGE",) + FUNCTION = "composite" + CATEGORY = _category + + def composite(self, background, foreground, mask, blend_mode, opacity, preserve_transparency, luminance_boost, background_influence): + device = background.device + + # Convert to numpy for processing + bg = background.cpu().numpy() + fg = foreground.cpu().numpy() + mask = mask.cpu().numpy() + + # Handle batching + if len(bg.shape) == 3: + bg = bg[None, ...] + if len(fg.shape) == 3: + fg = fg[None, ...] + if len(mask.shape) == 2: + mask = mask[None, ...] + + batch_size = bg.shape[0] + result = [] + + self.start_progress(batch_size, desc="Compositing frames") + + for b in range(batch_size): + # Convert to float32 for processing + bg_frame = (bg[b] * 255).astype(np.float32) + fg_frame = (fg[b] * 255).astype(np.float32) + mask_frame = mask[b] + + # Convert to LAB color space for luminance processing + bg_lab = cv2.cvtColor(bg_frame.astype(np.uint8), cv2.COLOR_RGB2LAB).astype(np.float32) + fg_lab = cv2.cvtColor(fg_frame.astype(np.uint8), cv2.COLOR_RGB2LAB).astype(np.float32) + + # Apply luminance boost to foreground + if luminance_boost != 0: + fg_lab[:, :, 0] = np.clip(fg_lab[:, :, 0] + (luminance_boost * 100), 0, 255) + fg_frame = cv2.cvtColor(fg_lab.astype(np.uint8), cv2.COLOR_LAB2RGB).astype(np.float32) + + # Calculate transparency based on luminance if preserve_transparency is True + if preserve_transparency: + fg_luminance = cv2.cvtColor(fg_frame.astype(np.uint8), cv2.COLOR_RGB2GRAY).astype(np.float32) / 255.0 + mask_frame = mask_frame * fg_luminance + + # Apply blend mode + if blend_mode == "screen": + blended = 255 - ((255 - bg_frame) * (255 - fg_frame) / 255) + elif blend_mode == "multiply": + blended = (bg_frame * fg_frame) / 255 + elif blend_mode == "overlay": + blended = np.where(bg_frame > 127.5, + 255 - ((255 - 2*(bg_frame-127.5)) * (255-fg_frame)) / 255, + (2*bg_frame*fg_frame) / 255) + else: # normal + blended = fg_frame + + # Apply background influence + if background_influence > 0: + bg_influence_mask = cv2.GaussianBlur(mask_frame[..., None], (5, 5), 0) * background_influence + blended = blended * (1 - bg_influence_mask) + bg_frame * bg_influence_mask + + # Final compositing with mask and opacity + mask_3ch = np.stack([mask_frame] * 3, axis=-1) * opacity + composite = bg_frame * (1 - mask_3ch) + blended * mask_3ch + + # Normalize and append to results + result.append(np.clip(composite, 0, 255) / 255.0) + self.update_progress() + + self.end_progress() + + # Convert back to torch tensor + result_tensor = torch.from_numpy(np.stack(result)).float().to(device) + + return (result_tensor,) \ No newline at end of file diff --git a/nodes/masks/optical_flow_masks.py b/nodes/masks/optical_flow_masks.py index 8270a35..5e36645 100644 --- a/nodes/masks/optical_flow_masks.py +++ b/nodes/masks/optical_flow_masks.py @@ -3,10 +3,12 @@ import torch from .mask_base import OpticalFlowMaskBase from .mask_utils import calculate_optical_flow, apply_blur, normalize_array +from ...tooltips import apply_tooltips #TODO make all this better. +@apply_tooltips class OpticalFlowMaskModulation(OpticalFlowMaskBase): @classmethod def INPUT_TYPES(cls): @@ -71,6 +73,7 @@ def apply_optical_flow_modulation(self, masks, images, strength, flow_method, fl self.trail_buffer = [] # Reset trail buffer return (super().main_function(masks, images, strength, flow_method, flow_threshold, magnitude_threshold, modulation_strength=modulation_strength, blur_radius=blur_radius, trail_length=trail_length, decay_factor=decay_factor, decay_style=decay_style, max_thickness=max_thickness, **kwargs),) +@apply_tooltips class OpticalFlowDirectionMask(OpticalFlowMaskBase): @classmethod def INPUT_TYPES(cls): @@ -136,6 +139,7 @@ def apply_flow_mask(self, mask: np.ndarray, flow_magnitude: np.ndarray, flow: np def apply_direction_mask(self, masks, images, strength, flow_method, flow_threshold, magnitude_threshold, direction, angle_threshold, blur_radius, invert, **kwargs): return super().main_function(masks, images, strength, flow_method, flow_threshold, magnitude_threshold, direction=direction, angle_threshold=angle_threshold, blur_radius=blur_radius, invert=invert, **kwargs) +@apply_tooltips class OpticalFlowParticleSystem(OpticalFlowMaskBase): @classmethod def INPUT_TYPES(cls): diff --git a/nodes/masks/particle_system_masks.py b/nodes/masks/particle_system_masks.py index 7dda4b5..e9bcd3a 100644 --- a/nodes/masks/particle_system_masks.py +++ b/nodes/masks/particle_system_masks.py @@ -3,7 +3,9 @@ from typing import List, Tuple import cv2 from ... import RyanOnTheInside +from ...tooltips import apply_tooltips +@apply_tooltips class ParticleEmissionMask(ParticleSystemMaskBase): @classmethod def INPUT_TYPES(cls): @@ -58,8 +60,9 @@ def main_function(self, masks, strength, invert, subtract_original, grow_with_bl static_bodies=static_bodies, **kwargs) class ParticleSystemModulatorBase(RyanOnTheInside): - CATEGORY="RyanOnTheInside/ParticleSystemMasks" + CATEGORY= f"{ParticleSystemMaskBase.CATEGORY}/Modulators" +@apply_tooltips class EmitterModulationBase(ParticleSystemModulatorBase): @classmethod def INPUT_TYPES(cls): @@ -80,6 +83,7 @@ def INPUT_TYPES(cls): RETURN_TYPES = ("EMITTER_MODULATION",) FUNCTION = "create_modulation" + CATEGORY = f"{ParticleSystemModulatorBase.CATEGORY}/Emitters" def create_modulation(self, start_frame, end_frame, effect_duration, temporal_easing, palindrome, random, previous_modulation=None, feature=None): modulation = { @@ -106,6 +110,7 @@ def create_modulation(self, start_frame, end_frame, effect_duration, temporal_ea modulation_chain.append(modulation) return (modulation_chain,) +@apply_tooltips class EmitterEmissionRateModulation(EmitterModulationBase): @classmethod def INPUT_TYPES(cls): @@ -125,6 +130,7 @@ def create_emission_rate_modulation(self, target_emission_rate, **kwargs): return (modulation_chain,) +@apply_tooltips class Vortex(ParticleSystemModulatorBase): @classmethod def INPUT_TYPES(cls): @@ -166,6 +172,7 @@ def create_vortex(self, x, y, strength, radius, inward_factor, movement_speed, c return (vortex_list,) +@apply_tooltips class GravityWell(ParticleSystemModulatorBase): @classmethod def INPUT_TYPES(cls): @@ -205,6 +212,7 @@ def create_gravity_well(self, x, y, strength, radius, type, color, draw, previou return (well_list,) +@apply_tooltips class ParticleEmitter(ParticleSystemModulatorBase): @classmethod def INPUT_TYPES(cls): @@ -274,6 +282,7 @@ def create_emitter(self, emitter_x, emitter_y, particle_direction, particle_spre return (emitter_list,) +@apply_tooltips class SpringJointSetting(ParticleSystemModulatorBase): @classmethod def INPUT_TYPES(cls): @@ -297,6 +306,7 @@ def create_setting(self, stiffness, damping, rest_length, max_distance): "max_distance": max_distance, },) +@apply_tooltips class EmitterMovement(ParticleSystemModulatorBase): @classmethod def INPUT_TYPES(cls): @@ -317,7 +327,7 @@ def INPUT_TYPES(cls): RETURN_TYPES = ("EMITTER_MOVEMENT",) FUNCTION = "create_movement" - + CATEGORY = f"{ParticleSystemModulatorBase.CATEGORY}/EmitterModulators" def create_movement(self, emitter_x_frequency, emitter_y_frequency, direction_frequency, emitter_x_amplitude, emitter_y_amplitude, direction_amplitude, feature_param, feature=None): @@ -333,6 +343,7 @@ def create_movement(self, emitter_x_frequency, emitter_y_frequency, direction_fr } return (movement,) +@apply_tooltips class StaticBody(ParticleSystemModulatorBase): @classmethod def INPUT_TYPES(cls): @@ -378,6 +389,7 @@ def create_static_body(self, shape_type, x1, y1, x2, y2, elasticity, friction, d return (body_list,) +@apply_tooltips class ParticleModulationBase(ParticleSystemModulatorBase): @classmethod def INPUT_TYPES(cls): @@ -396,6 +408,8 @@ def INPUT_TYPES(cls): } } + CATEGORY = f"{ParticleSystemModulatorBase.CATEGORY}/ParticleModulators" + def create_modulation(self, start_frame, end_frame, effect_duration, temporal_easing, palindrome, random, previous_modulation=None, feature=None): modulation = { "start_frame": start_frame, @@ -421,6 +435,7 @@ def create_modulation(self, start_frame, end_frame, effect_duration, temporal_ea modulation_chain.append(modulation) return (modulation_chain,) +@apply_tooltips class ParticleSizeModulation(ParticleModulationBase): @classmethod def INPUT_TYPES(cls): @@ -434,12 +449,15 @@ def INPUT_TYPES(cls): RETURN_TYPES = ("PARTICLE_MODULATION",) FUNCTION = "create_size_modulation" - + + CATEGORY = f"{ParticleSystemModulatorBase.CATEGORY}/ParticleModulators" + def create_size_modulation(self, target_size, **kwargs): modulation_chain = super().create_modulation(**kwargs)[0] modulation_chain[-1]["target_size"] = target_size return (modulation_chain,) +@apply_tooltips class ParticleSpeedModulation(ParticleModulationBase): @classmethod def INPUT_TYPES(cls): @@ -453,12 +471,14 @@ def INPUT_TYPES(cls): RETURN_TYPES = ("PARTICLE_MODULATION",) FUNCTION = "create_speed_modulation" + CATEGORY = f"{ParticleSystemModulatorBase.CATEGORY}/ParticleModulators" def create_speed_modulation(self, target_speed, **kwargs): modulation_chain = super().create_modulation(**kwargs)[0] modulation_chain[-1]["target_speed"] = target_speed return (modulation_chain,) +@apply_tooltips class ParticleColorModulation(ParticleModulationBase): @classmethod def INPUT_TYPES(cls): @@ -472,6 +492,8 @@ def INPUT_TYPES(cls): RETURN_TYPES = ("PARTICLE_MODULATION",) FUNCTION = "create_color_modulation" + CATEGORY = f"{ParticleSystemModulatorBase.CATEGORY}/ParticleModulators" + def create_color_modulation(self, target_color, **kwargs): modulation_chain = super().create_modulation(**kwargs)[0] diff --git a/nodes/masks/temporal_masks.py b/nodes/masks/temporal_masks.py index 7ab0544..09b156e 100644 --- a/nodes/masks/temporal_masks.py +++ b/nodes/masks/temporal_masks.py @@ -4,8 +4,10 @@ import torch import cv2 from scipy.ndimage import distance_transform_edt +from ...tooltips import apply_tooltips +@apply_tooltips class MaskMorph(TemporalMaskBase): @classmethod def INPUT_TYPES(cls): @@ -33,6 +35,7 @@ def process_single_mask(self, mask: np.ndarray, strength: float, morph_type: str def apply_mask_morph(self, masks, strength, morph_type, max_kernel_size, max_iterations, **kwargs): return super().main_function(masks, strength, morph_type=morph_type, max_kernel_size=max_kernel_size, max_iterations=max_iterations, **kwargs) +@apply_tooltips class MaskTransform(TemporalMaskBase): @classmethod def INPUT_TYPES(cls): @@ -57,6 +60,7 @@ def process_single_mask(self, mask: np.ndarray, strength: float, transform_type: def apply_mask_transform(self, masks, strength, transform_type, x_value, y_value, **kwargs): return super().main_function(masks, strength, transform_type=transform_type, x_value=x_value, y_value=y_value, **kwargs) +@apply_tooltips class MaskMath(TemporalMaskBase): @classmethod def INPUT_TYPES(cls): @@ -82,6 +86,7 @@ def apply_mask_math(self, masks, mask_b, strength, combination_method, **kwargs) return super().main_function(masks, strength, mask_b=mask_b_np, combination_method=combination_method, **kwargs) #TODO CONFIRM THAT NOTHING HAPPENS WITH EMPTY MASK +@apply_tooltips class MaskRings(TemporalMaskBase): @classmethod def INPUT_TYPES(cls): @@ -122,6 +127,7 @@ def process_single_mask(self, mask: np.ndarray, strength: float, num_rings: int, def apply_mask_rings(self, masks, strength, num_rings, max_ring_width, **kwargs): return super().main_function(masks, strength, num_rings=num_rings, max_ring_width=max_ring_width, **kwargs) +@apply_tooltips class MaskWarp(TemporalMaskBase): @classmethod def INPUT_TYPES(cls): diff --git a/nodes/misc/misc_nodes.py b/nodes/misc/misc_nodes.py index 7a74179..e69de29 100644 --- a/nodes/misc/misc_nodes.py +++ b/nodes/misc/misc_nodes.py @@ -1,41 +0,0 @@ -import json -class WhisperToPromptTravel: - """Converts Whisper alignment data to prompt travel format""" - - @classmethod - def INPUT_TYPES(cls): - return { - "required": { - "segments_alignment": ("STRING", {"multiline": True}), # JSON string of segment alignments - "fps": ("FLOAT", {"default": 24.0, "min": 0.1, "max": 120.0}), - } - } - - RETURN_TYPES = ("STRING",) - FUNCTION = "convert" - CATEGORY = "misc" - - def convert(self, segments_alignment, fps): - import json - - # Parse the alignment data - try: - segments = json.loads(segments_alignment) - except json.JSONDecodeError: - raise ValueError("Invalid segments_alignment JSON format") - - # Create frame-to-prompt mapping - prompt_travel = {} - - for segment in segments: - # Convert time to frame number - frame = int(segment["start"] * fps) - prompt_travel[str(frame)] = segment["value"] - - # Convert to string format - result = "{\n" - for frame, prompt in sorted(prompt_travel.items(), key=lambda x: int(x[0])): - result += f'"{frame}":"{prompt}",\n' - result = result.rstrip(",\n") + "\n}" - - return (result,) diff --git a/nodes/models/flex_model_base.py b/nodes/models/flex_model_base.py new file mode 100644 index 0000000..96a286c --- /dev/null +++ b/nodes/models/flex_model_base.py @@ -0,0 +1,332 @@ +from abc import ABC, abstractmethod +from typing import Any, Dict, List, Tuple + +from ...tooltips import apply_tooltips +from ..flex.flex_base import FlexBase +from comfy.ldm.modules.attention import optimized_attention, BasicTransformerBlock, default +import torch +import math + +#NOTE: TOTALLY EXPERIMENTAL + +class FlexFeatureAttentionControl: + @classmethod + + def INPUT_TYPES(s): + return {"required": { + "model": ("MODEL",), + "feature": ("FEATURE",), + "strength": ("FLOAT", {"default": 1.0, "min": 0.0, "max": 10.0, "step": 0.1}), + "feature_mode": (["relative", "absolute"],), + "attention_type": (["cross", "self", "both"],), + "scaling_mode": (["V only", "K+V", "K+V w/ C penalty", "K+mean(V) w/ C penalty"],), + "layer_selection": (["all", "first_half", "second_half", "custom"],), + "custom_layers": ("STRING", {"default": "1,2,3", "multiline": False}), + "auto_projection": ("BOOLEAN", {"default": True}), + }} + + RETURN_TYPES = ("MODEL",) + FUNCTION = "patch" + CATEGORY = "RyanOnTheInside/FlexFeatures/ModelModulation" + + def patch(self, model, feature, strength, feature_mode, attention_type, scaling_mode, layer_selection, custom_layers, auto_projection): + print("\n=== FlexFeatureAttentionControl Setup ===") + print(f"Attention type: {attention_type}") + print(f"Scaling mode: {scaling_mode}") + print(f"Feature mode: {feature_mode}") + print(f"Strength: {strength}") + print(f"Layer selection: {layer_selection}") + print(f"Feature frame count: {feature.frame_count}") + print(f"Auto projection: {auto_projection}") + print(f"Feature values: {[feature.get_value_at_frame(i) for i in range(feature.frame_count)]}") + + m = model.clone() + + # Create projection layers for dimension mismatch + projections = {} + + def get_target_layers(model): + """Helper to get target attention layers based on selection""" + layers = [] + + def register_attn_block(name, module): + if isinstance(module, BasicTransformerBlock): + if attention_type == "cross" and module.attn2 is not None: + layers.append((name, module.attn2)) + elif attention_type == "self" and not module.disable_self_attn: + layers.append((name, module.attn1)) + elif attention_type == "both": + if not module.disable_self_attn: + layers.append((name + ".attn1", module.attn1)) + if module.attn2 is not None: + layers.append((name + ".attn2", module.attn2)) + + # Traverse model hierarchy + for name, module in model.model.diffusion_model.named_modules(): + register_attn_block(name, module) + + print(f"\nFound {len(layers)} matching attention layers") + for layer_name, _ in layers: + print(f"- {layer_name}") + + total_layers = len(layers) + if layer_selection == "first_half": + selected = layers[:total_layers//2] + elif layer_selection == "second_half": + selected = layers[total_layers//2:] + elif layer_selection == "custom": + try: + indices = [int(i.strip()) for i in custom_layers.split(",")] + selected = [layers[i] for i in indices if 0 <= i < total_layers] + except: + print("Invalid custom layer indices, using all layers") + selected = layers + else: + selected = layers + + print(f"\nSelected {len(selected)} layers for patching") + for layer_name, _ in selected: + print(f"* {layer_name}") + + return selected + + def create_projection_layer(in_dim, out_dim, layer_name): + """Create a projection layer for dimension mismatch""" + if (in_dim, out_dim, layer_name) not in projections: + # Get device and dtype from model parameters + device = next(model.model.parameters()).device + dtype = next(model.model.parameters()).dtype + + projections[(in_dim, out_dim, layer_name)] = torch.nn.Linear(in_dim, out_dim) + projections[(in_dim, out_dim, layer_name)].to(device=device, dtype=dtype) + print(f"Created projection layer for {layer_name}: {in_dim} -> {out_dim}") + return projections[(in_dim, out_dim, layer_name)] + + def flex_attention(q, k, v, extra_options): + """ + Apply flexible attention scaling based on the current mode and settings + """ + # Store original tensors for comparison + k_orig = k.clone() + v_orig = v.clone() + + print("\n=== FlexFeatureAttentionControl Debug ===") + print(f"Input shapes - Q: {q.shape}, K: {k.shape}, V: {v.shape}") + + # Handle dimension mismatch if auto_projection is enabled + if auto_projection: + expected_dim = q.shape[-1] + if k.shape[-1] != expected_dim: + print(f"K dimension mismatch: {k.shape[-1]} vs {expected_dim}") + proj_k = create_projection_layer(k.shape[-1], expected_dim, f"k_proj_{k.shape[-1]}_{expected_dim}") + k = proj_k(k) + print(f"K shape after projection: {k.shape}") + + if v.shape[-1] != expected_dim: + print(f"V dimension mismatch: {v.shape[-1]} vs {expected_dim}") + proj_v = create_projection_layer(v.shape[-1], expected_dim, f"v_proj_{v.shape[-1]}_{expected_dim}") + v = proj_v(v) + print(f"V shape after projection: {v.shape}") + + # Get current step from sigma if available + sigmas = extra_options.get("sigmas", None) + if sigmas is not None: + sigma = sigmas.detach().cpu()[0].item() + total_steps = len(sigmas) + current_step = total_steps - len([s for s in sigmas if s >= sigma]) + print(f"Step {current_step}/{total_steps} (sigma: {sigma:.4f})") + + # Map step to feature frame with interpolation + frame_float = (current_step / total_steps) * (feature.frame_count - 1) + else: + # If no sigmas available, use middle frame + print("No step information available, using middle frame") + frame_float = (feature.frame_count - 1) / 2 + + frame_low = int(frame_float) + frame_high = min(frame_low + 1, feature.frame_count - 1) + alpha = frame_float - frame_low + + # Interpolate feature values + value_low = feature.get_value_at_frame(frame_low) + value_high = feature.get_value_at_frame(frame_high) + feature_value = value_low * (1 - alpha) + value_high * alpha + print(f"Frame {frame_float:.2f} value: {feature_value:.4f} (interpolated between {value_low:.4f} and {value_high:.4f})") + + # Calculate scale based on feature mode with improved stability + if feature_mode == "relative": + # For relative mode, limit the maximum relative change + clamped_feature = max(-0.75, min(0.75, feature_value)) # Increased range from [-0.5, 0.5] to [-0.75, 0.75] + scale = 1.0 + (clamped_feature * strength * 2.0) # Doubled strength impact + print(f"Relative scale: 1.0 + (clamp({feature_value:.4f}) * {strength:.4f} * 2.0) = {scale:.4f}") + else: + # For absolute mode, ensure we don't scale too far from 1.0 + clamped_feature = max(0.0, min(1.0, feature_value)) # Clamp to [0, 1] + base_scale = 0.5 + (clamped_feature * strength) # Center around 0.5 for more dynamic range + scale = max(0.1, min(2.0, base_scale)) # Wider scale range + print(f"Absolute scale: clamp(0.5 + ({feature_value:.4f} * {strength:.4f})) = {scale:.4f}") + + # Get attention precision from layer if available + attn_precision = None + if hasattr(layer, 'attn_precision'): + attn_precision = layer.attn_precision + print(f"Using attn_precision: {attn_precision}") + + # Apply scaling based on selected mode with improved stability + print(f"Applying {scaling_mode} scaling:") + if scaling_mode == "K+mean(V) w/ C penalty": + # Use sqrt for gentler context penalty + context_size = float(k.shape[2]) + scaling = math.sqrt(context_size / 1280.0) # Base size of 1280 for reference + scale = scale * (scaling * 0.75 + 0.25) # Blend with identity to prevent extreme scaling + print(f"Scale after context penalty: {scale:.4f}") + k = k * scale + v_mean = torch.mean(v, dim=1, keepdim=True) + v = v + (v_mean * (scale - 1.0)) # Removed the 0.5 reduction factor + elif scaling_mode == "K+V": + k = k * scale + v = v * scale + elif scaling_mode == "K+V w/ C penalty": + # Use sqrt for gentler context penalty + context_size = float(k.shape[2]) + scaling = math.sqrt(context_size / 1280.0) # Base size of 1280 for reference + scale = scale * (scaling * 0.75 + 0.25) # Blend with identity to prevent extreme scaling + print(f"Scale after context penalty: {scale:.4f}") + k = k * scale + v = v * scale + else: # "V only" + v = v * scale + + # Log the effect of modifications + print(f"K change: mean diff = {(k - k_orig).abs().mean().item():.4f}") + print(f"V change: mean diff = {(v - v_orig).abs().mean().item():.4f}") + + # Return attention result + return optimized_attention(q, k, v, extra_options["n_heads"]) + + # Get target layers to patch + target_layers = get_target_layers(m) + + # Apply patches to target layers + for layer_name, layer in target_layers: + original_forward = layer.forward + def make_patch(orig_forward): + def patched_forward(x, context=None, value=None, mask=None): + # Get transformer options from x if available + transformer_options = {} + if hasattr(x, 'transformer_options'): + transformer_options = x.transformer_options + + print("\n=== Debug: Tensor Shapes ===") + print(f"Input x shape: {x.shape}") + if context is not None: + print(f"Input context shape: {context.shape}") + if value is not None: + print(f"Input value shape: {value.shape}") + + # Store original input dimensions and tensor + original_dim = x.shape[-1] + x_orig = x + needs_projection = auto_projection and original_dim != layer.to_q.in_features + + # Handle spatial tensor reshaping + if len(x.shape) == 4: + b, c, h, w = x.shape + print(f"Reshaping spatial tensor - Original: {x.shape}") + x = x.movedim(1, 3).flatten(1, 2) # (b, h, w, c) -> (b, h*w, c) + print(f"After reshape: {x.shape}") + if context is not None and len(context.shape) == 4: + print(f"Reshaping context - Original: {context.shape}") + context = context.movedim(1, 3).flatten(1, 2) + print(f"After reshape: {context.shape}") + if value is not None and len(value.shape) == 4: + print(f"Reshaping value - Original: {value.shape}") + value = value.movedim(1, 3).flatten(1, 2) + print(f"After reshape: {value.shape}") + + # Handle input dimension mismatch before q projection + if needs_projection: + print(f"\nInput dimension mismatch for Q projection: {x.shape[-1]} vs {layer.to_q.in_features}") + proj_x = create_projection_layer(x.shape[-1], layer.to_q.in_features, f"x_proj_{x.shape[-1]}_{layer.to_q.in_features}") + x_projected = proj_x(x) + print(f"X shape after projection: {x_projected.shape}") + else: + x_projected = x + + print("\nProjecting q...") + q = layer.to_q(x_projected) + print(f"q shape after projection: {q.shape}") + + context = default(context, x_projected) + # Handle context dimension mismatch before k projection + if auto_projection and context.shape[-1] != layer.to_k.in_features: + print(f"\nContext dimension mismatch for K projection: {context.shape[-1]} vs {layer.to_k.in_features}") + proj_context = create_projection_layer(context.shape[-1], layer.to_k.in_features, f"context_proj_{context.shape[-1]}_{layer.to_k.in_features}") + context = proj_context(context) + print(f"Context shape after projection: {context.shape}") + + print(f"\nContext shape before k projection: {context.shape}") + k = layer.to_k(context) + print(f"k shape after projection: {k.shape}") + + if value is not None: + # Handle value dimension mismatch before v projection + if auto_projection and value.shape[-1] != layer.to_v.in_features: + print(f"\nValue dimension mismatch for V projection: {value.shape[-1]} vs {layer.to_v.in_features}") + proj_value = create_projection_layer(value.shape[-1], layer.to_v.in_features, f"value_proj_{value.shape[-1]}_{layer.to_v.in_features}") + value = proj_value(value) + print(f"Value shape after projection: {value.shape}") + + print(f"\nValue shape before v projection: {value.shape}") + v = layer.to_v(value) + else: + print(f"\nUsing context for v projection: {context.shape}") + v = layer.to_v(context) + print(f"v shape after projection: {v.shape}") + + # Apply our custom attention + if mask is None: + extra_options = { + "n_heads": layer.heads, + "sigmas": transformer_options.get("sigmas", None) + } + print("\n=== Calling flex_attention ===") + print(f"q: {q.shape}, k: {k.shape}, v: {v.shape}") + print(f"n_heads: {extra_options['n_heads']}") + out = flex_attention(q, k, v, extra_options) + print(f"flex_attention output shape: {out.shape}") + else: + print("\n=== Using original forward (masked) ===") + return orig_forward(x, context, value, mask) + + print("\n=== Output Processing ===") + print(f"Shape before output projection: {out.shape}") + out = layer.to_out(out) + print(f"Shape after output projection: {out.shape}") + + # Project output back to original dimension if needed + if needs_projection: + print(f"\nProjecting output back to original dimension: {out.shape[-1]} -> {original_dim}") + proj_out = create_projection_layer(out.shape[-1], original_dim, f"out_proj_{out.shape[-1]}_{original_dim}") + out = proj_out(out) + print(f"Final output shape: {out.shape}") + + # Reshape back to spatial if needed + if len(x.shape) == 4: + print(f"\nReshaping back to spatial - Before: {out.shape}") + out = out.view(b, h, w, -1).movedim(3, 1) # (b, h*w, c) -> (b, c, h, w) + print(f"After spatial reshape: {out.shape}") + + print("=======================================") + # Apply residual connection in original space + return x_orig + out + return patched_forward + + layer.forward = make_patch(original_forward) + + return (m,) + + @classmethod + def IS_CHANGED(cls, model, feature, **kwargs): + """Track model and feature changes""" + return float(feature.get_hash() + hash(model)) \ No newline at end of file diff --git a/nodes/preprocessors/pose.py b/nodes/preprocessors/pose.py index 61241ab..3e44e15 100644 --- a/nodes/preprocessors/pose.py +++ b/nodes/preprocessors/pose.py @@ -1,16 +1,18 @@ import numpy as np from ... import RyanOnTheInside from comfy.utils import ProgressBar - -class PoseInterpolator(RyanOnTheInside): +from ...tooltips import apply_tooltips +from ... import ProgressMixin +@apply_tooltips +class PoseInterpolator(ProgressMixin): @classmethod + def INPUT_TYPES(cls): return { "required": { "pose_1": ("POSE_KEYPOINT",), "pose_2": ("POSE_KEYPOINT",), "feature": ("FEATURE",), - "feature_pipe": ("FEATURE_PIPE",), "strength": ("FLOAT", {"default": 1.0, "min": 0.0, "max": 1.0, "step": 0.01}), "interpolation_mode": (["Linear", "Spherical"], {"default": "Linear"}), "omit_missing_points": ("BOOLEAN", {"default": False}), @@ -19,12 +21,13 @@ def INPUT_TYPES(cls): RETURN_TYPES = ("POSE_KEYPOINT",) FUNCTION = "interpolate_poses" - CATEGORY = "RyanOnTheInside/Poses" + CATEGORY = "RyanOnTheInside/ExperimentalWIP" - def interpolate_poses(self, pose_1, pose_2, feature, feature_pipe, strength, interpolation_mode, omit_missing_points): + def interpolate_poses(self, pose_1, pose_2, feature, strength, interpolation_mode, omit_missing_points): print("Debug: Starting interpolate_poses method") - num_frames = feature_pipe.frame_count - self.progress_bar = ProgressBar(num_frames) + num_frames = feature.frame_count + self.start_progress(num_frames) + result_poses = [] @@ -47,11 +50,13 @@ def interpolate_poses(self, pose_1, pose_2, feature, feature_pipe, strength, int interpolated_people.append(interpolated_person) result_poses.append({'people': interpolated_people, 'canvas_height': pose_data_1['canvas_height'], 'canvas_width': pose_data_1['canvas_width']}) - self.progress_bar.update(1) + self.update_progress(1) - self.progress_bar = None + + self.end_progress() return (result_poses,) + def match_poses(self, start_poses, end_poses): pose_count = min(len(start_poses), len(end_poses)) pose_matches_final = [] diff --git a/nodes/utility_nodes.py b/nodes/utility_nodes.py index f84b411..f9ba36f 100644 --- a/nodes/utility_nodes.py +++ b/nodes/utility_nodes.py @@ -3,27 +3,30 @@ import torchvision from .. import RyanOnTheInside from abc import ABC +from ..tooltips import apply_tooltips class UtilityNode(RyanOnTheInside, ABC): + #NOTE: for forward compatibility CATEGORY="RyanOnTheInside/Utility" +class BatchUtilityNode(UtilityNode): + #NOTE: for forward compatibility + CATEGORY= f"{UtilityNode.CATEGORY}/Batches" -class ImageIntervalSelect(UtilityNode): +@apply_tooltips +class ImageIntervalSelect(BatchUtilityNode): @classmethod def INPUT_TYPES(cls): return { "required": { "image": ("IMAGE",), - "interval": ("FLOAT", {"default": 1, "min": 1, "max": 100000, "step": 1}), - "start_at": ("FLOAT", {"default": 0, "min": 0, "max": 100000, "step": 1}), - "end_at": ("FLOAT", {"default": 0, "min": 0, "max": 100000, "step": 1}), + "interval": ("INT", {"default": 1, "min": 1, "max": 100000, "step": 1}), + "start_at": ("INT", {"default": 0, "min": 0, "max": 100000, "step": 1}), + "end_at": ("INT", {"default": 0, "min": 0, "max": 100000, "step": 1}), }, } def select_interval(self, image, interval=1, start_at=0, end_at=0): - interval = int(interval) - start_at = int(start_at) - end_at = int(end_at) # Set default for end_at if it is None if end_at == 0: end_at = len(image) @@ -39,8 +42,9 @@ def select_interval(self, image, interval=1, start_at=0, end_at=0): RETURN_TYPES = ("IMAGE",) FUNCTION = "select_interval" -#NOTE eh -class ImageIntervalSelectPercentage(UtilityNode): +#NOTE eh FIX MEH +@apply_tooltips +class ImageIntervalSelectPercentage(BatchUtilityNode): @classmethod def INPUT_TYPES(cls): return { @@ -69,7 +73,8 @@ def select_percentage_interval(self, image, interval_percentage=10, start_percen RETURN_TYPES = ("IMAGE",) FUNCTION = "select_percentage_interval" -class ImageChunks(UtilityNode): +@apply_tooltips +class ImageChunks(BatchUtilityNode): @classmethod def INPUT_TYPES(cls): return { @@ -98,7 +103,8 @@ def concatenate_images_into_grid(self, image, padding=0, normalize=False, scale_ FUNCTION = "concatenate_images_into_grid" #TODO inherit from ImageChunk reuse -class VideoChunks(UtilityNode): +@apply_tooltips +class VideoChunks(BatchUtilityNode): @classmethod def INPUT_TYPES(cls): return { @@ -141,37 +147,8 @@ def chunk_images_into_grids(self, image, chunk_size=4, padding=2, normalize=Fals RETURN_TYPES = ("IMAGE",) FUNCTION = "chunk_images_into_grids" -class Image_Shuffle(UtilityNode): - @classmethod - def INPUT_TYPES(cls): - return { - "required": { - "image": ("IMAGE",), - "shuffle_size": ("INT", {"default": 4, "min": 1}) - }, - } - - def shuffle_images(self, image, shuffle_size=4): - # Ensure shuffle_size is within the bounds of the image batch - shuffle_size = min(shuffle_size, image.shape[0]) - - # Shuffle the images in groups of shuffle_size - shuffled_images = [] - for i in range(0, len(image), shuffle_size): - chunk = image[i:i+shuffle_size] - indices = torch.randperm(chunk.shape[0]) - shuffled_chunk = chunk[indices] - shuffled_images.append(shuffled_chunk) - - # Concatenate all shuffled chunks back into a single tensor - shuffled_images = torch.cat(shuffled_images, dim=0) - - return (shuffled_images,) - - RETURN_TYPES = ("IMAGE",) - FUNCTION = "shuffle_images" - -class Image_Shuffle(UtilityNode): +@apply_tooltips +class Image_Shuffle(BatchUtilityNode): @classmethod def INPUT_TYPES(cls): return { @@ -201,6 +178,7 @@ def shuffle_images(self, image, shuffle_size=4): RETURN_TYPES = ("IMAGE",) FUNCTION = "shuffle_images" +@apply_tooltips class ImageDifference(UtilityNode): @classmethod def INPUT_TYPES(cls): @@ -227,6 +205,7 @@ def compute_difference(self, image): RETURN_TYPES = ("IMAGE",) FUNCTION = "compute_difference" +@apply_tooltips class SwapDevice(UtilityNode): @classmethod def INPUT_TYPES(cls): diff --git a/nodes/video/flex_video.py b/nodes/video/flex_video.py index 64f18fa..874f00c 100644 --- a/nodes/video/flex_video.py +++ b/nodes/video/flex_video.py @@ -1,70 +1,79 @@ import numpy as np import torch from .video_base import FlexVideoBase -from ..flex.feature_pipe import FeaturePipe from scipy.interpolate import interp1d from ..masks.mask_utils import calculate_optical_flow import cv2 import comfy.model_management as mm +from ...tooltips import apply_tooltips from .flex_video_speed import FlexVideoSpeed +@apply_tooltips class FlexVideoDirection(FlexVideoBase): @classmethod def get_modifiable_params(cls): return ["direction"] - @classmethod - def INPUT_TYPES(cls): - inputs = super().INPUT_TYPES() - # Make feature_pipe optional - inputs.setdefault("optional", {}) - inputs["optional"].update({ - "feature_pipe": ("FEATURE_PIPE",), - }) - return inputs - - def apply_effect_internal( self, video: np.ndarray, feature_values: np.ndarray, - feature_pipe=None, **kwargs, ) -> np.ndarray: - num_frames = video.shape[0] + num_output_frames = len(feature_values) + num_input_frames = video.shape[0] + + # Ensure strength and threshold arrays match feature length + strength = kwargs.get('strength') + feature_threshold = kwargs.get('feature_threshold') + + # If arrays are wrong length (because they were based on video length), resize them + if len(strength) != num_output_frames: + if len(strength) == 1: # If it's a single value expanded + strength = np.full(num_output_frames, strength[0]) + else: # If it's a different length array + strength = np.broadcast_to(strength, (num_output_frames,)) + + if len(feature_threshold) != num_output_frames: + if len(feature_threshold) == 1: + feature_threshold = np.full(num_output_frames, feature_threshold[0]) + else: + feature_threshold = np.broadcast_to(feature_threshold, (num_output_frames,)) - # Use the frame count from the feature pipe if provided, otherwise fallback to the input video length - if feature_pipe is not None: - target_frame_count = feature_pipe.frame_count + # Normalize feature values to 0-1 + feature_min = np.min(feature_values) + feature_max = np.max(feature_values) + if feature_max > feature_min: + normalized_features = (feature_values - feature_min) / (feature_max - feature_min) + normalized_threshold = (feature_threshold - feature_min) / (feature_max - feature_min) else: - target_frame_count = num_frames - - # Normalize feature values to the range [0, 1] over the length of the feature pipe (or input video) - normalized_features = np.clip(feature_values, 0.0, 1.0) - - # Map feature values to frame indices in the input video - frame_indices = (normalized_features * (num_frames - 1)).astype(int) + normalized_features = np.full_like(feature_values, 0.5) + normalized_threshold = feature_threshold - # Ensure frame indices stay within valid bounds - frame_indices = np.clip(frame_indices, 0, num_frames - 1) - - # If a feature pipe is provided, the output video should be the length of the feature pipe - if target_frame_count != num_frames: - # Adjust the output video length to match the feature pipe length - # Select frames based on the feature value mapping - frame_indices = np.interp( - np.linspace(0, 1, target_frame_count), - np.linspace(0, 1, len(feature_values)), - frame_indices - ).astype(int) - - # Create the processed video by selecting frames based on the mapped indices + # Create output video array matching feature length + processed_video = np.empty((num_output_frames, *video.shape[1:]), dtype=video.dtype) + + # Handle thresholding + above_threshold = normalized_features >= normalized_threshold + + # For frames below threshold, use first frame + frame_positions = np.where( + above_threshold, + normalized_features * (num_input_frames - 1) * strength, + np.zeros_like(normalized_features) + ) + + # Convert to integer indices with clipping + frame_indices = np.clip(frame_positions.astype(int), 0, num_input_frames - 1) + + # Create the output video by sampling from input video processed_video = video[frame_indices] return processed_video +@apply_tooltips class FlexVideoSeek(FlexVideoBase): @classmethod @@ -92,31 +101,47 @@ def apply_effect_internal( ) -> np.ndarray: num_frames = video.shape[0] processed_video = np.empty_like(video) - strength = kwargs.get('strength', 1.0) + strength = kwargs.get('strength', np.ones(num_frames)) + feature_threshold = kwargs.get('feature_threshold', np.zeros(num_frames)) seek_speed = 1.0 # Reverse the video if the reverse parameter is True if reverse: video = video[::-1] - # Clip feature values between 0 and 1 - feature_values_clipped = np.clip(feature_values, 0.0, 1.0) + # Create a mask for values above threshold (element-wise comparison) + above_threshold = feature_values >= feature_threshold + + # For values below threshold, we'll use 0 speed (stay on current frame) + # For values above threshold, we'll use the normalized feature value + feature_values_masked = np.where(above_threshold, + np.clip(feature_values, 0.0, 1.0), + 0.0) - # Apply seek_speed to feature values - adjusted_speeds = feature_values_clipped * seek_speed * strength + # Apply seek_speed and strength (element-wise multiplication) + adjusted_speeds = feature_values_masked * seek_speed * strength - # Ensure the total adjusted speed matches the number of frames + # If all speeds are 0 (all below threshold), use uniform movement total_speed = np.sum(adjusted_speeds) if total_speed == 0: adjusted_speeds = np.ones(num_frames) else: adjusted_speeds = adjusted_speeds / total_speed * num_frames - # Calculate cumulative frame positions + # Calculate cumulative positions cumulative_positions = np.cumsum(adjusted_speeds) - - # Map frame indices based on cumulative positions - frame_indices = np.clip(cumulative_positions.astype(int), 0, num_frames - 1) + + # For frames where feature is below threshold, maintain previous frame + frame_indices = np.zeros(num_frames, dtype=int) + last_valid_idx = 0 + + for i in range(num_frames): + if above_threshold[i]: + frame_idx = int(np.clip(cumulative_positions[i], 0, num_frames - 1)) + last_valid_idx = frame_idx + else: + frame_idx = last_valid_idx + frame_indices[i] = frame_idx # Create the processed video by selecting frames based on the mapped indices for idx in range(num_frames): @@ -125,6 +150,7 @@ def apply_effect_internal( return processed_video +@apply_tooltips class FlexVideoFrameBlend(FlexVideoBase): @classmethod diff --git a/nodes/video/flex_video_speed.py b/nodes/video/flex_video_speed.py index b15e977..7e3fca8 100644 --- a/nodes/video/flex_video_speed.py +++ b/nodes/video/flex_video_speed.py @@ -8,11 +8,11 @@ from .vfi_utils import preprocess_frames, postprocess_frames from .video_base import FlexVideoBase import numpy as np -from ..flex.feature_pipe import FeaturePipe from scipy.interpolate import interp1d from ..masks.mask_utils import calculate_optical_flow import cv2 import comfy.model_management as mm +from ...tooltips import apply_tooltips BASE_MODEL_DOWNLOAD_URLS = [ "https://github.com/styler00dollar/VSGAN-tensorrt-docker/releases/download/models/", @@ -25,13 +25,15 @@ "rife49.pth": "4.7", } +@apply_tooltips class FlexVideoSpeed(FlexVideoBase): @classmethod def INPUT_TYPES(cls): + parent_inputs = super().INPUT_TYPES() return { + **parent_inputs, # Keep all parent inputs including optional "required": { - **super().INPUT_TYPES()["required"], - "feature_pipe": ("FEATURE_PIPE",), + **parent_inputs["required"], "speed_factor": ("FLOAT", {"default": 1.0, "min": -100.0, "max": 100.0, "step": 0.1}), "interpolation_mode": (["none", "linear", "Farneback", "rife47", "rife49"],), "fast_mode": ("BOOLEAN", {"default": True}), @@ -44,26 +46,30 @@ def INPUT_TYPES(cls): def get_modifiable_params(cls): return ["speed_factor"] - def apply_effect_internal(self, video: np.ndarray, feature_values: np.ndarray, feature_pipe: FeaturePipe, - speed_factor: float, interpolation_mode: str, fast_mode: bool, ensemble: bool, - scale_factor: float, **kwargs): + def apply_effect_internal(self, video: np.ndarray, feature_values: np.ndarray, + speed_factor: np.ndarray, interpolation_mode: str, fast_mode: bool, ensemble: bool, + scale_factor: float, opt_feature=None, **kwargs): num_frames = video.shape[0] - total_duration = feature_pipe.frame_count / feature_pipe.frame_rate - frame_rate = feature_pipe.frame_rate + frame_rate = opt_feature.frame_rate + total_duration = num_frames / frame_rate # Ensure feature_values is the same length as video frames if len(feature_values) != num_frames: raise ValueError("feature_values length must match the number of video frames") - # Adjust feature values based on speed_factor - if speed_factor >= 0: - adjusted_feature_values = 1 - feature_values - else: - adjusted_feature_values = feature_values + # Get threshold from kwargs + feature_threshold = kwargs.get('feature_threshold', 0.0) + + # Apply threshold - zero out values below threshold + above_threshold = feature_values >= feature_threshold + feature_values = np.where(above_threshold, feature_values, 0.0) + + # Adjust feature values based on speed_factor (element-wise comparison) + adjusted_feature_values = np.where(speed_factor >= 0, 1 - feature_values, feature_values) # Calculate frame durations based on adjusted feature values and speed factor base_duration = 1 / frame_rate - adjusted_frame_durations = base_duration + (adjusted_feature_values * abs(speed_factor) * base_duration) + adjusted_frame_durations = base_duration + (adjusted_feature_values * np.abs(speed_factor) * base_duration) cumulative_times = np.cumsum(adjusted_frame_durations) @@ -71,7 +77,7 @@ def apply_effect_internal(self, video: np.ndarray, feature_values: np.ndarray, f normalized_cumulative_times = cumulative_times * (total_duration / cumulative_times[-1]) # Create an array of the target timestamps that the final video must have - target_timestamps = np.linspace(0, total_duration, feature_pipe.frame_count) + target_timestamps = np.linspace(0, total_duration, num_frames) # Interpolate the adjusted frames based on the normalized timestamps frame_indices = np.interp(target_timestamps, normalized_cumulative_times, np.arange(num_frames)) diff --git a/nodes/video/video_base.py b/nodes/video/video_base.py index 31c4630..aab6f5f 100644 --- a/nodes/video/video_base.py +++ b/nodes/video/video_base.py @@ -1,79 +1,93 @@ import torch import numpy as np from abc import ABC, abstractmethod -from ... import RyanOnTheInside +from ..flex.flex_base import FlexBase from comfy.utils import ProgressBar +from ...tooltips import apply_tooltips -class FlexVideoBase(RyanOnTheInside, ABC): +#TODO: maybe implement a batch version of flex base when the time comes. Currently, this differs significantly from its siblings +@apply_tooltips +class FlexVideoBase(FlexBase, ABC): @classmethod def INPUT_TYPES(cls): return { + **super().INPUT_TYPES(), "required": { + **super().INPUT_TYPES()["required"], "images": ("IMAGE",), - "feature": ("FEATURE",), - "strength": ("FLOAT", {"default": 1.0, "min": 0.0, "max": 2.0, "step": 0.01}), - "feature_mode": (["relative", "absolute"], {"default": "relative"}), - "feature_param": (cls.get_modifiable_params(),), - "feature_threshold": ("FLOAT", {"default": 0.0, "min": 0.0, "max": 1.0, "step": 0.01}), - }, - "optional": { - "feature_pipe": ("FEATURE_PIPE",) } } - CATEGORY = "RyanOnTheInside/FlexVideo" + CATEGORY = "RyanOnTheInside/FlexFeatures/Targets/Video" RETURN_TYPES = ("IMAGE",) FUNCTION = "apply_effect" - - def __init__(self): - self.progress_bar = None - def start_progress(self, total_steps, desc="Processing"): - self.progress_bar = ProgressBar(total_steps) - - def update_progress(self): - if self.progress_bar: - self.progress_bar.update(1) + def apply_effect(self, images, strength, feature_mode, feature_threshold, feature_param, opt_feature=None, **kwargs): + images_np = images.cpu().numpy() + + # Get feature length first + if opt_feature is not None: + num_frames = opt_feature.frame_count + else: + num_frames = images_np.shape[0] # Fallback to video length if no feature - def end_progress(self): - self.progress_bar = None + self.start_progress(num_frames, desc=f"Applying {self.__class__.__name__}") - @classmethod - @abstractmethod - def get_modifiable_params(cls): - """Return a list of parameter names that can be modulated.""" - return [] + # Handle non-array parameters directly + processed_kwargs = {k: v for k, v in kwargs.items() + if not isinstance(v, (list, tuple, np.ndarray))} + + # Process parameters frame by frame and collect feature values + feature_values = [] + for i in range(num_frames): # Now using feature length! + feature_value = self.get_feature_value(i, opt_feature) + feature_value = 0.5 if feature_value is None else feature_value + feature_values.append(feature_value) - #TODO implement parame name - def modulate_param(self, param_name, param_value, feature_value, strength, mode): - if mode == "relative": - # Adjust parameter relative to its value and the feature - return param_value * (1 + (feature_value - 0.5) * 2 * strength) - else: # absolute - # Adjust parameter directly based on the feature - return param_value * feature_value * strength + # Process parameters + frame_kwargs = self.process_parameters( + frame_index=i, + feature_value=feature_value, + feature_threshold=feature_threshold, + strength=strength, + feature_param=feature_param, + feature_mode=feature_mode, + **kwargs + ) + # Store modulated values and array values + for k, v in frame_kwargs.items(): + if k not in processed_kwargs: + processed_kwargs[k] = [] + if isinstance(processed_kwargs[k], list): + processed_kwargs[k].append(v) - def apply_effect(self, images, feature, strength, feature_mode, feature_threshold, feature_pipe=None, **kwargs): - images_np = images.cpu().numpy() # Convert tensor to numpy array - num_frames = images_np.shape[0] + # Convert collected values to arrays + feature_values = np.array(feature_values) + for k, v in processed_kwargs.items(): + if isinstance(v, list): + processed_kwargs[k] = np.array(v) - target_frame_count = feature_pipe.frame_count if feature_pipe is not None else num_frames - feature_values = np.array([feature.get_value_at_frame(i) for i in range(target_frame_count)]) - - # Apply threshold to feature values - feature_values[feature_values < feature_threshold] = 0 + # Convert strength and feature_threshold to arrays right before passing to child + strength = np.asarray(strength) + feature_threshold = np.asarray(feature_threshold) + if strength.ndim == 0: + strength = np.full(num_frames, strength) + if feature_threshold.ndim == 0: + feature_threshold = np.full(num_frames, feature_threshold) + processed_kwargs['strength'] = strength + processed_kwargs['feature_threshold'] = feature_threshold - # Modulate parameters based on the feature values - for param_name in self.get_modifiable_params(): - if param_name in kwargs: - param_value = kwargs[param_name] - avg_feature_value = np.mean(feature_values) - kwargs[param_name] = self.modulate_param(param_name, param_value, avg_feature_value, strength, feature_mode) + # Let child classes handle the video processing and threshold checks + processed_video = self.apply_effect_internal( + images_np, + feature_values=feature_values, + opt_feature=opt_feature, + **processed_kwargs + ) - # Apply the effect to the entire video - processed_video = self.apply_effect_internal(images_np, feature_values=feature_values, feature_pipe=feature_pipe, **kwargs) + self.end_progress() - # Convert the numpy array back to a tensor and ensure it's in BHWC format + # Convert to tensor and ensure BHWC format result_tensor = torch.from_numpy(processed_video).float() if result_tensor.shape[1] == 3: # If in BCHW format, convert to BHWC result_tensor = result_tensor.permute(0, 2, 3, 1) diff --git a/pyproject.toml b/pyproject.toml index 9ce847c..525969b 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,9 +1,9 @@ [project] name = "comfyui_ryanonyheinside" description = "Custom nodes introducing particle simulations, optical flow, audio manipulation & reactivity, and temporal masks" -version = "1.13.2" +version = "2.0.0" license = {file = "LICENSE"} -dependencies = ["pygame","opencv-python==4.10.0","scipy","torchaudio", "pillow","librosa==0.10.2","pymunk==6.8.1","matplotlib","openunmix","mido"] +dependencies = ["pygame","opencv-python==4.10.0","scipy","torchaudio", "pillow","librosa==0.10.2","pymunk==6.8.1","matplotlib","openunmix","mido","scikit-image"] [project.urls] Repository = "https://github.com/ryanontheinside/ComfyUI_RyanOnTheInside" diff --git a/readme.md b/readme.md index 7771295..26f42e2 100644 --- a/readme.md +++ b/readme.md @@ -1,5 +1,6 @@ # ComfyUI RyanOnTheInside Node Pack +## 🚨 Important: [Version 2.0 Update](#-important-version-20-update--1) 🚨 ## Overview ### These nodes react to **everything**, including audio. @@ -11,11 +12,49 @@ - 🎵 **Audio & MIDI Processing**: Separate instruments and create audio-reactive visuals - 🎆 **Particle Systems**: Create mesmerizing, fluid-like effects - 🌊 **Optical Flow**: Generate masks based on motion in videos -- ⏳ **Temporal Effects**: Apply time-based transformations to masks and images - 🌊 **DEPTH Flow** 🌊: Use flex features to control depthflow nodes, adding parallax animations to your workflows! -- 🎭 **AdvancedLivePortrait** 🎭: Use flex features to control facial animation expressions! +- 👤 **AdvancedLivePortrait** 👤: Use flex features to control facial animation expressions! +- 🎨 **Advanced Controlnet** 🎨: Direct integration with ComfyUI-AdvancedControlnet! +- 🎭 **AnimateDiff** 🎭: Direct integration with ComfyUI-AnimateDiff-Evolved! -### **Developers**: if you're interested in extending the flex features into your own nodes, check out the [base-class-refactor](../../tree/base-class-refactor) branch and feel free to reach out. + + + + +### 🚨 Important: Version 2.0 Update 🚨 + +This repository has been updated to Version 2.0! After careful consideration, I decided that a complete update was better than maintaining legacy support indefinitely. This new version brings significant improvements while maintaining all existing functionality. This update was done with user experience, extensibility, and functionality in mind. + +### 🎉 What's New in V2 +- **License**: This project is now licensed under the MIT License. +- **EVERYTHING reacts to EVERYTHING:** Now you can modulate ALL parameters of ALL Flex nodes! Possibilities increased by multiple orders of magnitude. +- **Optional Feature Inputs**: Feature inputs are now optional! This means these nodes double as a powerful suite for image, mask, and video manipulation even without reactivity! +- **More Intuitive**: Redesigned with user experience in mind. Less noodles, more intuitive connections. + +- **Help**: Takes full advantage of ComfyUI's tooltip system. +- **Manual Feature Creation**: New interface for drawing/creating features manually - far more powerful than it might seem! +- **Text as Features**: New integration with Open AI Whisper allows text to be used as a feature source, with a fully modular trigger system +- **Enhanced External Integration**: Deeper compatibility with external node packs +- **Image Improvements**: Major improvements to FlexImage nodes. One might say they are more than useful now. +- **Mask Improvements**: Major improvements to FlexMask nodes. +- **Performance Improvements**: Major performance improvements in many nodes. More to follow. +- **Feature Modulation**: More robust and feature-rich modulation system. +- **And much more!** + + +### ⚠️ Breaking Changes Notice +Due to ComfyUI's workflow loading mechanism, **existing workflows using these nodes ~~may~~ *will* break after updating**. I did consider this carefully, as I have yet to introduce breaking changes to this node system, but this extensive update neccesitated a complete overhaul. There will not be a version 3. Rather, version 2 will be updated as needed. I have taken the time to update the most relevant example workflows to version 2. + +If you need to run an older workflow, you can revert to the previous version of these nodes by using the Manager, or by running this command in your ComfyUI_RyanOnTheInside directory: + +```bash +git checkout dab96492ac7d906368ac9c7a17cb0dbd670923d9 +``` + +To return to the latest version later, use: +```bash +git checkout main +```