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
@@ -44,8 +44,10 @@ class FaderEval:
self.graph = graph
self.lib = lib
self.faders: List[Fader] = []
+ self.grandMaster = 1.0
self.graph.addHandler(self._compile)
+ self.graph.addHandler(self._compileGm)
self.lastLoopSucceeded = False
@COMPILE.time()
@@ -73,6 +75,15 @@ class FaderEval:
setAttr = typedValue(EffectAttr, self.graph, setting, L9['effectAttr'])
return (Fader(self.graph, self.lib, cast(URIRef, fader), effect, setAttr))
+ def _compileGm(self):
+ try:
+ self.grandMaster = typedValue(float, self.graph,
+ L9.grandMaster,
+ L9.value)
+ print('got gm', self.grandMaster)
+ except ValueError:
+ return
+
@COMPUTE_ALL_FADERS.time()
def computeOutput(self) -> DeviceSettings:
faderEffectOutputs: List[DeviceSettings] = []
@@ -82,7 +93,9 @@ class FaderEval:
if f.value is None:
log.warning(f'{f.value=}; should be set during _compile. Skipping {f.uri}')
continue
- effectSettings = EffectSettings(self.graph, [(f.effect, f.setEffectAttr, f.value)])
+ v = f.value
+ v *= self.grandMaster
+ effectSettings = EffectSettings(self.graph, [(f.effect, f.setEffectAttr, v)])
ds = f.ee.compute(now, effectSettings)
faderEffectOutputs.append(ds)
diff --git a/light9/fade/Light9FadeUi.ts b/light9/fade/Light9FadeUi.ts
--- a/light9/fade/Light9FadeUi.ts
+++ b/light9/fade/Light9FadeUi.ts
@@ -36,6 +36,9 @@ export class Light9FadeUi extends LitEle
.mappedToHw {
background: #393945;
}
+ #gm light9-fader {
+ width: 300px;
+ }
`,
];
render() {
@@ -43,7 +46,9 @@ export class Light9FadeUi extends LitEle