When I played guitar in high school, conversations with other guitarists inevitably turned to gear: makes and models of guitars, amps, pedals, and so on, all the way to preferred pick thickness. Maybe these types of dialog are the musician’s conversational safety net; failing any meaningful social bond, guitarists can always weigh the merits of the Flying-V. At the time, these conversations annoyed me because I was more interested in music theory than esoteric fuzz boxes. I thought, What’s the point in effects if you don’t know what notes to play? Today I could see other sides of the argument, but I’m still suspicious of conflating interesting gear with interesting ideas.
That said, people are naturally curious and want to know how things work. Here I’ll present some of the details that I skipped over in my How It Works youtube video, which you will be able to view in the video page sometime around mid February. I’ll start at the beginning of the signal chain.
The WiiMotes transmit a Bluetooth signal that is received by my MacBook Pro. This signal contains raw information about the state of the Wii: which buttons are depressed, its orientation in space, and its acceleration in three axes. On my MacBook, I use a small, clever program called OSCulator to translate that data into OSC messages and make them available on a local port. In MAX from Cycling ’74, I parse OSC messages with a custom Java external. Once parsed, state information from the OSC messages is sent to other homebrew Java externals that use the state of the buttons and the orientation of the Wii to determine if a note should be played, when it should be played, and how loud. How that process works is much easier to demonstrate than describe, so I would encourage you to watch the video if you haven’t done so already.
If a note is to be played, MAX tells my audio interface to generate a MIDI Note-On command. MIDI messages from the audio interface are routed through a MIDI-Thru box and broadcast to all (at this time) three machines. At the other end of the MIDI cable are Arduinos outfitted with a small circuit and a DIN connector that allows them to interpret MIDI messages. After the Arduino has received a Note-On command, it communicates with an external 16-channel Pulse Width Modulation chip, the TLC5940, which adjusts the voltage across a particular solenoid to a level determined by the velocity value of Note-On command. (A Darlington transistor, the TIP120, amplifies the signal of the TLC5940, which produces small currents, and the solenoids, which consume large currents). The solenoid stays on until the Arduino receives a note off command, which is sent automatically after a certain amount of time between 10 and 20 milliseconds, depending on the velocity of the note.
That, anyway, is a rough overview of the software and electronics. If there is enough demand for this sort of thing, I could discuss my favorite router bits and preferred epoxies. Or I might just post links to phat beats.