diff --git a/show/dance2014/demo.n3 b/show/dance2014/demo.n3
--- a/show/dance2014/demo.n3
+++ b/show/dance2014/demo.n3
@@ -7,19 +7,7 @@
@prefix ch: .
@prefix dmx: .
-dmx:c68 :dmxAddress 68 .
-ch:house-side a :Channel;
- :output dmx:c68;
- rdfs:label "house-side" .
-
- a :Submaster ;
- rdfs:label "houseside" ;
- :lightLevel .
-
- a :ChannelSetting ;
- :channel ;
- :level 1e+00 .
# curvedb writes these. point data might be in separate files
a :Curve;
@@ -29,7 +17,7 @@ ch:house-side a :Channel;
# :Effect replaces :Subterm
a :Effect;
- :code "out = sub(sub:stageleft, intensity=song1:opening)";
+ :code "out = sub(sub:s2, intensity=song1:opening)";
# save the code as an AST also, to get all the links? web page was
# going to parse it anyway. but, sometimes it will have a syntax
# error. Can code with errors just parse to a bogus AST that saves
@@ -41,7 +29,7 @@ ch:house-side a :Channel;
#
# Still missing: multiple lines of code with multiple outputs. What's
# an output?
- :dep ,
+ :dep ,
.
diff --git a/show/dance2014/dmxchannels.n3 b/show/dance2014/dmxchannels.n3
new file mode 100644
--- /dev/null
+++ b/show/dance2014/dmxchannels.n3
@@ -0,0 +1,96 @@
+@prefix : .
+@prefix dmx: .
+
+dmx:c1 :dmxAddress 1 .
+dmx:c2 :dmxAddress 2 .
+dmx:c3 :dmxAddress 3 .
+dmx:c4 :dmxAddress 4 .
+dmx:c5 :dmxAddress 5 .
+dmx:c6 :dmxAddress 6 .
+dmx:c7 :dmxAddress 7 .
+dmx:c8 :dmxAddress 8 .
+dmx:c9 :dmxAddress 9 .
+dmx:c10 :dmxAddress 10 .
+dmx:c11 :dmxAddress 11 .
+dmx:c12 :dmxAddress 12 .
+dmx:c13 :dmxAddress 13 .
+dmx:c14 :dmxAddress 14 .
+dmx:c15 :dmxAddress 15 .
+dmx:c16 :dmxAddress 16 .
+dmx:c17 :dmxAddress 17 .
+dmx:c18 :dmxAddress 18 .
+dmx:c19 :dmxAddress 19 .
+dmx:c20 :dmxAddress 20 .
+dmx:c21 :dmxAddress 21 .
+dmx:c22 :dmxAddress 22 .
+dmx:c23 :dmxAddress 23 .
+dmx:c24 :dmxAddress 24 .
+dmx:c25 :dmxAddress 25 .
+dmx:c26 :dmxAddress 26 .
+dmx:c27 :dmxAddress 27 .
+dmx:c28 :dmxAddress 28 .
+dmx:c29 :dmxAddress 29 .
+dmx:c30 :dmxAddress 30 .
+dmx:c31 :dmxAddress 31 .
+dmx:c32 :dmxAddress 32 .
+dmx:c33 :dmxAddress 33 .
+dmx:c34 :dmxAddress 34 .
+dmx:c35 :dmxAddress 35 .
+dmx:c36 :dmxAddress 36 .
+dmx:c37 :dmxAddress 37 .
+dmx:c38 :dmxAddress 38 .
+dmx:c39 :dmxAddress 39 .
+dmx:c40 :dmxAddress 40 .
+dmx:c41 :dmxAddress 41 .
+dmx:c42 :dmxAddress 42 .
+dmx:c43 :dmxAddress 43 .
+dmx:c44 :dmxAddress 44 .
+dmx:c45 :dmxAddress 45 .
+dmx:c46 :dmxAddress 46 .
+dmx:c47 :dmxAddress 47 .
+dmx:c48 :dmxAddress 48 .
+dmx:c49 :dmxAddress 49 .
+dmx:c50 :dmxAddress 50 .
+dmx:c51 :dmxAddress 51 .
+dmx:c52 :dmxAddress 52 .
+dmx:c53 :dmxAddress 53 .
+dmx:c54 :dmxAddress 54 .
+dmx:c55 :dmxAddress 55 .
+dmx:c56 :dmxAddress 56 .
+dmx:c57 :dmxAddress 57 .
+dmx:c58 :dmxAddress 58 .
+dmx:c59 :dmxAddress 59 .
+dmx:c60 :dmxAddress 60 .
+dmx:c61 :dmxAddress 61 .
+dmx:c62 :dmxAddress 62 .
+dmx:c63 :dmxAddress 63 .
+dmx:c64 :dmxAddress 64 .
+dmx:c65 :dmxAddress 65 .
+dmx:c66 :dmxAddress 66 .
+dmx:c67 :dmxAddress 67 .
+dmx:c68 :dmxAddress 68 .
+dmx:c69 :dmxAddress 69 .
+dmx:c70 :dmxAddress 70 .
+dmx:c71 :dmxAddress 71 .
+dmx:c72 :dmxAddress 72 .
+
+dmx:c73 :dmxAddress 73 .
+dmx:c74 :dmxAddress 74 .
+dmx:c75 :dmxAddress 75 .
+dmx:c76 :dmxAddress 76 .
+dmx:c77 :dmxAddress 77 .
+dmx:c78 :dmxAddress 78 .
+dmx:c79 :dmxAddress 79 .
+dmx:c80 :dmxAddress 80 .
+dmx:c81 :dmxAddress 81 .
+dmx:c82 :dmxAddress 82 .
+dmx:c83 :dmxAddress 83 .
+dmx:c84 :dmxAddress 84 .
+dmx:c85 :dmxAddress 85 .
+dmx:c86 :dmxAddress 86 .
+dmx:c87 :dmxAddress 87 .
+dmx:c88 :dmxAddress 88 .
+dmx:c89 :dmxAddress 89 .
+dmx:c90 :dmxAddress 90 .
+dmx:c91 :dmxAddress 91 .
+
diff --git a/show/dance2014/makefile b/show/dance2014/makefile
new file mode 100644
--- /dev/null
+++ b/show/dance2014/makefile
@@ -0,0 +1,3 @@
+build/patch.n3: patch-source.n3 patch-rules.n3
+ cwm patch-source.n3 --filter=patch-rules.n3 --n3=/ > build/patch.n3
+
diff --git a/show/dance2014/patch-rules.n3 b/show/dance2014/patch-rules.n3
new file mode 100644
--- /dev/null
+++ b/show/dance2014/patch-rules.n3
@@ -0,0 +1,18 @@
+@prefix ch: .
+@prefix dmx: .
+@prefix rdfs: .
+@prefix l9: .
+@prefix log: .
+@prefix string: .
+
+@prefix prep: .
+
+{
+ [prep:name ?name; prep:output ?c] .
+
+ ch: log:uri ?channelNamespace .
+ (?channelNamespace ?name) string:concatenation ?uriString .
+ ?chanUri log:uri ?uriString .
+} => {
+ ?chanUri a l9:Channel; rdfs:label ?name; l9:output ?c .
+} .
diff --git a/show/dance2014/patch-source.n3 b/show/dance2014/patch-source.n3
new file mode 100644
--- /dev/null
+++ b/show/dance2014/patch-source.n3
@@ -0,0 +1,96 @@
+@prefix : .
+@prefix dmx: .
+
+[ :name "oran1"; :output dmx:c21 ] .
+[ :name "oran2"; :output dmx:c25 ] .
+[ :name "oran3"; :output dmx:c29 ] .
+[ :name "oran4"; :output dmx:c33 ] .
+[ :name "gree1"; :output dmx:c22 ] .
+[ :name "gree2"; :output dmx:c26 ] .
+[ :name "gree3"; :output dmx:c30 ] .
+[ :name "gree4"; :output dmx:c34 ] .
+[ :name "blue1"; :output dmx:c23 ] .
+[ :name "blue2"; :output dmx:c27 ] .
+[ :name "blue3"; :output dmx:c31 ] .
+[ :name "blue4"; :output dmx:c35 ] .
+[ :name "red1"; :output dmx:c24 ] .
+[ :name "red2"; :output dmx:c28 ] .
+[ :name "red3"; :output dmx:c32 ] .
+[ :name "red4"; :output dmx:c36 ] .
+[ :name "upright"; :output dmx:c37 ] .
+[ :name "upleft"; :output dmx:c38 ] .
+
+[ :name "strobespeed"; :output dmx:c47 ] .
+[ :name "strobebright"; :output dmx:c48 ] .
+
+[ :name "b11-down-l"; :output dmx:c54 ] .
+[ :name "b12-l"; :output dmx:c53 ] .
+[ :name "b13-blue"; :output dmx:c52 ] .
+[ :name "b14-cross"; :output dmx:c51 ] .
+[ :name "b15-x"; :output dmx:c50 ] .
+[ :name "b16-edge-l"; :output dmx:c49 ] .
+
+[ :name "b21-x"; :output dmx:c55 ] .
+[ :name "b22-pool1"; :output dmx:c56 ] .
+[ :name "b23-fos1"; :output dmx:c57 ] .
+[ :name "b24-fos2"; :output dmx:c58 ] .
+[ :name "b25-pool2"; :output dmx:c59 ] .
+[ :name "b26-x"; :output dmx:c60 ] .
+
+[ :name "b31-edge-r"; :output dmx:c61 ] .
+[ :name "b32-blue"; :output dmx:c62 ] .
+[ :name "b33-cross"; :output dmx:c63 ] .
+[ :name "b34-r"; :output dmx:c64 ] .
+[ :name "b35-down-r"; :output dmx:c65 ] .
+[ :name "b36-x"; :output dmx:c66 ] .
+
+[ :name "post-l"; :output dmx:c45 ] .
+[ :name "post-r"; :output dmx:c46 ] .
+
+[ :name "c40"; :output dmx:c40 ] .
+
+[ :name "c1"; :output dmx:c1 ] .
+[ :name "c2"; :output dmx:c2 ] .
+[ :name "c3"; :output dmx:c3 ] .
+[ :name "front4-r"; :output dmx:c4 ] .
+[ :name "front5-l"; :output dmx:c5 ] .
+[ :name "front6-pool"; :output dmx:c6 ] .
+[ :name "sharlyn"; :output dmx:c7 ] .
+[ :name "front8-r"; :output dmx:c8 ] .
+[ :name "front9-l"; :output dmx:c9 ] .
+[ :name "front10-r2"; :output dmx:c10 ] .
+[ :name "c11"; :output dmx:c11 ] .
+[ :name "c12"; :output dmx:c12 ] .
+
+[ :name ""; :output dmx:c13 ] .
+[ :name "blacklight"; :output dmx:c14 ] .
+[ :name ""; :output dmx:c15 ] .
+[ :name "up-l"; :output dmx:c16 ] .
+[ :name ""; :output dmx:c17 ] .
+[ :name ""; :output dmx:c18 ] .
+[ :name "down-c-P"; :output dmx:c19 ] .
+[ :name "up-r"; :output dmx:c20 ] .
+
+[ :name "cyc-right"; :output dmx:c42 ] .
+[ :name "cyc-mid"; :output dmx:c43 ] .
+[ :name "cyc-left"; :output dmx:c44 ] .
+
+[ :name "house-side"; :output dmx:c68 ] .
+[ :name "house1"; :output dmx:c69 ] .
+[ :name "house4"; :output dmx:c70 ] .
+[ :name "house3"; :output dmx:c71 ] .
+[ :name "house2"; :output dmx:c72 ] .
+
+[ :name "rgb1-r"; :output dmx:c73 ] .
+[ :name "rgb1-g"; :output dmx:c74 ] .
+[ :name "rgb1-b"; :output dmx:c75 ] .
+
+[ :name "rgb2-r"; :output dmx:c80 ] .
+[ :name "rgb2-g"; :output dmx:c81 ] .
+[ :name "rgb2-b"; :output dmx:c82 ] .
+
+[ :name "rgb3-mode"; :output dmx:c87 ] .
+[ :name "rgb3-r"; :output dmx:c88 ] .
+[ :name "rgb3-g"; :output dmx:c89 ] .
+[ :name "rgb3-b"; :output dmx:c90 ] .
+
diff --git a/show/dance2014/playlist.n3 b/show/dance2014/playlist.n3
new file mode 100644
--- /dev/null
+++ b/show/dance2014/playlist.n3
@@ -0,0 +1,66 @@
+@prefix : .
+@prefix show: .
+@prefix sh: .
+@prefix rdf: .
+@prefix rdfs: .
+
+show:dance2014 :musicRoot "show/dance2014/music" .
+
+show:dance2014 :playList (
+ sh:song1 sh:song2 sh:song3 sh:song4 sh:song5
+ sh:song6 sh:song7 sh:song8 sh:song9 sh:song10
+ sh:song11 sh:song12 sh:song13 sh:song14 sh:song15
+ sh:song16 sh:song17
+) .
+
+sh:song1 a :Song; rdfs:label "01-countdown-trim.wav"; :songFilename "01-countdown-trim.wav" .
+sh:song2 a :Song; rdfs:label "02-hatandcane-resample.wav"; :songFilename "02-hatandcane-resample.wav" .
+sh:song3 a :Song; rdfs:label "03-mix.wav"; :songFilename "03-mix.wav" .
+sh:song4 a :Song; rdfs:label "04-tappin_happy.wav"; :songFilename "04-tappin_happy.wav" .
+sh:song5 a :Song; rdfs:label "05-whenim64-trim.wav"; :songFilename "05-whenim64-trim.wav" .
+sh:song6 a :Song; rdfs:label "06-taylor22-fix-trim.wav"; :songFilename "06-taylor22-fix-trim.wav" .
+sh:song7 a :Song; rdfs:label "07-mix.wav"; :songFilename "07-mix.wav" .
+sh:song8 a :Song; rdfs:label "08-mix.wav"; :songFilename "08-mix.wav" .
+sh:song9 a :Song; rdfs:label "09-teafor2-trim.wav"; :songFilename "09-teafor2-trim.wav" .
+sh:song10 a :Song; rdfs:label "10-42ndst-wav.wav"; :songFilename "10-42ndst-wav.wav" .
+sh:song11 a :Song; rdfs:label "11-mix.wav"; :songFilename "11-mix.wav" .
+sh:song12 a :Song; rdfs:label "12-5678-trim.wav"; :songFilename "12-5678-trim.wav" .
+sh:song13 a :Song; rdfs:label "13-abc-trim.wav"; :songFilename "13-abc-trim.wav" .
+sh:song14 a :Song; rdfs:label "14-mix.wav"; :songFilename "14-mix.wav" .
+sh:song15 a :Song; rdfs:label "15-123-trim.wav"; :songFilename "15-123-trim.wav" .
+sh:song16 a :Song; rdfs:label "16-mix.wav"; :songFilename "16-mix.wav" .
+sh:song17 a :Song; rdfs:label "17-mix.wav"; :songFilename "17-mix.wav" .
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/show/dance2014/sub/s2.n3 b/show/dance2014/sub/s2.n3
new file mode 100644
--- /dev/null
+++ b/show/dance2014/sub/s2.n3
@@ -0,0 +1,14 @@
+@prefix ns1: .
+@prefix rdf: .
+@prefix rdfs: .
+@prefix xml: .
+@prefix xsd: .
+
+ a ns1:Submaster ;
+ rdfs:label "s2" ;
+ ns1:lightLevel .
+
+ a ns1:ChannelSetting ;
+ ns1:channel ;
+ ns1:level 6.4e-01 .
+