Feb 07 00:00

Imogen Heap "Twitdress" for Grammys 2010

For the Grammy awards 2010, musician & artist Imogen Heap wanted a dress that would display the tweets and photos coming from her fans in realtime, so she could take her fans with her onto the red carpet. Moritz Waldemeyer designed a flexible LED ribbon which she could wear, and I developed the controlling software, an iPod Touch application that she could carry in her bag that would collect all the tweets and photos from the net, and send the information to the custom LED ribbon.







Jan 28 01:13

Today is Jackson Pollock's birthday! Jackson Pollock iPhone app for free.

Today only! In honor of Jackson Pollock's birthday (28th January), this app will be totally free!

Get it now!!!

Nov 03 08:39

Zoetrope for iPhone

Finally, after 4 weeks of waiting, my new iPhone app has hit the appstore. "Zoetrope for iPhone". iTunes link and more information can be found here.


(video coming soon).

Aug 11 00:35

looping via NSThread vs NSTimer

There are many posts out there on the internet discussing the pros and cons of running an update loop on iPhone (or on desktop for that matter) via an NSTimer vs NSThread, and many suggest they can squeeze an extra 3-5fps out of using an NSThread. So after this discussion on the openFrameworks forum, and with help from Robert Carlsen, I added this feature as an option to ofxiPhone. By default the update loop is still triggered from an NSTimer for backwards compatibility (and safety), but if in your testApp::setup() you call iPhoneEnableLoopInThread(), then the loop will be initialized to run in a separate NSThread and throttled by mach_absolute_time(). It is very much in its infancy (uploading to SVN as I type) but seems to do the job (obviously you'll need to write threadsafe code if you use it).

Jun 29 21:01

MSARemote for iPhone 1.0 finally approved

After an adventurous 4 months of waiting and rejections and more rejections, I'm delighted to announce that MSA Remote for iPhone has finally been approved! Many thanks to all those that tested, left feedback, and generally gave support!

More info at http://www.memo.tv/msaremote_for_iphone

Jun 03 15:17

XCode templates for openFrameworks on Desktop and iPhone


The templates attached below were for openFrameworks & ofxiPhone pre-006. For the current version of openFrameworks new templates are required, for now they can be found at http://github.com/memo/openFrameworks/tree/master/xcode%20templates/

Inspired by Roxlu's brilliant openFrameworks wizard for code::blocks I thought I'd have a go at creating similar XCode templates - turned out it's super easy and you can download them below (templates for both desktop applications and iphone applications). Instructions are included in the zip but I'm attaching it below too.

Note: the iPhone template is for the latest version of ofxiPhone from the svn because there are additional files in the current version. (Thanks to everybody for pointing this out).


May 29 17:54

iScream for iPhone

The quickest game I've ever developed on any platform.

Next steps, to do a 9 page panoramic ;)

P.S. Do not expect to see this in the App store anytime soon!

May 15 13:06

MSA Remote rejected AGAIN, velocity sensitive pads on iPhone, and patents


So my MSA Remote app has been rejected AGAIN, for the second time! This time because my startup image "infringes an Apple Trademark Image". Aaargh!


I had paid special attention to not include the sliver outline and home button in case it would be an issue, but it wasn't good enough. Apparently Apple own rectangles with rounded corners at a specific radius.

But like they say, Never give up, never surrender. I've resubmitted with a much tighter crop (I know, a lot uglier :S but it'll have to do for now), if this doesn't get approved, I think I'll just give it all up and retire to a little fishing village (maybe I should do that anyway).



P.S. You can see the previous post about the first rejection here.


Demo, Velocity Sensitive Keys and Patents

In the meantime I've uploaded a new video, this time demoing controlling Ableton Live (for audio) and VDMX (for visuals) and using faders, triggers, and velocity sensitive keys - yes velocity sensitive. The harder you hit the keys, the louder the sound (or whatever you want to map it to).

Coincidentally, in a tweet from cdmblogs I saw these guys have developed a very similar "patent pending" technique. They're very young, all in their early twenty's. So respect guys for all you've developed and the whole business venture etc. but a tip, please don't try and patent things like this. It's bad for mankind.

And for those wondering how it works, it's not rocket science, it's accelerometer. The harder you hit the screen, the bigger jolt on the accelerometer. And yes it does work on hard surfaces because you still get an internal jolt. You just need to do some filtering and check change of acceleration on finger touchDown. Neat I know ;) patent worthy? I think not.

In this video, OSCulator is routing the OSC (& TUIO) messages coming from MSA Remote to midi and forwarding to Ableton Live and VDMX simultaneously. Nothing is done in post, the same signal is controlling both audio and video.

May 12 14:10

MSA Remote for iPhone

Controlling VDMX + Ableton Live
Controlling Java / processing.org fluid simulation with TUIO
Controlling custom multitouch paint application with TUIO

MSA Remote is a remote control application for iPhone & iPod Touch that sends OSC messages over the wifi network. This allows you to control any OSC supporting applications such as Max/MSP/Jitter, PureData, Reaktor, VDMX, vvvv, Resolume, Quartz Composer etc. as well as any custom applications such as interactive installations, audio/visual performances, multitouch capable surfaces etc.

By mapping the OSC to midi on desktop (e.g. using OSCulator) allows further control of any application which supports midi such as Ableton Live, Cubase, Logic Pro, 3DSMax etc. In addition, developers can easily integrate OSC into their applications knowing it can be controlled remotely.

The application can be distributed to visitors, guests, members of the public etc. to interact with an installation or performance, or used by dedicated performers.

Available on the iPhone App Store

Get it from the iTunes App Store here.




- Multitouch information sent using standard TUIO protocol for instant integration with existing TUIO clients
- Accelerometer data for each axis (x, y, z) is sent
- 64 faders (8 pages of 8 faders)
- 64 triggers (8 pages of 8 triggers)
- 108 key (9 octaves) VELOCITY SENSITIVE polyphonic keyboard. Yes, the harder you hit the keys, the greater the velocity.
- Settings are automatically saved and restored
- Multitouch area orientation can be set as desired
- All information on protocols are documented in the app

Controlling VDMX & Ableton Live simultaneously

In this video, OSCulator is routing the OSC (& TUIO) messages coming from MSA Remote to midi and forwarding to Ableton Live (for audio) and VDMX (for visuals) simultaneously. Nothing is done in post, the same signal is controlling both audio and video. Video demonstrates faders, triggers, and velocity sensitive keys - yes velocity sensitive. The harder you hit the keys, the louder the sound (or whatever you want to map it to).

Controlling Java/processing.org fluid simulation with TUIO

Source code for the processing.org sketch can be found here:

Controlling custom multitouch paint application with TUIO

Graffiti Wall is a product that Tangible Interaction had already developed a while ago and have been using commercially. It was built on TUIO from the beginning, so when I passed on a copy of MSA Remote (via ad-hoc), they were able to immediately integrate it with their app without any modifications.

Graffiti Wall meets MSA Remote from Alex Beim on Vimeo.

OSCulator (osc->midi)

Camille Troillard, the mastermind behind OSCulator was kind enough to add some features (and sample patches) to his app to make handling the data coming from MSA Remote and converting to midi as seamless as possible.

  • The /msaremote/fader protocol is recognized and faders are automatically setup to forward to midiCC with same number as the slider.
  • The /msaremote/trigger protocol is recognized and triggers are automatically setup to forward to midi notes with constant velocity.
  • The /msaremote/bank protocol is recognized and triggers are automatically setup to forward to midi notes with constant velocity.
  • In the Osculator/Sample Patches/iPhone folder there are two sample patches which map incoming msaremote keyboard OSC messages to midi notes with velocity. The basic patch maps each key to the relevant midi note, while the advanced patch has the keys setup so you can assign each key to a different event.


Blair Neal aka vimeo.com/laserpilot has created a Max MSP template (for Max5) to handle the OSC Messages coming from MSA Remote. Cheers Blair!

Download it here

MSA remote max template

Mar 29 11:31

Simple openFrameworks application on iPhone Sample 1

This is a tutorial in getting a very simple openFrameworks application running on iPhone with basic graphics, multitouch and accelerometer support (and one might say a simple particle system too!).

  • 10 Balls are moving around on screen and bouncing off the edges.
  • You can touch the screen with multiple fingers and drag the balls around (multitouch support)
  • You can tilt the iphone and the balls fall in that direction (accelerometer support).

...and all of this without touching a line of Objective C. It is actually one of the samples included in the ofxiPhone download - iPhone Touch+Accel Example. You can find it in the examples folder of the download, so if you load and run that project you can see the finished result. The code below is straight from that sample, warts and all :P

Mar 27 09:01

Developing for iPhone using openFrameworks and ofxiPhone

Note: Everytime I mention iPhone, I am in fact referring to iPhone & iPod Touch running OS 2+.

Update 29/03/2009

Just posted a simple example application source code and walk-through which can be found here.


Update 27/03/2009

openFrameworks 006 is now officially released! You can download a fat package for your system from www.openframeworks.cc, mac/linux/windows and now iPhone. I do recommend you keep an eye on the ofxiPhone SVN for updates and fixes.


What is this and what does it do?

ofxiPhone (along with ofxMultitouch & ofxAccelerometer) are addons for openFrameworks 006+ that allow you to develop for iPhone in plain old C/C++ just as you would on a normal desktop (mac, linux, windows). This means using the normal testApp.h, testApp.cpp, main.cpp; setup(), update(), draw(), mousePressed(), ofImage, ofTexture etc. and any other C++ classes you may have created. It also means that you can reuse your exact same code running on your desktop (mac osx, windows, linux) unchanged on the iPhone by just copying across your testApp.h, testApp.cpp, main.cpp and other source or resource files you may be using.

Feb 21 01:58

Meshmerizer for iPhone


An interactive, generative, audio-reactive visualization app for the iPhone and iPod Touch (what a mouthful!) (This is the continuation of what I originally called "The Meshulator").

Use your fingers to create and interact with abstract geometry in 2D or 3D. Very simple to use, just slide your fingers over the screen and try different gestures. Tilt the device to look at the shape from different angles. Options for two different kinds of audio-reactive behaviour (microphone input - iPhone only): deforming based on audio, or completely generative driven by audio. If you feel adventurous, you can play with plenty of customizable parameters to adjust coloring, physics, shape etc. Or if that feels too intimidating just click 'randomize' to make the settings random and experiment.

It was written with a custom version of openFrameworks (pre-006) and an early version of the ofxiPhone addon. Information on openFrameworks and ofxiPhone at memo.tv/ofxiphone.

Available on the iPhone App Store

Get it from the iTunes App Store here.


Meshmerizer 25Meshmerizer 27Meshmerizer 31Meshmerizer 07Meshmerizer 02Meshmerizer 18Meshmerizer 01Meshmerizer 06Meshmerizer 04Meshmerizer 03Meshmerizer 19Meshmerizer 11Meshmerizer 20Meshmerizer 21Meshmerizer 22Meshmerizer 23Meshmerizer 15Meshmerizer 29

(video is of an early version missing some features)

Made with openFrameworks.

Feb 10 01:07

"Jackson Pollock by Miltos Manetas" for iPhone

148apps.com - 4/5 stars."You will find yourself showing people this application …and then, not getting your iPhone back because they want to keep painting."

geek.com - "I like the fact that the app is not just a port of the website, but includes enhancements which take advantage of the features of the iPhone."

iphonefreakz.com - "...the most jollificating paint app for iPhone and iPod Touch. It’s like getting a Jackson Pollock soul inside you...Definitely worth having it on your phone for. Well worth $0.99"

iPhone adaptation of Miltos Manetas' website jacksonpollock.org (original flash developed by Stamen Design). Save your pictures and send them to jackson@jacksonpollock.org, the best Pollocks will be published in an upcoming book.

The video below shows the basic features of v1.0. In the current version (v1.1) ability to choose your own colors has been added to allow the creation of more controlled paintings like those seen in the images below.

Available on the iPhone App Store

Get it from the iTunes App Store here.

Quick paintings created with "Jackson Pollock by Miltos Manetas" for iPhone:
'Sun in the sky behind apple tree' by Memo'Black Swan' by Memo'Still Life Studies - bunch of fruit on table' by Memo'Blood' by Memo'Color on Black' by Memo'Good Times' by Jane'Amore 2' by Memo

Made with openFrameworks.

Feb 09 01:51

Gold Dust for iPhone

Version 1.1 is now in the appStore. New version brings serious optimizations thus max amount of dust is now tripled.

This is a port of my original gold dust app (vimeo.com/2281077) to iPhone. Of course it doesn't translate exactly but this is my first attempt to capture the essence of the original demo. Unfortunately I don't think this video manages to capture the behavior of the glittery gold dust either, but it's free so you can try it for yourself :P.

It was written with a custom version of openFrameworks (pre-006) and an early version of the ofxiPhone addon. Information on openFrameworks and ofxiPhone at memo.tv/ofxiphone.

Available on the iPhone App Store

Get it from the iTunes App Store here.

Made with openFrameworks.

Feb 05 15:36

NSArray vs. C Array performance comparison Part II - makeObjectsPerformSelector


In Part I, I compared the random access performance of a C float* to an NSMutableArray of NSNumbers, and on average the float* performed more than 400 times faster than the NSMutableArray. While those figures are accurate, they don't represent the optimal way of using NSArrays. NSNumbers can also be slow and there are faster linear enumeration methods than objectAtIndex. So I thought I'd modify the example using custom objects and sending messages to all objects, using floats in both cases. Note: these tests are conducted on an iPhone 3G as that's the target platform I was interested in.

Feb 05 14:57

NSArray vs. C Array performance comparison


The classes provided by Cocoa for handling data sets (NSDictionary, NSArray, NSSet etc.) provide a very nice interface for managing information, without having to worry about the bureaucracy of memory management, reallocation etc. Of course this does come at a cost though. I think it's pretty obvious that say using an NSArray of NSNumbers is going to be slower than a C Array of floats for simple iterations, so I decided to do some tests, and the results were pretty shocking! I wasn't expecting it to be this bad. Note: these tests are conducted on an iPhone 3G as that's the target platform I was interested in.

Jan 28 02:14

ofxMSAShape3D - OpenGL Immediate mode style wrapper for Vertex Arrays / OpenGL ES / iPhone

Over the years OpenGL has developed lots of different ways of sending vertex data to the graphics card: Immediate mode (glBegin / glVertex / glEnd etc.), Display Lists, Vertex Arrays, Vertex Buffer Objects etc. The first of these (Immediate Mode) is quite inefficient, so it's been dropped in OpenGL ES and depreciated in OpenGL 3.0. Instead we are to use Vertex Arrays or VBO's (Vertex Buffer Objects). They are way more efficient, but generally not as straightforward to setup and use.

For this reason I wrote a C++ class that wraps up the functionality of Vertex Arrays (and soon VBO's) in an immediate mode style syntax. I.e. you can carry on calling glBegin / glNormal / setColor / glTexCoord / glVertex / glEnd etc. but instead of sending the data on every function call, it just caches them all in client-side arrays, and sends it all in one go when you call glEnd(). Later you can call draw() to redraw the information you've put in. Thus improving performance on desktop systems, and allowing immediate mode style syntax on embedded systems such as the iPhone. (The previous post about the Meshulator uses this class).

Jan 26 01:28

The Meshulator on iPhone, Take 1

Early tests of Meshmerizer for iPhone

Screengrabs can be seen at flickr.com/photos/memotv/sets/72157612949492089/
(they look so much more aliased than they do on the iPhone screen, I should do some FSAA)

Meshulator iPhone  - 01Meshulator iPhone  - 02Meshulator iPhone  - 03Meshulator iPhone  - 04Meshulator iPhone  - 05Meshulator iPhone  - 06Meshulator iPhone  - 07Meshulator iPhone  - 08Meshulator iPhone  - 09Meshulator iPhone  - 10Meshulator iPhone  - 11Meshulator iPhone  - 12Meshulator iPhone  - 13Meshulator iPhone  - 14

Made with openFrameworks.

Jan 12 14:34

Memory Management with Objective C / Cocoa / iPhone

Now that the iPhone SDK is out, iPhone/iPod Touch has sold millions and the App Store is pretty popular, there are many people taking to iPhone and Cocoa Touch development. While the SDK is very well designed and pretty quick to get into, the biggest hurdle is usually the unique language that Apple (and previously NextStep) chose for its development on OSX and iPhone: Objective C. At first glance it looks hideous and unlike anything most people using C based syntax are used to (C, C++, ActionScript, JavaScript, Java, C#, GLSL etc.). But once you get your head around it, you really come to love it and understand why this choice was made.

One of the biggest obstacles most people have to get their head around when they first start Objective C / Cocoa development is the memory management - and it's actually very beautiful when it finally dawns on you how simple it really is (though this may take a couple of proper projects!). In fact, I found it so useful, I wrote a little class for C++ for similar functionality (http://code.google.com/p/ofxmsaof/wiki/ofxObjCPointer).


Oct 01 15:44

Controlling Roots with the iPhone

Well I finally caved in and bought an iPhone - and my favorite feature (and main reason for buying it) is of course the multi-touch capabilities. So currently OSCemote is my favourite app. Apart from having a few sliders and knobs which transmit OSC (similar to TouchOSC), it also has a multitouch pad which sends out TUIO messages, so any app which responds to TUIO (E.g. anything written with reactivision api) will respond. So I had to try out my visualisation for the Roots Project! Up and running in 5 minutes! Awesome! (I had to rotate the coordinates in my processing code though to have the long end of the iphone screen map to the long end of my desktop screen, slightly annoying that this isn't an option in the app... hopefully soon :P).

Oct 01 01:17

Painting in Quartz Composer with Wiimote and iPhone

I'm very much into creating intuitive interactivity with minimum dependency on a controlled enviroment - so the experience can easily be recreated elsewhere with minimal hardware & setup (which is why I generally prefer optical flow analysis over blob tracking if I can, for vision related projects). So a conversation in the vidvox forums about painting in Quartz Composer using the Wiimote but without using the IR sensor really sparked my interest.