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.
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.
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.
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);
}
My first foray into shooting panoramas with a 8mm Sigma Lens, my trusty Nikon D80, a Nodal Ninja and PTGUI. I’ve seen plenty of Quicktime Virtual Reality panoramas on the web, and wanted to see if I could do them for Italy when I’m there with SFU for 6 weeks starting the end of May. Watch for some videos very soon, but for now, here’s a stereograph generated from some of the images shot with my camera and the 8mm.
Worked with Irvin Cheung at iCheung Design to build the Seraph Weddings website.
It uses a Slideshow class that I’ve written – for some reason I’ve had lots of requests for photo slideshows over the past months.
More FuseKit on this project. Some class scoping issues in AS 2.0 that took many hours to overcome. AS 3.0 addresses these so I’ll be making the move on the next project and applying them here at a later date. More of my SlideShow class using setInterval, which can cause problems when using different pages that each call it. An infinitely running Fuse object would be best so I’ll be refactoring my SlideShow class to use it.
Designed the look and motion graphics with some help from Kevin Louis Design, for Kevin Louis Design.
Features an Actionscript 2.0 SlideShow library that I’ve written and used for a few sites. The library takes a MovieClip object on stage and attaches a crossfading, XML driven slideshow to it. With controls or automatically running, as shown in the “Neighbourhood” section of the Tramonto site.
An entirely Object Oriented website, save for the motion graphics at the introduction. XML driven map and gallery. Graphics by DCD.
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.
The intro for this site was a single frame exercise in Flash OOP. It, as well as the accolades inside the site, draw data from an XML document that is managed by a CMS. CMS provided by WebHostWorks.net.
A simple project that imports an XML file with song names and streaming them in Flash from a directory on the web server. Uses the Fuse/Zigo animation engine to move, fade and rotate the logo, and fade the shadows for the circle button. After Effects was used to animate the music note burst and zoom in at the beginning.
Tunes are copyright by their respective creators. The image of the mp3 player is copyright by a certain large computer company in California.
The Capture brand needed a multimedia solution to promote their brand and distribute literature in a digital format to customers. This CD was built in Flash 8.0 and features an animated narrative that demonstrates the ability of the brand to provide a complete security CCTV system. A script was written, a character was costumed and photographed, and a voice over was incorporated. The narrative ends in an interface that links to the Capture CCTV literature and a product demo.




