Hyperessay – IM

Related image

Chris Milk

A career founded upon music videos and photography, Chris Milk’s work has expanded beyond the traditional: his art embraces experimental genres and unfamiliar mediums, turning new technologies, digital grounds, emotions and even physical gestures into new found canvasses.

Chris Milk Interactives

Working on cross-media innovations to enhance emotional human storytelling, Milk reveals the beauty in the physical, the digital and the intangible; these are the elements which connects people in a relational manner. As Norbert Wiener mentions in his text Cybernetics in History, “society can only be understood through a study of the messages and the communication facilities which belong to it.” Through his art pieces, Milk created a language which established a mutual societal understanding; his work is a ‘communication facility’.

Chris Milk- Installation Art

He makes use of personal, emotive and powerful music and breakthrough technologies to create a visual experience rooted in a global consciousness. His ability to create a crowd-fueled installation that physically connects the audience and their collective emotional response plays a heavy part in establishing ‘entropy’; in a sense, he downplays a generic audience reaction by making them react intensely and emotionally. As each audience may connect differently about a certain art piece, it then establishes a disharmony and disorganization in the audience’s predictability. This ‘entropy’ as mentioned by Norbert Wiener in his text, is a form of evolution of the new media; where expectations are aimed to be subverted for the audience.

Treachery of the Sanctuary by Chris Milk

‘Treachery of the Sanctuary’ is a large-scale interactive giant triptych: a story of birth, death and transfiguration that utilizes the shadows of the participants’ own bodies and their actions to unlock a new artistic language. This language is created and conveyed through the participants’ actions. It is an interactive art installation created to explore one’s creative process through interactions with digital birds.

The first screen allows a person’s shadow to be reflected on it, while it slowly disintegrates into a flock of birds who flies away. This represents the moment of creative inspiration, our imagination taking flight form our own minds and identities.

The Third Screen

In the second screen, the shadow of the person will be pecked away by virtual birds diving in from above. This symbolizes critical response, where ideas and the person’s identity are being evaluated and critiqued by others.

The last screen, things start to look up; the person interacting with the screen will be able to generate their own set of majestic, giant wings that flap as you move. This is supposed to capture the instant when a creative thought transforms into something larger than the original idea.

Image result for treachery of the sanctuary

The second and third screen.

This whole installation draws upon the idea of how human interactivity (and their active participation) can be key in creating art alongside technology. This art installation demonstrates an inter-discipline through the integration of art and technology simply by allowing participants to dictate how they want their art work to look like.

At the same time, participants are also immersed into this experience because every single movement they make will affect the final presentation of the performance created by the installation. Whether you move to your right or left, or start raising your arms, these little movements do matter.

As mentioned by Roy Ascott, “While the general context of the art-experience is set by the artist, its evolution in any specific sense is unpredictable and dependent on the total involvement of the spectator.” This reinforces the function of the art piece, where the spectator gets to depict the portrayal of the artwork. This makes use of feedback, where “the modern artist… set feelings and ideas in motion, to enrich the artistic experience with feedback from the spectator’s response.” This feedback comes in the form of the input by the audience when they strike a certain action, and the output is the portrayal of their actions in the form of the digital birds’ actions. This total structure is a ‘Complex Action’ (as termed by Norbert Wiener) where the data is introduced to provide an effect on the outer world.

Ascott also mentions that “the human being constantly aspires, where freedom and responsibility combine to reduce our anxiety of the unknown and unpredictable while enlarging our experience of the unfamiliar and irresistible.” Milk builds up on this idea through the emotional aspect of his art piece. As the participant strives to achieve different results since they are granted the autonomy to present any version of their art (through their actions translating into digital birds), it is in their curiosity to explore and experiment. This is all part of the human tendency, which Milk managed to achieve when he wanted his art work to be emotive and relational.

Ultimately, Milk’s art piece is aligned to what Ascott mentions; “As matrix, [behaviourist art] is the substance between two sets of behaviours; it neither exists for itself nor by itself. As a catalyst, it triggers changes in the spectators’ total behaviour. Its structure must be adaptive implicitly or physically, to accommodate the spectators’s responses, in order that the creative evolution of form and idea may take place.” Treachery of the Sanctuary well expresses how the autonomy in the participants as well as their random reactions– in other words, their behaviour– can help to build up on an original art piece that is an actual performance rather than an expected performance, otherwise defined by Wiener as a ‘feedback’. The active participation required for the art piece to function as an interactive installation is dependent on the response of the spectators and their imagination.

The output (observer response) is to act as an input, which ‘introduces more variety into the system and leads to more variety in the output (observer’s experience)’. The spectator is then a ‘self-organizing sub-system’ and the artwork is ‘not usually at present homeostatic.’ Armed with emotive and high-impact works which binds art and technology together on not only a physical level but also an emotional level, Chris Milk has achieved the optimum level of a behaviorist new media art with Treachery of the Sanctuary.






Norbert Wiener, “Cybernetics in History,” 1954, Multimedia: From Wagner to Virtual Reality

Roy Ascott, “Behavioral Art and the Cybernetic Vision,” 1966, Multimedia: From Wagner to Virtual Reality



Manifesto | Outer Page

Manifesto | Inner Page

Fairy Tales are not about the Fairies.

It is the tale that gives the fairies a home.

“Prince Charming is stale, and the Villains have greater stories.”

Older design principles are ‘perfect’, and the opposite is seems unthinkable, like Modernism (1880-1940) opposing Supernormal (2000s). However, a good design fulfils an inexplicable human need to gravitate towards exploring the unknown creating newer, intriguing art movements. If the idea scares you, it is a good idea.

“Princesses should run away from the Royalty.”

Rather than embracing what is sought to be good, one should aspire to break free from the conventional, just like DADA did in the industrial revolution.

“The sidekicks are the real heroes.”

Each design principle holds unique balance, contrast, emphasis, movement and pattern. They may seem incomplete individually, but when combined can build a new ‘hero’ amongst designs.

“You can have tea break with your enemy.”

Just like how neo-conceptualization among others contributed its ideas to create Supernormal design which was vastly different, various design theories can come together to create a new design movement despite different rulesets.

“Prince Charming was once a Villain.”

Every design movement once stemmed from an aesthetic once denied by the masses. To appreciate it is to have courage to take the first step in an extremist rebellion against present design principles.


DM2008: Programming for Interaction Mid-terms |STROBE LANE|


Mid-Terms Final Project: Strobe Lane; Close-up


Interaction Design: DM2008 Programming for Interaction

Mid-term Project: Interaction through Processing

Project Title: Strobe Lane (Music Visualization via LED)

Description: A Music Visualization Program via LED Lights which can react to any music that is input into its database to obtain a mesmerizing and aesthetic effect.

Software: Processing (JAVA), Arduino (StandardFirmata), BeatWrite, Minim library

Sample Song: Legendary by Markelody (NCS Release)

Draft 1:

How it works: First, I connected the circuit by using 3 LED lights and 1k Ohm Resistors to link the circuit to its breadboard. Then, I uploaded the StandardFirmata code onto the circuit via Arduino. Moving forward, I made use of the BeatWrite Software and adjusted some of the numbers and placed my music inside Processing, and ran the program with an Arduino-Processing Library and a Minim Library.

Moving forward: I will be attempting to attach more LEDs to the circuit while exploring more precise ranges for frequencies so that the light movement will be smoother.


Final Version:

What things created problems or challenges that needed to be solved:

The initial plan was to have a Music Visualizer via Processing only, but my computer was not compatible with sample codes from online because of (I suspect) microphone detection issues. On top of that, I was not familiar with using p5.js even with reference from the Coding Train. It was too high a hurdle for me at the moment. Hence, I decided to revert to a music visualizer via LED lights utilizing an Arduino instead, while having some visuals on the screen that could be detected based on the song input in its code.

For issues that were solved, explain how you solved them:

One of the problems I faced was that instead of the frequency, the lights were changing based on the tempo of the music instead, which created a very limited field to work with. As a result, instead of using beat.iskick, beat.issnare, and beat.ishat which are essentially the codes needed for music tempo to be detected, Corey guided me to use beat.isrange instead, which helped me to resolve the issue and allowed me to explore a whole different range of frequencies that could make the lights move more fluidly.

For issues that were not solved, you can talk about:

  • How you think the issues may be solved in the future: It was a downer that I couldn’t make use of a graphic sort of music visualizer, partially due to time constraint. However, exploration of p5.js would probably help me to solve the issue.
  • How you worked around the issue: I worked around the issue but making use of an Arduino setup instead of solely Processing.
  • What you tried fixing for the issue, modifying the strategy, etc.: I also made use of a visual that could react to the music in its setup rather than trying to use microphone detection for the lights to react to the music.

What you would do with the project if you had more time to develop it (if you wished to):

If I had more time to develop the project, I would try to modify the project by allowing the LED lights to dance along with a graphic visual instead of simply text.

What would you change about the project idea, now that you have spent time working on it:

Whatever I stated above. Also ideally, it could be the music visualizer that refused to work on my computer.


Source Code*:

*Requirements for code to be run:

  1. Arduino circuit has to be connected.
  2. StandardFirmata has to be uploaded into Arduino.
  3. Song has to be loaded into Processing Code.
  4. Minim Library has to be uploaded into Processing Code.

import processing.serial.*;
import ddf.minim.*;
import ddf.minim.analysis.*;
import cc.arduino.*;

Minim minim;
AudioPlayer song;
BeatDetect beat;
BeatListener bl;
Arduino arduino;

int ledPin1 = 12; // LED connected to digital pin 12
int ledPin2 = 10; // LED connected to digital pin 10
int ledPin3 = 8; // LED connected to digital pin 8
int ledPin4 = 6; // LED connected to digital pin 6
int ledPin5 = 4; // LED connected to digital pin 4
int ledPin6 = 2; // LED connected to digital pin 2

float dropSize, theSize, beatSize;

void setup() {
size(512, 200, P3D);

minim = new Minim(this);
arduino = new Arduino(this, Arduino.list()[2], 57600);

song = minim.loadFile(“song.mp3.mp3”, 2048);

beat = new BeatDetect(song.bufferSize(), song.sampleRate());
// set the sensitivity to 300 milliseconds
// After a beat has been detected, the algorithm will wait for 300 milliseconds
// before allowing another beat to be reported. You can use this to dampen the
// algorithm if it is giving too many false-positives. The default value is 10,
// which is essentially no damping. If you try to set the sensitivity to a negative value,
// an error will be reported and it will be set to 10 instead.
beat.setSensitivity(10); //100
dropSize = theSize = beatSize = 100;
// make a new beat listener, so that we won’t miss any buffers for the analysis
bl = new BeatListener(beat, song);
textFont(createFont(“Times New Roman”, 100));

arduino.pinMode(ledPin1, Arduino.OUTPUT);
arduino.pinMode(ledPin2, Arduino.OUTPUT);
arduino.pinMode(ledPin3, Arduino.OUTPUT);
arduino.pinMode(ledPin4, Arduino.OUTPUT);
arduino.pinMode(ledPin5, Arduino.OUTPUT);
arduino.pinMode(ledPin6, Arduino.OUTPUT);

void draw() {
// if(beat.isKick()) {
if(beat.isRange(0, 3, 4)) {
arduino.digitalWrite(ledPin1, Arduino.HIGH); // set the LED on
dropSize = 200;
if(beat.isRange(3, 6, 4)) {
arduino.digitalWrite(ledPin2, Arduino.HIGH); // set the LED on
dropSize = 200;
//if(beat.isSnare()) {
if(beat.isRange(6, 10, 4)) {
arduino.digitalWrite(ledPin3, Arduino.HIGH); // set the LED on
theSize = 200;
//if(beat.isHat()) {
if(beat.isRange(10, 15, 4)) {
arduino.digitalWrite(ledPin4, Arduino.HIGH); // set the LED on
beatSize = 200;
if(beat.isRange(15, 21, 4)) {
arduino.digitalWrite(ledPin5, Arduino.HIGH); // set the LED on
dropSize = 200;
if(beat.isRange(21, 26, 4)) {
arduino.digitalWrite(ledPin6, Arduino.HIGH); // set the LED on
dropSize = 200;

arduino.digitalWrite(ledPin1, Arduino.LOW); // set the LED off
arduino.digitalWrite(ledPin2, Arduino.LOW); // set the LED off
arduino.digitalWrite(ledPin3, Arduino.LOW); // set the LED off
arduino.digitalWrite(ledPin4, Arduino.LOW); // set the LED off
arduino.digitalWrite(ledPin5, Arduino.LOW); // set the LED off
arduino.digitalWrite(ledPin6, Arduino.LOW); // set the LED off
text(“DROP”, width/4, height/2);
textSize (dropSize);
text (“DROP”, width/2, height/0.5);
text(“THE”, width/2, height/2);
text(“BEAT”, 3*width/4, height/2);
dropSize = constrain(dropSize * 0.95, 100, 200); // 0.95, 16, 32
theSize = constrain(theSize * 0.95, 100, 200);
beatSize = constrain(beatSize * 0.95, 100, 200);

void stop() {
// always close Minim audio classes when you are finished with them
// always stop Minim before exiting
// this closes the sketch