diff --git a/show/dance2023/theaterLightConfig.n3 b/show/dance2023/theaterLightConfig.n3
--- a/show/dance2023/theaterLightConfig.n3
+++ b/show/dance2023/theaterLightConfig.n3
@@ -2,6 +2,7 @@
@prefix dev: .
@prefix dmxA: .
@prefix effect: .
+@prefix func: .
@prefix rdfs: .
@prefix show: .
@prefix xsd: .
@@ -16,16 +17,32 @@ Outputs are always a DeviceSettings list
######## effectFunction
-effect:scale
+func:scale
a :EffectFunction;
- rdfs:label "a submaster- a few devices at specified colors";
+ rdfs:label "a submaster- scales :deviceSettings";
+ :input
+ [ :effectAttr :strength; :defaultValue 0.0 ],
+ [ :effectAttr :deviceSettings; ] . # e.g. "par2 at color=red; par3 at color=white"
+
+func:strobe
+ a :EffectFunction;
+ rdfs:label "blink specified devices";
:input
- [ :effectAttr :strength; :value 0 ], # overridden by fader
- [ :effectAttr :output; :value2 [ # something to say 'this attr value must resemble the following graph'
- :device :valueRequired; # ...and it's repeatable, unlike :strength
- :deviceAttr :valueRequired;
- :value :valueRequired ] ] .
+ [ :effectAttr :strength; :defaultValue 0.0 ],
+ [ :effectAttr :period; :defaultValue 0.5 ],
+ [ :effectAttr :onTime; :defaultValue 0.1 ],
+ [ :effectAttr :deviceSettings ] .
+func:image
+ a :EffectFunction;
+ rdfs:label "sample image at x=time";
+ :input
+ [ :effectAttr :strength; :defaultValue 0.0 ],
+ [ :effectAttr :period; :defaultValue 2.0 ],
+ [ :effectAttr :image; :defaultValue "specks.png" ],
+ [ :effectAttr :deviceSettings; rdfs:comment "these might have a :sort key or a :y value" ] .
+
+
dev:strip1 a :Bar612601d; :dmxUniverse dmxA:; :dmxBase 175 .
# dev:strip2 a :ChauvetColorStrip; :dmxUniverse dmxA:; :dmxBase 12 .
dev:strip3 a :Bar612601d; :dmxUniverse dmxA:; :dmxBase 178 .