diff --git a/light9/effect/sequencer/eval_faders.py b/light9/effect/sequencer/eval_faders.py --- a/light9/effect/sequencer/eval_faders.py +++ b/light9/effect/sequencer/eval_faders.py @@ -4,12 +4,13 @@ from dataclasses import dataclass from typing import List, Optional, cast from prometheus_client import Summary +from light9.effect.effect_function_library import EffectFunctionLibrary +from light9.effect.effecteval2 import EffectEval2 from rdfdb import SyncedGraph from rdflib import URIRef from rdflib.term import Node -from light9.effect import effecteval from light9.effect.settings import DeviceSettings, EffectSettings from light9.metrics import metrics from light9.namespaces import L9, RDF @@ -23,6 +24,7 @@ COMPILE=Summary('compile_graph_fader', ' @dataclass class Fader: graph: SyncedGraph + lib: EffectFunctionLibrary uri: URIRef effect: EffectUri setEffectAttr: EffectAttr @@ -30,7 +32,7 @@ class Fader: value: Optional[float]=None # mutable def __post_init__(self): - self.ee = effecteval.EffectEval2(self.graph, self.effect) + self.ee = EffectEval2(self.graph, self.effect, self.lib) class FaderEval: """peer to Sequencer, but this one takes the current :Fader settings -> sendToCollector @@ -38,18 +40,15 @@ class FaderEval: """ def __init__(self, graph: SyncedGraph, + lib: EffectFunctionLibrary ): self.graph = graph + self.lib = lib self.faders: List[Fader] = [] - log.info('fader adds handler') self.graph.addHandler(self._compile) self.lastLoopSucceeded = False - def onCodeChange(self): - log.debug('seq.onCodeChange') - self.graph.addHandler(self._compile) - @COMPILE.time() def _compile(self) -> None: """rebuild our data from the graph""" @@ -58,7 +57,7 @@ class FaderEval: effect = typedValue(EffectUri, self.graph, fader, L9['effect']) setting = typedValue(Node, self.graph, fader, L9['setting']) setAttr = typedValue(EffectAttr, self.graph, setting, L9['effectAttr']) - self.faders.append(Fader(self.graph, cast(URIRef, fader), effect, setAttr)) + self.faders.append(Fader(self.graph, self.lib, cast(URIRef, fader), effect, setAttr)) # this could go in a second, smaller addHandler call to avoid rebuilding Fader objs constantly for f in self.faders: @@ -73,18 +72,7 @@ class FaderEval: raise TypeError('f.value should be set by now') effectSettings = EffectSettings(self.graph, [(f.effect, f.setEffectAttr, f.value)]) - if f.value < .001: - continue - - faderEffectOutputs.append(f.ee.compute(effectSettings)) + ds = f.ee.compute(now, effectSettings) + faderEffectOutputs.append(ds) - # ee = effecteval.EffectEval(self.graph, f.effectClass, self.simpleOutputs) - # deviceSettings, report = ee.outputFromEffect( - # effectSettings, - # songTime=now, # probably wrong - # noteTime=now, # wrong - # ) - # log.info(f' 𝅘𝅥𝅮 {uriTail(f.uri)}: {effectSettings=} -> {deviceSettings=}') - # if deviceSettings: - # notesSettings.append(deviceSettings) return DeviceSettings.merge(self.graph, faderEffectOutputs)