From 3298298fd4ec90dd86ab184ab288a72228ed8b8e Mon Sep 17 00:00:00 2001 From: David Date: Fri, 8 Dec 2023 12:55:41 -0800 Subject: [PATCH] move sinusoidal nodes to own file --- nodes/__init__.py | 3 + nodes/core.py | 238 +---------------------------------------- nodes/sinusoidal.py | 251 ++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 255 insertions(+), 237 deletions(-) create mode 100644 nodes/sinusoidal.py diff --git a/nodes/__init__.py b/nodes/__init__.py index 6f0169a..604ba5b 100644 --- a/nodes/__init__.py +++ b/nodes/__init__.py @@ -3,6 +3,7 @@ from .core import NODE_CLASS_MAPPINGS, NODE_DISPLAY_NAME_MAPPINGS from .debug import NODE_CLASS_MAPPINGS as ncm0, NODE_DISPLAY_NAME_MAPPINGS as ndnm0 from .entangled import NODE_CLASS_MAPPINGS as ncm1, NODE_DISPLAY_NAME_MAPPINGS as ndnm1 from .schedule import NODE_CLASS_MAPPINGS as ncm2, NODE_DISPLAY_NAME_MAPPINGS as ndnm2 +from .sinusoidal import NODE_CLASS_MAPPINGS as ncm3, NODE_DISPLAY_NAME_MAPPINGS as ndnm3 # there's probably a cleaner, more-dummy-proof way to do this. @@ -10,9 +11,11 @@ from .schedule import NODE_CLASS_MAPPINGS as ncm2, NODE_DISPLAY_NAME_MAPPINGS as NODE_CLASS_MAPPINGS.update(ncm0) NODE_CLASS_MAPPINGS.update(ncm1) NODE_CLASS_MAPPINGS.update(ncm2) +NODE_CLASS_MAPPINGS.update(ncm3) NODE_DISPLAY_NAME_MAPPINGS.update(ndnm0) NODE_DISPLAY_NAME_MAPPINGS.update(ndnm1) NODE_DISPLAY_NAME_MAPPINGS.update(ndnm2) +NODE_DISPLAY_NAME_MAPPINGS.update(ndnm3) __all__ =["NODE_CLASS_MAPPINGS", "NODE_DISPLAY_NAME_MAPPINGS"] \ No newline at end of file diff --git a/nodes/core.py b/nodes/core.py index 8ab167e..7c7f965 100644 --- a/nodes/core.py +++ b/nodes/core.py @@ -372,233 +372,6 @@ class KfCurveConstant: ################################################################## -### Sinusoidal - -class KfSinusoidalWithFrequency: - CATEGORY = CATEGORY - FUNCTION = "main" - RETURN_TYPES = ("KEYFRAMED_CURVE", "SINUSOIDAL_CURVE") - - @classmethod - def INPUT_TYPES(s): - return { - "required": { - "frequency": ("FLOAT",{ - "default": 1/12, - "step": 0.01, - }), - "phase": ("FLOAT", { - "default": 0.0, - #"min": 0.0, - #"max": 6.28318530718, # 2*pi - "step": 0.1308996939, # pi/24 - }), - "amplitude": ("FLOAT",{ - "default": 1, - "step": 0.01, - }), - }, - } - - def main(self, frequency, phase, amplitude): - curve = kf.SinusoidalCurve(frequency=frequency, phase=phase, amplitude=amplitude) - return (curve, curve) - -class KfSinusoidalWithWavelength: - CATEGORY = CATEGORY - FUNCTION = "main" - RETURN_TYPES = ("KEYFRAMED_CURVE", "SINUSOIDAL_CURVE") - - @classmethod - def INPUT_TYPES(s): - return { - "required": { - "wavelength": ("FLOAT",{ - "default": 12, - "step": 0.5, - }), - "phase": ("FLOAT", { - "default": 0.0, - #"min": 0.0, - #"max": 6.28318530718, # 2*pi - "step": 0.1308996939, # pi/24 - }), - "amplitude": ("FLOAT",{ - "default": 1, - "step": 0.01, - }), - }, - } - - def main(self, wavelength, phase, amplitude): - curve = kf.SinusoidalCurve(wavelength=wavelength, phase=phase, amplitude=amplitude) - return (curve, curve) - - -### # ### # ### # ### # ### # ### # ### # ### # ### # - - -### # ### # ### # ### # ### # ### # ### # ### # ### # - -class KfSinusoidalAdjustWavelength: - CATEGORY = CATEGORY - FUNCTION = "main" - RETURN_TYPES = ("KEYFRAMED_CURVE", "SINUSOIDAL_CURVE") - - @classmethod - def INPUT_TYPES(s): - return { - "required": { - "curve": ("SINUSOIDAL_CURVE",{"forceInput": True,}), - "adjustment": ("FLOAT",{ - "default": 0.0, - "step": 0.5, - }), - }} - - def main(self, curve, adjustment): - wavelength, phase, amplitude = curve.wavelength, curve.phase, curve.amplitude - wavelength += adjustment - curve = kf.SinusoidalCurve(wavelength=wavelength, phase=phase, amplitude=amplitude) - return (curve, curve) - - -class KfSinusoidalAdjustPhase: - CATEGORY = CATEGORY - FUNCTION = "main" - RETURN_TYPES = ("KEYFRAMED_CURVE", "SINUSOIDAL_CURVE") - - @classmethod - def INPUT_TYPES(s): - return { - "required": { - "curve": ("SINUSOIDAL_CURVE",{"forceInput": True,}), - "adjustment": ("FLOAT", { - "default": 0.0, - "step": 0.1308996939, # pi/24 - }), - }} - - def main(self, curve, adjustment): - wavelength, phase, amplitude = curve.wavelength, curve.phase, curve.amplitude - phase += adjustment - curve = kf.SinusoidalCurve(wavelength=wavelength, phase=phase, amplitude=amplitude) - return (curve, curve) - - -class KfSinusoidalAdjustFrequency: - CATEGORY = CATEGORY - FUNCTION = "main" - RETURN_TYPES = ("KEYFRAMED_CURVE", "SINUSOIDAL_CURVE") - - @classmethod - def INPUT_TYPES(s): - return { - "required": { - "curve": ("SINUSOIDAL_CURVE",{"forceInput": True,}), - "adjustment": ("FLOAT",{ - "default": 0, - "step": 0.01, - }), - }} - - def main(self, curve, adjustment): - wavelength, phase, amplitude = curve.wavelength, curve.phase, curve.amplitude - frequency = 1/wavelength - frequency += adjustment - wavelength = 1/frequency - curve = kf.SinusoidalCurve(wavelength=wavelength, phase=phase, amplitude=amplitude) - return (curve, curve) - - -class KfSinusoidalAdjustAmplitude: - CATEGORY = CATEGORY - FUNCTION = "main" - RETURN_TYPES = ("KEYFRAMED_CURVE", "SINUSOIDAL_CURVE") - - @classmethod - def INPUT_TYPES(s): - return { - "required": { - "curve": ("SINUSOIDAL_CURVE",{"forceInput": True,}), - "adjustment": ("FLOAT",{ - "default": 0, - "step": 0.01, - }), - }} - - def main(self, curve, adjustment): - wavelength, phase, amplitude = curve.wavelength, curve.phase, curve.amplitude - amplitude += adjustment - curve = kf.SinusoidalCurve(wavelength=wavelength, phase=phase, amplitude=amplitude) - return (curve, curve) - - -### # ### # ### # ### # ### # ### # ### # ### # ### # - - -class KfSinusoidalGetWavelength: - CATEGORY = CATEGORY - FUNCTION = "main" - RETURN_TYPES = ("FLOAT",) - - @classmethod - def INPUT_TYPES(s): - return { - "required": { - "curve": ("SINUSOIDAL_CURVE",{"forceInput": True,}), - }} - - def main(self, curve): - return (curve.wavelength,) - - -class KfSinusoidalGetFrequency: - CATEGORY = CATEGORY - FUNCTION = "main" - RETURN_TYPES = ("FLOAT",) - - @classmethod - def INPUT_TYPES(s): - return { - "required": { - "curve": ("SINUSOIDAL_CURVE",{"forceInput": True,}), - }} - - def main(self, curve): - return (1/curve.wavelength,) - - -class KfSinusoidalGetPhase: - CATEGORY = CATEGORY - FUNCTION = "main" - RETURN_TYPES = ("FLOAT",) - - @classmethod - def INPUT_TYPES(s): - return { - "required": { - "curve": ("SINUSOIDAL_CURVE",{"forceInput": True,}), - }} - - def main(self, curve): - return (curve.phase,) - - -class KfSinusoidalGetAmplitude: - CATEGORY = CATEGORY - FUNCTION = "main" - RETURN_TYPES = ("FLOAT",) - - @classmethod - def INPUT_TYPES(s): - return { - "required": { - "curve": ("SINUSOIDAL_CURVE",{"forceInput": True,}), - }} - - def main(self, curve): - return (curve.amplitude,) ################################################################## @@ -639,16 +412,7 @@ NODE_CLASS_MAPPINGS = { "KfCurvesDivide": KfCurvesDivide, "KfCurveConstant": KfCurveConstant, ######################### - "KfSinusoidalWithFrequency": KfSinusoidalWithFrequency, - "KfSinusoidalWithWavelength": KfSinusoidalWithWavelength, - "KfSinusoidalAdjustWavelength": KfSinusoidalAdjustWavelength, - "KfSinusoidalAdjustPhase": KfSinusoidalAdjustPhase, - "KfSinusoidalAdjustFrequency": KfSinusoidalAdjustFrequency, - "KfSinusoidalAdjustAmplitude": KfSinusoidalAdjustAmplitude, - "KfSinusoidalGetWavelength": KfSinusoidalGetWavelength, - "KfSinusoidalGetPhase": KfSinusoidalGetPhase, - "KfSinusoidalGetAmplitude": KfSinusoidalGetAmplitude, - "KfSinusoidalGetFrequency": KfSinusoidalGetFrequency, + } # A dictionary that contains the friendly/humanly readable titles for the nodes diff --git a/nodes/sinusoidal.py b/nodes/sinusoidal.py new file mode 100644 index 0000000..5252577 --- /dev/null +++ b/nodes/sinusoidal.py @@ -0,0 +1,251 @@ +from .core import CATEGORY as ROOT_CATEGORY + +import keyframed as kf + +CATEGORY = ROOT_CATEGORY + "/sinusoidal" + + + +### Sinusoidal + +class KfSinusoidalWithFrequency: + CATEGORY = CATEGORY + FUNCTION = "main" + RETURN_TYPES = ("KEYFRAMED_CURVE", "SINUSOIDAL_CURVE") + + @classmethod + def INPUT_TYPES(s): + return { + "required": { + "frequency": ("FLOAT",{ + "default": 1/12, + "step": 0.01, + }), + "phase": ("FLOAT", { + "default": 0.0, + #"min": 0.0, + #"max": 6.28318530718, # 2*pi + "step": 0.1308996939, # pi/24 + }), + "amplitude": ("FLOAT",{ + "default": 1, + "step": 0.01, + }), + }, + } + + def main(self, frequency, phase, amplitude): + curve = kf.SinusoidalCurve(frequency=frequency, phase=phase, amplitude=amplitude) + return (curve, curve) + +class KfSinusoidalWithWavelength: + CATEGORY = CATEGORY + FUNCTION = "main" + RETURN_TYPES = ("KEYFRAMED_CURVE", "SINUSOIDAL_CURVE") + + @classmethod + def INPUT_TYPES(s): + return { + "required": { + "wavelength": ("FLOAT",{ + "default": 12, + "step": 0.5, + }), + "phase": ("FLOAT", { + "default": 0.0, + #"min": 0.0, + #"max": 6.28318530718, # 2*pi + "step": 0.1308996939, # pi/24 + }), + "amplitude": ("FLOAT",{ + "default": 1, + "step": 0.01, + }), + }, + } + + def main(self, wavelength, phase, amplitude): + curve = kf.SinusoidalCurve(wavelength=wavelength, phase=phase, amplitude=amplitude) + return (curve, curve) + + +### # ### # ### # ### # ### # ### # ### # ### # ### # + + +### # ### # ### # ### # ### # ### # ### # ### # ### # + +class KfSinusoidalAdjustWavelength: + CATEGORY = CATEGORY + FUNCTION = "main" + RETURN_TYPES = ("KEYFRAMED_CURVE", "SINUSOIDAL_CURVE") + + @classmethod + def INPUT_TYPES(s): + return { + "required": { + "curve": ("SINUSOIDAL_CURVE",{"forceInput": True,}), + "adjustment": ("FLOAT",{ + "default": 0.0, + "step": 0.5, + }), + }} + + def main(self, curve, adjustment): + wavelength, phase, amplitude = curve.wavelength, curve.phase, curve.amplitude + wavelength += adjustment + curve = kf.SinusoidalCurve(wavelength=wavelength, phase=phase, amplitude=amplitude) + return (curve, curve) + + +class KfSinusoidalAdjustPhase: + CATEGORY = CATEGORY + FUNCTION = "main" + RETURN_TYPES = ("KEYFRAMED_CURVE", "SINUSOIDAL_CURVE") + + @classmethod + def INPUT_TYPES(s): + return { + "required": { + "curve": ("SINUSOIDAL_CURVE",{"forceInput": True,}), + "adjustment": ("FLOAT", { + "default": 0.0, + "step": 0.1308996939, # pi/24 + }), + }} + + def main(self, curve, adjustment): + wavelength, phase, amplitude = curve.wavelength, curve.phase, curve.amplitude + phase += adjustment + curve = kf.SinusoidalCurve(wavelength=wavelength, phase=phase, amplitude=amplitude) + return (curve, curve) + + +class KfSinusoidalAdjustFrequency: + CATEGORY = CATEGORY + FUNCTION = "main" + RETURN_TYPES = ("KEYFRAMED_CURVE", "SINUSOIDAL_CURVE") + + @classmethod + def INPUT_TYPES(s): + return { + "required": { + "curve": ("SINUSOIDAL_CURVE",{"forceInput": True,}), + "adjustment": ("FLOAT",{ + "default": 0, + "step": 0.01, + }), + }} + + def main(self, curve, adjustment): + wavelength, phase, amplitude = curve.wavelength, curve.phase, curve.amplitude + frequency = 1/wavelength + frequency += adjustment + wavelength = 1/frequency + curve = kf.SinusoidalCurve(wavelength=wavelength, phase=phase, amplitude=amplitude) + return (curve, curve) + + +class KfSinusoidalAdjustAmplitude: + CATEGORY = CATEGORY + FUNCTION = "main" + RETURN_TYPES = ("KEYFRAMED_CURVE", "SINUSOIDAL_CURVE") + + @classmethod + def INPUT_TYPES(s): + return { + "required": { + "curve": ("SINUSOIDAL_CURVE",{"forceInput": True,}), + "adjustment": ("FLOAT",{ + "default": 0, + "step": 0.01, + }), + }} + + def main(self, curve, adjustment): + wavelength, phase, amplitude = curve.wavelength, curve.phase, curve.amplitude + amplitude += adjustment + curve = kf.SinusoidalCurve(wavelength=wavelength, phase=phase, amplitude=amplitude) + return (curve, curve) + + +### # ### # ### # ### # ### # ### # ### # ### # ### # + + +class KfSinusoidalGetWavelength: + CATEGORY = CATEGORY + FUNCTION = "main" + RETURN_TYPES = ("FLOAT",) + + @classmethod + def INPUT_TYPES(s): + return { + "required": { + "curve": ("SINUSOIDAL_CURVE",{"forceInput": True,}), + }} + + def main(self, curve): + return (curve.wavelength,) + + +class KfSinusoidalGetFrequency: + CATEGORY = CATEGORY + FUNCTION = "main" + RETURN_TYPES = ("FLOAT",) + + @classmethod + def INPUT_TYPES(s): + return { + "required": { + "curve": ("SINUSOIDAL_CURVE",{"forceInput": True,}), + }} + + def main(self, curve): + return (1/curve.wavelength,) + + +class KfSinusoidalGetPhase: + CATEGORY = CATEGORY + FUNCTION = "main" + RETURN_TYPES = ("FLOAT",) + + @classmethod + def INPUT_TYPES(s): + return { + "required": { + "curve": ("SINUSOIDAL_CURVE",{"forceInput": True,}), + }} + + def main(self, curve): + return (curve.phase,) + + +class KfSinusoidalGetAmplitude: + CATEGORY = CATEGORY + FUNCTION = "main" + RETURN_TYPES = ("FLOAT",) + + @classmethod + def INPUT_TYPES(s): + return { + "required": { + "curve": ("SINUSOIDAL_CURVE",{"forceInput": True,}), + }} + + def main(self, curve): + return (curve.amplitude,) + + +NODE_CLASS_MAPPINGS = { + "KfSinusoidalWithFrequency": KfSinusoidalWithFrequency, + "KfSinusoidalWithWavelength": KfSinusoidalWithWavelength, + "KfSinusoidalAdjustWavelength": KfSinusoidalAdjustWavelength, + "KfSinusoidalAdjustPhase": KfSinusoidalAdjustPhase, + "KfSinusoidalAdjustFrequency": KfSinusoidalAdjustFrequency, + "KfSinusoidalAdjustAmplitude": KfSinusoidalAdjustAmplitude, + "KfSinusoidalGetWavelength": KfSinusoidalGetWavelength, + "KfSinusoidalGetPhase": KfSinusoidalGetPhase, + "KfSinusoidalGetAmplitude": KfSinusoidalGetAmplitude, + "KfSinusoidalGetFrequency": KfSinusoidalGetFrequency, +} + +NODE_DISPLAY_NAME_MAPPINGS = {} \ No newline at end of file