From CCRMA Wiki
=BLOCK-RODDING BEATS : A Tangible User Interface for Live Performance and Composition= Created by Steinunn Arnardottir, Nick Bryan, and Hayden Bursk
Block-Rodding Beats tries to break out of the mold of the standard 2-dimensional step-sequencer paradigm. Normally, a step sequncer works as a flat grid of two axes. The x-axis, broken up into columns, works with time stepping through discrete note values, usually 8th or 16th notes. The y-axis, broken up into rows, functions as either multiple voices, one per row, or as pitch increasing with height.
Utilizing the metaphor of playing with blocks, Block-Rodding Beats combines all these possible functions into a single step sequencer by adding a third dimension - stacking blocks. The user still has the standard step sequencer grid to work with. However now, stacking blocks and adding height brings a new way of interacting. The x-axis functions as time. The y-axis functions as individual monophonic voices. The z-axis functions as pitch, amplitude, or as multiple sample selection.
By stacking clear blocks, light can be shined through the blocks from below creating a very nice display of the step sequence.
To design a sensing scheme that could quickly and accurately measure the stacking of clear plastic blocks proved to be somewhat difficult. 1" plastic acrylic cubes while priced fairly cost effectively for size at $1 per cube did not carry much weight. Increasing the size of the cube would increase the weight which would be easier to measure, but it would also quickly increase the cost. Force sensitive resistors were quite inaccurate with a variation of up to %25 for a repeated force.
After much deliberation, we finally settled on using levitating magnets that would act as a platform for the blocks. A Hall effect sensor was placed in between the magnets so that when a block was placed on the floating magnet, the magnet would lower until it reached a new equilibrium. This would in turn cause the Hall effect sensor to increase its voltage output. An increase in voltage could be measured by our microcontroller's A/D converters. By carefully calculating the various changes that this mechanical system could under go, we were able to set threshold values that would indicate whether no blocks, one block, two blocks, or three blocks were being used.
This information was then rapidly sent to Pure Data using Open Sound Control messages. Our Pure Data sequencer patch, lovingly named "Steinencer", read these values and triggered one of three samples depending on how many blocks a particular beat was using.
The Steinencer then sent serial data back to our microcontroller that told our lights when to light up so that they could move in time with the beat. We also set it up so that no blocks would not be lit up. When several voices are used, this could create interesting visual patterns along with the music being made.
Some design descisions were made to limit the number of blocks that could be stacked as well as eliminate the chance of their falling over. We used clear plastic rods and drilled holes through the center of each cube. The magnet was placed onto this rod facing a magnet of the same pole causing it to levitate. Because we chose the height of the rods to carefully fit three cubes, the user would not feel that the stacking limit was arbitrary, but rather an inherent limitation of the device. Placing the blocks onto rods of course, would also stop them from falling over.
ADDITIONS FOR THE FUTURE
Our initial proof of concept prototype uses one monophonic row of 16 steps while we plan to build three more rows for the future totaling 64 individual steps. We also used multi-color RGB LEDs as our light source for each step, but have only implemented one color. Two more colors could be used to indicate whether a beat uses one, two, or three blocks. This would continue to add to visual display of the instrument and overall aspect of it as a performance tool.
While individual controls for beat value, (1/2, 1/4, 8th, 16th, 32nd, and 64th notes) have been implemented in software, we plan on having an individual hardware control for each monophonic row. Other controls that have been implemented in software that will be turned into hardware controls are master tempo, master volume, individual voice volume, and voice mute. Having those controls will enable the user to drop parts out and bring them back in on-the-fly as well as change the speed at which a voice steps with the rest of the groove.
Another idea we plan on implementing allows the user to change the step length of any individual voice. This could create very interesting polyrhythms that aren't traditional seen in a single step sequencer. By removing the magnets and flipping them upside down, the user can create a "period" to their musical phrases.
While the lights are very effective adding to the user's experience, the current circuit design does not provide for much current to each LED. This is a limitation of our current chosen Multiplexer IC. The maximum allowed continuous current is 30ma. While this might be enough to light an exposed LED adequately, our LEDs must shine through a few inches of plastic rod and provide enough light that the blocks become illuminated. One solution would be to provide a pulse width modulation to our lighting power supply thus changing the current allowed from continuous current to peak current. The peak current limitation is 100ma and should provide much more light from our LEDs.