March 1st, 2011

Control 1.2 available in App Store

I’m going to post a longer change list in the forum, but the big new feature is the ability to define custom handlers for OSC addresses (and MIDI messages) in interfaces. This means Control can respond to arbitrary OSC/MIDI messages in any way you see fit; previously it could only update the values of widgets.

Basically you define a delegate object with a single method, either processOSC or processMIDI. Then set the assign this object to the delegate property of the oscManager in javascript. Here’s a simple example that defines OSC addresses for changing the page of an interface:

oscManager.delegate = {
    processOSC : function(oscAddress, typetags, args) {
        switch(oscAddress) {
            case "/nextPage":
                control.changePage('next');
                break;
            case "/previousPage":
                control.changePage('previous');
                break;
            case "/changeToPage":
                control.changePage(args[0]);
                break;
        }
    }
}

MIDI works the same way except you get midiType (cc, noteon etc) channel, number and value instead of the address, typetags and arguments. This should enable the creation of much more dynamic interfaces… OSC messages can now add widgets, delete widgets, change many values at once etc.

January 27th, 2011

Sequencer interface update

I updated the sequencer I showed in yesterday’s video. You can download the new version from the same URL:

http://www.charlie-roberts.com/Control/interfaces/sequencer.js

In addition to giving a 8 x 16 drum grid to program beats, the sequencer also has 8 multisliders (effectively step sequencers) in it that you can use to send volume changes, filter messages, whatever. The slider step sequencers are mapped to CC 10 – 17. You can change which one you’re controlling using the slider in the upper right corner. BPM control is right underneath.

I posted an Ableton .als with the midi mapping all setup to control an Impulse (multisliders mapped to volume).

http://www.charlie-roberts.com/Control/misc/ableton/Control_Sequence_Demo2.als

Unfortunately I uncovered a few bugs with the multislider widget. They’re fixed in this interface (I overwrote the slider widget javascript) for the most part, but a couple of the bugs will have to wait until the next app update.

Image of a step sequencer running in Control

8x16 step sequencer in Control

January 21st, 2011

App Store Approved!

iTunes Link

2.5 weeks and two demo videos later and Control is approved for app store distribution. It should go live in the next 24 hours.

In preparation of people wanting to create their own interfaces I’ve uploaded a template file to the interfaces folder. This file just includes a button that brings up the main tab menu and a button that refreshes the current interface. The refresh button allows you to make changes to your JSON (such as adding or moving widgets) and then see the changes immediately after pressing refresh. The refresh button only works if your computer still has the same IP address that it had when you originally downloaded the interface. If the IP address of your computer changes, you can simply reload the interface by adding it again in the Interfaces tab, and then the refresh button will work with the new address.

I’m also including a screenshot from the iPad App Store showing the MultiTouchXY widget tracking 12 finger positions. Although the iPad / iPhone can only track 11 fingers concurrently you can have many more positions tracked in the MultiTouchXY widget and move around different sets of touches simultaneously. This interface also shows how scripting allows you to easily add more touches to track using the “add touch” button.

January 7th, 2011

Interface files posted

I’ve posted some of the interface JSON files that come included with Control; they’re a good resource to get an idea how to create interfaces or to modify for your own purposes. They’re located at http://www.charlie-roberts.com/Control/interfaces. As time goes by I’ll be adding more interfaces to this destination for people to download, accordingly, I’ve created the following link shortener to make it easier to type on mobile devices: http://goo.gl/5K4W7. At least, I think that’s easier…
I guess the shortener doesn’t work if you add the interface filenames to it… use the full address.

At some point maybe I can figure out a way to browse folder directories from within Control…

December 26th, 2010

Control blog is up!

For this first post I’m attaching a screenshot of a DJ interface that will come with the software. There’s not too much special about it, but I’ll note that the scripting capabilities of Control allow for the crossfader position to be controlled by the left, right and center buttons. This behavior is all setup in the interface file via JavaScript. Even a behavior relatively simple like this would be impossible to program in an interface without adding code to the app itself in other iOS interface programs.

Here is the code for the left button that sets the crossfader value to zero, as found in the JSON interface file:

"ontouchstart": "crossfader.value = 0; crossfader.draw();"

Normally when setting the value of a widget you would use the setValue(x) method; setValue changes the value of the widget, outputs the new value via OSC or MIDI and then redraws the widget. However, in this case, the button already sends out a value and we want to avoid sending a repeat.

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