Interactive spaces: Light and Darkness Ver2 Analog + Digital

The final Video:

During the process of adding digital to the analog version, there were more failure than success done throughout, let me start with these failures (and additional works I did which were not used in the end)

The unused Animations

Right after the completion of the analog version, I thought of making a projection of animation from the back of the candles onto a sheet of translucent paper sticked behind the candle shelf, I tried to learn how to make an animation and so I asked my animation friends what program to use to do a simple animation and they suggested Autodesk Sketchbook, so I downloaded it.


The Circuit that works,(or didn’t)

And then the Fairy light I bought from china arrived! I bought 220V fairylight because they are cheaper, and I did not expect them to be these problematic to deal with due to the dimming issue and also 220V = risky.

The additions to my “Dark Room”

Coding is a nightmare

as there are 297 candles, the coding to split each candle was simple but tedious, I am sure there are better ways to do thing, but the downside of using max msp was that the exact function to do things the better ways is really difficult to find, so… my mindset was “If I only know “IF”, I can also do unlimited amount of task, “IF” is as powerful as Hercules.” so… I had “IFs” my way through this project, literally. (just to be clear, I tried to find a better ways, and though I found them, but in the end it either doesn’t work or crashed my max msp.)


Year 2 sem 2 – Interactive 2 – Exercise 5, Many Eye Monster Lair

To be frank, I am not sure what to do with this patch to make it unique, so I added my previous patch that track my eye and did a minor adjustment so that the repetitive pattern in this patch will make the eye to look like a wall of continuous eye, since they are happening at real time, it feels like it is the nightmare of those trypophobic.

this still work with parts of the previous patch, by zooming more into the eye and changing the darkness of the clip to make it work.

Year 2 sem 2 – Interactive 2 – Exercise 4, Four Eye Monster

In this Exercise, I’ve used the location of the face tracker and cropped to only the eye area, scale it accordingly and delay video of the eye by using jit.matrixset, after that, I mapped it onto the original location of the face, creating a trippy effect of a four eye monster.

There are a few things that I’m unable to solve.

1 – the alphamask will give a rectangular box and im unable to remove it even with blur.

2-the additional eye is too sensitive and it look like its vibrating, maybe i could line it afterwards. so I added the eye tracker from the value of the jit.face box, while doing it, i realise it looks really cool on this effect for just using only the jit.face and scrdimstart and scrdimend it. it feel like a really old way of fliming drunken scene.


Year 2 sem 2 – Interactive 2 – Exercise 3, Photo Booth

This was the hardest Max patch we wrote up till now as it is logic base and after LPD taught us about the function of different commands –

Clocker(used in the patch to count down the 3,2,1,)
Speedlim (use in this patch to prevent sound from looping endlessly)
Split (used in this patch to split zeros with all other number hence when there is no value = 0 = do nothing)
Gate (I tried to use this, but diden fully understand this so i used IF statement)
Onebang(my favourite) (make sure there is only one bang until it is reset)
Expr (to put mathemathical expression (x1 + x2)/2 )
Pack and Pak

all of these are basic tools and if one can use them to their fullest by chaining up different object, alot of cool stuffs could be done in just these objects.

This is the main piece of patcher in my patch, the rest of the patch are very similar to the previous exercise, so in summary, the flow of this patcher


  • get the square value from face & unpack it
  • find the middle of the square in terms of X value and Y value
  • split into 5 zone
  •  1) Middle Zone (MZ) (the zone where X and y value are around the center, for my patch it is 60 < X < 80 and 50 < Y < 70),
  •  2) X higher than MZ
  •  3) X Lower than MZ
  •  4) Y Higher than MZ
  •  5) Y Lower than MZ
  • For 2 to 5, send the number straight to the audio player
  • And for 1,send the number to audio player while if the value stays in the zone without X or Y going out of the zone for 3 seconds(using counter and if $i1 >= 3000), then take a photo, else stop the timer(and when the timer resumed, it will auto start from 0
  • lastly, I used a single playlist of audio player just because i dont want the patch to play more than one sound clip at any given moment, the only way for different soundclip to play is either
    1) when one clip finish playing and the condition is still the same, it will playback the same soundclip after 2000ms or
    2) when condition changed when a soundclip is playing, it will then stop the current playing soundclip and play another sound clip instantly.


I hope this is relative clear of the flow, through this exercise, I learnt mainly about logic flow, which i think is the most important in every kind of coding.

Year 2 sem 2 – Interactive 2 – Exercise 2, Le Peeping Tom

Featured image warning: “sorry I retard I laughed at myself LOLLLOLL”

This Exercise was built on top of the previous one where we can use the majority of the exercise 1’s code and add on the playback of another video to it, playing the frame corresponding to the x position of the face detected.

I’ve also added the “if” statement which made the video to “look” at the middle when no face is detected and “line” it so that the face will turn gradually(only somewhat as i do not have enough framecount in my clip to make it really smooth)


in this exercise, I’ve learnt how to:

  • playback a certain part of video
  • use the “if”, “then” and “else” statement properly in max

2017-02-06-19-13-25 2017-02-06-19-13-39 2017-02-06-19-13-50