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:
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.
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.
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.
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.
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:
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.
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.
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.
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!