December 20th, 2011

Tutorial – how to create your own widgets

Control user boblemarin, who is the author of the impressive Sprite3D javascript library, has made a couple of interesting new widgets. The first is a circle sliced into triangles; each segment can be used to trigger, for example, slices of a loop. He made a short demo video of two of these widgets doing exactly that:

He also has an interface using particles that are generated by touch and send out note messages whenever they bounce off the walls of the interface. You can find the interfaces here:

Particle interface
Slice triggering interface

Best of all, he created a tutorial for people who want to make their own widgets. This should be enough to get everyone started, especially if you have some experience using the canvas object or HTML graphics in general. Thank you!

November 12th, 2011

Some love for Control’s open-source brethren

Forum member Jetsabel has also made a nice Pure Data patch that explains how to use Control with Pd-extended. Everything you need to know, from finding the ip address of your computer to enabling the OSC extensions in Pd is documented inside of the patch. Thanks to Jetsabel for contributing!

For whatever reason, most of the videos / code I’ve posted so far has been geared more towards proprietary software. To buck that trend, I posted a video today that shows how to dynamically create interfaces from SuperCollider. In the video I create a bank of oscillators with a corresponding bank of sliders in Control that change the oscillators’ frequency.

You can download the script here.

October 6th, 2011

Control 1.4 released (iOS)

Control 1.4 is released for iOS. The big new features are hardware MIDI support via the Camera Connection Kit, MIDI Sysex support (output only, can’t think of a reason for input currently) and pitch and volume tracking from the microphone.

The pitch tracking allows you, for example, to hum into the mic and then trigger notes using buttons in an interface. Or trigger a note of a given pitch whenever the volume of the microphone signal goes above a particular point. The algorithm for pitch tracking is a simple harmonic product spectrum; you can alternatively use zero crossings (hps is the default). If anyone has some DSP chops and wants to implement something fancier, please let me know!

I’ll post some more info about these changes later this weekend. I’m still working on the Wifi MIDI Android release; it’s slow going.

July 25th, 2011

Android version is live in the Market…

Works really well on my Asus Transformer tablet running Honeycomb and pretty well on my Droid running 2.1. On Froyo (and probably gingerbread as well) there appears to be a bug when switching from a landscape interface to a portrait interface; the scaling is wrong and the landscape interface will scroll if you make a vertical touch gesture. I spent a lot of time trying to fix this and am giving up for now; you can force quit the app and restart as a temporary workaround if you need to switch between portrait and landscape. Getting perfect support for tablets + phones + all the different size screens is pretty darn tricky.

There’s also no MIDI yet, and no Gyro support. Multitouch works great in Honeycomb; I don’t have a multitouch capable phone to test it on but if eventual (not sure what the current status is on multitouch in gingerbread webkit) phone support in Gingerbread matches what is in Honeycomb it -should- work fine.

Please try it out and let me know how it goes in the forum!

June 7th, 2011

Control 1.3: Dynamic Interfaces, jQuery integration & more

Control 1.3 was released in the app store today. It is actually a giant rewrite of many parts under the hood… most of this rewrite was done in order to move as much code as possible to HTML / CSS / Javascript to ease the Android port. But there are also some new features, of course.

The biggest one is dynamic interface creation via OSC. I’ve had many people write me and express interest in this. Although it was technically possibly in 1.2 it required a -lot- of js programming and a lot of poking into the inner workings of Control. Now it can all be done via OSC messages. You can create a blank interface, add widgets to it, change parameters of those widgets and begin outputting OSC messages without ever creating a .js file and uploading it to your phone. Here’s a brief video demo:

You can try this Max patch to get an idea of the messages Control accepts… I’ll try to post documentation ASAP.

May 10th, 2011

Lighting Design and Control

A long time ago I used to run lights and sound for bands / magicians / comedians etc. on a cruise ship and for a short while I taught lighting at a digital arts college in Emeryville, CA. So it’s been interesting for me to see some projects roll in where people are using Control to manipulate lighting setups. Joey Ferguson, a lighting designer at Theatre Aurora used the MIDI transmitting capabilities of Control to feed a ETC Express board (I used an ETC Expression board back in the day). He posted a forum entry about his interface that you can check out.

More recently forum member Paul who does lighting design for Villagers Theatre created an interface that is over 3,000 lines in length using a Perl script to automatically layout banks of sliders, buttons, and labels. He also wrote a nice script to translate OSC messages into messages that can be understood by the LanBox, a DMX control devices that can be controlled over ethernet (DMX is the protocol most smart-lighting devices speak). He created a short video of this script in action, with the cellular automata demo that comes with Control being used to control the lighting setup at his theatre:

Control with the LanBox

Here’s the forum thread where he talks about his setup, and below is a screenshot of the interface he created. The interface includes some custom scripting to throttle OSC transmission to a rate that the LanBox can handle.

May 3rd, 2011

New Interface Templates

I updated the interface template file today to take advantage of some of the 1.2 coding conventions. For example, buttons can now have label text without requiring a separate label widget defined; just add the “label” property to any button widget and pass some text as a value. Also, I added shorthand syntax for defining boundary rectangles:

/**** before (and still valid, but not the most efficient) *****/
"x": 0, "y": 0, "width": .654, "height": .3

/**** as of 1.2 ****/
"bounds": [0, 0, .654, .3]

These two changes (bounds & button labels) cut the code for the interface template (any many other interfaces) in half.

I also added a multipage interface template file. You can use different pages to define separate screens of widgets; you can move between these pages by pressing the provided buttons in the template (this functionality could also be mapped to a slider). The javascript for switching pages can either target a specific page:


or can change pages relatively:


The “info” button in all the default interfaces included with Control just calls the changePage() method and takes you to a page containing nothing but a label with informational text and a back button.

April 28th, 2011

Using Control as a Monome emulator with mlr

I created a Bonjour enabled mlr 2.5.1 patch that is relatively easy to use with Control; I’ve described the process to use it in a forum posting. Thanks to user Ronji for a lot of help in getting the Monome emulator working correctly and with tips and advice about using mlr with Control.

Here’s a video of Ronji in action using Control and mlr together.

April 28th, 2011

How to use Control to control almost… anything

Anything electrical that is… forum member Mr. Thumbs (his real identity remains shrouded in mystery) has created an Instructable showing how to flip a relay using Control. In the Instructable he’s using it to control turning a house lamp on and off, but you could use it to control anything that draws a similar amount of power. Or get a bigger relay and control whatever you want.

Thanks to Mr. Thumbs for taking the time to create this tutorial!

This work is licensed under GPL - 2009 | Powered by Wordpress using a heavily modified version of the theme aav1