Memo Mehmet Akten

Welcome. My name is Mehmet (aka Memo) Akten 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. You can browse my work at www.msavisuals.com

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). Working with Robin McNicholas and Jane Laurie we designed and created all the visuals, and the system to play and map them onto the set (more on this below). It previews tonight at the Peacock / Sadlers Wells in Holborn, London UK, plays for 2 weeks, then off on a tour of Holland and UK.

More information about the visuals 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 I'm not 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 easy quick 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, all the other creatives and dancers, and special thanks to Theo Watson and François Wunschel.

More soon.

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

Jun 03 15:17

XCode templates for openFrameworks on Desktop and iPhone

UPDATE:

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 21 13:44

openFrameworks London Workshop

I'm going to be giving an openframeworks workshop in London along with Marek Bereza and Joel Gethin Lewis, organized by InteractiveArchitecture.org and hosted by University College London’s MSc Adaptive Architecture & Computation Programme.

More information here.

May 16 14:37

Body Paint showing tonight at "Exhibit X presents Pebbledash"

I'll be showing Body Paint tonight at "Exhibit X presents Pebbledash". So if you want to have a play, come on down.

May 15 13:06

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

Rejection

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!

msaremote1

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

msaremote1_2

 

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 14 12:31

Google anaytics keywords on memo.tv

So I just entered the world of google analytics (been registered for about a year, but never really looked at the data), and it's amazing. I was browsing the keywords people have used to find my site and there are some real gems in there. Most are what you'd expect (openframeworks, processing, quartz composer, physics, fluids, motion tracking, audio reactive and other interactive stuff). Some are so interesting and/or funny that I thought I'd share them.

For those that don't know what google analytics is or does, the below are some of the keywords that people have put in google, yahoo etc. and been led to memo.tv via the search results.

There are over 16,500 search phrases people have used and I didn't look at them all. Just a real quick browse through.

First, one of my favorite search queries I saw leading to memo.tv:

  • cool abstract shit (probably because I have the domain abstractshit.com, but i just love the fact that someone typed 'cool abstract shit' into google)

 

'girl' related queries that led to memo.tv (they must have been so dissapointed):

  • mad girls
  • madgirls
  • memo girl
  • amoeba girl (I hope you were looking for this, otherwise I dread to think what you were looking for)
  • cover girls memo 2008
  • glsl girl shader (yea, wouldn't that be nice!)
  • lab dance girls (unfortunately you don't get many dancing girls in labs. maybe you meant 'lap' ?)
  • mad girl secret (this guy spent 11 minutes browsing the site!)
  • mad girls graphics
  • memo girls
  • quartz composer my girlfriend (this one is slightly worrying)
  • visual 3d dancing girl


Some other interesting ones that caught my eye as I quickly scrolled through 16,500 searches:

  • algorithmic video i like to touch (8 people searched for this!)
  • you are not owner
  • does techfit really work?
  • why cant you see magnetic force (yes, it would be nice if we could see them)
  • why do we need hexadecimal number system when we have binary ?
  • why management by objective and not management by wondering?
  • why should i get high bbc ? (maybe because there's no other way of sitting through eastenders?)
  • psychadelic piercing
  • awesome mega flash game
  • islamic elements in motion graphics
  • cool acid visuals
  • what physical force makes up quartz (wow google, i can see why you thought memo.tv might be relevant, but you were way off!)
  • art interactif tutorial
  • how do i take a slit scan photo on my iphone
  • import radiohead house of cards into 3d
  • whereever you go,whatever you do notes for the piano (how on earth did that direct to my site!?)
  • how can i make the dust as gold?
  • interactive video art tutorial
  • physics falling balls 3d source code opengl
  • interactive installation free code
  • very nice dance
  • how to do visual distortion effects glsl 
  • how to use msashape3d library in opengls + iphon + code example
  • open source quartz composer interactive projects
  • the good and bad paints of audio and visual movement
  • papervision high performance billboard for particle systems
  • quartz composer motion tracking
  • how to get a documentary on bbc television
  • msa 2009 interactive yearbook cd
  • using flash + quartz for tv production
  • generative video dance software for mac
  • the difference between real time processing and interacting processing
  • how to create volleyball game in flash as3
  • how to end a company's performance memo?
  • how to fake multitouch in actionscript
  • how to make sound reactive visuals
  • how to make psychedelic videos in flash

Actually just browsing the "how to ...." section was really interesting. Like looking through a window and seeing loads of people scattered around the globe, trying to find a solution to their problems - and in so many cases very similar problems. E.g. hundreds of queries about "when to release objects in objective c", or "how to do motion tracking in quartz composer" etc. Definitely a great source for data visualization. someday...

I wanted to actually publish them all, but google only allows me to download csv's in batches of 500. And there's 34 pages :S so I couldn't be bothered.

 

May 03 17:38

ofxMSAFluid for openFrameworks

This is a set of C++ classes for solving and displaying real-time fluid dynamics simulations based on Navier-Stokes equations and Jos Stam's paper on Real-Time Fluid Dynamics for Games. The solver class has no dependencies on openFrameworks and can be used in any C++ project. The drawer class extends ofBaseDraws and contains an ofTexture for seamless integration with openFrameworks drawing routines. Also included in the addon is a ofxMSAParticleUpdater class which allows the fluid solver to be easily plugged into ofxMSAPhysics as a force field.