learning the ropes

things I made at ITP and after: sketches, prototypes, and other documentation

Friday, March 2, 2007

More Trouble

This afternoon I attempted to connect the Secret Tree circuit board to the LEDs on the tree. Since my test program (adapted from an Arduino tutorial) appeared to be working well I was ready. The first six LED clusters I connected to the terminal blocks worked fine, but the seventh and eighth clusters didn’t operate properly. I tried resetting the Arduino board as well as the MAX patch, but things wouldn’t work consistently. I even saw that a single LED connected to the seventh output didn’t light up consistently. Once I disconnected all of the clusters and returned to single LEDs, the system seemed to function properly. Maybe the LED clusters are drawing too much current and are causing the digital potentiometers to behave erratically.

Back at home, I found a small breadboard wiring problem: I didn’t have a proper connection to ground for the pins 15, 18, 19, and 22 on the second AD5206. Even so, the LEDs connected to the potentiometer outputs related to those pins still lit up. My correction only served to properly extinguish the LEDs when I set the potentiometers on that side of the chip to the maximum 10K resistance.

Updated Circuit 003

The light blue wire connected to ground above the AD5206 is the recent addition.

So far, I have tried the following in order to get the software/hardware system working:

  • Corresponded with Scott Fitzgerald regarding the MAX patch. He removed the multiple “metro” objects from it and recommended running the system at 9600 baud so as not to overwhelm the PC’s serial buffer.
  • Spoke with Leif Krinkle about the MAX patch. He questioned my use of the SimpleMessageSystem for MAX and thought I would be better served by a basic home-brew protocol. I started rewriting the Arduino code and the MAX patch to use a simple protocol based on sending Arduino six bytes of information from MAX using the “pack” object”. I originally asked him how to debug the MAX patch since Arduino and MAX were communicating over the Arduino’s only serial port. It turns out that there is a software serial library that could be used to do this type of debugging.
  • Discovered in the course of rewriting the serial protocol that the switch needs debouncing. This is the source of the strange values I saw in MAX/MSP with my new serial code.

Tomorrow I will try using a power supply with more amperage to see if that improves things. Any other suggestions?

posted by Michael at 11:31 pm  

Wednesday, February 28, 2007

Chip Select on AD5206

Ai-Chen and I did a bit of rewiring on the Secret Tree circuit board. One of the problems we had last week was that all of the ground wires for the LEDs on the trees were connected to two PCB terminals. I didn’t purchase enough terminal at RadioShack so that every pair could have a ground of its own. This not only made things messy, but it also made the connections suspect.

Updated Circuit 002

The other major discovery I made which explained much of the circuit’s random (unintended) behavior was that the two AD5206 chips interfered with one another. I plugged a single LED into each of the twelve outputs (across the two chips) and found that a simple test program didn’t operate properly when both chips were running. As soon as I disconnected the three data lines (CLK, SDI, and CS) from the second chip, the first chip would work properly. I wondered if there might be some sort of “floating” condition when the two chips were used together. Since CLK and SDI were shared, I hypothesized that CS was likely the culprate. To test this, I added 10K pull-down resistors on the chip selects of both chips. It worked! The test program dimmed the lights in the proper sequence rather than skipping around randomly on the third and fourth outputs.

posted by Michael at 10:02 pm  

Monday, February 26, 2007

Secret Tree Pictures

We presented the Secret Tree in class on Thursday. Although the MAX patch didn’t work, the piece was well-received. We are in the process of finishing the piece for our midterm presentation.

Secret Tree - Progress-5 Secret Tree - Progress-6 Secret Tree - Progress-8
Secret Tree - Progress-19 Secret Tree - Progress-21 Secret Tree - Progress-9
Secret Tree Circuit -1 IMG_0958
posted by Michael at 11:22 pm  

Sunday, February 18, 2007

Secret Tree Progress

Work continues on the Secret Tree project. Today we finished cutting out the branches, building a support framework, and unfolded it for the first time. It was almost magical.

posted by Michael at 10:08 pm  

Sunday, February 11, 2007

Make A Random: Secret Tree

I’m working with Ji-Sun Lee and Ai-Chen Lin on a “secret tree” for Living Art. Our assignment is to “Make a Random.”

You can approach the tree and tell it a secret; in fact, it may be that the tree needs to be told secrets in order to stay alive.

Ji-Sun has already constructed a prototype tree.

Ai-Chen and I have been working on MAX/MSP and Arduino code prototypes to record the secrets and transform them into lights on the tree.

posted by Michael at 9:08 pm  

Wednesday, February 7, 2007

A Simple Set of Rules v0.1

This is a low-tech piece which considers the differences between humans and computers.

Consider for a moment that all computers know how to do at a fundamental level is deal with bits of information: ones and zeroes strung together in finite lists.

Consider for a moment that any “creativity” a computer possesses has been given it by a human programmer.

Let’s further constrain our thinking to the process of drawing. Computers “draw” using pixels, or discrete bits of information. We create using continuous lines. We put pen or pencil to paper and the inspiration flows out of our minds and onto the page. Even constrained, we have infinitely more imagination than a computer.

Let’s confine ourselves to rectangles and a simple set of rules


  • Felt-tipped pen
  • 8.5″ x 11″ sheet of paper


  • Please read all rules before beginning
  • Use the provided felt-tipped pen to draw a rectangle on the paper
  • If the paper is blank, you may draw a rectangle of any size anywhere you wish on one side of the paper
  • If the paper is not blank, please follow the following guidelines
    • Your rectangle must be drawn on the same side of the paper as existing rectangles
    • Your rectangle must be drawn outside of any existing rectangle
    • Your rectangle must not intersect any existing rectangle
  • After you have drawn a rectangle, ask someone else to draw the next rectangle
  • The drawing is finished when it is no longer possible to satisfy the above conditions
posted by Michael at 9:26 am  

Tuesday, January 30, 2007

Magic Flute

Magic Flute 028

I’ve built a “Magic Flute” for my Living Art Finite State Machine project.

The Magic Flute is a simple wind-style MIDI controller interface which can play all of the notes in a C-major scale. I’m a keyboard player by training, but I’ve always wanted to try playing a wind instrument — particularly the clarinet.

The major purpose of this assignment, however, was to create a Finite State Machine:
Finite State Machine

As we discussed in class, the Finite State Machine is characterized by inputs, outputs, and a memory of previous states. In the case of the Magic Flute controller, the inputs are the keys. The outputs are a slight clicking sound as the keys contact the body of the instrument, but more importantly the MIDI messages the controller sends. The memory is in the code that runs on the ATMEGA chip on the Arduino board. The code remembers which buttons were pressed and sends MIDI messages according to the Finite State Machine.

You may notice that there is no mention of wind pressure in the Finite State Machine. I spent the better part of last weekend trying to get a sound level circuit to work. The circuit I used worked fine for amplifying audio, but was very unreliable when I tried to use Arduino to measure the amplitude of sound coming into it.

I came up with some other possibilities for measuring the wind speed inside the controller:
- Using a tiny encoder wheel with a opto interrupter to measure the speed
- Looking for a vibration sensor that outputs a good signal
- Hot-wire anemometer

There are some other extensions I would like to make to the controller’s firmware if I have time to build it again:
- A button-triggered mini sequencer function so I can record and playback a short motif. This could be really cool for live performance. I could sample a short loop as accompaniment and then play a live melody on top of it.
- A transposition function so I can play notes outside of the C-major scale
- Key combinations to allow me to play semitones which are fundamental to playing other scales
- A volume knob

Magic Flute 011 Magic Flute 025 Magic Flute 017 Flute - Finger Positions - 4


posted by Michael at 1:15 pm  
« Previous Page

Powered by WordPress