# HG changeset patch # User drewp@bigasterisk.com # Date 1223966090 0 # Node ID c96768581667d4021b2390a5ff156be0cd57448e # Parent 2d9c85c98be6d7923629c32e4eea7ed700d22d47 final version of baypiggies2008 talk diff -r 2d9c85c98be6 -r c96768581667 doc/baypiggies2008/index.html --- a/doc/baypiggies2008/index.html Fri Sep 05 07:06:34 2008 +0000 +++ b/doc/baypiggies2008/index.html Tue Oct 14 06:34:50 2008 +0000 @@ -25,6 +25,13 @@ pre { white-space: pre; } +pre.file { + border: 1px solid #aaa; + border-bottom: 0; + font-size: 80%; + background: #eef; + padding: .3em; +} @@ -55,9 +62,10 @@

Existing system

From my June 2005 presentation: -
-               (play cmds)
-    ascoltami --------------> mpd ----------> audio out
+
+
+              (play cmds)
+    ascoltami -----------> mpd ------> audio out
         | (timing)
         v
     curvecalc    subcomposer    keyboardcomposer
@@ -71,8 +79,8 @@
                     | (dmx levels)
           ......... v ....................
           .      entec open dmx          .
-          .         | (dmx)              . external hardware
-          .         v                    .
+external  .         | (dmx)              .
+hardware  .         v                    .
           .      dmx dimmer              .
           .         | (juice)            .
           .         v                    .
@@ -97,54 +105,211 @@
 
 

What's new: real sliders

- +
  • $200 board with 8 motorized faders (plus knobs, lights, and buttons)
  • -
  • Talks midi or usb-midi
  • -
  • Python/linux driver is easy:
  • -
    self.dev = open("/dev/snd/midiC1D0")
    - b0, which, value = [ord(b) for b in self.dev.read(3)]
    - self.dev.write(chr(0xb0) + chr(which[0]) + chr(int(value)))
    +
  • Talks midi over usb
  • +
  • Python/linux driver is easy: +
    +self.dev = open("/dev/snd/midiC1D0")
    +b0, which, value = [ord(b) for b in 
    +                    self.dev.read(3)]
    +self.dev.write(chr(0xb0) + 
    +               chr(which[0]) + 
    +               chr(int(value)))
  • +
+
+ +
+

What's new: RDF for data storage

+
    +
  • Old system: ad-hoc text files.
  • +
  • Never do this again.
  • +
+
+ +
+

Old file formats

+
+[music]
+preSong = silence-4sec.wav
+postSong = silence-15sec.wav
+
+ +
+down-l : 0.32005
+down-r : 0.3071
+down-sides : 0.37
+lo-c-cross : 0.24
+
+ +
+scoop-r right(t)
+lo-fill can(t)
+ch1 chase(t,names=back_colors, ontime=.6, offset=0) * ch1(t)
+
+ +
+patch = {
+    ('fill-xl','b31',) : 61,
+    ('broke',  'back8','b32',) : 62,
+    ('blue-xl','b33broke',) : 63,
+
+
+ +
+

Storage goals

+
    +
  • Stop inventing and extending syntaxes
  • +
  • Stop reloading the files all the time. Get incremental + updates or query data as it's needed.
  • +
  • Fancier data structures
  • +
  • Arbitrary layout of files on disk
  • +
  • Keep using my most flexible editor (emacs)
  • +
+
+ +
+

New system: RDF

+
    +
  • Most files are RDF data (saved as .n3 or ntriples)
  • +
  • Syntax(es) are already done, and all values are unambiguously labeled
  • +
  • Complex data types and relationships are almost as easy as basic ones
  • +
  • Extensible and upgradable, of course
  • +
  • Used DSLs and logic programming to abbreviate boring parts
-

What's new: RDF for most data storage

-
    -
  • Old system: ad-hoc text files. Never do this.
  • -
  • Now: most files are RDF data (saved as .n3 or ntriples)
  • +

    New data, shown as n3

    +
    +@prefix : <http://light9.bigasterisk.com/> .
    +@prefix sub: <http://light9.bigasterisk.com/sub/> .
    +@prefix t: <http://light9.bigasterisk.com/show/dance2008/⤶
    +           song10/subterm/> .
     
    -  complex data structures (objects with types and attributes, attrs, lists, sets, references between files)
    -  use DSLs to abbreviate boring parts
    -  
    +<http://light9.bigasterisk.com/show/dance2008/song10>
    +     :subterm   t:blacklight,
    +                t:song10,
    +                t:song3black .
    +t:song10 a :Subterm;
    +         :expression "song10(t)";
    +         :sub sub:song10 .
    +t:blacklight a :Subterm;
    +             :expression "blacklight(t)>0";
    +             :sub sub:blacklight .
    +       
-

What's new: lightsim

+

The same data, in xml

+
+<rdf:RDF xmlns="http://light9.bigasterisk.com/"
+    xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
+
+    <rdf:Description rdf:about="http://light9.bigasterisk.com/show/dance2008/song10">
+        <subterm rdf:resource="http://light9.bigasterisk.com/show/dance2008/song10/subterm/blacklight"/>
+        <subterm rdf:resource="http://light9.bigasterisk.com/show/dance2008/song10/subterm/song10"/>
+        <subterm rdf:resource="http://light9.bigasterisk.com/show/dance2008/song10/subterm/song3black"/>
+    </rdf:Description>
+
+    <Subterm rdf:about="http://light9.bigasterisk.com/show/dance2008/song10/subterm/blacklight">
+        <expression>blacklight(t)&gt;0</expression>
+        <sub rdf:resource="http://light9.bigasterisk.com/sub/blacklight"/>
+    </Subterm>
+
+    <Subterm rdf:about="http://light9.bigasterisk.com/show/dance2008/song10/subterm/song10">
+        <expression>song10(t)</expression>
+        <sub rdf:resource="http://light9.bigasterisk.com/sub/song10"/>
+    </Subterm>
+</rdf:RDF>
+
+
+ +
+

A simple line-based format

+
+<http://light9.bigasterisk.com/show/dance2008/song10> <http://light9.bigasterisk.com/subterm>⤶
+  <http://light9.bigasterisk.com/show/dance2008/song10/subterm/blacklight> .
+
+<http://light9.bigasterisk.com/show/dance2008/song10> <http://light9.bigasterisk.com/subterm>⤶
+  <http://light9.bigasterisk.com/show/dance2008/song10/subterm/song10> .
+
+<http://light9.bigasterisk.com/show/dance2008/song10> <http://light9.bigasterisk.com/subterm>⤶
+  <http://light9.bigasterisk.com/show/dance2008/song10/subterm/song3black> .
+
+<http://light9.bigasterisk.com/show/dance2008/song10/subterm/blacklight>⤶
+  <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://light9.bigasterisk.com/Subterm> .
+
+<http://light9.bigasterisk.com/show/dance2008/song10/subterm/blacklight>⤶
+  <http://light9.bigasterisk.com/expression> "blacklight(t)>0" .
+
+<http://light9.bigasterisk.com/show/dance2008/song10/subterm/blacklight>⤶
+  <http://light9.bigasterisk.com/sub> <http://light9.bigasterisk.com/sub/blacklight> .
+
+<http://light9.bigasterisk.com/show/dance2008/song10/subterm/song10>⤶
+  <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://light9.bigasterisk.com/Subterm> .
+
+<http://light9.bigasterisk.com/show/dance2008/song10/subterm/song10>⤶
+  <http://light9.bigasterisk.com/expression> "song10(t)" .
+
+<http://light9.bigasterisk.com/show/dance2008/song10/subterm/song10>⤶
+  <http://light9.bigasterisk.com/sub> <http://light9.bigasterisk.com/sub/song10> .
+
+ +
+ +
+

Again, with less wrapping

+
+<http://l9.com/show/dance2008/song10> <http://l9.com/subterm> <http://l9.com/show/dance2008/song10/subterm/blacklight> .
+<http://l9.com/show/dance2008/song10> <http://l9.com/subterm> <http://l9.com/show/dance2008/song10/subterm/song10> .
+<http://l9.com/show/dance2008/song10> <http://l9.com/subterm> <http://l9.com/show/dance2008/song10/subterm/song3black> .
+<http://l9.com/show/dance2008/song10/subterm/blacklight> <http://l9.com/expression> "blacklight(t)>0" .
+<http://l9.com/show/dance2008/song10/subterm/blacklight> <http://l9.com/sub> <http://l9.com/sub/blacklight> .
+<http://l9.com/show/dance2008/song10/subterm/blacklight> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://l9.com/Subterm> .
+<http://l9.com/show/dance2008/song10/subterm/song10> <http://l9.com/expression> "song10(t)" .
+<http://l9.com/show/dance2008/song10/subterm/song10> <http://l9.com/sub> <http://l9.com/sub/song10> .
+<http://l9.com/show/dance2008/song10/subterm/song10> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://l9.com/Subterm> .
+
+
+ +
+

Again, rendered with graphviz

+ +
+ +
+

What's next: lightsim

  • We could really use a good way to preview scenes
  • -
  • Lighting follows the superposition principle
  • +
  • Hard to use text labels for all the different lighting scenes
  • +
  • Can't work on lighting cues without looking at the stage
  • +
+
+
+

lightsim enablers

+
    +
  • Light obeys superposition:
    F(ax+by) = aF(x) + bF(y)
  • +
  • All my lights are computer-controlled
  • +
+
+
+

lightsim demos

+
  • Original version from 2002: Tk, PIL
  • Current version: qt, OpenGL
-

Related projects

-
  • vistrails
  • -
  • kamaelia
  • +

    More

    +
  • Links related to this project:
    +http://delicious.com/drewpca/light9
  • +
    - - - -http://www.opendmx.net/index.php/Open_DMX_USB - - - - - diff -r 2d9c85c98be6 -r c96768581667 doc/baypiggies2008/rdfgraph.png Binary file doc/baypiggies2008/rdfgraph.png has changed