Memo Mehmet Akten

Welcome. My name is Mehmet S. Akten (aka Memo)and I'm an artist / visualist / musician / engineer / toy maker / mad scientist based in London, UK.

I like to touch people, in their most private places, and make them giggle or cry.

This is my blog containing experiments, examples, tutorials and thoughts on visuals, synesthetic media, art, interaction design, computational design, computer vision, openframeworks, processing, quartz composer, flash, creative coding, mobile/iphone development etc.


I run The Mega Super Awesome Visuals Company and you can see my work at www.msavisuals.com

Aug 06 18:14

Announcing Webcam Piano 2.0

Jul 13 12:14

MSALibs for openFrameworks and Cinder

I am retiring my google code rep for openframeworks addons in favor of github. You can now find my addons at http://github.com/memo/msalibs . Actually I've taken a leaf out of Karsten Schmidt's book and registered http://msalibs.org too. For now it just forwards to the github rep, but maybe soon it will be it's own site. (Note you can download the entire thing as a single zip if you don't want to get your hands dirty with git - thank you github!).

There are some pretty big changes in all of these versions. Some of you might have seen that the Cinder guys ported MSAFluid to Cinder and they got a 100% speed boost! Well it's true, they've made some hardcore mods to the FluidSolver allowing it to run exactly 2x faster. Now I've ported it back to OF, so now we have the 100% speed boost in OF too. In fact carrying on their optimization concepts I managed to squeeze another 20% out of it, so now it's 120% faster! (And these mods also lend themselves to further SSE or GPU optimizations too).

To prevent this porting back and forth between Cinder and OF I created a system introducing an MSACore addon which simply maps some basic types and functions and forms a tiny bridge (with no or negligible overheads) between my addons and OF or Cinder (or potentially other C/C++ frameworks or hosts). MSACore is really tiny and not intended to allow full OF code to run in Cinder or vice versa, but just the bare essentials to get my classes which mainly do data processing (such as Physics, Fluids, Spline, Shape3D etc. - hopefully OpenCL soon) to run on both without modifying anything.

So now any improvement made to the addon by one community will benefit the other. Feeling the love :) ?

Some boring tech notes: Everything is now inside the MSA:: namespace instead of having an MSA prefix. I.e. MSA::FluidSolver instead of MSAFluidSolver. So just by adding using namespace MSA; at the top of your source file you can just use FluidSolver, Physics, Shape3D, Spline etc. without the MSA prefix (or just carry on using MSA:: if you want). I think it aids readability a lot while still preventing name clashes.

There are more changes in each addon so check the changelog in each for more info. e.g. MSA::Physics now has a MSA::Physics::World which is where you add your particles and springs (instead of directly to physics), and the MSA::Fluid has an improved API which is more consistent with itself. So backwards compatibility will be broken a bit, but a very quick search and replace should be able to fix it. Look at the examples.

P.S. this is the first version of this MSACore system (more like 0.001) so it may change or there may be issues. If you are nearing a deadline and using one of these addons, I'd suggest you make a backup of all of your source (including your copy of MSAxxxx addon) before updating!

Any suggestions, feedback, tips, forks welcome.

Jul 09 00:29

ofxWebSimpleGuiToo for openFrameworks (call for JQuery gurus!)

ofxWebSimpleGuiToo is an amazingly useful new addon for openFrameworks from Marek Bereza. With one line of code it allows you to create a webserver from within your OF app and send your ofxSimpleGuiToo gui as an html/javascript page, allowing remote clients to control your OF app from a regular web browser. These can be another PC or Mac, or android device, iPod Touch, iPhone, iPad etc. you name it. No specific app is needed on the client, just a simple web browser. In the photo below you can see the OF app running on the laptop sending the gui structure to an iPad and an iPhone - both running safari, which in turn can control the OF app.

there is still more work to be done, especially any Javascript / JQuery gurus out there willing to improve the client end are encouraged to come on board and finish it off!

If you're interested please get in touch

More information on ofxWebSimpleGuiToo and download can be found on Marek's google code
http://code.google.com/p/ofxmarek/wiki/ofxWebSimpleGuiTooWebService
(you will also need his ofxWebServer).

and you will need the latest ofxSimpleGuiToo from my github
http://github.com/memo/msalibs
(from here you will also need ofxMSAInteractiveObject)

Jun 23 11:16

BLAZE visuals

Earlier this year MSA VIsuals directed and produced the visuals for the west-end dance show BLAZE. Below is a short snipped of some of the visuals. You can see more information at www.msavisuals.com/blaze

Jun 03 16:42

Metamapping 2010

I was recently at a workshop / residency at the Mapping festival 2010, Geneva, Switzerland. Many collaborators, artists, musicians, performers, visualists took over various spaces at La Parfumerie to create audio-visual performances and installations. Constructing a large scaffold structure in the main hall, armed with DMX controlled lights, microphones, cameras, sensors and projectors; we converted the space into a giant audio-visual-light instrument for the audience to explore and play with, and be part of and experience a non-linear narrative performance. The project involved live projection mapping, motion tracking, audio-reactive visuals, piezo-reactive audio and visuals, DMX controlled lights, rope gymnasts, acrobats and much more!

Video coverage of the event coming soon.

More information can be found at Mapping festival and 1024 Arcitecture

 

Mar 22 11:25

First reviews of Blaze are in

First reviews for the west end show we did visuals for are in. My focus is obviously the visuals, but overall it's looking pretty good! More information at http://www.msavisuals.com/blaze.

The Times - "The aptly named Mega Super Awesome Visuals Company eventually makes selective use of every available surface as a screen upon which to project a dazzling variety of digital graphics, from animated landscapes and pulsating lights to oozing liquid and raging flames."

The Guardian - "Es Devlin's clever set, constructed from piles of boxes, cupboards, TV screens and doors, gives the dancers plenty of levels to move on, and, better still, functions as a three-dimensional screen on which the lighting and video team can project their most astonishing effects. A B-boy trio performing against images of melting snow acquire a rare luminous purity; Lizzie Gough (also a finalist from So You Think You Can Dance) becomes a fiercely demonic figure, conjuring a kaleidoscopic storm of flashing light."

Financial Times - "Here is the most blissfully energetic, sassy, to- hell-with-everything-except-street-dance show. And it is superbly designed by Es Devlin ... Devlin has, tremendously, placed the action against a wall of grey, office-equipment- suppliers’ drawers and the occasional ice-box and a single bath. These serve as background, exits, launching pads for dance. There is stunning lighting by Patrick Woodroffe and Adam Bassett, and amazing video projections."

Too Much Flavour - "the projection effects were sensational at extending the effect of the routines. Although the back wall of the theatre was an odd construction made up of what appeared to be stacks of drawers when lit fully, come time for those projections and the wall burst to life with action. Memo Akten and Robin McNicholas did an amazing job at putting it to use. One of its best uses was a solo from Lizzie Gough controlling a projected ball of light with her choreography making it a visual treat to watch."

The Arts Desk - "This is a show blazing with talent and young exuberance, and it will rejuvenate you faster than a Red Bull. "

Mar 16 17:53

Rehearsal images from Blaze

Here are some shots from rehearsals of Blaze

Mar 11 17:07

Blaze previews

I've been quite busy lately directing and producing the visuals for the upcoming street dance show Blaze directed by Anthony Van Laast (Mamma Mia!, Joseph And The Amazing Technicolor Dreamcoat, Jesus Christ Superstar). Previews start 11th March 2009, after a 2 week run at the Peacock / Sadlers Wells in Holborn, London UK, it goes off on a tour of Holland and the UK. More info on the official site http://blazetheshow.com .

 

More information and documentation coming soon, but to quickly summarize, it involves camera-tracking breakers, projection mapping onto an extremely intricate set designed by Es Devlin (Kanye West, Pet Shop Boys, Lady Gaga) - and it's a touring show - and none of the MSA Visuals team are touring with it - and some shows are one night stands - and the set is projected on by two projectors with very very short throws and huge amounts of lens distortion. So you can imagine the complexity in devising a setup which is tourable and quick and easy to setup and calibrate, and still provides us the power to map the fine detail. All powered by custom software of course. Huge thanks to the amazing production crew, super talented breakers and dancers, all the other creatives, and special thanks to Theo Watson and François Wunschel. More soon.

Visuals Team:

  • Mehmet Akten: Direction, design, animation, software
  • Robin McNicholas: Design, animation
  • Jane Laurie: Design, Illustration
  • Mike Tombeur: Video editing

 

Feb 14 15:59

Hieronymus Bosch == Star Wars Emperor Palpatine ?

Have a look at this portrait of Hieronymus Bosch - the great 15th century painter captivated by torturous imagery of demonic torments from hell:

 

and the Evil Emperor Palpatine from the Star Wars series:

 

Separated at birth? Or are they the same person?

Feb 13 17:42

Vertex Arrays, VBO's and Point Sprites with C/C++ in openFrameworks 006

A while ago I'd posted an example and source code for using Vertex Arrays, Vertex Buffer Objects and Point Sprites in openFrameworks. This was for openFrameworks 005 and needed some mods to the core and other hacks to get it to do what we needed. In the current version of openframeworks (006+) a lot of the required functionality has been moved to the core and so we don't need the extra classes MSAImage and MSATexture, or to hack the core. The updated example is attached and can be downloaded from below.

P.S. An example on particle system with OpenCL for even more performance (updating the particles on the GPU) can be found here.

 

 

Feb 07 17:42

Midi Time Code to SMPTE conversion (C++ / openframeworks)

I've recently needed to work with Midi Time Code (MTC) and could not find any code to parse the midi messages and construct an SMPTE timecode. Closest I got was finding this documentation (which is pretty good) on how the data is encoded in the bits of 8 bytes sent over 2 SMPTE frames, each byte sent at quarter frame intervals. From that I wrote the code below (I've only really tested the 25 fps). The code is from an openframeworks application but should work with any C/C++ code.

P.S. Some info on bits, bytes and nibbles here.

class ofxMidiEventArgs: public ofEventArgs{
public:
    int     port;
    int     channel;
    int     status;
    int     byteOne;
    int     byteTwo;
    double  timestamp;
};
 
#define kMTCFrames      0
#define kMTCSeconds     1
#define kMTCMinutes     2
#define kMTCHours       3
 
// callback for when a midi message is received
void newMidiMessage(ofxMidiEventArgs& eventArgs){
 
    if(eventArgs.status == 240) {                       // if this is a MTC message...
        // these static variables could be globals, or class properties etc.
        static int times[4]     = {0, 0, 0, 0};                 // this static buffer will hold our 4 time componens (frames, seconds, minutes, hours)
        static char *szType     = "";                           // SMPTE type as string (24fps, 25fps, 30fps drop-frame, 30fps)
        static int numFrames    = 100;                          // number of frames per second (start off with arbitrary high number until we receive it)
 
        int messageIndex        = eventArgs.byteOne >> 4;       // the high nibble: which quarter message is this (0...7).
        int value               = eventArgs.byteOne & 0x0F;     // the low nibble: value
        int timeIndex           = messageIndex>>1;              // which time component (frames, seconds, minutes or hours) is this
        bool bNewFrame          = messageIndex % 4 == 0;
 
 
        // the time encoded in the MTC is 1 frame behind by the time we have received a new frame, so adjust accordingly
        if(bNewFrame) {
            times[kMTCFrames]++;
            if(times[kMTCFrames] >= numFrames) {
                times[kMTCFrames] %= numFrames;
                times[kMTCSeconds]++;
                if(times[kMTCSeconds] >= 60) {
                    times[kMTCSeconds] %= 60;
                    times[kMTCMinutes]++;
                    if(times[kMTCMinutes] >= 60) {
                        times[kMTCMinutes] %= 60;
                        times[kMTCHours]++;
                    }
                }
            }           
            printf("%i:%i:%i:%i | %s\n", times[3], times[2], times[1], times[0], szType);
        }           
 
 
        if(messageIndex % 2 == 0) {                             // if this is lower nibble of time component
            times[timeIndex]    = value;
        } else {                                                // ... or higher nibble
            times[timeIndex]    |=  value<<4;
        }
 
 
        if(messageIndex == 7) {
            times[kMTCHours] &= 0x1F;                               // only use lower 5 bits for hours (higher bits indicate SMPTE type)
            int smpteType = value >> 1;
            switch(smpteType) {
                case 0: numFrames = 24; szType = "24 fps"; break;
                case 1: numFrames = 25; szType = "25 fps"; break;
                case 2: numFrames = 30; szType = "30 fps (drop-frame)"; break;
                case 3: numFrames = 30; szType = "30 fps"; break;
                default: numFrames = 100; szType = " **** unknown SMPTE type ****";
            }
        }
    }
}

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.

http://entertainment.timesonline.co.uk/tol/arts_and_entertainment/music/...

http://mashable.com/2010/01/31/grammys-imogen-heap-twitdress/

http://www.trendhunter.com/trends/imogen-heap-grammy-awards

 

 

http://www.msavisuals.com/imogen_heap_twitdress_for_grammys_2010

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

Jan 21 23:31

Laser tracking visuals for OKGo & Fendi @ Design Miami 2009

I designed and programmed visuals (projections) for the OKGo performance and Fendi installation at Design Miami 2009. OKGo were playing modified Les Paul guitars mounted with laser beams in the headstock, designed by Fendi in collaboration with Moritz Waldemeyer. Using a PC equipped with a high-speed firewire camera, I developed custom software to track the laser beams and generate visuals around the spots they hit the wall. These visuals were also audio-reactive, responding to the live audio feed coming from the sounddesk.

More images & video coverage coming soon.

P.S. For additional laser tracking goodness, checkout the Graffiti Research Lab's Laser Tag.

Dec 16 23:02

Happy Holidays! OKGo 'wtf' effect in realtime

Inspired by the brilliant use of an age old concept in the recent OKGo 'WTF' video, I created this little open-source demo in processing. It works in real-time with a webcam and you can download the app and source from http://www.msavisuals.com/xmas2009

Dec 07 10:58

Decode: Digtal Design Sensations at the V&A w/ onedotzero

I am happy to announce that my Body Paint installation will be exhibited at the Victoria & Albert Musuem from 8th December 2009, to 11 April 2010 along with many other great works, for the Decode: Digital Design Sensations exhibition, co-curated by onedotzero.

More information on the exhibition can be found on the V&A microsite www.vam.ac.uk/microsites/decode/

or onedotzero's site www.onedotzero.com/event.php?id=31225

Looking forward to a great show and hope you can make it!

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).

Oct 30 10:59

Galapagos 2009 - Mangrove forests + Orcas + Sharks

I generally try to avoid personal posts on this blog, but this one was too amazing an experience to leave out. In September I went on holiday to the Galapagos Islands (inspired by Darwin's Bicentenary). I have absolutely hours and hours and hours of footage, and obviously not enough time to go through it all - but the highlight of the trip, was probably an extremely serene afternoon chilling in a mangrove forest, and on the way back to our big boat, a surprise encounter with a pod of orcas - two or three times the size of our little dingy - oh and some sharks too!

The video below is not an edit of the whole trip, it is just what we saw on the afternoon of 9th September 2009.

and here are some photos from the trip:

Oct 30 00:24

OpenCL in openFrameworks example - 1 milion particles @ 100-200fps

Recently I've been playing a lot with OpenCL, the new API / framework designed to handle cross-platform parallel computing (i.e. a simple way of running code simultaneously on all cores of your CPU, GPU or other processors). Implementations have been cropping up this year in NVidia drivers or ATI drivers, but most famously it's included with Mac OSX 10.6 Snow Leopard.

To cut a long story short I've been working on a simple-to-use C++ wrapper for some of the most common functions, imaginatively called ofxOpenCL and here is a little demo of 1 million particles running at 100-200fps.

NOTE: The Vimeo compression destroys most of the particles, so I suggest downloading the quicktime directly from the vimeo page at http://www.vimeo.com/7332496


This is 1,000,000 particles being interacted on by mouse, updated on GPU (with springy behaviours ) via an OpenCL kernel, data written straight to a VBO and rendered - without ever coming back to host (i.e. main memory + cpu etc.)

Frame-rate is around 100-200fps running on a macbook pro with GF 9600GT. That's 100-200fps on a laptop! (albeit a pretty decent one), but I'm dying to try this on a GF 285 GTX - which has 7.5x the number of cores, 2.5x the fillrate and 3.5x the memory bandwidth - for only £250!!

The kernel for this is surprisingly simple:

__kernel void updateParticleWithoutCollision(__global Particle* pIn, __global float2* pOut, const float2 mousePos, const float2 dimensions){
	int id = get_global_id(0);
	__global Particle *p = &pIn[id];
 
	float2 diff = mousePos - pOut[id];
	float invDistSQ = 1.0f / dot(diff, diff);
	diff *= 300.0f * invDistSQ;
 
	p->vel += (dimensions*0.5 - pOut[id]) * CENTER_FORCE2 - diff* p->mass;
	pOut[id] += p->vel;
	p->vel *= DAMP2;
 
	float speed2 = dot(p->vel, p->vel);
	if(speed2<MIN_SPEED2) pOut[id] = mousePos + diff * (1 + p->mass);
}

This example is based on Rui's opencl example at http://vimeo.com/7298380.

Discussion on the matter at http://www.openframeworks.cc/forum/viewtopic.php?f=10&t=2728&p=15107#p15...

source code for ofxOpenCL and the above example at
http://code.google.com/p/ofxmsaof/downloads/list
(the SVN is likely to be more recent).

Oct 01 19:57

Post "Gold" at Tent London

Recently "Gold" was selected to be shown at the Tent London exhibition as part of the London Design Festival. Below are a few photos from this exhibit, video from the same exhibit coming soon.

More information on the installation can be found at www.msavisuals.com/gold

 

Sep 17 04:20

"Gold" at Tent London / London Design Festival 2009

This site has been pretty quiet for a while, mainly because I've been quite occupied with a large project (details on that coming soon), and recently on a much needed vacation (details on that coming soon too (^_^ ) ).

In the meantime I'm delighted to announce that my "Gold" installation has been selected to be shown at the Tent London exhibition as part of the London Design Festival.

An early demo of the installation can be seen here, though the final installation is quite different... best to come experience it for yourselves ;)

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).

Aug 07 00:05

Cross platform, open source, C++ UDP TCP bridge (for OSC, TUIO etc.)

A cross platform, C++ UDP-TCP Bridge.

Originally created to forward UDP TUIO (OSC) messages straight to TCP to be read from within Flash.

This application forwards all incoming UDP messages straight to TCP without touching the data, just a straight forward.(Since version 0.2.1 there is the option to prefix the size of the packet before sending the data to comply with OSC / TCP specifications). This enables applications that don't support UDP (e.g. Flash) to receive the data. Since OSC / TUIO are generally sent via UDP, this enables Flash to recieve those messages in their raw binary form.

Settings can be edited from data/settings.xml.

Source and binaries at http://code.google.com/p/udp-tcp-bridge/

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 10 18:30

Body Paint performance at Clicks or Mortar, March 2009

I finally got round to editing the footage from the Body Paint performances at Clicks or Mortar, March 2009.

designed & created by Mehmet Akten, http://www.memo.tv
choreography & performance by Miss Martini, http://www.myspace.com/maleficentmartini
music "Kill me" by Dave Focker, http://www.myspace.com/davefocker

Excerpts from performance at
“Clicks or Mortar”, Tyneside Cinema, March 2009
curated by Ed Carter / The Pixel Palace, http://www.thepixelpalace.org/

http://www.memo.tv/body_paint