The Chaos Controller:
This is a homemade hardware MIDI instrument that uses the method of Chaos Melody Theory to create beautiful music. Listen to a live improvisation!
Please feel free to build your own! I recommend reading my Masters Thesis first, to understand the process that it uses.
The idea for the Chaos Controller emerged during a very fast paced 5 week Summer course in a Physical Computing class with Dr. Igoe at Tisch School of the Arts at NYU in 2000. Each student did an “art” project involving the Basic Stamp. While I learned to program the Basic Stamp, I realized that it would be possible to emulate my MAX patch with an actual stand alone musical instrument to generate musical fractals, that would not need a separate computer. The funky look of the Chaos Controller is in part due to it being created in an "art" class. That Summer I built a crude version of the Chaos Controller, which had only one light sensor out of six actually working, and no control over tempo or dynamics. But the basic design was there. During that Fall, I continued where I had left off, literally making the circuit up as I went along. As the semester progressed, my circuit got to a level of complexity (not very complex, but complex enough) to justify starting fresh, with a well thought out schematic beforehand.
To get the Chaos Controller to its current state was a matter of learning some more BASIC programming (PBasic is the language used to program the Basic Stamp microcontroller, which is very similar to BASIC), some C programming (mind you, I had never programmed in my life and had only 2 semesters of beginning electronics classes at the time), becoming more electronics savvy, deciding upon the physical design and schematic layout for the actual instrument, and learning how in the world do to floating point math with only 16 bit positive integers. All of these aspects were a challenge, but by far the most time was spent on the floating point math issue. Looking back, it seems like the most simple of all of these aspects, but it was a matter of grasping the concept and then figuring out the actual syntax.
Materials: I used stuff I had around the house to build it, including keyboard stand pipes for the two arms, cut-up water bottles and mouse pads to build the two round sliders that go on the poles, and printed black/white paper in the pattern of 3-bit grey code (0 to 7, but out of order so that only one bit changes at a time). Three led lights with accompanying photoresistors are mounted inside of each slider to read the 3-bit greycode. I had the Chaos Controller programmed to use the iterative function, x=1-rx^2, but it could be programmed with a number of iterative functions. One arm/slider combo is for the r value and one is for the x value. The r slider sets the r (chaos) parameter, and it can be continuously changed. A button on the r slider starts the mathematics loop running. The x slider sets the x value and a button on the x slider is available to reset the x value at any time. A controller pedal can adjust the tempo of the iterative loop.
Click here to view the schematic diagram - Additions and improvements to the circuit design over the original design include buffers to keep the high and low signals as close to +5v and 0v as possible. The old circuit had the 3bit control signals from the two sliders going straight into the Stamp, and no buffers before the MIDI output. It worked absolutely fine until I added a controller pedal with the rc-time circuit. I suspected that the Stamp had too much of a load on it at that point and was not outputting proper voltages. Even disconnecting extraneous LED's did not help at this point, and that is when I decided it was time to start fresh, designing the new circuit ahead of time, this time using buffers everywhere I could.
I did manage to reuse the same box, but it was such a tight fit with the extra chips and 25 pin wire connector that I had to modify it so that one of the poles is now coming out the opposite side. It actually makes more sense this way, since now the MIDI jacks are in the back, more hidden, and the audience can see the flashing 3bit lights better. The lights are not very intuitive for the performer anyway, but make for a nice light show as the sliders go up and down the poles. The lights are more for troubleshooting and for setting the threshold on the sliders which are now fitted with 10k variable resistors, accessible with a small flathead screwdriver.
When I get around to making new sliders, one vast improvement will be to run the +9v signal to the sliders instead of +5 volts, so that the voltage difference between high and low will be larger (closer to +5v and 0v). As it is now, if the photoresisters catch the full reflection of the LED's against the white paper on the pole, the output control signal is only a maximum of approximately 2 volts, and at minium, approximately .7 volts. These are dangerously close to the thresholds for both high and low of the buffers that the signals are now running through. Before I implemented the buffers, it wasn't as close since I was just relying on the Stamps threshold of 1.5 volts (higher than 1.5 is considered a high signal, and lower than 1.5 is a low signal).
The seven segment display and accompanying button (yes, one increment button) has not been implemented yet, but will eventually allow me to scroll through 10 preset programs. This could be used to store different presets, or several different sections for one piece, etc. Also not implemented yet is the sustain pedal, which will be very simple because it is just a normally open switch. MIDI in will also be implemented soon, although I'm not entirely sure what I will be using it for. I'm sure there must be some useful things I could do with a MIDI input signal, and think it is worth giving up one pin for. All of the pins except one were already used with the old design, including 6 of them being used only to light LED's. This was a waste of pins, so now the LED's are getting their signals elsewhere, and the 6 pins are being put to much better use (3 outs for a 7-segment display, an increment button, sustain pedal, and a MIDI input). The previously unused pin is now being used for the control pedal.
Another slight improvement to the design is the fact that the wires from the circuit board all go to one 25 pin jack, as do the wires on the lid of the Chaos Controller. This way, it is much easier to unplug the board and do any repairs or improvements. It was very hard with the old design to see the back of the board well enough to do any soldering. Quite a few of the ground connections and bridges are on the back of the board now which contribute to neatness and clarity. Also, this time I've used thick wire for power and ground, and much smaller, less cumbersome wires for the control signals, bent at right angles around the chips and components.
The new control pedal worked fine as a tempo control. It could also be used to control velocity or volume, or really anything I choose. For my performance of Neural Net for Tom Beyer's ensemble class, I used the pedal to control three preset tempos - slow, medium, and fast - a strange concept, but it worked out well. I can also control tempo somewhat by simply pressing the red button on the chaos slider for each note. At this point, the duration of the note is controlled by the tempo. The dynamic and tempo control is klunky, however, enough to allow a fairly expressive musical performance.