Final combined studio/coding

The original concept: To create an energy visualizer that collects data from a crowd. The machine would resemble the energy instrument used to measure the main character, Tetsuo, in the Japanese Anime Akira.   The 3D model  before physical construction: Screen Shot 2014-12-08 at 8.47.18 PM

Materials purchased:

one 4’x8′ 3/4″ birch plywood from Prince Lumber

one 12″ diameter plastic hemisphere from Canal Plastics

three 18″x12″ 1/8″ clear acrylic sheets

four 8″ 3/8″ diameter bolts with eight accompanying nuts and washers from Home Depot

one length of vacuum tube from Home Depot

one strip of RGB led from Amazon

four potentiometers from RadioShack

wire, wood glue, zap glue, zip ties, translucent mylar

Creating a quick prototype “hologram”. Really this is an illusion called “pepper’s ghost illusion.” Real holograms are created with lasers. Though this is a cheap and visually interesting alternative.

material:

clear PVC 2/32 sheets, wooden dowel, glue

Construction:

Could not be possible without the generous donation of this computer monitor from Mick, my boss over at the 3D printing/laser lab.

IMG_1657

 

IMG_1683IMG_1563 IMG_1567

IMG_1710 IMG_1722

 

 

Result:

My rendition of the energy measurement instrument:     Rather than being a machine exclusively for the purposes of measuring and visualizing energy levels, the machine is modular, capable of running many “apps”. The base of the machine is designed with spaceships and the future in mind, complete with diffused blue LED’s, hoses and tubes, and a circular construction. The machine is meant to be used to up to 4 people, as there are 4 potentiometers, one for each person, placed around the perimeter of the hologram. The potentiometers are used to change variables within the main processing sketch.

Mode 1: cube

IMG_1712

Mode 2: spaceship

IMG_1720

Mode 3: pong

Screen Shot 2014-12-09 at 12.30.10 AM

Mode 4: drawing tool

IMG_1716

road bumps/struggles/what i’d like to improve/add :

Construction of the base could be cleaner. Additionally, the edges of the pyramid could have been joined in a much more precise way.

if more time: I could make the lights on bottom respond to the potentiometers. I could also add sound and, as Sven suggested, fog that could shoot out of the hoses to create a more immersive interaction environment. Additionally, it would be great to eventually utilize this as the data visualizer I originally intended it to become. The next project would likely be creating a system to collect and parse the data.

Reflection:

All in all, the project took me a long time to make and I am happy with the end result. I think the amount of time I devoted to the project justifies the end result. I also am fairly pleased with the future spaceship looking aesthetic and the interaction that it induces, requiring people to be engaged with the object for the full experience to take effect.

Kinect

Attempted to work with the xbox 360 kinext model 1414 but without luck. Upgrading to yosemite fucked up the whole operation. Maybe in a few months a hacker will create support for kinect 1414 on the new osx? will check back later… to be continued…

IMG_1405 IMG_1407

Augmented Reality

Augmented reality became reality when we used an awesome Japanese processing library called Nyar4psg. In order to use this library we had to run processing version 1.5 because it hasn’t been updated yet. Essentially, the library detects pixel clusters of the same color to find a black box, called the marker. On a sheet of paper, you must draw an asymmetrical shape, then take a photo of that image or scan it in. Kyle suggested this handy website http://flash.tarotaro.org/ar/MGO2.swf

We made several sizes of the marker, 8X8, 16X16, 32X32, 64X64. Those images are loaded into the processing sketch so that it can determine if the shape inside of the marker is a match. When it matches, a 3D cube appears in perspective on top of the marker.

IMG_1415  IMG_1488IMG_1489 

 

Augmented Reality in Processing – Nyar4 Library Test from Yumeng Wang on Vimeo.

DIY tilt sensor

A simple, yet effective DIY tilt sensor!

Supplies:
Tin foil, small plastic cylinder, breadboard, led, 220 ohm resistor, drill w/ 1/8 in bit, wire, electric tape, marble.

Instructions:

Take the cylindrical container and drill 4 holes in the bottom, like a button. Cut two 1 foot lengths of wire. Strip about 2 – 3 inches off the ends of both wires. Thread the wire through two holes to make a U shape. Thread the other wire through the opposite available holes. Wrap a marble with tin foil and place the marble inside of the container. Cap the container. Tape the wire that comes out of the bottom, making sure to separate each wire from the other. No short circuits! Set up an LED circuit where the negative side is interrupted by the DIY tilt sensor. Finally, utilize the power of gravity and tilt that switch so the marble goes in between the two loops that were made. Watch the magic happen!

 

 

IMG_1380 IMG_1378 IMG_1377

Organ Backpack finished!

It has been a while since my last post because my phone, which was my only tool for documentation, was broken.

Basically where I left off was trying to figure out how to produce sound. There were a number of prototypes that I went through. Cardboard, paper, and finally PVC tubing. There are many examples of PVC music projects. Probably the most famous example is the blue man group’s use of PVC in their performances. PVC was the best option because it is relatively cheap (I got 10 feet for under 5 dollars from Home Depot!). PVC is strong, easily cuttable, and produces sound, all great characteristics for the project.

The length of the tube, I found out, is responsible for producing different tones. A longer pipe will produce a lower frequency vibrations which result in a lower tone and a shorter pipe will produce higher frequency vibrations which result in a higher tone. I cut three sections from my PVC pipe, each varying by about  6 inches.

After cutting the PVC pipes to size, I modified a 3D flue pipe from thingiverse user Japa: http://www.thingiverse.com/thing:35880 by sizing it to fit my 1 inch diameter PVC pipes. I also modified the mouth of the flue pipe to a diameter of 55mm to fit on the squirrel cage fan.

A squirrel cage purchased from sparkfun: https://www.sparkfun.com/products/11270 and attached to two 9V batteries produced enough pressure to create sound from the flue.

After successfully producing sound, I designed and built and enclosure separated by three sections. Section 1 contains the fans, section 2 contains the Arduino, and section 3 contains the PVC pipe.

 

The Arduino Interfaces with Processing to make a simple sound visualizer!

Loading

Made a simple sound visualizer! It reacts primarily to bass. #Processing #Arduino #ChanceTheRapper

View on Instagram

I used a sound impact sensor and a potentiometer to manipulate the processing sketch. Here is the code:

Arduino code is bellow:

int potData = A0;
int sound = 2;
int button = 4;

void setup() {
Serial.begin(57600); //higher baud rate for transfering longer strings of info
pinMode(potData, INPUT);
}

void loop() {
int potVal1 = analogRead(potData);
int soundVal2 = digitalRead(sound);
int buttonVal3 = digitalRead(button);

//concatenation happens bellow
//data format potVal1, soundVal2, buttonVal3 – this will package multiple bits of data
Serial.print(potVal1);
Serial.print(“|”); //adds a character that lets you separate different bits of data.
Serial.print(soundVal2);
Serial.print(“|”);
Serial.println(buttonVal3); //Ends the batch of data
delay(400);

}

 

Processing code is bellow:

import processing.serial.*;

Serial myPort; // Create object from Serial class
int val; // Data received from the serial port

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.
String portName = Serial.list()[0];
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
}

}