Experiments


19
Mar 10

FLARToolKit

A test of FLARToolKit, the Flash port of NyARToolKit, a java port of ARToolKit. Loads collada data, with Papervision doing the 3D work in Flash.

ARToolKit in Flash test with Collada from Jay Pozo on Vimeo.


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);
}


22
Sep 09

Parallax RFID -> Flash

Parallax RFID and tags

Parallax USB RFID

Watch the video demo here.

This tutorial assumes that you’ve got Processing and the Parallax RFID reader running as per the Parallax -> Arduino document here: http://docs.google.com/View?id=dg895rd7_534c58v2g7

Continue reading →


9
Mar 09

Papervision

PV3D

Working the ParticleField class in PV3D with some mouse-influenced movement.


12
May 08

9 – 5ing

So I start a job Monday (which is actually later today) at Blast Radius. As a part of my application process, I had to complete a design challenge that required the use of XML data and Actionscript 3.0. It uses Papervision3D and some custom event handling. It’s also one of my first projects entirely done in the Flex Builder environment:

Paperbag Avatar


8
Apr 08

Low Budget Rockband

So I hooked up four piezo sensors to my Arduino board and got some help from Tod E. Kurt’s tutorial on handling piezo data.

Arduino Drumkit

The Arduino board sends data over a local serial port, which is in turn received from a script written in Processing. The Processing script plays one of four wav files, depending on which piezo sensor was hit. I added four cork potholders and the result: a fun way to kill some time on campus while waiting for my next class.


6
Apr 08

Arduino and Wii Nunchuk

With some help from Tod E. Kurt, I got a Wii nunchuk to talk to my Arduino board. Here’s a diagram of the nunchuk pins and how to connect them to the Arduino.

Wii nunchuk pinouts

The next trick will be to get the data into Flash to do something interesting, like move around in a 3D environment.

Papervision 3D anyone?


5
Apr 08

XML RSS Reader

A basic XML RSS reader in ActionScript 3.0. Reads feed from http://infosthetics.com.

Link


1
Mar 08

Arduino

I’ve been spending lots of time with the Arduino board lately. Arduino is a prototyping tool that lets you send data from sensors, switches and other physical interfaces, to your computer. The IDE is based on Processing. I’ll post some projects as they come along.


5
Aug 07

Multi user Flash

Installed a socket server on my Media Temple box and got it to talk to Flash.  If nobody else is in the room, open another window to the same page and then move the words around.

Multi-user words


11
May 06

3D Planar Motion

Some explorations of Keith Peters’ 3D work at Bit-101.  Moving an object on a 3D plane and objects orbiting on a plane.

Moving an object

Orbit