Tim Stutts: ITP Project Blog

Archive for the 'ITP: Computational Form' Category

“Grass Type” Submitted to the 2008 Adobe® Design Achievement Awards

I’ve submitted the piece as an Installation Design under the Interactive Media Category for this year’s Adobe® Design Achievement Awards. Che-Wei has posted some pictures and also a functional download of the application for Mac OSX onto his blog:

http://cwwang.com/2007/10/28/grass/

More information on the contest can be found here:

http://adaaentry.com/

No comments

pushMusic Complete!

The final piece at the Fall 2007 ITP Show. More photos here.

I’ve been busy these past couple days and haven’t had time to document the completion of pushMusic until now. Basically the way it went down, is that Rui and I passed code back and forth for several days leading up to the show. I initially coded a way of capturing all incoming midi data and redrawing it as simple lines spaced apart, where Y = time and X = midi value for velocity or pitch. I then extruded the vales onto gears, which stacked and rotated in time–the twenty teeth each correlating to a particular midi parameter from the Lordx tracks “Series”–a more ambient number, and “Forever Nineteen”–a new wave pop tune. It was Rui who late one night decided to break up the gear, removing some choice line segments to more effectively expose the various trajectories of the voices. I then reduced to the teeth count to 10 by consolidating the volume and pitch tracks into one track, where zero volume = zero pitch. This left empty space where no notes occurred, and we could start seeing the piece unfold before our eyes. Rui then added an alpha effect to improve the line visibility, as well as some rotational controls. I then added the final touch of placing the beat and measure metronome markers and having the current drawn gear blink on each beat. Rui has posted some beautiful screen shots of pushMusic on his blog:

http://itp.nyu.edu/~rpp227/digitalkitchen/2007/12/push_music_popmusic_screenshot.html

high resolution video capture:
https://itp.nyu.edu/projects_documents/1198290781_pushMusic-Video-desktop.mov

view source code:

Read more

No comments

Sending Midi from Max/MSP into Open Frameworks using Open Sound Control

I recently was able to get Max/MSP to play and convert several midi files into a long string of integers that reflect each track instrument’s note pitch and velocity values. Essentially I did this by using several “seq” objects, each playing a voice in the midi file (I’ve yet to find an object in Max able to parse true polyphonic Midi files.) Those voices which I know to feature chords in the particular track I’m using, use the “poly” objects wired into “gate” objects to break out the individual voices. Values are strung together using the “sprintf” object. Finally I use the “udpsend” object (Thanks Vaibhav!) to send out the entire string through OSC. At present I have the Xcode terminal printing the values (see picture). These values will soon be used control variables in the PushMusic OpenGL visualizer program I’m writing with Rui.

Also pictured is the entire Midi file opened in a piano roll style editor in Logic Audio. I’ve rotated the image sideways to more easily distinguish patterns tying into vertical chronology. These patterns will be modulated against one another to inspire corresponding gestures in the 3D.

MidiParse Max patch I created is here.

Read more

No comments

Final project proposal for Computational Forms: PushMusic(); PopMusic();

PM2 is a C++ application that parses MIDI data from music projects created in Logic Audio and visualizes the data in 3D through OpenGL. The result are intricate graphics depicting subtle automations within music that are often overlooked by more traditional, subjective VJing approaches. PM2 is Midi visualized in 3D space.

This piece is a collaboration between myself and Rui Pereira for the Computational Forms course final, to debut at an ITP film screening this December.

View initial video here. 

No comments

3D Mesh with OpenGL

Problem 1. Create a 30 x 30 mesh using a two-dimensional array of Vec3D’s. Then create a function that draws your mesh as a wireframe. (Be sure to use “const int” variables represent the width and height of your mesh, instead of hard-coding it always to be 30 x 30.)

Problem 2. Create a function that draws your mesh a solid surface and sets the color of each face according to the simple lighting model discussed in class.

view full-size image of swimming sea creature here.

Problem 3, 4, and 5. Create a function that makes a mountain out of your mesh. Create a function that produces waves in one direction (along x) in your mesh. Create a function that produces waves in two directions (along x and z ) in your mesh.

source code:

Read more

No comments

3D Primer in OpenGL

Problem 1. Create a function called drawWireframeCylinder that takes as input a radius (float), a height (float) and a number of steps (int). The function should draw a series of circles stacked vertically as specified. Draw vertical lines between the circles to complete wireframe effect.

Read more

No comments

Comp Form Exhibition

Sinan interacts with grass. See more pictures from the show on flickr.

Download OSX application of the piece to run on your own Mac here.

No comments

Open GL Grass: Midterm Complete

Project uses blade placement algorithm co-created with Che-Wei Wang. In it’s presentation on a computer display it can can be stroked using a mouse cursor, which moves the blades as if a light wind were present. View full-size image here.

source code:

Read more

No comments

Open GL Grass: Midterm Progress

I set out with the goal to make the most realistic grass using OpenGL, with hopes for making it a bit interactive. Watch the video below to see mouse X axis position increase the number of blades drawn on the screen, as if mowed by an invisible lawn. Each blade is composer of 50 Bézier curves, sagging to the degree an average grass blade might after recent shower. For added realism I incorporated a gradient side-to-side; for a rounded look, and top-to-bottom; to indicate the presence of the sun as a light source.

Grass Video ( featuring a 3:1 aspect ratio )

Che-wei and I–who have worked on separate models up this point–are thinking about combining our efforts and making a lawn, where the user can type text into the grass.

Source Code:

Read more

No comments

Bezier Curves in OpenGL



Problem 1. Create a function that takes as input a number of steps, and draws that many points, evenly spaced between the last two mouse clicks.

Problem 2. Create a function that takes as input a number of steps, and draws that many intermediate shapes between a start shape and an end shape. The start shape and end shape should be defined by an array of vectors (i.e points), and should have the same number of points. Extra credit for those who can make this work for two shapes with an unequal number of points.

Problem 3. Create a function that takes four points (Vec2d) as input and draws a single Bezier curve based upon those four points.

Problem 4. Create a function that takes as input an array of points (Vec2d *) and the number of points in that array (int), and draws a shape composed of several consecutive Bezier curves.

Problem 5. Create a function that draws a head of hair composed of 500 bezier curves. Extra credit for highlights.
source code: Read more

No comments

Next Page »