the Stribe

josh boughey (cc) 2007-2011


red stribe


The Stribe is an 8-channel touch-controller for music or video software.
8 sensitive membrane touch-strips flanked by 16 64-LED meters provide
8 simultaneous variable inputs and 16 columns of illuminated feedback.

Everything is computer-controlled via USB.

The Stribe is designed to work with popular music-composing software
such as MAx/MSP and Ableton Live.

 

The Stribe 0.2 in "trails" mode. I set the refresh-rate really low to
experiment with drawing spans of leds.
The adjacent columns cancel each other out because this basic cursor
mode doesn't keep track of what's on and off - I'm just letting it do it's own thing in a loop.

One of many happy accidents.

 

The Stribe running it's most basic, "cursor" mode, while triggering MIDI sounds via Max/MSP.

The low-resolution 16 x 64 LED display is controlled in rea- time by either firmware or host software, or both.

MIDI or OSC communication to compatible hardware and software
is achieved via patches written in Max/MSP.

Touchstrips down the center of each channel trigger events in the software and the firmware,
which in turn drive the display, connecting auditory and touch senses in a single haptic feedback loop.

Each of these eight "channels" has two 64-led-tall columns, e.g. a left and a right.

The Stribe can act as a touch controlled meter bridge,
or as an interactive, animated16 x 64 led display.

Oriented horizontally, the Stribe can more intuitively interface with step-sequencer type applications,
or allow direct manipulation of granular synthesis sampling,
or allow the user to perform "scratch" like gestures

or...?

stribe concept drawing
Above: An early concept sketch

Below: The stribe and the monome rocking out together

 

(check out the new stribe forum)




The Stribe Project

Rodin's sculpture "Hand of a Pianist"
Auguste Rodin: Hand of a Pianist


The Story So Far

The Stribe's original name was "xenome" - a nod to Brian Crabtree's
amazing monome 40h project, which inspired me to build the first Stribe in the summer of 2007.
For many years, I'd been thinking about and experimenting with alternative interfaces,
but it was Brian's monome 40h that made me realize such a project could
be successful without needing to be "discovered", then manufactured and
marketed by some huge conglomerate. Along the way I changed the name to avoid confusion and
to more accurately describe the Stribe's function. Stribe means "stripe" or "striped cloth" in Danish.

Because Brian's monome 40h is an open project,
monome.org contains tons of great information
including schematics for their circuits, the firmware source, the Max/MSP
applications... everything is there to study and learn.
By poking through their designs, circuits and code, and the freely provided
"how this works" Max/MSP examples, I was able to understand the basic ingredients
that would be needed for my own project.

The Stribe is designed to be used in conjunction with a monome 40h or as a stand-alone instrument.
By combining these interfaces with suitable software I hope to add a continuous control element to the
electronic musician's software control arsenal. It is designed for stage use, to provide an expressive,
fun, and intuitive way to control both music and video. It's size, durability, and tactile properties are
designed to be appropriate for both hand-held and desktop use.

In fact, a waterproof Stribe is not out of the question.

*

My goal was to get a working prototype together as quickly as possible as a proof-of-concept.

And because I wanted one.

I borrowed the square form-factor (though the Stribe is slightly larger) of the monome 40h,
along with the idea of making it hand-held, and a modular 8 channels.

I'm not sure who originated
the more fundamental concept of a blinky panel of lights to control stuff,
but I'm pretty sure it was William Shatner.

"I don't know either, Spock... is it really music?"


I attempted wherever possible to use entirely free or open source tools.
This is why I used ExpressPCB to design the circuit boards and not Eagle:
Eagle trial version only lets you make small boards, and the full version costs hundreds of dollars.
ExpressPCB, though limited in features, is free, and once I finished the initial design
I had prototype boards in-hand within days.

 

An early Stribe prototype:

stribe proto

Adding a 10k resistor between signal and ground of each strip solved
issues with cross-talk when strips were connected to common + and -.

 

Experimenting with bar-graphs and the MAX7221

early stribe proto

Although I didn't ultimately build it this way, I found I could address each 8x8 grid as
a 1x64 grid with some math in the firmware. I ended up going with multiple grids
in my final design, to simplify the wiring of the led board.

 

The Stribe hardware consists of 4 modules:

1. touchstrip sheet

stribe protoype process

Eight adhesive-backed spectrasymbol "softpots" are stuck to a sheet of plastic cut from a presentation binder.

On more recent versions I've experimented with using hard 1/16" plastic or plexi as the underlay.
This hard surface provides a very predicatable tactile feel. I hope people will experiment.

I added 3 position female pin headers to the softpot leads for ease of dis- and reassembly during testing.

 

2. 16-column led bargraph display

xenome protoypexenome proto detail


Since this was the first circuit board I designed I made some mistakes.
For instance the led driver proto board has some over-tight traces causing
occasional dead leds due to solder bridges. V 0.2 will be better.

Note this is only 1/2 of the leds lit up - I had to save up for the chips.

 

3. led driver board (16 x MAX7221)

stribe early proto

The driver board holds 16 MAX7221 driver ICs - each one can run an 8x8 led matrix or a 7-segment
alphanumeric LED display. These ICs provide PWM features to pulse the LEDs
(this saves a lot of power). Also, your Microcontroller doesn't have to spend any cycles on this.

16 MAX7221's are cascaded, passing data (data, load, clk) to the
next IC down the line. To feed more ICs you send a longer data string.
Rows of 8 are addressed with a bitmask to
indicate which leds are on and which are off. By selective/intelligent
updating of 8-led rows, refresh rate can be optimized.

*

This version of the driver board is a 4-layer design, which allowed me to avoid having a big power bus running
through the middle of my traces. It was a bit more expensive to make this way but I saved a lot of time.

 

4. Wiring microcontroller board

http://www.abstractmachine.net/index/images/blog_hires/wiring_board.jpg

I started with an Arduino NG but upgraded to the Wiring board to get
the 8 ADCs (analog-to-digital converters). Standard Arduino has only 6. I could
have multiplexed the inputs but prefer the simplicity and hopefully
speed advantage of dedicating an A/D converter to each sensor.

Arduino MINI 04 and Arduino USB 03

Arduino Mini
(above) also has 8 ADCs and is teeny. The latest driver circuit board has a place
to mount one, along with the little Arduino USB board, as well as a proto area so maybe some
people can design their own circuits. The idea is to keep it open so others will continue
to improve the design .

 

Some in-progress shots:

stribe led driver board

I had to wire the ISET resistors to the back of the board because I messed up the design a little.

 

stribe xenome protoype

To get the female headers to next to eachother I filed the plastic edges down just a bit using an old metal file.

 

xenome detail proto

A couple thousand solder joints later...

stribe leds mostly lit

Yeaaaah, baby!

The dead LEDs are due to some overly-tight traces. Since this was a prototype circuit-board there was
no solder mask so I created a few accidental solder bridges that shorted things out. The new design uses more vias
ais much easier to work on as it is a green solder-masked production-type board.

An important thing to note here is that I am lighting up 1024 (well almost) LEDs using only 5V and 500mA,
from the USB port on the Wiring board. No external power supply required so far!

stribe proto detail

When laying out the circuit-boards, it was good to have all the needed parts-in hand.

 

The Lab:

designing the driver board

 

stribe protoype detail

This shows how the two boards fit together using a huge header that runs all the way around the device.

stribe proto detail

This is before I soldered the male header pins. Now soldered, the whole thing peels apart like a sandwich if I need to get inside.

This worked surprisingly well considering I've been pulling it apart and putting it back together again quite a lot.



stribe proto

Not the greatest soldering job on the first board - remember these are TINY joints.
I'll post a pic of the 2nd board soon, I did a much nicer job and it's much prettier.

Originally when I assembled the led board to the driver board the long bargraph legs hit the MAX7221's and
I had to snip all the legs (after they were soldered in - ooops) to get enough
clearance for the MAX7221s.

The 2nd board (below) uses IC sockets to hold the led bargraphs, and I pre-snip
the legs before inserting them in the sockets...

2nd Stribe led board with IC sockets

Using sockets means no more clearance issue since the IC sockets have short legs.
It also means you can insert whatever color bargraphs you like, and easily replace bad units.

stribe_in_progress

Scotch tape holds the touch-strip sheet on top of the LEDs.





early stribe prototypes

Some more early prototypes. The xenome 0.1 "brownboard" version (2nd from left) used the Wiring microcontroller
card (center) in place of the Arduiono stamps in the more recent versions (right).

 

 

stribe 0.2 lit up

The 0.2 prototype with reconfigurable LED layout and "yr circuit here" area, showing off.

 

 

stribe 0.4a beauty shot

I moved the USB and Arduino stamps to the top of the circuit board so they'd be in back.
The proto area (center top) provides a place for YOUR hack.

 



stribe 0.4a proto closup

for more pictures go here



Max/MSP 'virtual stribe'
photo: Peter Kirn

Building a "Virtual Stribe" in Max/MSP

 

Now I'm doing these things:


1 ) improving the firmware

2 ) working on the OSC protocol

3) learning Max 5

4) building more stribe prototypes

*

Other people are doing things like:

This is stretta, with Stribe Prototype #2, playing something sad and beautiful (on request) via a custom Max patch.

 

 

A kit-built Stribe without the Arduinos. Here, tk uses a PIC controller, a MIDI interface, and MIOS to control the Stribe's i/o.

Circuit, firmware, Reaktor patch. Yeah, baby!

Read all about tk's MIDIbox solution at the Stribe Forum.

*

And people are writing things:

Electronic Musician magazine

hackaday.com

CDM Create Digital Music

MAKE Make Blog

LVHRD.ORG

*

Google "The Stribe"

 

Now you're totally inspired,

and you want to get involved!


Well, here is the:

stribe forum
(Everything you need to build and program a Stribe Prototype is in the 'info' section!)

stribe circuits
(in ExpressPCB format and PDF)

stribe firmware and Max patches
(so far)

PLEASE NOTE: This is a home-made design - it is still very young - and it is a PROTOTYPE.
Some minor annoyaces will be corrected in future versions of the boards, firmware, and software.

There will be many additions and refinements to the firmware and Max patches as the Stribe project progresses,
so check back often and make sure you have the latest updates.

 


.

If you think this is just so cool:

Buy Parts or a T-Shirt

 

 


Stay tuned!


stribe 0.2 prototype detail




The Stribe is inspired by:

monome 40h monome 40hopen / configurable

 

 

monome40h logic schematiclogic / architecture / firmware

 

 

ITP Flathand ITP FlatHandtouchstrips

 

 

meter bridgemeter bridgemeter bridgemeter bridgemeter bridgemeter bridgemeter bridgemeter bridgemeter bridge

meter bridges everywhere

 

 

*duinoFreeduinomicrocontrollers



Not to mention the great online communities I've found
which continue to provide tons of help and encouragement.


Tools:

Arduino/Wiring/Freeduino, C programming, Max/MSP, Reaktor 5, OSC


 

 

Please visit the Stribe Project forum and get involved!

*

stribe_colors

This stribe has assorted colors of LED bargraphs (they don't change color).




Creative Commons License


This work is licensed under a Creative Commons Attribution-Noncommercial-Share Alike 3.0 Unported License.