diff --git a/__init__.py b/__init__.py index 8774121..a508701 100644 --- a/__init__.py +++ b/__init__.py @@ -1,25 +1,34 @@ # MBM's Music Visualizer # Imports -from .mbmMusicVisualizer import MusicVisualizer +from .mbmAudioFeatureCalculator import AudioFeatureCalculator from .mbmAudioLoader import AudioLoader +from .mbmMusicVisualizer import MusicVisualizer from .mbmPromptSequence import PromptSequenceBuilder +from .mbmPromptSequenceInterpolator import PromptSequenceInterpolator +from .mbmImageConcat import ImageConcatenator # A dictionary that contains all nodes you want to export with their names # NOTE: names should be globally unique NODE_CLASS_MAPPINGS = { # "id": Class - "mbmMusicVisuzalizer": MusicVisualizer, + "mbmAudioFeatureCalculator": AudioFeatureCalculator, "mbmAudioLoader": AudioLoader, - "mbmPromptSequenceBuilder": PromptSequenceBuilder + "mbmMusicVisuzalizer": MusicVisualizer, + "mbmPromptSequenceBuilder": PromptSequenceBuilder, + "mbmPromptSequenceInterpolator": PromptSequenceInterpolator, + "mbmImageConcat": ImageConcatenator } # A dictionary that contains the friendly/humanly readable titles for the nodes NODE_DISPLAY_NAME_MAPPINGS = { # "id": "readable" - "mbmMusicVisuzalizer": "Music Visualizer", + "mbmAudioFeatureCalculator": "Audio Feature Calculator", "mbmAudioLoader": "Audio Loader", - "mbmPromptSequenceBuilder": "Prompt Sequence Builder" + "mbmMusicVisuzalizer": "Music Visualizer", + "mbmPromptSequenceBuilder": "Prompt Sequence Builder", + "mbmPromptSequenceInterpolator": "Prompt Sequence Interpolator", + "mbmImageConcat": "Image Concatenator" } # Export diff --git a/mbmImageConcat.py b/mbmImageConcat.py new file mode 100644 index 0000000..9d7bf24 --- /dev/null +++ b/mbmImageConcat.py @@ -0,0 +1,33 @@ +# MBM's Music Visualizer: Image Concatenator +# Concatenates ComfyUI image set tensors into a single set tensor. + +# Imports +import torch + +# Classes +class ImageConcatenator: + """ + Concatenates ComfyUI image set tensors into a single set tensor. + """ + # Class Constants + RETURN_TYPES = ("IMAGE", ) + RETURN_NAMES = ("IMAGES", ) + FUNCTION = "process" + CATEGORY = "MBMnodes/Images" + + # Constructor + def __init__(self): + pass + + # ComfyUI Functions + @classmethod + def INPUT_TYPES(s): + return { + "required": { + "set_1": ("IMAGE", ), + "set_2": ("IMAGE", ) + } + } + + def process(self, set_1: torch.Tensor, set_2: torch.Tensor) -> torch.Tensor: + return (torch.cat((set_1, set_2), dim=0), )