Performing with Robots

Yesterday Marco Tempest was on TED‘s stage again, but this time he was not alone; he performed together with our new creation (creature?): EDI, the Magic Robot!

EDI is a heavily customised Baxter robot: we created for him a set of custom manipulators, a few top secret hardware attachments (you know, for magic ;) ), and a complete “software brain” that enabled him to display a personality, to train with humans and to learn from them.

Waiting for the official video to be released, you can read the post on the ted blog.

A final note: as you can imagine, giving life to EDI was an exciting, but complex job, so I think it’s not surprising that Marco, David (our robotics guru, borrowed directly from MIT’s Media Lab) and I were a little apprehensive about this first live performance. Given the common belief that machines are cold and feelingless, it might surprise that EDI was anxious too: if you don’t believe me, have a look at the following behind-the-scenes video ;)

Today I was writing a function to save a specific configuration file from an OF application and I noticed that ofSystemSaveDialog() (the function commonly used to open a save dialog) does not allow me to specify a default save path.

Since I wanted my files saved in a specific location, I quickly wrote a custom function that includes a path argument; it’s super easy and mac only (Objective C ++), but I thought someone could find it useful, so here it is:

ofFileDialogResult customSaveDialog(string defaultName, string messageName, string defaultPath){
ofFileDialogResult dr;

NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
NSSavePanel * saveDialog = [NSSavePanel savePanel];

[saveDialog setMessage:[NSString stringWithUTF8String:messageName.c_str()]];

NSString * s = [NSString stringWithUTF8String:defaultPath.c_str()];
s = [[s stringByExpandingTildeInPath] stringByResolvingSymlinksInPath];
NSURL * defaultPathUrl = [NSURL fileURLWithPath:s];
[saveDialog setDirectoryURL:defaultPathUrl];

[saveDialog setNameFieldStringValue:[NSString stringWithUTF8String:defaultName.c_str()]];

NSInteger buttonClicked = [saveDialog runModal];

NSWindow * appWindow = (NSWindow *)ofGetCocoaWindow();
if(appWindow) {
[appWindow makeKeyAndOrderFront:nil];

dr.filePath = string([[[saveDialog URL] path] UTF8String]);
[pool drain];

if( dr.filePath.length() > 0 ){
dr.bSuccess = true;
dr.fileName = ofFilePath::getFileName(dr.filePath);
return dr;

Recently a client bought a Kinect to be used with an OpenFrameworks app I wrote for them; we were doing some normal depth tracking, so we did expect a smooth ride, but, after a few seconds from when the Kinect got plugged, the application froze.
To keep it short, it seems that the Kinect model 1473 (the one you’ll find in shops these days) comes with a new firmware that auto-disconnects the camera after a few seconds, causing a freeze whenever you plug it into a computer and try to use it with libfreenect; this of course means that most creative coding toolkits are affected by the problem: I did run into it using ofxKinect, but it will happen also with the libreenect based Cinder Block, Processing library, etc…

Luckily Theo Watson already came up with a solution: you can find a fixed libfreenect here or, if you’re using OF, you can update to the last version on github.
The fix will work also with the Kinect for Windows and, of course, it will not break compatibility with the older 1414 Kinects.
Finally, if you don’t know the model of your Kinect, this picture will explain how to check it out:

I know it’s been a while since my last post, but I’ve been really busy on many, many projects.
Anyway I just wanted to quickly mention a brand new interactive digital signage tool I developed for the folks at EasySoft: it’s essentially an augmented-reality jukebox where you can load a client’s media assets (logos, video clips,…), select an interaction model (computer vision algorithm + particle system style) and watch people play on your led wall of choice.

We just had a christmas themed test run at Stazione Termini, Rome’s main station and people seemed to enjoy

Wired just published a 2 pages, well written article on Marco Tempest and his approach on magic, technology and everything in between.
Being the super nice person he is, Marco just told me: “i talked a lot about you an they did not even mention your name :( “, but I admit I like the idea of being mentioned as a “nameless coder”: sounds like cyberpunk hero ;)

Here’s the article: http://www.wired.com/underwire/2013/05/worlds-most-wired-magician-marco-tempest/

First time on stage for Marco Tempest‘s last augmented reality trick!
The ingredients:

- augmented reality objects that interact with the performer using a combination of markerless and natural features based techniques

- fluid realtime full HD special effects using a bit of GPU voodoo

enjoy :)

Cyber Cards Live v1.0 from Marco Tempest on Vimeo.


Stefano, my SPECTRE partner in crime, just told me that The Point Magazine featured a picture from our Isosmosi performance.

Isosmosi was a collaboration between Mutant Squad and SPECTRE, created in the beginning of 2012 and staged during the 7th APTPI Annual International Educational Meeting in Milan. The performers on stage were linked with a system of ropes, connected to steel hooks pierced through their skin; constantly monitoring their EEG and using a custom projection mapping software, we were able to visualize their emotional feedback making their body (and the ropes between them) glow in sync with their brainwaves.

More info, backstage pics and a video can be found here.


Ricevi al tuo indirizzo email tutti i nuovi post del sito.