Files
2024-07-04 11:34:32 +08:00

3.3 KiB

Documentation

SoundReactive节点专门用于处理音频输入,并根据声音水平调整其行为。它能动态响应特定频率范围内声音强度的变化,并通过声音水平、频率范围和归一化等参数提供自定义选项。该节点特别适用于创建实时的音频反应式可视化或效果。

Input types

Required

  • sound_level
    • 指定要处理的当前声音水平。它通过根据乘数和归一化设置进行缩放来影响节点的输出,直接影响对音频输入的动态响应。
    • Comfy dtype: FLOAT
    • Python dtype: float
  • start_range_hz
    • 定义感兴趣频率范围的下限。该参数有助于将节点的敏感度集中在音频频谱的特定部分。
    • Comfy dtype: INT
    • Python dtype: int
  • end_range_hz
    • 设置要考虑的频率范围的上限。它与start_range_hz配合使用,以微调节点对所需频带的反应性。
    • Comfy dtype: INT
    • Python dtype: int
  • multiplier
    • 对声音水平应用缩放因子,允许更精细地控制节点对音频输入的响应性。
    • Comfy dtype: FLOAT
    • Python dtype: float
  • smoothing_factor
    • 决定应用于声音水平的平滑程度,有助于创建更平滑的过渡和效果。
    • Comfy dtype: FLOAT
    • Python dtype: float
  • normalize
    • 启用或禁用声音水平的归一化,这可以标准化输入范围,以在不同音频源之间实现一致的处理。
    • Comfy dtype: BOOLEAN
    • Python dtype: bool

Output types

  • sound_level
    • 经过处理的声音水平,根据节点的参数进行调整。它反映了音频强度的动态变化,经过缩放和可选的归一化处理。
    • Comfy dtype: FLOAT
    • Python dtype: float
  • sound_level_int
    • 处理后声音水平的整数表示,为需要离散级别的场景提供简化或量化的输出。
    • Comfy dtype: INT
    • Python dtype: int

Usage tips

  • Infra type: CPU
  • Common nodes: unknown

Source code

class SoundReactive:
    @classmethod
    def INPUT_TYPES(s):
        return {"required": {  
            "sound_level": ("FLOAT", {"default": 1.0, "min": 0.0, "max": 99999, "step": 0.01}),
            "start_range_hz": ("INT", {"default": 150, "min": 0, "max": 9999, "step": 1}),
            "end_range_hz": ("INT", {"default": 2000, "min": 0, "max": 9999, "step": 1}),
            "multiplier": ("FLOAT", {"default": 1.0, "min": 0.01, "max": 99999, "step": 0.01}),
            "smoothing_factor": ("FLOAT", {"default": 0.5, "min": 0.0, "max": 1.0, "step": 0.01}),
            "normalize": ("BOOLEAN", {"default": False}),
            },
            }
    
    RETURN_TYPES = ("FLOAT","INT",)
    RETURN_NAMES =("sound_level", "sound_level_int",)
    FUNCTION = "react"
    CATEGORY = "KJNodes/audio"
    DESCRIPTION = """
Reacts to the sound level of the input.  
Uses your browsers sound input options and requires.  
Meant to be used with realtime diffusion with autoqueue.
"""
        
    def react(self, sound_level, start_range_hz, end_range_hz, smoothing_factor, multiplier, normalize):

        sound_level *= multiplier

        if normalize:
            sound_level /= 255

        sound_level_int = int(sound_level)
        return (sound_level, sound_level_int, )