Joystick Hacking

Monday, March 12th, 2007

Today I posted an article over at Cycling74.com about using joysticks with MaxMSP. Toward the end of the article, I discuss ways to alter the electronics of a USB joystick for custom controllers.
I had been meaning to write this piece for a long time, and I was assigned the task of writing an article for the website, so I figured this would be a good solution.

Jitter Recipes and In-depth articles

Monday, March 5th, 2007

Since I’ve been working for Cycling ‘74, I’ve taken a bit of time out of my busy Support/Testing day to put together these “recipes” based on whatever interesting video trick I happened to be working on that week. Many of these are proof-of-concept types of things, demonstrating that certain things can be done, and one possible approach to a problem. More often than not, the concepts are drawn directly from a project I’m working on, and comprise a collection of my secret processes for doing video and audio work.

Link

Paintings and Video Screenshots on Flickr

Monday, March 5th, 2007

Gallery of Video Stills:
.

Gallery of Paintings:

AVR-HID

Sunday, March 4th, 2007

Mark T. Marshall at McGill University has a design for an HID device based on the ATMega16 chip. He calls this device AVR-HID and has provided the source code and schematic for anyone who is interested in using his design as a sensor interface for interactive media. The code is adapted from the AVR-USB code from Objective Development. He is also currently working on a cheaper version based on the ATTiny26 (my favorite chip). I’m looking forward to seeing how he manages to squeeze all that code onto the 2kb of program memory.

the AVR-HID schematic

spazkron control

Saturday, March 3rd, 2007

The spazkron control is a gestural, wearable performance instrument built around a hacked USB game controller and 2 piezo contact microphones, as well as a custom sound synthesis patch built in MaxMSP.

The most conspicuous aspect of the device is the pair of long wooden dowels that extend from the abdomen of the performer. These are attached to patches that contain the analog joystick elements from the game controller. The sticks function as long joysticks that protrude from the body. The 4 axes provide analog values that are mapped to various functions in the audio synthesis software.

The contact mics are embedded into felt wristbands that are worn by the performer. Sound is triggered by striking or scraping these contact mics against the sticks. The Max patch performs envelope following on the incoming signals. The resulting envelopes are used as parameters for various sound generation functions, in addition to volume control. This offers the performer a great deal of expressivity and subtlety.

performance/demo at SFAI 2006

In building this controller, I was interested in creating something that required a certain amount of physical engagement to make it function. I am primarily interested in performing complex, spazzy noise stuff, so I needed a controller that expressed that sort of physical movement. Because of the nature of the device and its relationship to the body, the performer must twitch, contort, and flail in order to really engage the full complexity of the system. I was specifically not interested in a controller that was polite, reserved, and cool. I wanted my device to force clumsiness and absurdity upon the situation, which is something that is often missing from experimental electronic music.

Jeff Kaiser has a brief blurb about a recent performance here

MIDget board

Saturday, March 3rd, 2007

MIDget is a simple, inexpensive sensor interface based on the AVR ATTiny26. In its current incarnation, 8 of the 11 available ADC channels are used. This means that you can connect up to eight sensors, knobs, or whatever to the board. The MIDget sends the 10-bit ADC value as 2 separate MIDI CC messages (1 for LSB, and 1 for MSB). This allows you to bypass the 7-bit resolution limitation inherent to MIDI CC messages for projects that require greater sensitivity. These 2-byte messages can be put back together inside of MaxMSP.

Since the ATTiny26 lacks a proper UART (just has USI), a software implementation based on the Atmel AVR307 application note was used. Since this code was written for the IAR Compiler, I had to port it to work on AVR-GCC. Once this was completed, it was fairly easy to get MIDI messages sending from the chip.

Getting the ADC code to work was a little more tricky. I was originally using the Procyon “a2d” functions, but for some reason these were not working for me. So, I spent a bit more time and worked out my own ADC functions that turned out to be much smaller and efficient code than Procyon. It’s nice to actually understand how that stuff works instead of just taking advantage of a pre-made function library.

I’m still working a couple of bugs out of the circuit, but in the end the circuit itself should cost less than $10us to build. Download Source Code(gcc).