Week14: Final Film – “Dinner” by Tian (Tim)

Dinner

by Jingtian Zong

screenshot

Description: Escape into a world of imagination from the dinner table.

Credit to: Yaming Xu & Jingyi Wang for acting in original footages, Jianghao Hu for piano.

Moodboard: https://phantomaaaa.tumblr.com

The Story:

The story is about diving into a world of fantasy while having dinner with alcoholics. I originally wanted to present how depressed one can be when he/she cannot be part of others who are all having fun, but it ended up open why the person has that fantasy since I didn’t include the sound of other people talking. I kind of like it to be open but I know that some audience might be confused. In the future it might be better to find a balance between leaving space for audience and making the story clear. The structure of the film didn’t change much, still traveling from real world to imagination and back to the real world.

Techniques:

The softwares I used were Animate, Illustrator, After Effects, Reaper and Premiere. Most pre-production was completed in Animate, drawn frame by frame and they took a very long time. Some of the stills were drawn separately in Illustrator. I applied rotoscope partly for drawing and referred to some tutorial on motion when drawing the bird and the feather. After that I imported swf and ai files into After Effects and made more timeline animation, adding masks and inverting color. My audios were a mix of recorded foley sounds (for example the bird’s wing was created with a flag) and sounds I found online. I recorded the piano piece with my friend Jianghao playing. I edited and manipulated some sounds in Reaper, cutting them to the length I want, adjusting the speed, adjusting the pitch so it would fit in with my clip and atmosphere. Finally I imported the integrated clips and audio file into Premiere to do final editing.

And More:

I learnt a lot about drawing frame by frame, especially about motion and transformation. I learnt different softwares especially After Effects which allow me to loop, invert, and time remap footages. It was my first time to edit a whole film (although short) by myself, I think I learnt also a lot about how to pacing the film, how to edit creatively and how to utilize audio to expand the world of my film and present things not in the frame. There are still a lot I want to explore in animation such as design, color, the movement of frame and different strategy to tell a story. Looking forward to creating more animation in the future!

Week14: Staging Fright Final Project Haunted House by Tian (Antonius)

Team members: Tian, Saphya, Teresa & Angelica

For the final project we are supposed to create a haunted house with the technology we learnt and one assigned room. We started with 824A and thinking about setting up different sensors to trigger things. Later we decided to utilize Max and remote control like blue tooth speaker since we didn’t want people to notice how our technology worked. We decided that Teresa and Angelica will mainly work on the videos and audios while Saphya and I will work on the technology part.

IMG_0684

(Original storyboard)

After recording several sounds with Angelica and Teresa, I started to work on the Max patch and testing different equipments with Saphya. The first thing we wanted realize was to connect a camera to our laptop so we can monitor what’s happening in our haunted house. We first tried with Xiaoyi camera because we thought it was small enough to hide and also wireless. However after spending hours on this (also with Scott) we found that Xiaoyi didn’t work well with Max MSP since its video format was MP4. So we shifted to the webcam and also check out a bluetooth speaker.

The second thing we tried to figure out was how to trigger certain audio/video in some certain time. We found that the room was too dark for the webcam to detect anything if the light was completely off, so we came up with the idea of giving our players a flash light (a simple LED attached to an button battery). We found that we can actually detect the player by detecting that flash light. We split the image that our webcam detected into nine matrixes and designed it as the way that when the player enters a certain area, that would trigger certain audio/video.

We had difficulty in triggering things. The groove~ didn’t work the way we wanted (it kept looping) so we shifted to sfplay~ which would send a signal when the audio was done. We made three variables and one if statement to make sure the audio would play only when an area was bright enough and the audio was not playing and the audio had never been played. We applied the same strategy to trigger the security video (which showed the ghost in the stairway) and we set the final hologram to play after our second audio was triggered. However, we didn’t really figure out the setup in the room. Since we could only use one shelf, the two videos became too close to each other and they were at the most cases triggered at the same time.

maxpatch2

I think this was an interesting learning experience even thought things didn’t work totally the way we wanted. I still learnt a lot about Max and different kinds of cameras, speakers, and hoot realize the connection between different devices. It would be better if we have considered our new room more and make our setup to fit in with it.

Week14: Final Project – “Last” by Tian (Chen)

Project: Last

By Jingtian Zong

Description:

For the final project I made a sound piece of a vertical trip as planned. However the project finally comes out as a pure sound piece without any animation and physical experience in the stairways because while building up the project I feel that I wanted the experience to be more mental and spiritual rather than physical and visual.

My project is about a world without human. I want it to be almost a review on the earth from the bottom of the sea to the ground, to the sky and finally up to the universe before finally leaving and joining all other human beings. The piece integrated sounds of animals, of nature and potentially of what is left on the earth by human civilization.

Process & Challenges:

My piece took a lot time to do pre-production. I actually spent even more time on finding sounds I needed online and thought and re-thought about the sounds than on editing. I started off listing out the sounds I can think of that present a vertical perspective of the earth and then I looked for those sound on different audio and video websites. It was hard to imagine sounds that I’ve never experienced especially the sounds in the deep sea and high up in the sky. Some of the sounds didn’t work out the way I thought. For example I was trying hard to find some subtle sounds underwater like fishes swimming by and finally I came up with my own diving experience and found there was only bubble sound. It was so hard to find sounds but I was lucky to get some good ones. In the process of searching my list also expanded.

In the beginning of the editing process I was worried that a completely vertical trip wouldn’t contain enough information to present the earth since I supposed that there would be a lot happening on the ground, so I planned to have a horizontal part in between the vertical parts. However, during the check-in last week someone said that the horizontal part would distract the listeners. After re-thinking I came up with the idea to compress the sounds on the ground and insert them into the vertical trip. I realized that even if we left the ground we could still hear the sounds from there (with a lower volume). So finally I compressed the sounds from the ground in the vertical trip but moved up a little slower there. After that change the piece felt more consistent.

It was interesting to learn about different features of sound through research and editing. I learnt a lot like how to make muffled sound that sounds like underwater or distant with reaEQ and readelay, how to play with volume and pan, how to unify sounds from different sources and make them feel more like in the same space, and how to manipulate sound through frequency and speed and get a new sound out of it. Finalizing such a long piece was hard because each time it took 9 mins to listen and it took time to get the comparative volume and pacing right.

More…

I really enjoyed the process of making and I like the way the project comes out. I do agree cat may not be able to stand for all animals on the ground and I think it would be nice if I have included more animal sounds. There are definitely more to think about sound for example the sound of ice cracking high up in the sky. I really look forward to explore more about sound, especially sound design for films, storytelling through sound and also the musical aspect of sound!

 

Week12: In-class exercises with Max MSP by Tian (Antonius)

In class3 we did three inclass exercises with Max MSP.

The first one was to create a creepy piano. It generated random notes within a range we set (random number) and played the notes with a virtual piano. It was worth to notice that the up left channel of the keyboard controlled the pitch while the up right channel controlled the dynamics.

exercise1

In the second exercise we tried to play video with Max. I successfully loaded my short animation in the patcher as well as in an independent window. The way that Max play a video is kind of tricky, but there might be a lot of potential with the various functions such as play, end, playbar and looppoints.

exercise2

For exercise 3 we tried to realize serial communication between Arduino and Max, which we adapted later for our project 2.

exercise3 IMG_0668

int distanceSensor = 0;    // first analog sensor
int touchSensor = 0;    // digital sensor
int inByte = 0;         // incoming serial byte

void setup() {
  // start serial port at 9600 bps and wait for port to open:
  Serial.begin(9600);
  while (!Serial) {
    ; // wait for serial port to connect. Needed for native USB port only
  }


  pinMode(2, INPUT);   // digital sensor is on digital pin 2
  establishContact();  // send a byte to establish contact until receiver responds
}

void loop() {
  // if we get a valid byte, read analog ins:
  if (Serial.available() > 0) {
    // get incoming byte:
    //inByte = Serial.read();
    // read first analog input:
    distanceSensor = analogRead(A0);
    // read second analog input:
    touchSensor = map(digitalRead(2), 0, 1, 0, 255);
    // send sensor values:
    Serial.print(distanceSensor);
    Serial.print(",");
    delay(50);
    Serial.print(touchSensor);
    Serial.print(",");
    delay(50);
    Serial.println(0);
    delay(50);
  }
}

void establishContact() {
  while (Serial.available() <= 0) {
    Serial.println("0,0,0");   // send an initial string
    delay(300);
  }
}

/*Max patcher code
{
	"boxes" : [ 		{
			"box" : 			{
				"maxclass" : "message",
				"text" : "0",
				"numinlets" : 2,
				"numoutlets" : 1,
				"patching_rect" : [ 430.0, 825.0, 29.5, 22.0 ],
				"outlettype" : [ "" ],
				"id" : "obj-91",
				"style" : ""
			}

		}
, 		{
			"box" : 			{
				"maxclass" : "button",
				"numinlets" : 1,
				"numoutlets" : 1,
				"patching_rect" : [ 478.0, 867.0, 24.0, 24.0 ],
				"outlettype" : [ "bang" ],
				"id" : "obj-89",
				"style" : ""
			}

		}
, 		{
			"box" : 			{
				"maxclass" : "message",
				"text" : "0",
				"numinlets" : 2,
				"numoutlets" : 1,
				"patching_rect" : [ 222.5, 891.0, 29.5, 22.0 ],
				"outlettype" : [ "" ],
				"id" : "obj-87",
				"style" : ""
			}

		}
, 		{
			"box" : 			{
				"maxclass" : "button",
				"numinlets" : 1,
				"numoutlets" : 1,
				"patching_rect" : [ 184.0, 846.0, 24.0, 24.0 ],
				"outlettype" : [ "bang" ],
				"id" : "obj-85",
				"style" : ""
			}

		}
, 		{
			"box" : 			{
				"maxclass" : "comment",
				"text" : "pre_val2",
				"numinlets" : 1,
				"numoutlets" : 0,
				"patching_rect" : [ 507.0, 702.0, 150.0, 20.0 ],
				"id" : "obj-82",
				"style" : ""
			}

		}
, 		{
			"box" : 			{
				"maxclass" : "number",
				"numinlets" : 1,
				"numoutlets" : 2,
				"patching_rect" : [ 332.0, 779.0, 50.0, 22.0 ],
				"outlettype" : [ "", "bang" ],
				"parameter_enable" : 0,
				"id" : "obj-78",
				"style" : ""
			}

		}
, 		{
			"box" : 			{
				"maxclass" : "newobj",
				"text" : "if ($i1 == 255) && ($i2 ==0) && ($i3==0) then 1",
				"numinlets" : 3,
				"numoutlets" : 1,
				"patching_rect" : [ 332.0, 740.0, 259.0, 22.0 ],
				"outlettype" : [ "" ],
				"id" : "obj-76",
				"style" : ""
			}

		}
, 		{
			"box" : 			{
				"maxclass" : "newobj",
				"text" : "if ($i1 == 255) then 0",
				"numinlets" : 1,
				"numoutlets" : 1,
				"patching_rect" : [ 478.0, 650.0, 121.0, 22.0 ],
				"outlettype" : [ "" ],
				"id" : "obj-75",
				"style" : ""
			}

		}
, 		{
			"box" : 			{
				"maxclass" : "newobj",
				"text" : "if ($i1 == 0) then 255",
				"numinlets" : 1,
				"numoutlets" : 1,
				"patching_rect" : [ 332.0, 650.0, 121.0, 22.0 ],
				"outlettype" : [ "" ],
				"id" : "obj-74",
				"style" : ""
			}

		}
, 		{
			"box" : 			{
				"maxclass" : "number",
				"numinlets" : 1,
				"numoutlets" : 2,
				"patching_rect" : [ 449.0, 702.0, 50.0, 22.0 ],
				"outlettype" : [ "", "bang" ],
				"parameter_enable" : 0,
				"id" : "obj-71",
				"style" : ""
			}

		}
, 		{
			"box" : 			{
				"maxclass" : "ezdac~",
				"numinlets" : 2,
				"numoutlets" : 0,
				"patching_rect" : [ 332.0, 1111.0, 45.0, 45.0 ],
				"id" : "obj-49",
				"style" : ""
			}

		}
, 		{
			"box" : 			{
				"maxclass" : "live.gain~",
				"varname" : "live.gain~[1]",
				"numinlets" : 2,
				"numoutlets" : 5,
				"patching_rect" : [ 332.0, 951.0, 48.0, 136.0 ],
				"outlettype" : [ "signal", "signal", "", "float", "list" ],
				"parameter_enable" : 1,
				"id" : "obj-52",
				"saved_attribute_attributes" : 				{
					"valueof" : 					{
						"parameter_longname" : "live.gain~[1]",
						"parameter_shortname" : "live.gain~",
						"parameter_type" : 0,
						"parameter_mmin" : -70.0,
						"parameter_mmax" : 6.0,
						"parameter_initial_enable" : 1,
						"parameter_initial" : [ -70 ],
						"parameter_unitstyle" : 4
					}

				}

			}

		}
, 		{
			"box" : 			{
				"maxclass" : "newobj",
				"text" : "sfplay~",
				"numinlets" : 2,
				"numoutlets" : 2,
				"fontname" : "Arial",
				"patching_rect" : [ 332.0, 914.0, 52.0, 23.0 ],
				"outlettype" : [ "signal", "bang" ],
				"id" : "obj-56",
				"style" : "",
				"fontsize" : 13.0,
				"saved_object_attributes" : 				{
					"basictuning" : 440,
					"followglobaltempo" : 0,
					"formantcorrection" : 0,
					"mode" : "basic",
					"originallength" : [ 1281.73999, "ticks" ],
					"originaltempo" : 120.0,
					"pitchcorrection" : 0,
					"quality" : "basic",
					"timestretch" : [ 0 ]
				}

			}

		}
, 		{
			"box" : 			{
				"maxclass" : "message",
				"text" : "open",
				"numinlets" : 2,
				"numoutlets" : 1,
				"fontname" : "Arial",
				"patching_rect" : [ 332.0, 868.0, 40.0, 23.0 ],
				"outlettype" : [ "" ],
				"id" : "obj-58",
				"style" : "",
				"fontsize" : 13.0
			}

		}
, 		{
			"box" : 			{
				"maxclass" : "toggle",
				"numinlets" : 1,
				"numoutlets" : 1,
				"patching_rect" : [ 332.0, 823.0, 24.0, 24.0 ],
				"outlettype" : [ "int" ],
				"parameter_enable" : 0,
				"id" : "obj-66",
				"style" : ""
			}

		}
, 		{
			"box" : 			{
				"maxclass" : "ezdac~",
				"numinlets" : 2,
				"numoutlets" : 0,
				"patching_rect" : [ 105.0, 994.0, 45.0, 45.0 ],
				"id" : "obj-60",
				"style" : ""
			}

		}
, 		{
			"box" : 			{
				"maxclass" : "live.gain~",
				"varname" : "live.gain~",
				"numinlets" : 2,
				"numoutlets" : 5,
				"patching_rect" : [ 105.0, 834.0, 48.0, 136.0 ],
				"outlettype" : [ "signal", "signal", "", "float", "list" ],
				"parameter_enable" : 1,
				"id" : "obj-61",
				"saved_attribute_attributes" : 				{
					"valueof" : 					{
						"parameter_longname" : "live.gain~",
						"parameter_shortname" : "live.gain~",
						"parameter_type" : 0,
						"parameter_mmin" : -70.0,
						"parameter_mmax" : 6.0,
						"parameter_initial_enable" : 1,
						"parameter_initial" : [ -70 ],
						"parameter_unitstyle" : 4
					}

				}

			}

		}
, 		{
			"box" : 			{
				"maxclass" : "newobj",
				"text" : "sfplay~",
				"numinlets" : 2,
				"numoutlets" : 2,
				"fontname" : "Arial",
				"patching_rect" : [ 105.0, 797.0, 52.0, 23.0 ],
				"outlettype" : [ "signal", "bang" ],
				"id" : "obj-43",
				"style" : "",
				"fontsize" : 13.0,
				"saved_object_attributes" : 				{
					"basictuning" : 440,
					"followglobaltempo" : 0,
					"formantcorrection" : 0,
					"mode" : "basic",
					"originallength" : [ 3663.359863, "ticks" ],
					"originaltempo" : 119.999992,
					"pitchcorrection" : 0,
					"quality" : "basic",
					"timestretch" : [ 0 ]
				}

			}

		}
, 		{
			"box" : 			{
				"maxclass" : "message",
				"text" : "open",
				"numinlets" : 2,
				"numoutlets" : 1,
				"fontname" : "Arial",
				"patching_rect" : [ 105.0, 740.0, 40.0, 23.0 ],
				"outlettype" : [ "" ],
				"id" : "obj-62",
				"style" : "",
				"fontsize" : 13.0
			}

		}
, 		{
			"box" : 			{
				"maxclass" : "number",
				"numinlets" : 1,
				"numoutlets" : 2,
				"patching_rect" : [ 157.0, 692.5, 50.0, 22.0 ],
				"outlettype" : [ "", "bang" ],
				"parameter_enable" : 0,
				"id" : "obj-51",
				"style" : ""
			}

		}
, 		{
			"box" : 			{
				"maxclass" : "toggle",
				"numinlets" : 1,
				"numoutlets" : 1,
				"patching_rect" : [ 157.0, 740.0, 24.0, 24.0 ],
				"outlettype" : [ "int" ],
				"parameter_enable" : 0,
				"id" : "obj-45",
				"style" : ""
			}

		}
, 		{
			"box" : 			{
				"maxclass" : "newobj",
				"text" : "if ($i1 > 120) && ($i2 == 0) then 1.",
				"numinlets" : 2,
				"numoutlets" : 1,
				"patching_rect" : [ 133.0, 641.0, 192.0, 22.0 ],
				"outlettype" : [ "" ],
				"id" : "obj-41",
				"style" : ""
			}

		}
, 		{
			"box" : 			{
				"maxclass" : "comment",
				"text" : "choose a serial port from this menu",
				"numinlets" : 1,
				"numoutlets" : 0,
				"fontname" : "Arial",
				"patching_rect" : [ 743.0, 117.0, 207.0, 20.0 ],
				"id" : "obj-37",
				"style" : "",
				"fontsize" : 12.0
			}

		}
, 		{
			"box" : 			{
				"maxclass" : "newobj",
				"text" : "serial a 9600 @autoopen 0",
				"numinlets" : 1,
				"numoutlets" : 2,
				"fontname" : "Arial",
				"patching_rect" : [ 219.0, 212.0, 155.0, 22.0 ],
				"outlettype" : [ "int", "" ],
				"id" : "obj-14",
				"style" : "",
				"fontsize" : 12.0
			}

		}
, 		{
			"box" : 			{
				"maxclass" : "message",
				"text" : "close",
				"numinlets" : 2,
				"numoutlets" : 1,
				"fontname" : "Arial",
				"patching_rect" : [ 312.0, 143.0, 39.0, 22.0 ],
				"outlettype" : [ "" ],
				"id" : "obj-21",
				"style" : "",
				"fontsize" : 12.0
			}

		}
, 		{
			"box" : 			{
				"maxclass" : "newobj",
				"text" : "closebang",
				"numinlets" : 1,
				"numoutlets" : 1,
				"fontname" : "Arial",
				"patching_rect" : [ 369.0, 31.0, 65.0, 22.0 ],
				"outlettype" : [ "bang" ],
				"id" : "obj-16",
				"style" : "",
				"fontsize" : 12.0
			}

		}
, 		{
			"box" : 			{
				"maxclass" : "newobj",
				"text" : "loadbang",
				"numinlets" : 1,
				"numoutlets" : 1,
				"fontname" : "Arial",
				"patching_rect" : [ 438.0, 31.0, 60.0, 22.0 ],
				"outlettype" : [ "bang" ],
				"id" : "obj-24",
				"style" : "",
				"fontsize" : 12.0
			}

		}
, 		{
			"box" : 			{
				"maxclass" : "newobj",
				"text" : "prepend port",
				"numinlets" : 1,
				"numoutlets" : 1,
				"fontname" : "Arial",
				"patching_rect" : [ 712.0, 172.0, 79.0, 22.0 ],
				"outlettype" : [ "" ],
				"id" : "obj-28",
				"style" : "",
				"fontsize" : 12.0
			}

		}
, 		{
			"box" : 			{
				"maxclass" : "umenu",
				"numinlets" : 1,
				"items" : "Bluetooth-Incoming-Port",
				"numoutlets" : 3,
				"patching_rect" : [ 621.0, 143.0, 200.0, 22.0 ],
				"outlettype" : [ "int", "", "" ],
				"parameter_enable" : 0,
				"id" : "obj-31",
				"style" : "",
				"allowdrag" : 0
			}

		}
, 		{
			"box" : 			{
				"maxclass" : "newobj",
				"text" : "prepend append",
				"numinlets" : 1,
				"numoutlets" : 1,
				"fontname" : "Arial",
				"patching_rect" : [ 621.0, 94.0, 98.0, 22.0 ],
				"outlettype" : [ "" ],
				"id" : "obj-32",
				"style" : "",
				"fontsize" : 12.0
			}

		}
, 		{
			"box" : 			{
				"maxclass" : "newobj",
				"text" : "t clear",
				"numinlets" : 1,
				"numoutlets" : 1,
				"fontname" : "Arial",
				"patching_rect" : [ 692.0, 60.0, 43.0, 22.0 ],
				"outlettype" : [ "clear" ],
				"id" : "obj-33",
				"style" : "",
				"fontsize" : 12.0
			}

		}
, 		{
			"box" : 			{
				"maxclass" : "newobj",
				"text" : "iter",
				"numinlets" : 1,
				"numoutlets" : 1,
				"fontname" : "Arial",
				"patching_rect" : [ 621.0, 60.0, 27.0, 22.0 ],
				"outlettype" : [ "" ],
				"id" : "obj-34",
				"style" : "",
				"fontsize" : 12.0
			}

		}
, 		{
			"box" : 			{
				"maxclass" : "newobj",
				"text" : "route port",
				"numinlets" : 2,
				"numoutlets" : 2,
				"fontname" : "Arial",
				"patching_rect" : [ 621.0, 27.0, 62.0, 22.0 ],
				"outlettype" : [ "", "" ],
				"id" : "obj-36",
				"style" : "",
				"fontsize" : 12.0
			}

		}
, 		{
			"box" : 			{
				"maxclass" : "newobj",
				"text" : "fromsymbol",
				"numinlets" : 1,
				"numoutlets" : 1,
				"fontname" : "Arial",
				"patching_rect" : [ 240.0, 467.0, 74.0, 22.0 ],
				"outlettype" : [ "" ],
				"id" : "obj-7",
				"style" : "",
				"fontsize" : 12.0,
				"color" : [ 1.0, 0.890196, 0.090196, 1.0 ]
			}

		}
, 		{
			"box" : 			{
				"maxclass" : "newobj",
				"text" : "itoa",
				"numinlets" : 3,
				"numoutlets" : 1,
				"fontname" : "Arial",
				"patching_rect" : [ 240.0, 444.0, 46.0, 22.0 ],
				"outlettype" : [ "int" ],
				"id" : "obj-8",
				"style" : "",
				"fontsize" : 12.0,
				"color" : [ 1.0, 0.890196, 0.090196, 1.0 ]
			}

		}
, 		{
			"box" : 			{
				"maxclass" : "newobj",
				"text" : "zl group",
				"numinlets" : 2,
				"numoutlets" : 2,
				"fontname" : "Arial",
				"patching_rect" : [ 240.0, 421.0, 53.0, 22.0 ],
				"outlettype" : [ "", "" ],
				"id" : "obj-4",
				"style" : "",
				"fontsize" : 12.0
			}

		}
, 		{
			"box" : 			{
				"maxclass" : "newobj",
				"text" : "select 10 13",
				"numinlets" : 3,
				"numoutlets" : 3,
				"fontname" : "Arial",
				"patching_rect" : [ 184.0, 383.0, 75.0, 22.0 ],
				"outlettype" : [ "bang", "bang", "" ],
				"id" : "obj-10",
				"style" : "",
				"fontsize" : 12.0
			}

		}
, 		{
			"box" : 			{
				"maxclass" : "message",
				"text" : "65",
				"numinlets" : 2,
				"numoutlets" : 1,
				"fontname" : "Arial",
				"patching_rect" : [ 329.0, 363.0, 32.5, 22.0 ],
				"outlettype" : [ "" ],
				"id" : "obj-9",
				"style" : "",
				"fontsize" : 12.0
			}

		}
, 		{
			"box" : 			{
				"maxclass" : "newobj",
				"text" : "sel 1",
				"numinlets" : 2,
				"numoutlets" : 2,
				"fontname" : "Arial",
				"patching_rect" : [ 329.0, 334.0, 36.0, 22.0 ],
				"outlettype" : [ "bang", "" ],
				"id" : "obj-6",
				"style" : "",
				"fontsize" : 12.0
			}

		}
, 		{
			"box" : 			{
				"maxclass" : "comment",
				"text" : "trigger (or [t]) forces right-left conventions.  All the drawing and processing will happen before Max requests new values. When this trigger fires, it sends an ASCII A to ask Arduino for new values.",
				"linecount" : 3,
				"numinlets" : 1,
				"numoutlets" : 0,
				"fontname" : "Arial",
				"patching_rect" : [ 229.0, 507.0, 425.0, 47.0 ],
				"id" : "obj-65",
				"style" : "",
				"fontsize" : 12.0
			}

		}
, 		{
			"box" : 			{
				"maxclass" : "comment",
				"text" : "reinitializes the gates when turned on and off",
				"linecount" : 2,
				"numinlets" : 1,
				"numoutlets" : 0,
				"fontname" : "Arial",
				"patching_rect" : [ 162.5, 275.0, 135.0, 33.0 ],
				"id" : "obj-64",
				"style" : "",
				"fontsize" : 12.0
			}

		}
, 		{
			"box" : 			{
				"maxclass" : "comment",
				"text" : "checks for the ascii value of newline to begin communication.  After initial communication is made, this block shuts down.  A byte is sent back to the Arduino, indicating the patch is ready to receive information.",
				"linecount" : 5,
				"numinlets" : 1,
				"numoutlets" : 0,
				"fontname" : "Arial",
				"patching_rect" : [ 447.0, 233.0, 254.0, 74.0 ],
				"id" : "obj-63",
				"style" : "",
				"fontsize" : 12.0
			}

		}
, 		{
			"box" : 			{
				"maxclass" : "newobj",
				"text" : "0",
				"numinlets" : 2,
				"numoutlets" : 1,
				"fontname" : "Arial",
				"patching_rect" : [ 302.0, 275.0, 32.5, 22.0 ],
				"outlettype" : [ "int" ],
				"id" : "obj-57",
				"style" : "",
				"fontsize" : 12.0
			}

		}
, 		{
			"box" : 			{
				"maxclass" : "newobj",
				"text" : "!- 1",
				"numinlets" : 2,
				"numoutlets" : 1,
				"fontname" : "Arial",
				"patching_rect" : [ 375.0, 333.0, 32.5, 22.0 ],
				"outlettype" : [ "int" ],
				"id" : "obj-55",
				"style" : "",
				"fontsize" : 12.0
			}

		}
, 		{
			"box" : 			{
				"maxclass" : "newobj",
				"text" : "gate 1 1",
				"numinlets" : 2,
				"numoutlets" : 1,
				"fontname" : "Arial",
				"patching_rect" : [ 375.0, 252.0, 54.0, 22.0 ],
				"outlettype" : [ "" ],
				"id" : "obj-54",
				"style" : "",
				"fontsize" : 12.0
			}

		}
, 		{
			"box" : 			{
				"maxclass" : "toggle",
				"numinlets" : 1,
				"numoutlets" : 1,
				"patching_rect" : [ 375.0, 302.0, 20.0, 20.0 ],
				"outlettype" : [ "int" ],
				"parameter_enable" : 0,
				"id" : "obj-53",
				"style" : ""
			}

		}
, 		{
			"box" : 			{
				"maxclass" : "newobj",
				"text" : "gate 1 0",
				"numinlets" : 2,
				"numoutlets" : 1,
				"fontname" : "Arial",
				"patching_rect" : [ 184.0, 352.0, 54.0, 22.0 ],
				"outlettype" : [ "" ],
				"id" : "obj-50",
				"style" : "",
				"fontsize" : 12.0
			}

		}
, 		{
			"box" : 			{
				"maxclass" : "newobj",
				"text" : "sel 10",
				"numinlets" : 2,
				"numoutlets" : 2,
				"fontname" : "Arial",
				"patching_rect" : [ 375.0, 275.0, 43.0, 22.0 ],
				"outlettype" : [ "bang", "" ],
				"id" : "obj-48",
				"style" : "",
				"fontsize" : 12.0
			}

		}
, 		{
			"box" : 			{
				"maxclass" : "newobj",
				"text" : "t 65 l",
				"numinlets" : 1,
				"numoutlets" : 2,
				"fontname" : "Verdana",
				"patching_rect" : [ 184.0, 506.0, 42.0, 23.0 ],
				"outlettype" : [ "int", "" ],
				"id" : "obj-35",
				"style" : "",
				"fontsize" : 12.0
			}

		}
, 		{
			"box" : 			{
				"maxclass" : "comment",
				"text" : "val3",
				"numinlets" : 1,
				"numoutlets" : 0,
				"fontname" : "Verdana",
				"patching_rect" : [ 528.0, 598.0, 37.0, 21.0 ],
				"id" : "obj-1",
				"style" : "",
				"fontsize" : 12.0
			}

		}
, 		{
			"box" : 			{
				"maxclass" : "number",
				"numinlets" : 1,
				"numoutlets" : 2,
				"fontname" : "Verdana",
				"patching_rect" : [ 457.0, 598.0, 56.0, 23.0 ],
				"outlettype" : [ "", "bang" ],
				"parameter_enable" : 0,
				"id" : "obj-3",
				"style" : "",
				"fontsize" : 12.0
			}

		}
, 		{
			"box" : 			{
				"maxclass" : "comment",
				"text" : "val2",
				"numinlets" : 1,
				"numoutlets" : 0,
				"fontname" : "Verdana",
				"patching_rect" : [ 400.0, 598.0, 37.0, 21.0 ],
				"id" : "obj-18",
				"style" : "",
				"fontsize" : 12.0
			}

		}
, 		{
			"box" : 			{
				"maxclass" : "comment",
				"text" : "val1",
				"numinlets" : 1,
				"numoutlets" : 0,
				"fontname" : "Verdana",
				"patching_rect" : [ 272.0, 598.0, 37.0, 21.0 ],
				"id" : "obj-20",
				"style" : "",
				"fontsize" : 12.0
			}

		}
, 		{
			"box" : 			{
				"maxclass" : "number",
				"numinlets" : 1,
				"numoutlets" : 2,
				"fontname" : "Verdana",
				"patching_rect" : [ 332.0, 598.0, 56.0, 23.0 ],
				"outlettype" : [ "", "bang" ],
				"parameter_enable" : 0,
				"id" : "obj-22",
				"style" : "",
				"fontsize" : 12.0
			}

		}
, 		{
			"box" : 			{
				"maxclass" : "number",
				"numinlets" : 1,
				"numoutlets" : 2,
				"fontname" : "Verdana",
				"patching_rect" : [ 207.0, 598.0, 55.0, 23.0 ],
				"outlettype" : [ "", "bang" ],
				"parameter_enable" : 0,
				"id" : "obj-23",
				"style" : "",
				"fontsize" : 12.0
			}

		}
, 		{
			"box" : 			{
				"maxclass" : "newobj",
				"text" : "unpack 0 0 0 0 0",
				"numinlets" : 1,
				"numoutlets" : 5,
				"fontname" : "Verdana",
				"patching_rect" : [ 207.0, 563.0, 269.0, 23.0 ],
				"outlettype" : [ "int", "int", "int", "int", "int" ],
				"id" : "obj-29",
				"style" : "",
				"fontsize" : 12.0
			}

		}
, 		{
			"box" : 			{
				"maxclass" : "newobj",
				"text" : "select 0 1",
				"numinlets" : 3,
				"numoutlets" : 3,
				"fontname" : "Arial",
				"patching_rect" : [ 302.0, 52.0, 62.0, 22.0 ],
				"outlettype" : [ "bang", "bang", "" ],
				"id" : "obj-30",
				"style" : "",
				"fontsize" : 12.0
			}

		}
, 		{
			"box" : 			{
				"maxclass" : "comment",
				"text" : "click here to close the serial port",
				"numinlets" : 1,
				"numoutlets" : 0,
				"fontname" : "Arial",
				"patching_rect" : [ 360.0, 143.0, 206.0, 20.0 ],
				"id" : "obj-26",
				"style" : "",
				"fontsize" : 12.0
			}

		}
, 		{
			"box" : 			{
				"maxclass" : "comment",
				"text" : "click here to open the serial port",
				"numinlets" : 1,
				"numoutlets" : 0,
				"fontname" : "Arial",
				"patching_rect" : [ 385.0, 117.0, 206.0, 20.0 ],
				"id" : "obj-27",
				"style" : "",
				"fontsize" : 12.0
			}

		}
, 		{
			"box" : 			{
				"maxclass" : "message",
				"text" : "open",
				"numinlets" : 2,
				"numoutlets" : 1,
				"fontname" : "Arial",
				"patching_rect" : [ 334.0, 117.0, 37.0, 22.0 ],
				"outlettype" : [ "" ],
				"id" : "obj-19",
				"style" : "",
				"fontsize" : 12.0
			}

		}
, 		{
			"box" : 			{
				"maxclass" : "comment",
				"text" : "Click here to get a list of serial ports",
				"numinlets" : 1,
				"numoutlets" : 0,
				"fontname" : "Arial",
				"patching_rect" : [ 395.0, 87.0, 207.0, 20.0 ],
				"id" : "obj-2",
				"style" : "",
				"fontsize" : 12.0
			}

		}
, 		{
			"box" : 			{
				"maxclass" : "toggle",
				"numinlets" : 1,
				"numoutlets" : 1,
				"patching_rect" : [ 219.0, 7.0, 22.0, 22.0 ],
				"outlettype" : [ "int" ],
				"parameter_enable" : 0,
				"id" : "obj-11",
				"style" : ""
			}

		}
, 		{
			"box" : 			{
				"maxclass" : "newobj",
				"text" : "qmetro 10",
				"numinlets" : 2,
				"numoutlets" : 1,
				"fontname" : "Arial",
				"patching_rect" : [ 219.0, 52.0, 65.0, 22.0 ],
				"outlettype" : [ "bang" ],
				"id" : "obj-12",
				"style" : "",
				"fontsize" : 12.0
			}

		}
, 		{
			"box" : 			{
				"maxclass" : "message",
				"text" : "print",
				"numinlets" : 2,
				"numoutlets" : 1,
				"fontname" : "Arial",
				"patching_rect" : [ 354.0, 91.0, 36.0, 22.0 ],
				"outlettype" : [ "" ],
				"id" : "obj-13",
				"style" : "",
				"fontsize" : 12.0
			}

		}
, 		{
			"box" : 			{
				"maxclass" : "comment",
				"text" : "Read serial input buffer every 10 milliseconds",
				"linecount" : 2,
				"numinlets" : 1,
				"numoutlets" : 0,
				"fontname" : "Arial",
				"patching_rect" : [ 86.0, 52.0, 136.0, 33.0 ],
				"id" : "obj-15",
				"style" : "",
				"fontsize" : 12.0
			}

		}
, 		{
			"box" : 			{
				"maxclass" : "comment",
				"text" : "Click to start",
				"numinlets" : 1,
				"numoutlets" : 0,
				"fontname" : "Arial",
				"patching_rect" : [ 246.0, 10.0, 79.0, 20.0 ],
				"id" : "obj-17",
				"style" : "",
				"fontsize" : 12.0
			}

		}
, 		{
			"box" : 			{
				"maxclass" : "textbutton",
				"hint" : "",
				"legacytextcolor" : 1,
				"ignoreclick" : 1,
				"numinlets" : 1,
				"usebgoncolor" : 1,
				"numoutlets" : 3,
				"bgoncolor" : [ 0.55, 0.55, 0.55, 1.0 ],
				"patching_rect" : [ 719.0, 117.0, 20.0, 20.0 ],
				"usetextovercolor" : 1,
				"outlettype" : [ "", "", "int" ],
				"rounded" : 60.0,
				"parameter_enable" : 0,
				"textovercolor" : [ 0.2, 0.2, 0.2, 1.0 ],
				"textcolor" : [ 0.34902, 0.34902, 0.34902, 1.0 ],
				"textoncolor" : [ 1.0, 1.0, 1.0, 1.0 ],
				"text" : "2",
				"id" : "obj-38",
				"style" : "",
				"fontface" : 1,
				"fontsize" : 13.0,
				"background" : 1,
				"bgcolor" : [ 1.0, 0.788235, 0.470588, 1.0 ]
			}

		}
, 		{
			"box" : 			{
				"maxclass" : "textbutton",
				"hint" : "",
				"legacytextcolor" : 1,
				"ignoreclick" : 1,
				"numinlets" : 1,
				"usebgoncolor" : 1,
				"numoutlets" : 3,
				"bgoncolor" : [ 0.55, 0.55, 0.55, 1.0 ],
				"patching_rect" : [ 323.0, 10.0, 20.0, 20.0 ],
				"usetextovercolor" : 1,
				"outlettype" : [ "", "", "int" ],
				"rounded" : 60.0,
				"parameter_enable" : 0,
				"textovercolor" : [ 0.2, 0.2, 0.2, 1.0 ],
				"textcolor" : [ 0.34902, 0.34902, 0.34902, 1.0 ],
				"textoncolor" : [ 1.0, 1.0, 1.0, 1.0 ],
				"text" : "3",
				"id" : "obj-25",
				"style" : "",
				"fontface" : 1,
				"fontsize" : 13.0,
				"background" : 1,
				"bgcolor" : [ 1.0, 0.788235, 0.470588, 1.0 ]
			}

		}
, 		{
			"box" : 			{
				"maxclass" : "textbutton",
				"hint" : "",
				"legacytextcolor" : 1,
				"ignoreclick" : 1,
				"numinlets" : 1,
				"usebgoncolor" : 1,
				"numoutlets" : 3,
				"bgoncolor" : [ 0.55, 0.55, 0.55, 1.0 ],
				"patching_rect" : [ 591.0, 87.0, 20.0, 20.0 ],
				"usetextovercolor" : 1,
				"outlettype" : [ "", "", "int" ],
				"rounded" : 60.0,
				"parameter_enable" : 0,
				"textovercolor" : [ 0.2, 0.2, 0.2, 1.0 ],
				"textcolor" : [ 0.34902, 0.34902, 0.34902, 1.0 ],
				"textoncolor" : [ 1.0, 1.0, 1.0, 1.0 ],
				"text" : "1",
				"id" : "obj-93",
				"style" : "",
				"fontface" : 1,
				"fontsize" : 13.0,
				"background" : 1,
				"bgcolor" : [ 1.0, 0.788235, 0.470588, 1.0 ]
			}

		}
 ],
	"lines" : [ 		{
			"patchline" : 			{
				"source" : [ "obj-91", 0 ],
				"destination" : [ "obj-78", 0 ],
				"hidden" : 0,
				"midpoints" : [ 439.5, 849.0, 393.0, 849.0, 393.0, 774.0, 341.5, 774.0 ],
				"disabled" : 0
			}

		}
, 		{
			"patchline" : 			{
				"source" : [ "obj-9", 0 ],
				"destination" : [ "obj-14", 0 ],
				"hidden" : 0,
				"color" : [ 0.057615, 0.8, 0.189809, 1.0 ],
				"disabled" : 0
			}

		}
, 		{
			"patchline" : 			{
				"source" : [ "obj-89", 0 ],
				"destination" : [ "obj-91", 0 ],
				"hidden" : 0,
				"midpoints" : [ 487.5, 894.0, 459.0, 894.0, 459.0, 819.0, 439.5, 819.0 ],
				"disabled" : 0
			}

		}
, 		{
			"patchline" : 			{
				"source" : [ "obj-87", 0 ],
				"destination" : [ "obj-51", 0 ],
				"hidden" : 0,
				"midpoints" : [ 232.0, 915.0, 219.0, 915.0, 219.0, 678.0, 166.5, 678.0 ],
				"disabled" : 0
			}

		}
, 		{
			"patchline" : 			{
				"source" : [ "obj-85", 0 ],
				"destination" : [ "obj-87", 0 ],
				"hidden" : 0,
				"disabled" : 0
			}

		}
, 		{
			"patchline" : 			{
				"source" : [ "obj-8", 0 ],
				"destination" : [ "obj-7", 0 ],
				"hidden" : 0,
				"disabled" : 0
			}

		}
, 		{
			"patchline" : 			{
				"source" : [ "obj-78", 0 ],
				"destination" : [ "obj-76", 2 ],
				"hidden" : 0,
				"midpoints" : [ 341.5, 804.0, 591.0, 804.0, 591.0, 735.0, 581.5, 735.0 ],
				"disabled" : 0,
				"order" : 0
			}

		}
, 		{
			"patchline" : 			{
				"source" : [ "obj-78", 0 ],
				"destination" : [ "obj-66", 0 ],
				"hidden" : 0,
				"disabled" : 0,
				"order" : 1
			}

		}
, 		{
			"patchline" : 			{
				"source" : [ "obj-76", 0 ],
				"destination" : [ "obj-78", 0 ],
				"hidden" : 0,
				"disabled" : 0
			}

		}
, 		{
			"patchline" : 			{
				"source" : [ "obj-75", 0 ],
				"destination" : [ "obj-71", 0 ],
				"hidden" : 0,
				"disabled" : 0
			}

		}
, 		{
			"patchline" : 			{
				"source" : [ "obj-74", 0 ],
				"destination" : [ "obj-71", 0 ],
				"hidden" : 0,
				"disabled" : 0
			}

		}
, 		{
			"patchline" : 			{
				"source" : [ "obj-71", 0 ],
				"destination" : [ "obj-76", 1 ],
				"hidden" : 0,
				"disabled" : 0
			}

		}
, 		{
			"patchline" : 			{
				"source" : [ "obj-7", 0 ],
				"destination" : [ "obj-35", 0 ],
				"hidden" : 0,
				"midpoints" : [ 249.5, 496.0, 193.5, 496.0 ],
				"disabled" : 0
			}

		}
, 		{
			"patchline" : 			{
				"source" : [ "obj-66", 0 ],
				"destination" : [ "obj-56", 0 ],
				"hidden" : 0,
				"disabled" : 0
			}

		}
, 		{
			"patchline" : 			{
				"source" : [ "obj-62", 0 ],
				"destination" : [ "obj-43", 0 ],
				"hidden" : 0,
				"disabled" : 0
			}

		}
, 		{
			"patchline" : 			{
				"source" : [ "obj-61", 0 ],
				"destination" : [ "obj-60", 0 ],
				"hidden" : 0,
				"disabled" : 0,
				"order" : 1
			}

		}
, 		{
			"patchline" : 			{
				"source" : [ "obj-61", 0 ],
				"destination" : [ "obj-60", 1 ],
				"hidden" : 0,
				"disabled" : 0,
				"order" : 0
			}

		}
, 		{
			"patchline" : 			{
				"source" : [ "obj-6", 0 ],
				"destination" : [ "obj-9", 0 ],
				"hidden" : 0,
				"disabled" : 0
			}

		}
, 		{
			"patchline" : 			{
				"source" : [ "obj-58", 0 ],
				"destination" : [ "obj-56", 0 ],
				"hidden" : 0,
				"disabled" : 0
			}

		}
, 		{
			"patchline" : 			{
				"source" : [ "obj-57", 0 ],
				"destination" : [ "obj-53", 0 ],
				"hidden" : 0,
				"midpoints" : [ 311.5, 298.0, 384.5, 298.0 ],
				"disabled" : 0
			}

		}
, 		{
			"patchline" : 			{
				"source" : [ "obj-56", 1 ],
				"destination" : [ "obj-89", 0 ],
				"hidden" : 0,
				"midpoints" : [ 374.5, 939.0, 465.0, 939.0, 465.0, 861.0, 487.5, 861.0 ],
				"disabled" : 0
			}

		}
, 		{
			"patchline" : 			{
				"source" : [ "obj-56", 0 ],
				"destination" : [ "obj-52", 0 ],
				"hidden" : 0,
				"disabled" : 0
			}

		}
, 		{
			"patchline" : 			{
				"source" : [ "obj-55", 0 ],
				"destination" : [ "obj-54", 0 ],
				"hidden" : 0,
				"midpoints" : [ 384.5, 356.0, 443.0, 356.0, 443.0, 248.0, 384.5, 248.0 ],
				"disabled" : 0
			}

		}
, 		{
			"patchline" : 			{
				"source" : [ "obj-54", 0 ],
				"destination" : [ "obj-48", 0 ],
				"hidden" : 0,
				"disabled" : 0
			}

		}
, 		{
			"patchline" : 			{
				"source" : [ "obj-53", 0 ],
				"destination" : [ "obj-6", 0 ],
				"hidden" : 0,
				"midpoints" : [ 384.5, 328.5, 338.5, 328.5 ],
				"disabled" : 0,
				"order" : 1
			}

		}
, 		{
			"patchline" : 			{
				"source" : [ "obj-53", 0 ],
				"destination" : [ "obj-55", 0 ],
				"hidden" : 0,
				"disabled" : 0,
				"order" : 0
			}

		}
, 		{
			"patchline" : 			{
				"source" : [ "obj-53", 0 ],
				"destination" : [ "obj-50", 0 ],
				"hidden" : 0,
				"midpoints" : [ 384.5, 323.0, 193.5, 323.0 ],
				"disabled" : 0,
				"order" : 2
			}

		}
, 		{
			"patchline" : 			{
				"source" : [ "obj-52", 0 ],
				"destination" : [ "obj-49", 0 ],
				"hidden" : 0,
				"disabled" : 0,
				"order" : 1
			}

		}
, 		{
			"patchline" : 			{
				"source" : [ "obj-52", 0 ],
				"destination" : [ "obj-49", 1 ],
				"hidden" : 0,
				"disabled" : 0,
				"order" : 0
			}

		}
, 		{
			"patchline" : 			{
				"source" : [ "obj-51", 0 ],
				"destination" : [ "obj-45", 0 ],
				"hidden" : 0,
				"disabled" : 0,
				"order" : 1
			}

		}
, 		{
			"patchline" : 			{
				"source" : [ "obj-51", 0 ],
				"destination" : [ "obj-41", 1 ],
				"hidden" : 0,
				"midpoints" : [ 166.5, 726.0, 327.0, 726.0, 327.0, 636.0, 315.5, 636.0 ],
				"disabled" : 0,
				"order" : 0
			}

		}
, 		{
			"patchline" : 			{
				"source" : [ "obj-50", 0 ],
				"destination" : [ "obj-10", 0 ],
				"hidden" : 0,
				"disabled" : 0
			}

		}
, 		{
			"patchline" : 			{
				"source" : [ "obj-48", 0 ],
				"destination" : [ "obj-53", 0 ],
				"hidden" : 0,
				"disabled" : 0
			}

		}
, 		{
			"patchline" : 			{
				"source" : [ "obj-45", 0 ],
				"destination" : [ "obj-43", 0 ],
				"hidden" : 0,
				"disabled" : 0
			}

		}
, 		{
			"patchline" : 			{
				"source" : [ "obj-43", 1 ],
				"destination" : [ "obj-85", 0 ],
				"hidden" : 0,
				"disabled" : 0
			}

		}
, 		{
			"patchline" : 			{
				"source" : [ "obj-43", 0 ],
				"destination" : [ "obj-61", 0 ],
				"hidden" : 0,
				"disabled" : 0
			}

		}
, 		{
			"patchline" : 			{
				"source" : [ "obj-41", 0 ],
				"destination" : [ "obj-51", 0 ],
				"hidden" : 0,
				"disabled" : 0
			}

		}
, 		{
			"patchline" : 			{
				"source" : [ "obj-4", 0 ],
				"destination" : [ "obj-8", 0 ],
				"hidden" : 0,
				"disabled" : 0
			}

		}
, 		{
			"patchline" : 			{
				"source" : [ "obj-36", 0 ],
				"destination" : [ "obj-34", 0 ],
				"hidden" : 0,
				"disabled" : 0,
				"order" : 1
			}

		}
, 		{
			"patchline" : 			{
				"source" : [ "obj-36", 0 ],
				"destination" : [ "obj-33", 0 ],
				"hidden" : 0,
				"disabled" : 0,
				"order" : 0
			}

		}
, 		{
			"patchline" : 			{
				"source" : [ "obj-35", 1 ],
				"destination" : [ "obj-29", 0 ],
				"hidden" : 0,
				"disabled" : 0
			}

		}
, 		{
			"patchline" : 			{
				"source" : [ "obj-35", 0 ],
				"destination" : [ "obj-14", 0 ],
				"hidden" : 0,
				"color" : [ 0.057615, 0.8, 0.189809, 1.0 ],
				"midpoints" : [ 193.5, 538.0, 157.0, 538.0, 157.0, 197.0, 228.5, 197.0 ],
				"disabled" : 0
			}

		}
, 		{
			"patchline" : 			{
				"source" : [ "obj-34", 0 ],
				"destination" : [ "obj-32", 0 ],
				"hidden" : 0,
				"disabled" : 0
			}

		}
, 		{
			"patchline" : 			{
				"source" : [ "obj-33", 0 ],
				"destination" : [ "obj-31", 0 ],
				"hidden" : 0,
				"disabled" : 0
			}

		}
, 		{
			"patchline" : 			{
				"source" : [ "obj-32", 0 ],
				"destination" : [ "obj-31", 0 ],
				"hidden" : 0,
				"disabled" : 0
			}

		}
, 		{
			"patchline" : 			{
				"source" : [ "obj-31", 1 ],
				"destination" : [ "obj-28", 0 ],
				"hidden" : 0,
				"disabled" : 0
			}

		}
, 		{
			"patchline" : 			{
				"source" : [ "obj-30", 0 ],
				"destination" : [ "obj-57", 0 ],
				"hidden" : 0,
				"color" : [ 0.0, 0.0, 0.0, 0.9 ],
				"midpoints" : [ 311.5, 173.0, 311.5, 173.0 ],
				"disabled" : 0,
				"order" : 1
			}

		}
, 		{
			"patchline" : 			{
				"source" : [ "obj-30", 0 ],
				"destination" : [ "obj-21", 0 ],
				"hidden" : 0,
				"color" : [ 0.0, 0.0, 0.0, 0.9 ],
				"midpoints" : [ 311.5, 128.0, 321.5, 128.0 ],
				"disabled" : 0,
				"order" : 0
			}

		}
, 		{
			"patchline" : 			{
				"source" : [ "obj-30", 1 ],
				"destination" : [ "obj-19", 0 ],
				"hidden" : 0,
				"color" : [ 0.0, 0.0, 0.0, 0.9 ],
				"midpoints" : [ 333.0, 104.0, 343.5, 104.0 ],
				"disabled" : 0
			}

		}
, 		{
			"patchline" : 			{
				"source" : [ "obj-29", 4 ],
				"destination" : [ "obj-3", 0 ],
				"hidden" : 0,
				"disabled" : 0
			}

		}
, 		{
			"patchline" : 			{
				"source" : [ "obj-29", 0 ],
				"destination" : [ "obj-23", 0 ],
				"hidden" : 0,
				"disabled" : 0
			}

		}
, 		{
			"patchline" : 			{
				"source" : [ "obj-29", 2 ],
				"destination" : [ "obj-22", 0 ],
				"hidden" : 0,
				"disabled" : 0
			}

		}
, 		{
			"patchline" : 			{
				"source" : [ "obj-28", 0 ],
				"destination" : [ "obj-14", 0 ],
				"hidden" : 0,
				"color" : [ 0.057615, 0.8, 0.189809, 1.0 ],
				"midpoints" : [ 721.5, 194.0, 228.5, 194.0 ],
				"disabled" : 0
			}

		}
, 		{
			"patchline" : 			{
				"source" : [ "obj-24", 0 ],
				"destination" : [ "obj-13", 0 ],
				"hidden" : 0,
				"color" : [ 0.0, 0.0, 0.0, 0.9 ],
				"midpoints" : [ 447.5, 81.0, 365.0, 81.0, 365.0, 86.0, 363.5, 86.0 ],
				"disabled" : 0
			}

		}
, 		{
			"patchline" : 			{
				"source" : [ "obj-23", 0 ],
				"destination" : [ "obj-41", 0 ],
				"hidden" : 0,
				"disabled" : 0
			}

		}
, 		{
			"patchline" : 			{
				"source" : [ "obj-22", 0 ],
				"destination" : [ "obj-76", 0 ],
				"hidden" : 0,
				"disabled" : 0,
				"order" : 1
			}

		}
, 		{
			"patchline" : 			{
				"source" : [ "obj-22", 0 ],
				"destination" : [ "obj-75", 0 ],
				"hidden" : 0,
				"disabled" : 0,
				"order" : 0
			}

		}
, 		{
			"patchline" : 			{
				"source" : [ "obj-22", 0 ],
				"destination" : [ "obj-74", 0 ],
				"hidden" : 0,
				"disabled" : 0,
				"order" : 2
			}

		}
, 		{
			"patchline" : 			{
				"source" : [ "obj-21", 0 ],
				"destination" : [ "obj-14", 0 ],
				"hidden" : 0,
				"color" : [ 0.057615, 0.8, 0.189809, 1.0 ],
				"midpoints" : [ 321.5, 161.0, 228.5, 161.0 ],
				"disabled" : 0
			}

		}
, 		{
			"patchline" : 			{
				"source" : [ "obj-19", 0 ],
				"destination" : [ "obj-14", 0 ],
				"hidden" : 0,
				"color" : [ 0.057615, 0.8, 0.189809, 1.0 ],
				"midpoints" : [ 343.5, 140.5, 228.5, 140.5 ],
				"disabled" : 0
			}

		}
, 		{
			"patchline" : 			{
				"source" : [ "obj-16", 0 ],
				"destination" : [ "obj-21", 0 ],
				"hidden" : 0,
				"color" : [ 0.0, 0.0, 0.0, 0.9 ],
				"midpoints" : [ 378.5, 78.0, 341.0, 78.0, 341.0, 78.0, 321.5, 78.0 ],
				"disabled" : 0
			}

		}
, 		{
			"patchline" : 			{
				"source" : [ "obj-14", 0 ],
				"destination" : [ "obj-54", 1 ],
				"hidden" : 0,
				"color" : [ 0.586327, 0.12593, 0.8, 0.9 ],
				"midpoints" : [ 228.5, 239.0, 419.5, 239.0 ],
				"disabled" : 0,
				"order" : 0
			}

		}
, 		{
			"patchline" : 			{
				"source" : [ "obj-14", 0 ],
				"destination" : [ "obj-50", 1 ],
				"hidden" : 0,
				"color" : [ 0.586327, 0.12593, 0.8, 0.9 ],
				"disabled" : 0,
				"order" : 1
			}

		}
, 		{
			"patchline" : 			{
				"source" : [ "obj-14", 1 ],
				"destination" : [ "obj-36", 0 ],
				"hidden" : 0,
				"color" : [ 0.106881, 0.233439, 0.8, 0.9 ],
				"midpoints" : [ 364.5, 233.0, 434.0, 233.0, 434.0, 173.0, 608.0, 173.0, 608.0, 107.0, 617.0, 107.0, 617.0, 23.0, 630.5, 23.0 ],
				"disabled" : 0
			}

		}
, 		{
			"patchline" : 			{
				"source" : [ "obj-13", 0 ],
				"destination" : [ "obj-14", 0 ],
				"hidden" : 0,
				"color" : [ 0.057615, 0.8, 0.189809, 1.0 ],
				"midpoints" : [ 363.5, 112.5, 228.5, 112.5 ],
				"disabled" : 0
			}

		}
, 		{
			"patchline" : 			{
				"source" : [ "obj-12", 0 ],
				"destination" : [ "obj-14", 0 ],
				"hidden" : 0,
				"color" : [ 0.057615, 0.8, 0.189809, 1.0 ],
				"disabled" : 0
			}

		}
, 		{
			"patchline" : 			{
				"source" : [ "obj-11", 0 ],
				"destination" : [ "obj-30", 0 ],
				"hidden" : 0,
				"midpoints" : [ 228.5, 43.0, 311.5, 43.0 ],
				"disabled" : 0,
				"order" : 0
			}

		}
, 		{
			"patchline" : 			{
				"source" : [ "obj-11", 0 ],
				"destination" : [ "obj-12", 0 ],
				"hidden" : 0,
				"disabled" : 0,
				"order" : 1
			}

		}
, 		{
			"patchline" : 			{
				"source" : [ "obj-10", 0 ],
				"destination" : [ "obj-4", 0 ],
				"hidden" : 0,
				"midpoints" : [ 193.5, 411.5, 249.5, 411.5 ],
				"disabled" : 0
			}

		}
, 		{
			"patchline" : 			{
				"source" : [ "obj-10", 2 ],
				"destination" : [ "obj-4", 0 ],
				"hidden" : 0,
				"midpoints" : [ 249.5, 424.0, 249.5, 424.0 ],
				"disabled" : 0
			}

		}
 ],
	"appversion" : 	{
		"major" : 7,
		"minor" : 3,
		"revision" : 3,
		"architecture" : "x86",
		"modernui" : 1
	}
,
	"styles" : [ 		{
			"name" : "AudioStatus_Menu",
			"default" : 			{
				"bgfillcolor" : 				{
					"type" : "color",
					"color" : [ 0.294118, 0.313726, 0.337255, 1 ],
					"color1" : [ 0.454902, 0.462745, 0.482353, 0.0 ],
					"color2" : [ 0.290196, 0.309804, 0.301961, 1.0 ],
					"angle" : 270.0,
					"proportion" : 0.39,
					"autogradient" : 0
				}

			}
,
			"parentstyle" : "",
			"multi" : 0
		}
 ]
}
the end of Max code*/

Week12: Scare Your Computer by Tian (Antonius)

Team: Tian and Sam

For project 2 we were assigned to scare our computer with Arduino and Max MSP. Sam and I made a small installation with one sharp distant sensor and one touch sensor. Our idea is that if we try to scare the computer from the front (where it can see), it will say “I see you, don’t try to scare me.”, but if we tap on it from the behind, it screams.

IMG_0661 IMG_0662

We got the circuit above referring to SerialCommunicationCallResponseASCII in Arduino and then started to build the Max patcher. We wanted to let Max play one of the two audios we prepared according to the result of the serial communication. The most important steps were to write the if conditions in the correct way. Finally, we let each value control a boolean which then controlled a toggle, by detecting the value of the sensor and the value of the boolean (and the previous value of the touch sensor). The toggle controlled an audio file and when the audio file ended, it would turn off the toggle through feedback and the audio would wait for the next turn of playing.

screen1

screen2

(val1 for sharp distance sensor & val2 for touch sensor)

The biggest difficulty we had was that the touch sensor didn’t work with the sharp distance sensor but it worked alone. We found out with the help of Jiwon that a delay between printing the two datas would help solve the problem. However the touch sensor was still trick – in the studio, it worked on the tables away from room 824 and doesn’t work on the tables near room 824.

IMG_0666 IMG_0665

We also arranged our circuit in a box and installed it on my laptop. The videos of testing and performing are below:

It was good to continue exploring Max and I feel like getting used to its structure. Looking forward to the final project!

 

Week11: Measuring Fear from Heart Rate by Tian (Antonius)

We are asked to explore a way to measure fear for project 1. I chose the earclip heart rate sensor because I thought GSR was kind of uncontrollable for only measuring fear.

My Arduino circuit is like this:

IMG_0648 IMG_0649 IMG_0650

The original Arduino code I found from Seeed actually print out more data than only the heart rate. However I only sent the heart rate when creating serial communication with Processing so things won’t mess up. I also refered to the GSR code we used in class and recorded heart rate and time in two arrays and then stored the arrays in a txt file when the program ended.

After building up the sketches, I started to exam them with the short horror films I found. However, the results are not dramatic as I thought. In most of the tests my heart rate was almost flat. I guess this is both because I was not easily scared and the films were not very scary. Sam and I both watched the clip of The Conjuring 2, and he had a more dramatic data that goes up and down with the plots than mine. One film that scared me was called Coffer. The 3-minute film was almost flat to me until at the end a black hand suddenly comes out and drags the main character into the coffer. My highest heart rate reached 106bpm then. Tracing back to my experiences of watching horrors, I was more easily scared by those “sudden horrors” rather than the horror of suspense. Interestingly, once I was watching Zeyao suddenly patted on my shoulder and that was when I got my second highest heart rate 99bpm.

The earclip heart rate sensor is also not a perfect way of measuring fear. I invited my friends to my test and we found that any laughing or talking can increase one’s heart rate.

In this experience I found that it wasn’t easy to create fear in a short film and also it was hard for me to find good horrors. Looking forward to create my own horror.

Arduino Code:
    // Function: This program can be used to measure heart rate, the lowest pulse in the program be set to 30.
    //         Use an external interrupt to measure it.
    // Hardware: Grove - Ear-clip Heart Rate Sensor, Grove - Base Shield, Grove - LED
    // Arduino IDE: Arduino-1.0
    // Author: FrankieChu       
    // Date: Jan 22, 2013
    // Version: v1.0
    // by www.seeedstudio.com
    #define LED 4//indicator, Grove - LED is connected with D4 of Arduino
    boolean led_state = LOW;//state of LED, each time an external interrupt 
                                    //will change the state of LED
    unsigned char counter;
    unsigned long temp[21];
    unsigned long sub;
    bool data_effect=true;
    int heart_rate;//the measurement result of heart rate

    const int max_heartpluse_duty = 2000;//you can change it follow your system's request.
                            //2000 meams 2 seconds. System return error 
                            //if the duty overtrip 2 second.
    void setup()
    {
        pinMode(LED, OUTPUT);
        Serial.begin(9600);
//        Serial.println("Please ready your chest belt.");
        delay(5000);
        arrayInit();
//        Serial.println("Heart rate test begin.");
        attachInterrupt(0, interrupt, RISING);//set interrupt 0,digital port 2
    }
    void loop()
    {
        digitalWrite(LED, led_state);//Update the state of the indicator
    }
    /*Function: calculate the heart rate*/
    void sum()
    {
     if(data_effect)
        {
          heart_rate=1200000/(temp[20]-temp[0]);//60*20*1000/20_total_time 
//          Serial.print("Heart_rate_is:t");
          Serial.write(heart_rate);
        }
       data_effect=1;//sign bit
    }
    /*Function: Interrupt service routine.Get the sigal from the external interrupt*/
    void interrupt()
    {
        temp[counter]=millis();
//        Serial.println(counter,DEC);
//        Serial.println(temp[counter]);
        switch(counter)
        {
            case 0:
                sub=temp[counter]-temp[20];
//                Serial.println(sub);
                break;
            default:
                sub=temp[counter]-temp[counter-1];
//                Serial.println(sub);
                break;
        }
        if(sub>max_heartpluse_duty)//set 2 seconds as max heart pluse duty
        {
            data_effect=0;//sign bit
            counter=0;
//            Serial.println("Heart rate measure error,test will restart!" );
            arrayInit();
        }
        if (counter==20&&data_effect)
        {
            counter=0;
            sum();
        }
        else if(counter!=20&&data_effect)
        counter++;
        else 
        {
            counter=0;
            data_effect=1;
        }

    }
    /*Function: Initialization for the array(temp)*/
    void arrayInit()
    {
        for(unsigned char i=0;i < 20;i ++)
        {
            temp[i]=0;
        }
        temp[20]=millis();
    }








Processing code:

import processing.serial.*;

Serial myPort;  // Create object from Serial class
int val, preVal;      // Data received from the serial port
int[] heartRateTimer = new int[0];
int[] heartRate = new int[0];

void setup() 
{
  size(200, 200);
  // I know that the first port in the serial list on my mac
  // is always my  FTDI adaptor, so I open Serial.list()[0].
  // On Windows machines, this generally opens COM1.
  // Open whatever port is the one you're using.

  printArray(Serial.list());
  String portName = Serial.list()[1];
  myPort = new Serial(this, portName, 9600);
}

void draw()
{
  if ( myPort.available() > 0) {  // If data is available,
    val = myPort.read();         // read it and store it in val
    heartRate = append(heartRate, val);
    heartRateTimer = append(heartRateTimer, millis());
  }
  if (val != preVal)println(val);
  preVal = val;
}

void keyPressed() {
  // Press q to save the data
  if (key=='q'||key=='Q') {
    String[] lines = new String[heartRate.length];
    for (int i = 0; 
      i < heartRate.length; 
      i++) {
      lines[i] = "Time: " + heartRateTimer[i]/1000 + "s, heartbeat: " + heartRate[i] + "bpm";
    }
    saveStrings("earclip.txt", lines);
    exit(); // Stop the program
  }
}

Week11: Reading Response to Steve Dixon by Tian (Antonius)

I don’t really agree with the ideas, i.e. digital technology is meaningless/adding too much to the traditional theater space/performance that Dixon discusses in Chapter 2 of Digital Performance.  I think inherently, technology and theater performance are both ways/media to tell a story, and it depends on how we utillize them to tell the story, or what we intend to get from the story we tell.

I agree with ideas in this chapter that some use of technology can add too much to or even take place of  the performance. As Dixon mentions that Jean Baudrillard says, “people opt for the spectacle of thought rather than thought itself.” However, I do believe that good use of technology adds to the performance. Among the few experiences I have had in theater, The Phantom of the Opera is one example I can think of where in my opinion the technology helps the performance. I believe that many scenes which include explosions, and mysterious underground room with mist and cold lighting do need new techonology including digital device and codes that control them to be achieved. Given the fact that this is not the only theater work of fantasy (we have Cats, The Lion King, and The Wicked which is recently on in Shanghai), applying technology in theater works can make them more real if it can help re-create those imaginary scenes, instead of drawing the works away from their authenticity.

Except for lighting and special stage settings with technology, it seems the ideas that Sixon mentions stand more against the digital projection/screening. Arnold Aronson has raised a question which Dixon also mentions in chapter 2: “what is the point of trying to re-create ‘virtual’ imagery on a real, three dimensional stage?” But virtual imagery sometimes can help to fix the limit that traditional trage have. For example, in the scene of The Phantom of The Opera where Cristin and phantom ride a boat on a riverit’s not realistic to set water on the actually and only stage. Digital Projection do help to create that particular river. Besides, digital can also “create” magic. I’ve never watch the theater work of Harry Potter, but I can definitely imagine that different digital projection and technology help build the magical world.

It’s interesting that how people against digital performance define the word “fake”. It seems in their views “fake” correspond with not authentic and artificial. In this case, I think performance itself can also fall into field of fake since all action, reaction and interaction in it are pre-madeup according to the script although it’s real humans who’s on the stage. Performance is not something happening. It can be re-creating faking. Imagery can be fake, as emotions and facial expressions can be. Similar to technology, if we apply the definition of fake in chapter 2, there is also good performance that feels real and bad one that feels fake and pretentious. Performance as a traditional element of the theater and technology as a new element can are both means to re-create/build up the story, and if we remove all the fake things from the stage, the stage will be left empty.

In chapter 2, Dixon also mentions the commercial theater. Here I think we shouldn’t overlook the role of audience: there is audience who like gorgeous scenes, and also audience who likes to look for the “thoughts” in the theater even if technology participates. When someone is going to create a theater play, it’s his task to think about which audience he is writing/making the play for.

 

Week9: Final Project Ideas by Tian (Ann)

I’m actually really not sure about what to do for the final project. For now I have a few ideas:

  1. An installation somewhere in our campus to detect data for example how many people are passing by and their speed, and express the data with sound. This is inspired by Listen to Wikipedia. I think data expression is interesting still if doing this I need to find more valuable and dynamic data. Which sensor(s) to use is also a question.
  2. A light projection of shapes that visualize sounds. This can be installed in the dark room of our campus. Sounds can be abstract and music like, or can be realistic, for example creating a sense of a night in a forest/open field.
  3. A vertical sound map/sound trip. Going up by stairs with the headphones on. A sense of walking up to the sky or something.

Week9: Ido Junji Exhibition by Tian (Antonius)

I went to the Ido Junji exhibition two weeks ago on a Saturday afternoon. This is my first time to know Ido and his work. I really enjoyed the cartoons but I think the technology and exhibition could have done more.

Before I went, I thought the exhibition would be very terrify, but it was actually not. The exhibition was in an underground hall. There were quite a few people but not enought equipment so I had to share one pair of AR glasses with my friend. After looking at a few AR pictures, I found that constantly taking off and putting on the glasses drew me back to the reality and loosened my connection with the cartoon.

IMG_0478 IMG_0479

My friends and I took apart the AR glasses and found the structure not complete as we thought. It was just a cellphone with two blocks of animation in a black box with two lens. The left and right blocks of animation looked the same. It was interesting to have sound inlcuded. However the animated pieces were similar to the original drawings. Most motions and transformations were simple. I think it would be more interesting if the pictures transform/move more or even grow out of the frame.

Aside from technology, I really liked the cartoon itself. It surprised me that Ido was good at drawing. Before going to the exhibition, I always thought that horror cartoon was abstract, illusory and didn’t need to look realistic. However, Ido’s drawing style, especially of human bodies, is very realistic even thought his cartoon itself is about something illusory/imaginary. This made me realize that realism can be also a great way to create fright since we are always afraid of something that seems something can appear in our lives and are related to us.

One cartoon series that impressed me was “Tomie”, about an atracting girl who always comes back to life after getting killed. It was really stricking that Ido said he was afraid of women, and by creating Tomie and killing her again and again, he gradually reduced his fear of women. I always thought that horror cartoon/film were creating fear and warning people about their real lives, but Ido provided me a new way of thinking about horror cartoon/film that it was helping people (both the artist and the audience) to let out their fear, onto the paper or into scream, and to relieve themselves in these ways.

Another impressing series was “The Hanging Balloons”. It was shocking to see people’s heads floating in the sky. After the exhibition I found online the whole chapter of “The Hanging Ballons”. The cartoon starts with showing a girl hiding in her room and applies flashbacks to tell the story. The audience only see the the hanging balloons after a while but he/she is always aware that something weird is happening due to the dark and intense atmosphere. I really like this sense of suspense and I think it’s a effective way to root fear in people’s minds.

I liked that the exhibition also introduced Ido’s inspirations and his working process. If anything, I hope that the exhibition hall itself have also created fear with decorations and lights corresponsing to the cartoon.