# HG changeset patch # User drewp@bigasterisk.com # Date 2008-09-05 07:06:34 # Node ID 2d9c85c98be6d7923629c32e4eea7ed700d22d47 # Parent ab99105cd4fe63d98a9af0522d0898ce1f50d7a7 start new baypiggies talk diff --git a/bin/lightsim b/bin/lightsim --- a/bin/lightsim +++ b/bin/lightsim @@ -39,6 +39,7 @@ def poll(graph, serv, pollFreq, oglSurfa if dmxLevels == _lastLevels: return _lastLevels = dmxLevels + level = {} # filename : level for i, lev in enumerate(dmxLevels): if lev == 0: diff --git a/doc/baypiggies2008/bcf2000-desk1.jpg b/doc/baypiggies2008/bcf2000-desk1.jpg new file mode 100644 index 0000000000000000000000000000000000000000..df3dc444d5560a98e91494a56f662b07942d8f90 GIT binary patch literal 62410 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 UhX5O6F__G1Hm1X2_tL-r+2sCx*8l(j diff --git a/doc/baypiggies2008/index.html b/doc/baypiggies2008/index.html new file mode 100644 --- /dev/null +++ b/doc/baypiggies2008/index.html @@ -0,0 +1,151 @@ + + + + + +light9 in 2008 + + + + + + + + + + + + + + + + + + + + +
+
+
+ + + +
+ + +
+ +
+

light9 in 2008

+

+

Drew Perttula

+

http://bigasterisk.com/

+
+ + +
+

Existing system

+From my June 2005 presentation: + +
+               (play cmds)
+    ascoltami --------------> mpd ----------> audio out
+        | (timing)
+        v
+    curvecalc    subcomposer    keyboardcomposer
+        |            |                 |
+        +---         |             ----+
+            \-----   |    --------/
+                  \--+---/
+                     | (light levels)
+                     v
+                 dmxserver
+                    | (dmx levels)
+          ......... v ....................
+          .      entec open dmx          .
+          .         | (dmx)              . external hardware
+          .         v                    .
+          .      dmx dimmer              .
+          .         | (juice)            .
+          .         v                    .
+          .      light                   .
+          ................................
+
+ +
+ +
+

External libraries

+
    +
  • Twisted - event loop and networking, xmlrpc
  • +
  • tk, tix
  • +
  • pympd - my twisted interface to mpd
  • +
  • louie - signals
  • +
  • mpd - music player daemon
  • +
  • rdflib
  • +
  • darcs
  • +
+
+ +
+

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)))
    +
+
+ +
+

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)
  • + + complex data structures (objects with types and attributes, attrs, lists, sets, references between files) + use DSLs to abbreviate boring parts + +
+ + +
+

What's new: lightsim

+
    +
  • We could really use a good way to preview scenes
  • +
  • Lighting follows the superposition principle
  • +
  • Original version from 2002: Tk, PIL
  • +
  • Current version: qt, OpenGL
  • +
+
+ +
+

Related projects

+
  • vistrails
  • +
  • kamaelia
  • +
    + + + + +http://www.opendmx.net/index.php/Open_DMX_USB + + + + + +
    + + + diff --git a/doc/baypiggies2008/ui/default/blank.gif b/doc/baypiggies2008/ui/default/blank.gif new file mode 100644 index 0000000000000000000000000000000000000000..75b945d2553848b8b6f41fe5e24599c0687b8472 GIT binary patch literal 49 zc${DzfNTbkJOdL`2qS|v08zdQ ATL1t6 diff --git a/doc/baypiggies2008/ui/default/bodybg.gif b/doc/baypiggies2008/ui/default/bodybg.gif new file mode 100644 index 0000000000000000000000000000000000000000..5f448a16fe6dc7a03a4279fb19f9ba3af38eb634 GIT binary patch literal 10119 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 xH*p$|X5pbody #currentSlide {position: fixed;} + +/* +div#header {background: #FCC;} +div#footer {background: #CCF;} +div#controls {background: #BBD;} +div#currentSlide {background: #FFC;} +*/ diff --git a/doc/baypiggies2008/ui/default/iepngfix.htc b/doc/baypiggies2008/ui/default/iepngfix.htc new file mode 100644 --- /dev/null +++ b/doc/baypiggies2008/ui/default/iepngfix.htc @@ -0,0 +1,42 @@ + + + + + \ No newline at end of file diff --git a/doc/baypiggies2008/ui/default/opera.css b/doc/baypiggies2008/ui/default/opera.css new file mode 100644 --- /dev/null +++ b/doc/baypiggies2008/ui/default/opera.css @@ -0,0 +1,7 @@ +/* DO NOT CHANGE THESE unless you really want to break Opera Show */ +.slide { + visibility: visible !important; + position: static !important; + page-break-before: always; +} +#slide0 {page-break-before: avoid;} diff --git a/doc/baypiggies2008/ui/default/outline.css b/doc/baypiggies2008/ui/default/outline.css new file mode 100644 --- /dev/null +++ b/doc/baypiggies2008/ui/default/outline.css @@ -0,0 +1,15 @@ +/* don't change this unless you want the layout stuff to show up in the outline view! */ + +.layout div, #footer *, #controlForm * {display: none;} +#footer, #controls, #controlForm, #navLinks, #toggle { + display: block; visibility: visible; margin: 0; padding: 0;} +#toggle {float: right; padding: 0.5em;} +html>body #toggle {position: fixed; top: 0; right: 0;} + +/* making the outline look pretty-ish */ + +#slide0 h1, #slide0 h2, #slide0 h3, #slide0 h4 {border: none; margin: 0;} +#slide0 h1 {padding-top: 1.5em;} +.slide h1 {margin: 1.5em 0 0; padding-top: 0.25em; + border-top: 1px solid #888; border-bottom: 1px solid #AAA;} +#toggle {border: 1px solid; border-width: 0 0 1px 1px; background: #FFF;} diff --git a/doc/baypiggies2008/ui/default/pretty.css b/doc/baypiggies2008/ui/default/pretty.css new file mode 100644 --- /dev/null +++ b/doc/baypiggies2008/ui/default/pretty.css @@ -0,0 +1,86 @@ +/* Following are the presentation styles -- edit away! */ + +body {background: #FFF url(bodybg.gif) -16px 0 no-repeat; color: #000; font-size: 2em;} +:link, :visited {text-decoration: none; color: #00C;} +#controls :active {color: #88A !important;} +#controls :focus {outline: 1px dotted #227;} +h1, h2, h3, h4 {font-size: 100%; margin: 0; padding: 0; font-weight: inherit;} +ul, pre {margin: 0; line-height: 1em;} +html, body {margin: 0; padding: 0;} + +blockquote, q {font-style: italic;} +blockquote {padding: 0 2em 0.5em; margin: 0 1.5em 0.5em; text-align: center; font-size: 1em;} +blockquote p {margin: 0;} +blockquote i {font-style: normal;} +blockquote b {display: block; margin-top: 0.5em; font-weight: normal; font-size: smaller; font-style: normal;} +blockquote b i {font-style: italic;} + +kbd {font-weight: bold; font-size: 1em;} +sup {font-size: smaller; line-height: 1px;} + +.slide code {padding: 2px 0.25em; font-weight: bold; color: #533;} +.slide code.bad, code del {color: red;} +.slide code.old {color: silver;} +.slide pre {padding: 0; margin: 0.25em 0 0.5em 0.5em; color: #533; font-size: 90%;} +.slide pre code {display: block;} +.slide ul {margin-left: 5%; margin-right: 7%; list-style: disc;} +.slide li {margin-top: 0.75em; margin-right: 0;} +.slide ul ul {line-height: 1;} +.slide ul ul li {margin: .2em; font-size: 85%; list-style: square;} +.slide img.leader {display: block; margin: 0 auto;} + +div#header, div#footer {background: #005; color: #AAB; + font-family: Verdana, Helvetica, sans-serif;} +div#header {background: #005 url(bodybg.gif) -16px 0 no-repeat; + line-height: 1px;} +div#footer {font-size: 0.5em; font-weight: bold; padding: 1em 0;} +#footer h1, #footer h2 {display: block; padding: 0 1em;} +#footer h2 {font-style: italic;} + +div.long {font-size: 0.75em;} +.slide h1 {position: absolute; top: 0.7em; left: 87px; z-index: 1; + margin: 0; padding: 0.3em 0 0 50px; white-space: nowrap; + font: bold 150%/1em Helvetica, sans-serif; text-transform: capitalize; + color: #DDE; background: #005;} +.slide h3 {font-size: 130%;} +h1 abbr {font-variant: small-caps;} + +div#controls {position: absolute; left: 50%; bottom: 0; + width: 50%; + text-align: right; font: bold 0.9em Verdana, Helvetica, sans-serif;} +html>body div#controls {position: fixed; padding: 0 0 1em 0; + top: auto;} +div#controls form {position: absolute; bottom: 0; right: 0; width: 100%; + margin: 0; padding: 0;} +#controls #navLinks a {padding: 0; margin: 0 0.5em; + background: #005; border: none; color: #779; + cursor: pointer;} +#controls #navList {height: 1em;} +#controls #navList #jumplist {position: absolute; bottom: 0; right: 0; background: #DDD; color: #227;} + +#currentSlide {text-align: center; font-size: 0.5em; color: #449;} + +#slide0 {padding-top: 3.5em; font-size: 90%;} +#slide0 h1 {position: static; margin: 1em 0 0; padding: 0; + font: bold 2em Helvetica, sans-serif; white-space: normal; + color: #000; background: transparent;} +#slide0 h2 {font: bold italic 1em Helvetica, sans-serif; margin: 0.25em;} +#slide0 h3 {margin-top: 1.5em; font-size: 1.5em;} +#slide0 h4 {margin-top: 0; font-size: 1em;} + +ul.urls {list-style: none; display: inline; margin: 0;} +.urls li {display: inline; margin: 0;} +.note {display: none;} +.external {border-bottom: 1px dotted gray;} +html>body .external {border-bottom: none;} +.external:after {content: " \274F"; font-size: smaller; color: #77B;} + +.incremental, .incremental *, .incremental *:after {color: #DDE; visibility: visible;} +img.incremental {visibility: hidden;} +.slide .current {color: #B02;} + + +/* diagnostics + +li:after {content: " [" attr(class) "]"; color: #F88;} + */ \ No newline at end of file diff --git a/doc/baypiggies2008/ui/default/print.css b/doc/baypiggies2008/ui/default/print.css new file mode 100644 --- /dev/null +++ b/doc/baypiggies2008/ui/default/print.css @@ -0,0 +1,1 @@ +/* The following rule is necessary to have all slides appear in print! DO NOT REMOVE IT! */ .slide, ul {page-break-inside: avoid; visibility: visible !important;} h1 {page-break-after: avoid;} body {font-size: 12pt; background: white;} * {color: black;} #slide0 h1 {font-size: 200%; border: none; margin: 0.5em 0 0.25em;} #slide0 h3 {margin: 0; padding: 0;} #slide0 h4 {margin: 0 0 0.5em; padding: 0;} #slide0 {margin-bottom: 3em;} h1 {border-top: 2pt solid gray; border-bottom: 1px dotted silver;} .extra {background: transparent !important;} div.extra, pre.extra, .example {font-size: 10pt; color: #333;} ul.extra a {font-weight: bold;} p.example {display: none;} #header {display: none;} #footer h1 {margin: 0; border-bottom: 1px solid; color: gray; font-style: italic;} #footer h2, #controls {display: none;} /* The following rule keeps the layout stuff out of print. Remove at your own risk! */ .layout, .layout * {display: none !important;} \ No newline at end of file diff --git a/doc/baypiggies2008/ui/default/s5-core.css b/doc/baypiggies2008/ui/default/s5-core.css new file mode 100644 --- /dev/null +++ b/doc/baypiggies2008/ui/default/s5-core.css @@ -0,0 +1,9 @@ +/* Do not edit or override these styles! The system will likely break if you do. */ + +div#header, div#footer, div#controls, .slide {position: absolute;} +html>body div#header, html>body div#footer, + html>body div#controls, html>body .slide {position: fixed;} +.handout {display: none;} +.layout {display: block;} +.slide, .hideme, .incremental {visibility: hidden;} +#slide0 {visibility: visible;} diff --git a/doc/baypiggies2008/ui/default/slides.css b/doc/baypiggies2008/ui/default/slides.css new file mode 100644 --- /dev/null +++ b/doc/baypiggies2008/ui/default/slides.css @@ -0,0 +1,3 @@ +@import url(s5-core.css); /* required to make the slide show run at all */ +@import url(framing.css); /* sets basic placement and size of slide components */ +@import url(pretty.css); /* stuff that makes the slides look better than blah */ \ No newline at end of file diff --git a/doc/baypiggies2008/ui/default/slides.js b/doc/baypiggies2008/ui/default/slides.js new file mode 100644 --- /dev/null +++ b/doc/baypiggies2008/ui/default/slides.js @@ -0,0 +1,553 @@ +// S5 v1.1 slides.js -- released into the Public Domain +// +// Please see http://www.meyerweb.com/eric/tools/s5/credits.html for information +// about all the wonderful and talented contributors to this code! + +var undef; +var slideCSS = ''; +var snum = 0; +var smax = 1; +var incpos = 0; +var number = undef; +var s5mode = true; +var defaultView = 'slideshow'; +var controlVis = 'visible'; + +var isIE = navigator.appName == 'Microsoft Internet Explorer' && navigator.userAgent.indexOf('Opera') < 1 ? 1 : 0; +var isOp = navigator.userAgent.indexOf('Opera') > -1 ? 1 : 0; +var isGe = navigator.userAgent.indexOf('Gecko') > -1 && navigator.userAgent.indexOf('Safari') < 1 ? 1 : 0; + +function hasClass(object, className) { + if (!object.className) return false; + return (object.className.search('(^|\\s)' + className + '(\\s|$)') != -1); +} + +function hasValue(object, value) { + if (!object) return false; + return (object.search('(^|\\s)' + value + '(\\s|$)') != -1); +} + +function removeClass(object,className) { + if (!object) return; + object.className = object.className.replace(new RegExp('(^|\\s)'+className+'(\\s|$)'), RegExp.$1+RegExp.$2); +} + +function addClass(object,className) { + if (!object || hasClass(object, className)) return; + if (object.className) { + object.className += ' '+className; + } else { + object.className = className; + } +} + +function GetElementsWithClassName(elementName,className) { + var allElements = document.getElementsByTagName(elementName); + var elemColl = new Array(); + for (var i = 0; i< allElements.length; i++) { + if (hasClass(allElements[i], className)) { + elemColl[elemColl.length] = allElements[i]; + } + } + return elemColl; +} + +function isParentOrSelf(element, id) { + if (element == null || element.nodeName=='BODY') return false; + else if (element.id == id) return true; + else return isParentOrSelf(element.parentNode, id); +} + +function nodeValue(node) { + var result = ""; + if (node.nodeType == 1) { + var children = node.childNodes; + for (var i = 0; i < children.length; ++i) { + result += nodeValue(children[i]); + } + } + else if (node.nodeType == 3) { + result = node.nodeValue; + } + return(result); +} + +function slideLabel() { + var slideColl = GetElementsWithClassName('*','slide'); + var list = document.getElementById('jumplist'); + smax = slideColl.length; + for (var n = 0; n < smax; n++) { + var obj = slideColl[n]; + + var did = 'slide' + n.toString(); + obj.setAttribute('id',did); + if (isOp) continue; + + var otext = ''; + var menu = obj.firstChild; + if (!menu) continue; // to cope with empty slides + while (menu && menu.nodeType == 3) { + menu = menu.nextSibling; + } + if (!menu) continue; // to cope with slides with only text nodes + + var menunodes = menu.childNodes; + for (var o = 0; o < menunodes.length; o++) { + otext += nodeValue(menunodes[o]); + } + list.options[list.length] = new Option(n + ' : ' + otext, n); + } +} + +function currentSlide() { + var cs; + if (document.getElementById) { + cs = document.getElementById('currentSlide'); + } else { + cs = document.currentSlide; + } + cs.innerHTML = '' + snum + '<\/span> ' + + '\/<\/span> ' + + '' + (smax-1) + '<\/span>'; + if (snum == 0) { + cs.style.visibility = 'hidden'; + } else { + cs.style.visibility = 'visible'; + } +} + +function go(step) { + if (document.getElementById('slideProj').disabled || step == 0) return; + var jl = document.getElementById('jumplist'); + var cid = 'slide' + snum; + var ce = document.getElementById(cid); + if (incrementals[snum].length > 0) { + for (var i = 0; i < incrementals[snum].length; i++) { + removeClass(incrementals[snum][i], 'current'); + removeClass(incrementals[snum][i], 'incremental'); + } + } + if (step != 'j') { + snum += step; + lmax = smax - 1; + if (snum > lmax) snum = lmax; + if (snum < 0) snum = 0; + } else + snum = parseInt(jl.value); + var nid = 'slide' + snum; + var ne = document.getElementById(nid); + if (!ne) { + ne = document.getElementById('slide0'); + snum = 0; + } + if (step < 0) {incpos = incrementals[snum].length} else {incpos = 0;} + if (incrementals[snum].length > 0 && incpos == 0) { + for (var i = 0; i < incrementals[snum].length; i++) { + if (hasClass(incrementals[snum][i], 'current')) + incpos = i + 1; + else + addClass(incrementals[snum][i], 'incremental'); + } + } + if (incrementals[snum].length > 0 && incpos > 0) + addClass(incrementals[snum][incpos - 1], 'current'); + ce.style.visibility = 'hidden'; + ne.style.visibility = 'visible'; + jl.selectedIndex = snum; + currentSlide(); + number = 0; +} + +function goTo(target) { + if (target >= smax || target == snum) return; + go(target - snum); +} + +function subgo(step) { + if (step > 0) { + removeClass(incrementals[snum][incpos - 1],'current'); + removeClass(incrementals[snum][incpos], 'incremental'); + addClass(incrementals[snum][incpos],'current'); + incpos++; + } else { + incpos--; + removeClass(incrementals[snum][incpos],'current'); + addClass(incrementals[snum][incpos], 'incremental'); + addClass(incrementals[snum][incpos - 1],'current'); + } +} + +function toggle() { + var slideColl = GetElementsWithClassName('*','slide'); + var slides = document.getElementById('slideProj'); + var outline = document.getElementById('outlineStyle'); + if (!slides.disabled) { + slides.disabled = true; + outline.disabled = false; + s5mode = false; + fontSize('1em'); + for (var n = 0; n < smax; n++) { + var slide = slideColl[n]; + slide.style.visibility = 'visible'; + } + } else { + slides.disabled = false; + outline.disabled = true; + s5mode = true; + fontScale(); + for (var n = 0; n < smax; n++) { + var slide = slideColl[n]; + slide.style.visibility = 'hidden'; + } + slideColl[snum].style.visibility = 'visible'; + } +} + +function showHide(action) { + var obj = GetElementsWithClassName('*','hideme')[0]; + switch (action) { + case 's': obj.style.visibility = 'visible'; break; + case 'h': obj.style.visibility = 'hidden'; break; + case 'k': + if (obj.style.visibility != 'visible') { + obj.style.visibility = 'visible'; + } else { + obj.style.visibility = 'hidden'; + } + break; + } +} + +// 'keys' code adapted from MozPoint (http://mozpoint.mozdev.org/) +function keys(key) { + if (!key) { + key = event; + key.which = key.keyCode; + } + if (key.which == 84) { + toggle(); + return; + } + if (s5mode) { + switch (key.which) { + case 10: // return + case 13: // enter + if (window.event && isParentOrSelf(window.event.srcElement, 'controls')) return; + if (key.target && isParentOrSelf(key.target, 'controls')) return; + if(number != undef) { + goTo(number); + break; + } + case 32: // spacebar + case 34: // page down + case 39: // rightkey + case 40: // downkey + if(number != undef) { + go(number); + } else if (!incrementals[snum] || incpos >= incrementals[snum].length) { + go(1); + } else { + subgo(1); + } + break; + case 33: // page up + case 37: // leftkey + case 38: // upkey + if(number != undef) { + go(-1 * number); + } else if (!incrementals[snum] || incpos <= 0) { + go(-1); + } else { + subgo(-1); + } + break; + case 36: // home + goTo(0); + break; + case 35: // end + goTo(smax-1); + break; + case 67: // c + showHide('k'); + break; + } + if (key.which < 48 || key.which > 57) { + number = undef; + } else { + if (window.event && isParentOrSelf(window.event.srcElement, 'controls')) return; + if (key.target && isParentOrSelf(key.target, 'controls')) return; + number = (((number != undef) ? number : 0) * 10) + (key.which - 48); + } + } + return false; +} + +function clicker(e) { + number = undef; + var target; + if (window.event) { + target = window.event.srcElement; + e = window.event; + } else target = e.target; + if (target.getAttribute('href') != null || hasValue(target.rel, 'external') || isParentOrSelf(target, 'controls') || isParentOrSelf(target,'embed') || isParentOrSelf(target,'object')) return true; + if (!e.which || e.which == 1) { + if (!incrementals[snum] || incpos >= incrementals[snum].length) { + go(1); + } else { + subgo(1); + } + } +} + +function findSlide(hash) { + var target = null; + var slides = GetElementsWithClassName('*','slide'); + for (var i = 0; i < slides.length; i++) { + var targetSlide = slides[i]; + if ( (targetSlide.name && targetSlide.name == hash) + || (targetSlide.id && targetSlide.id == hash) ) { + target = targetSlide; + break; + } + } + while(target != null && target.nodeName != 'BODY') { + if (hasClass(target, 'slide')) { + return parseInt(target.id.slice(5)); + } + target = target.parentNode; + } + return null; +} + +function slideJump() { + if (window.location.hash == null) return; + var sregex = /^#slide(\d+)$/; + var matches = sregex.exec(window.location.hash); + var dest = null; + if (matches != null) { + dest = parseInt(matches[1]); + } else { + dest = findSlide(window.location.hash.slice(1)); + } + if (dest != null) + go(dest - snum); +} + +function fixLinks() { + var thisUri = window.location.href; + thisUri = thisUri.slice(0, thisUri.length - window.location.hash.length); + var aelements = document.getElementsByTagName('A'); + for (var i = 0; i < aelements.length; i++) { + var a = aelements[i].href; + var slideID = a.match('\#slide[0-9]{1,2}'); + if ((slideID) && (slideID[0].slice(0,1) == '#')) { + var dest = findSlide(slideID[0].slice(1)); + if (dest != null) { + if (aelements[i].addEventListener) { + aelements[i].addEventListener("click", new Function("e", + "if (document.getElementById('slideProj').disabled) return;" + + "go("+dest+" - snum); " + + "if (e.preventDefault) e.preventDefault();"), true); + } else if (aelements[i].attachEvent) { + aelements[i].attachEvent("onclick", new Function("", + "if (document.getElementById('slideProj').disabled) return;" + + "go("+dest+" - snum); " + + "event.returnValue = false;")); + } + } + } + } +} + +function externalLinks() { + if (!document.getElementsByTagName) return; + var anchors = document.getElementsByTagName('a'); + for (var i=0; i' + + '