Music Control, Interactive Music Systems, Physical Computing, Natural User Interface, Tangible Computing, OSC, MIDI, Max/MSP, TUI/NUI, Interactive Scultpure, Processing, Chuck, Arduino, FTIR, Audicle, Monome 40h, DIY, openSource, Reaktor 5, Granular Synthesis, Analog Synthesis, Analog Sequencers, Touch Control, Haptics, Xenome, The Stribe
what is soundwidgets.com?
It's a blog where I post cool stuff I find on the web. I try to post projects which more or less relate to the above topics. Sometimes I just post random stuff.
This also acts as an informal project blog for a music control device I'm designing and building called the Stribe.
I also occasionally post clips and info relating to experimental electronic music I make under the name phineus.
Latest tracks by phineus do you sell stuff?
Actually, yes! You can support The Stribe Project by buying kits from CuriousInventor.com, or by buying Stribe.org T-Shirts or paticipating on the Stribe Project Forum.
You can support Phineus by ordering the Compleat Works of Phineus on USB hard-drive for $25 including shipping. Send e-mail to order. what does "stribe" mean?
It means "stripe" or "striped cloth" in Danish.
"This synth features one square and saw waveform VCO (voltage controled oscillator) with a huge pitch range, from subsonic to ultrasonic sound. One square and triangle waveform LFO (low frequency oscillator), that modulates the VCO for the vibrato effect creating old school arcade Atari-like sounds. White noise generator that triggers the VCO and can create percussion like sounds. 8 step Sequencer with note on/off switch and pitch knob for each step. It has a 1/4 inch audio output, 1/4 inch CV Output (to control other analog gear), 1/4 inch Clock input (gate in to synk whit an external clock), 1/4 inch Gate/clock output. Also the instrument is ligthed 2 with green leds that indicates the LFO and Sequencer Rate, and 8 blue leds to indicate the step that is being played. Very useful when you play it on a dark stage. The Analog Sequencer is packed in a cool cristal acrilic case that shows all the hand made analog circuitry. The instrument is powered directly from 110V or 220V AC. Dimensions: 230mm(W), 170 mm(D), 80mm(H. incuded rubber feet and knobs)" - Atomo Labs
The first 30 seconds is where I plug the Wiring board into the wrong power supply and the Stribe sucks amps and fries 1/2 my led driver (MAX7221) ICs. An expensive mistake @ ~$8 each. Fortunately I only had one side plus the one on the top right hooked up. So while I await new 7221's I limp along with 7 partially-working chips. At the end of the video you can see where the cursor code is working - a couple of wiring glitches cause some overlap but this actually shows some interesting possibilities. What's hard to see from the video is that when two cursors are sharing a column they appear at 2 different brightnesses.
I'm working on a "hold" mode where the cursor will hover in place for a few cycles after you let go. I will also make the cursors height-adjustable and add "meter" mode where I fill in the leds up from the bottom. I like the way the transitions between led colors look so I will make the next led board in multiple colors of bar-graph. This time I'll use IC sockets instead of soldering all the meters in so I can re-arrange them to taste. Maybe red at the top and bottom of each column, then yellow then green across the middle. Or have each column a different color. Or I could use diagonals, or a curve....
This is the front panel for a diy analog synthesizer kit called the ASM-2 Wizard, one of many intriguing options available from Elby Designs.
The device is available as bits or as a bundle and everything in between. Either way that's a lot of solder.
The intriguing thing about the ASM-2 is that the design includes, on one board, multiple sections representing the components of a true modular. These sections can then be built (or not) at your own pace, then wired up to a panel of your own design, or opt for the full-on Wizard which includes the gorgeous pre-printed front panel.
ASM2-Wizard Full Kit: "Includes:-ASM-2 pcb and component kit, IC Socket and Crimp kits, Alpha 16mm pots, 1/4" jacks, PolyDAC(X) pcb and component kit, RawDC pcb and component kit, 2 Octave pcbs and component kits, and a front panel. You WILL need to supply a cabinet, a dual 18VAC transformer and a mains connectivity kit." Just over $1200 US.
Assembly manuals and lots of designs are on their site: Elby Designs
I've been thinking about making the Stribe standalone as well as computer-connected. I've been wrassling with computer issues more than I've been building, and I'm gonna be more than ready for a break from this glowing screen by the time I get this thing working. Maybe a hardware/analog option would get faster results and be more fun - hook it up to analog modular synths and sound modules and stuff. Have both control voltage and MIDI output. It's only 8-controllers, shouldn't be that big a deal, maybe even use a kit like from Lady Ada.
So now I'm looking around for small synth and sampler and sequencer circuits I could put inside the case along with the controller. Like maybe some knobs on the back. Make it 2-sided with a rubber bumper around the outside edge, filled with batteries. That could make it look like the tenori-on but maybe that's inevitable.
Got the driver board today. It turns out I made a mistake and left out one hole next to each 7221. To work around it I had to install these resistors on the back of the board.
The top and bottom fit together perfectly, until I added the chips to the sockets, then I ran into clearance issues with the tops of the chips hitting the long legs of the led bargraphs coming thru the top board.
So I'm going in with snippers to each leg but might be doing some damage since everything is all soldered-up. I will go back and reheat the joints and hopefully that will be enough. If not I have another led board and more bargraphs on the way.
Made progress with the Max programming last night. Got some great tips from Kid Sputnik and as a result was able to get the stribe strips to generate OSC messages, which actually show up in Reaktor! Now I have to do something with the messages - time to dig back into Reaktor programming.
While waiting for the new xenome/stribe driver circuit board to arrive, I've spent a couple days digging into the monome serial protocol, trying to understand it better and determine if I can use it for the xenome/stribe.
1) my device is upside down and backwards relative to the monome. See, when writing my firmware I started counting at the lower left corner and went up and right from there. My thinking was the xenome is essentially a bank of bargraphs, where 0 is at the bottom of each one, and they're numbered left to right. Then, when designing the led board, I saw that I would have to do a lot of fancy routing to treat each 64-led column with one MAX7221. But if I addressed the leds as a grid of smaller 8x8 grids all stacked together, it simplified wiring considerably. Basically I just made a grid of wires and was able to wire it as a 2-sided board with only a few strategic vias. So now my 0,0,0 is the lower left corner of the lower left 8x8 portion of a 64x16 grid, and 1, 0, 0 is the one on top of it, and so on. But the monome firmware starts with 0,0 at upper left, like a data array:
2) The monome firmware and serial protocol are super-clever. In fact everything about the monome is really kind of this brilliant compact jewel, the firmware and the software and the hardware all conceived as one. The design seems like an art thesis or a manifesto on computing, more than a way to simply make buttons blink on and off. It uses bitwise operations to build and parse the OSC messages, in a similar way to how you address the MAX7221 itself. The firmware sends and receives only 2 bytes in each direction, the monomeserial software does the rest.
As a semi-rusty C/C++ programmer it's been challenging for me to learn all this. It seems very custom-made for the specific device (an 8x8 grid of buttons that light up, driven by a MAX7219/7221 and an AVR chip), and the code is lightly commented. On the other hand, it's designed to scale to treat multiple grids, accept input from additional pots or encoders, and of course the real bonus: it's openSource, there's a community, and Brian has been super responsive to my many noobish questions on the monome forum.
So I'm learning a lot from this exercise, and there's certainly a lot I can borrow, but I might have to stick to my own firmware and a similar protocol. I can still make it compatible with monome apps via OSC.
Then I went back to work on the led driver board, the one that's going to hold 16 MAX7221s and run my 112 led graphs. I'll link to the circuit board layout once I get the proto back from the manufacturer and make sure it works. I made some last-minute changes late at night right before I hit "order" and I'm hoping I didn't kill anything. I added a 20 pin header and ran the SPI interface to one half and power and voltages to the other. Kind of bad practice but I happen to have a box of 20-pin headers and sockets and ribbon cable so why get fancy. I can always skip the header and solder right to the original pads (which I left in place). So the boards should be here late next week.
I've decided on a new working title for the touch controller project: "Stribe"
1) the name "xenome" is pretty much taken by a pharmaceutical company 2) "xenome" is a little too close to "monome"
Stribe means "stripe" in Danish. I like that it sounds like "scribe," and "strive," and that it doesn't mean anything particular in English. I think there's a shoe somewhere called this, and an athelete with it as a last name, but otherwise it seems unused. And who knows, maybe I'm part Danish.
Stribe nee Xenome time-lapse progress pics:
paper sketch + actual parts for comparison
breadboarding the MAX7221 + bar-graphs + Arduino
6 Spectrasymbol "hotpots" on top of stacked bargraphs. This showed that putting the pots right on top of the led bars is a bad idea for 2 reasons: 1) you can feel the joints between the bargraphs, 2) air bubbles appear between the uneven bargraphs and the sticker surface
These are 2 led boards. I designed the circuit layout in ExpressPCB and 3 days later they appeared in my mailbox.
I learned that I'd made the though holes around the edge too small for the pin headers I had planned to use. fortunately, the female headers fit. I had to file the edges of each header to get them to fit right up next to each other.
Here's the bottom of the assembled led board. That's uh, lessee, 2240 solder joints for the leds, plus 280 more for the pin headers. Went a bit cross-eyed. Learned there needs to be a bit more room between the led segments - but maybe that's because these are cheap. The board ended up slightly curved from the ceramic cases snugged right up against eachother. Higher quality parts might work better. Also, it was very fiddly getting the tiny legs of each bargraph to line up and go through the small holes. I don't have much room to make the holes a lot bigger but the higher quality name-brand bar-grpahs have thicker legs so I'll need to open these up a bit, too. One thought was to use IC sockets in place of all of the actual bar graphs, then insert the bar-graphs into the sockets. This would ease assembly as well as allow easy swap out for different colors or to replace a bad unit.
Here's the top of the assembled led board. I added a sheet of plastic cut from a paper binder - sticking the sensors onto this will make for a much smoother surface. Ideally, it would be great if the leds were all one piece, like little SMD leds embedded into a thin piece of plastic.
Here's the clear "softpots," installed. I was leaning away from these clear ones because the tactile feel of them isn't as nice as the yellow "hotpots" - but I realized I can put another layer over the softpots and they will still work. Which is great because now I can find a surface that has the touch and look I want - e.g. translucent, transparent, with different textures, possibly ridges or grooves to demarcate each stripe... not to mention that I could print stuff onto this layer. This layer could have different designs on it to provide help for different apps.
It's also good that I waited to finalize the circuit for the driver board. Now I see where I can include routing for the strips right on the driver board.