process


13
Mar 10

ARToolKitPlus

Been working on getting ARToolKitPlus working with some collada data. Here’s a test with markers on my iPhone. Thanks to Theo Watson for the OF 0061 demo.

ARToolKitPlus test from Jay Pozo on Vimeo.


30
Dec 09

Arduino MIDI controller

A project that I’ve been working will use ultrasonic range finders to determine the locations of people in a space to send MIDI signals back to Ableton Live to trigger tracks of sound. This prototype sends one of four byte strings that make up a MIDI controller command, based on the distance from the sensor. It’s made up of an Arduino, a Maxbotix EZ1, a MIDI to USB cable and some RGB LEDs for visual feedback.

Arduino MIDI Controller

Simply put, if you’re within 8 inches of the sensor, one measure of music on the computer plays and the LEDs show one color. Greater than 16 inches, a different measure plays and the LEDs change to a different color. More than 24 inches away from the sensor and you get yet a different measure of music and color on the rgb LEDs. In the end I hope to scale the spatial awareness of this to intervals within 10 feet, with the LEDs lighting 1′x2′ plexiglass panels with the sensors mounted below the panels, facing into a space.

For now, here’s some Arduino code if anybody’s interested in playing with it:

/*

CTYSND - a spatial musical instrument
Author: Jay Pozo

http://www.jaymatter.com

December 2009

for more info about MIDI messages, go here:

http://www.midi.org/techspecs/midimessages.php

*/

// data pin for the range finder sensor
const int sensorPin1 = 6;

byte firstNote = 0x01;
byte secondNote = 0x02;
byte thirdNote = 0x03;

// commandByte: 0x90 is a note
// 0xB1 is a controller change on channel 2
byte commandByte = 0xB1;

// the third byte sends the velocity. In this case, 0x7F is max of 127
byte thirdByte = 0x7F;
byte lastNotePlayed;

long sensor1Pulse;
long distance1; // in inches

// pins for the colored led panels
// this will have to change later, probably through a shift register to support 8 sets of LEDs
int redPin1 = 9;
int greenPin1 = 10;
int bluePin1 = 11;

// our ranges, in inches
int rangeStart = 0;
int rangeStep1 = 8;
int rangeStep2 = 16;
int rangeStep3 = 24;

void setup() {

Serial.begin(31250);

pinMode(redPin1, OUTPUT);
pinMode(greenPin1, OUTPUT);
pinMode(bluePin1, OUTPUT);

pinMode(sensorPin1, INPUT);
}

void loop() {

sensor1Pulse = pulseIn(sensorPin1, HIGH);
distance1 = sensor1Pulse/147; // distance is in inches (see documentation of sensor for value of 147)

if ( distance1 > rangeStart && distance1 < rangeStep1 )
{
analogWrite(redPin1, 255);
analogWrite(greenPin1, 255);
analogWrite(bluePin1, 255);
if (lastNotePlayed != firstNote)
{
noteOn(commandByte, firstNote, thirdByte);
lastNotePlayed = firstNote;
}

}

if ( distance1 > rangeStep1 && distance1 < rangeStep2 )
{
analogWrite(redPin1, 255);
analogWrite(greenPin1, 0);
analogWrite(bluePin1, 255);
if (lastNotePlayed != secondNote)
{
noteOn(commandByte, secondNote, thirdByte);
lastNotePlayed = secondNote;
}

}

if ( distance1 > rangeStep2 && distance1 < rangeStep3 )
{
analogWrite(redPin1, 255);
analogWrite(greenPin1, 255);
analogWrite(bluePin1, 0);
if (lastNotePlayed != thirdNote)
{
noteOn(commandByte, thirdNote, thirdByte);
lastNotePlayed = thirdNote;
}

}

if (distance1 > rangeStep3 )
{
analogWrite(redPin1, 0);
analogWrite(greenPin1, 0);
analogWrite(bluePin1, 255);

// noteOff();

}

delay(300);
}

void noteOff()
{
Serial.print(0xFC,BYTE);
}

void noteOn(int cmd, int pitch, int velocity) {
Serial.print(cmd, BYTE);
Serial.print(pitch, BYTE);
Serial.print(velocity, BYTE);
}


27
Dec 09

Rapid prototyping

This summer I was lucky to see some real examples of the  rapid prototyping at work in the Italian design and architecture industries.  Based in Milan, ONEOFF positions themselves as “the prototype of a new generation of modelling labs and expresses [sic] the potential of digital technology applied to rapid manufacturing”. They’ve spent a lot of time becoming experts in creating prototypes – and most interestingly for myself, in rapid prototyping.

(Image borrowed from ONEOFF's Flickr stream)

Rapid prototyping is an automated process which allows for complex objects to be produced before the manufacturing stage. Layers of a material (often plastic but also ceramic) are “printed” on top of each other until the final form is finished.  No tools or moulds are required – just a 3D model of the prototype. The value here is in the ability to quickly create something for discussion and analysis.  Complex objects can be created in mere hours.  Artists also often use rapid prototyping technology to create “sculpted” work.

(Image borrowed from ONEOFF's Flickr stream)

The technology for high quality rapid prototyping isn’t cheap – $10,000 will get you something in the entry level.   There are however, a couple of alternatives that come from the open source crowd ( for whom I have much love ).  I was recently turned onto the RepRap, an open source project that comes in the form of a wiki that documents the parts and instructions to build your own 3D printer – for less than $1000. You can even buy a kit for $750 that gets shipped to your house for you to assemble in a day or so.  MakerBot is another open source solution, with plans for parts so you can build your own.  The MakerBot kit sells for the same price.

RepRap from Adrian Bowyer on Vimeo.

According to Google’s Open Source Programs Manager, Chris DiBona, the Rep Rap you can  ”think of RepRap as a China on your desktop”.  Hah.

If I didn’t have to pay for tuition… I’d have one keeping myself and my room mate up at night.


21
Dec 09

The Importance of Prototyping

I’ve been working with an art student at Emily Carr University to design and build one piece of a bigger art project, Code.lab. Makiko’s project is to build a “robot” that follows the metal railroad tracks that run around Granville Island and in front of ECU. We first looked at line following robots to inform some of our decisions around the form for the sensors, the motor and wheel arrangement, and the general shape of the final artifact. Makiko’s desire to shape the aesthetic to her artistic vision is definitely helping with material and part choice, but the various versions of prototypes that we built together helped to create objects that we could discuss and use as a platform for ideation.

Mindstorms Line Follower

The first real prototype, past sketches, was a Lego Mindstorms line follower. We were able to observe how an optic line follower worked, with a single sensor on the front of the robot detecting the black color of the line against a white surface.

The next version was an arduino based line follower that we thought we would use Hall-Effect sensors to detect the metal rail tracks with. We took a small prototyping step here to test the Hall-Effect sensors which we discovered were overkill for what we wanted to do. In the end we chose to use rare earth magnets mounted on the arms of contact switches to detect the metal tracks.

Prototypes informed our choice of wheel clearance relative to the robot chassis, helped us determine that the sensors should be mounted on the front of the robot. Testing versions of code helped me come up with the final code that drives the servos to follow the metal tracks.

Every prototyping step helped us refine an abstract thought to a more certain form, a form that functions in a way that is close to what we had originally envisioned. Versions of the parts of this project let us look closely at our problem space and also exposed problems that we had no idea existed. We were able to physically discuss and evaluate our design decisions, considering Makiko’s artistic vision and the pragmatic need to make this robot move and follow the tracks. We are now at a prototype version which is very close to the final form – new parts in the coming weeks will bring us to the final scale. It will be interesting to see what the final form looks like come February when the final exhibit opens to the public. Stay tuned for more of our progress.


24
Sep 09

Project thoughts

The Red Communicationist Party

As part of the process of a 4th year course that I’m taking at SFU’s SIAT campus, my class team and I have been thinking about possible projects to fulfill an 8 month capstone project. The project should follow values formed by our group as well as use technology in its implementation. The final project piece should be marketable in some way to be the most successful in the eyes of our professors.

Some of the discussion to discover our preferred form for this project have considered surfacing social and urban issues in our own locale, in the hopes of raising general public awareness and discourse. Issues related to these are something that have really directed my path through life for years, especially in my multiple choices to leave a career or thriving freelance business and return to school. If the success of a community can be measured in part by the general happiness and well being of the people in it (rather than the financial success, but that’s a whole other topic), then should not the people in the community be interested in the happiness and well being of the people living around them? And if there is an issue or group of people that need attention in a community, how do you tell that story to the community around it in a way that evokes action from the people hearing the story?

There are questions relating to narrative and experience here. The work that I’m doing now with Emily Carr University and in school at SFU are allowing me the opportunity to think about how design and technology can fit around these questions.

Here’s a link through to our process site for this project.


27
Jan 09

The wisdom of Paul Rand

From one of the originators of the Swiss Style of graphic design, Paul Rand:

“Simplicity is not the goal. It is the by-product of a good idea and modest expectations. – Paul Rand”

Truly.

From jasonsantamaria.com via Swiss Miss.


6
Jan 09

Gary Hustwit: Objectified

I’ve been spending some time watching and thinking about documentaries. One of my all time favourites is Gary Hustwit’s Helvetica which was released in time for the font’s 50th birthday. Helvetica offers a look into some perspectives on design process, typography and some feelings on the font itself.

Objectified is Hustwit’s latest work, scheduled to release in Spring 2009.


4
Nov 08

101 Things I learned…

… from Architecture School.

Here’s a valuable quote from that book:

Process:
Being process-oriented, not product-driven, is the most important and difficult skill for a designer to develop.
Being process-oriented means:

1. seeking to understand a design problem before chasing after solutions;
2. not force-fitting solutions to old problems onto new problems;
3. removing yourself from prideful investment is your projects and being slow to fall in love with your ideas;
4. making design investigations and decision holistically (that address several aspects of a design problem at once) rather than sequentially (that finalize one aspect of a solution before investigating the next);
5. making design decisions conditionally — that is, with the awareness that they may or may not work out as you continue toward a final solution;
6. knowing when to change and when to stick with previous decisions;
7. accepting as normal the anxiety that comes from not knowing what to do;
8. working fluidly between concept-scale and detail-scale to see how each informs the other;
9. always asking “What if…?” regardless of how satisfied you are with your solution.

(Frederick, M (2007). 101 things I learned in architecture school. Cambridge, MA: MIT Press.)

Thanks for Nathan W. for sharing this valuable insight. Spending time in Seattle with SFU’s IAT233 class a couple of weeks ago refreshed some of this in me. Hopefully putting it here will stimulate some process in you.