diff --git a/nodes/audio_nodes.py b/nodes/audio_nodes.py index 541996a..c86f716 100644 --- a/nodes/audio_nodes.py +++ b/nodes/audio_nodes.py @@ -1,5 +1,5 @@ from .audio_utils import simple_signal_operations -#from typing import Callable +from typing import Callable import numpy as np import librosa @@ -7,60 +7,119 @@ import librosa CATEGORY = "AudioReactive" -# class SimpleSignalOperation: -# CATEGORY=CATEGORY -# RETURN_TYPES=("SIGNAL",) -# FUNCTION = "main" +class SimpleSignalOperation: + CATEGORY=CATEGORY + RETURN_TYPES=("SIGNAL",) + FUNCTION = "main" -# f: Callable = None # lazy abstract method + f: Callable = None # lazy abstract method -# @classmethod -# def INPUT_TYPES(cls): -# outv = { -# "required": { -# "signal": ("SIGNAL",{}), -# } -# } -# return outv + @classmethod + def INPUT_TYPES(cls): + outv = { + "required": { + "signal": ("SIGNAL",{}), + } + } + return outv -# def main(self, signal, **kargs): -# y, sr = signal.get("y"), signal.get("sr") -# y, sr = self.f(y, sr) -# return {"y":y, "sr":sr) + def main(self, signal, **kargs): + y, sr = signal.get("y"), signal.get("sr") + y, sr = self.f(y, sr) + return {"y":y, "sr":sr} # simple_signal_operations = { # 'raw': lambda y, sr: y, # ########## -# 'rms': lambda y, sr: normalize(librosa.feature.rms(y=y).ravel(), sr), + + + # 'novelty': librosa.onset.onset_strength, +class OpNovelty: + f = simple_signal_operations['rms'] + + + # 'predominant_pulse': librosa.beat.plp, +class OpNovelty: + f = simple_signal_operations['rms'] + # 'bandpass': bandpass, +class OpNovelty: + f = simple_signal_operations['rms'] + # 'harmonic': lambda y, sr: librosa.effects.harmonic(y=y), +class OpNovelty: + f = simple_signal_operations['rms'] + # 'percussive': lambda y, sr: librosa.effects.percussive(y=y), +class OpNovelty: + f = simple_signal_operations['rms'] # ########## # 'pow2': lambda y, sr: y**2, + +class OpNovelty: + f = simple_signal_operations['rms'] + # 'stretch': stretch, +class OpNovelty: + f = simple_signal_operations['rms'] + # 'sqrt': sqrt, +class OpNovelty: + f = simple_signal_operations['rms'] + # 'smoosh': smoosh, +class OpNovelty: + f = simple_signal_operations['rms'] + # 'pow':_pow, +class OpNovelty: + f = simple_signal_operations['rms'] # ################# + # 'smooth': smooth, +class OpNovelty: + f = simple_signal_operations['rms'] + # 'sustain': sustain, +class OpNovelty: + f = simple_signal_operations['rms'] # # ######### + # 'normalize': normalize, +class OpNovelty: + f = simple_signal_operations['rms'] + # 'abs': lambda y, sr: np.abs(np.abs(y)), +class OpNovelty: + f = simple_signal_operations['rms'] + # 'threshold': threshold, +class OpNovelty: + f = simple_signal_operations['rms'] + # 'clamp': clamp, +class OpNovelty: + f = simple_signal_operations['rms'] + # 'modulo': modulo, +class OpNovelty: + f = simple_signal_operations['rms'] + # 'quantize':quantize, +class OpNovelty: + f = simple_signal_operations['rms'] # } + # can i just metaclass this? -#class OpRms(SimpleSignalOperation): -class OpRms: +class OpRms(SimpleSignalOperation): +# 'rms': lambda y, sr: normalize(librosa.feature.rms(y=y).ravel(), sr), +#class OpRms: f = simple_signal_operations['rms'] - + #class SimpleSignalOperation: CATEGORY=CATEGORY RETURN_TYPES=("SIGNAL",)