A New Musical Controller:
The "COWE" by Perry Cook 2003

the zen master said to the hot dog vendor:
"make me one with everything"

Well, this controller is my shot at making
"one with everything," thus the name:

Controller, One With Everything
or COWE (pronouced "cow")

*Thanks to Michael Gurevich for the inspiration for the name

The basic idea started out as an experiment to make the ultimate shaker/scraper percussion controller, for use with my PhISEM (Physically Inspired Stochastic Event Model) instruments (see STK, my book, articles, etc. about PhISEM). So I wanted to be able to shake, scrape, rub, etc., plus have lots of control for managing presets and parameters while playing. Once it got underway, it looked so much like a little wind instrument that I added a breath controller too. There's also a couple of other treasures hidden in the case.

The microprocessor is a BasicStampIISX, with a MAXIM 1271 8-channel A/D, and a 251MUX for switch decoding. The total complement of sensors on this device, and roughly how they're hooked up, includes:

  • 4 Rotary Pots, connected to 1271 A/D channels 4-7
  • 1 Slide Pot (with motorized positioning for haptics),
    connected to 1271 A/D channel 3
  • Motorola MPX5010DP air pressure sensor,
    connected to 1271 A/D channel 2
  • Linear Force Sensing Resistor, wiper connected
    to 1271 A/D channel 1
  • Further, this wiper is connected via a 100K resistor
  • to pin 1 of the BSIISX (more on this later)
  • One side of the FSR is connected to ground,
    and the other is connected to pin 2 of the BSIISX
  • 8 pushbutton switches, arranged in a line (so we
    do fake recorder/flute instrument fingerings,
    connected to the 8 inputs of the MUX251
  • The output of the MUX is connected to BSIISX pin 5
  • The three address pins of the MUX are connected to
    the BSIISX pins 9-11
  • Two extra push buttons located on the lower side of
    the COWE, connected to BSIISX pins 3 and 4
  • Analog Devices ADXL202 2-axis accelerometer,
    connected to pins 6 and 7 of the BSIISX
  • The interface pins between the MAXIM A/D are connected:
    CS, BSIISX pin 11
    SCLK, pin12
    DATA In, pin13
    DATA Out, pin14
  • MIDI output from pin 15 of the BSIISX
    There's also an LED connected to this pin to indicate MIDI activity

Here's my original lab notebook page (yep I put many/most of my thoughts/designs into one of these):

And finally, here's a big chunk of code that includes routines for accessing the sensors, and various test/demo functions