No description, website, or topics provided.
Clojure Python SuperCollider
Switch branches/tags
Nothing to show
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.

Tesla Vibro Prosthetic and Clojure Client

This is a simple Weavrs prosthetic and associated Clojure client for interrogating Weavrs. We've targetted Clojure because that gets us bridged to MaxMSP (via our net.loadbang package) or into Overtone. The prosthetic is designed to run inside the Philter Phactory prosthetic runner (a Django-nonrel application) and hence in Google App Engine; symlink its prosthetic directory into the runner with name tesla so that the URL's in the Clojure test code work.

The prosthetic itself has a pretty simple data model: a table of Weavrs which we've seen (and which are registered to use the prosthetic) and a table of locations that the Weavrs visit (actually, just the street_address field at the moment). A new location is added if the polled location from a Weavr changes from the last one seen.

There's a bit of Django MVC machinery which lets us interrogate the data store: we can list all the Weavrs we've seen, and for any Weavr we can fetch its last known location. Both calls return a JSON structure. The Clojure code uses an asynchronous HTTP client and a JSON parser to unpack the result.



This package loads most of what it needs from Maven repositories via Leiningen, but there are one or two packages not in global repos, so they need to be checked out of GitHub and built locally:

  • Our SoundCloud for Clojure package: build and install this into the local repository via lein install

  • net.loadbang OSC library: our Java OSC library. This needs to be built and (locally) installed via Maven. This library in turn has a dependency on net.loadbang.lib (see its README file).

There is one configuration file for the SoundCloud authentication: see the for that project for details.



We're no longer using Overtone, since it can't render non-realtime or without a sound card. Accordingly, we've built a "pure" SuperCollider program that runs as an OSC server, and send it high-level OSC commands to sequence DTMF tones and control signals, and to render out audio files (see directory /sc/).


We're currently playing with feeding Weavr location strings into a Morse code generator in Overtone (see scratch.clj), as a dry run for synthesising real control signals for the prosthetic hardware. The Morse generator is a separate GitHub project and isn't in any public repositories at the moment, so check out that project and do a Leiningen install to get a local repository version to link against. (The Morse isn't recorded to disk; we do have some disk-recording code but need to hack the Morse generator's ugens a little to make buffer capture work.)