Sunday, August 26, 2007
Roto-Tracker
Yesterday evening, I blitzed through a small, artsy project. Basically, it's a primitive drum loop tracker, allowing the user to pick out simple repeating patterns with various percussion instruments.
Note: I don't really know anything about MIDIs, MODs, or related software. And I haven't thought seriously about the mechanics of making music since childhood piano lessons and chorale in high school. Any relationship between terminology and technical correctness is therefore purely coincidental.
The concept is fairly straightforward. A central physical rotor smoothly turns (counterclockwise) through 360 degrees, using llTargetOmega. Spaced out over 180 degrees (22.5 degrees apart) are eight collision sensors (shown as white columns of light), which use filtered collision events and llVolumeDetect to sense the passing of the rotor. Each time the rotor passes through the sensor's volume, the light briefly flickers off (as if the rotor is blocking it- a superfluous effect, but kind of neat) and the selected sound sample is played. The rotor moves on, the next sample is played, and so on.
Each collision sensor comes loaded with 15 drum sounds, including various tom-toms, a bass drum, a taiko drum, a snare, a couple of cymbals, some wood blocks and, of course, a cow bell. The user cycles through the sound samples by clicking on the base of the lights. The sounds for a given sensor can be turned off altogether, as well.
The rotor has three speeds: low (about 48 beats per minute), medium (96 BPM), and high (192 BPM), where a "beat" in this case is defined as a single sample played by a sensor. The random control directs the eight sensors to select random sound samples, or randomly turn themselves off. A sync control is provided to synchronize the rotors of multiple adjacent Roto-Trackers, allowing more complex patterns. Using multiple trackers, and a relatively lag-free sim (unfortunately, severe lag sometimes pulls rotors back out of sync), some fairly complex drum loops can be created.
I've created an installation of three Roto-Trackers next to the Librarium's Symposium gallery, here in Abitibi (SLurl link). Not much to the installation, really. Just a chair at optimal listening location, and a sensor-driven start/stop control. The latter, the black truncated cone at left, checks for avatars on the parcel. If 30 seconds pass with no avatars standing on the parcel (both in range of the sensor, and standing in a location with the same parcel name), the rotors will shut down. If an avatar wanders onto the plot and sticks around for up to 30 seconds, they'll start back up. While I don't think these devices generate an irresponsible drain on system resources, there is quite a bit going on: three physical rotors, up to ten collisions per second, and an equal number of triggered sounds and prim status changes. Well worth the time to shut down the works when there's nobody around to hear it.