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.

February 9th, 2011

Control 1.1 is up + github repository

Lots of bugfixes + bi-directional communication. The bi-directional communication works the same way as on a JazzMutant Lemur… if a slider outputs to OSC address /volume, just send a message to the address /volume at Control’s ip to change the value of the slider.

IMPORTANT: For whatever reason I hardcoded Control’s OSC receive port to 51000. I’ve already programmed a preference in the next update where you can specify it, but, that’s what we’ve got for now.

Also, Control is now open-sourced under the MIT license. You can view / download the source at GitHub. Let me know if you’d like to contribute.

January 29th, 2011

Control forum is up

Here is the new forum to post questions and make comments. And hopefully post some interfaces!:

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 23rd, 2011

New and Noteworthy

So fancy. My poor metronome never got selected by Apple as New and Noteworthy, but I know deep in my heart it deserved it too. And they can’t take that away from me. Ever.

Too bad the app screenshot looks bad when it’s that small…

Taken 1/23/2011 from iTunes

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 14th, 2011

Demo movie

I posted a short movie of using Control with Ableton Live. For ease of production I ran control in the Simulator rather than on an actual device, but it gets the idea across.

Warning: the video is pretty dull. I’ll try to put out some more exciting ones sometime soon.

Intro to Control: Free MIDI / OSC software for iOS from charlie roberts on Vimeo.

January 5th, 2011

App Store Submission

After a lot of bug fixing, interface building, documentation and screenshot taking I submitted Control to the App Store today. I wasn’t able to cram everything into the first release that I wanted to, but a lot of it made it in there.

Here’s a couple of screenshots from the App Store submission:

Screenshot of the Game of Life interface

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