Skip to content

Instantly share code, notes, and snippets.

@cassiel
Created May 24, 2011 12:35
Show Gist options
  • Save cassiel/988624 to your computer and use it in GitHub Desktop.
Save cassiel/988624 to your computer and use it in GitHub Desktop.
shado for the monome in clojure
; shado for the monome 64.
(def all-on (.fill (net.loadbang.shado.Block. 8 8) net.loadbang.shado.types.LampState/ON))
(def all-off (net.loadbang.shado.Frame.))
(def renderer (net.loadbang.shado.BinaryRenderer.
8 8
(net.loadbang.shado.SerialOSCBinaryOutputter. "localhost" 16543 8 "/shado")))
; 4x4 block:
(def little-block (net.loadbang.shado.Block. "1111 1010 0101 0110"))
; a renderable cannot be put into a frame more than once,
; so we need to wrap each instance in a new frame:
(defn wrap [b] (.add (net.loadbang.shado.Frame.) b 0 0))
; a tesselation of that block:
(def tesselation
(let [f (net.loadbang.shado.Frame.)]
(doseq [x [0 4] y [0 4]]
(.add f (wrap little-block) x y))
f
))
(def small-tesselation
(let [f (net.loadbang.shado.Frame.)
xx (net.loadbang.shado.Block. "10 01")
]
(doseq [x [0 2 4 6] y [0 2 4 6]]
(.add f (wrap xx) x y))
f
))
(.render renderer all-on)
(.render renderer all-off)
(.render renderer little-block)
(.render renderer tesselation)
(.render renderer small-tesselation)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment