Kit now available from 4ms Pedals!
The Bend Matrix is a microcontroller “brain” that leeches onto a host circuit, controlling connections within the host and between the host and other devices.
Schematic version 2.3: wiki:bendmatrix2:schematic2.3.pdf
The version 2 circuit has been completely redesigned using an AVR microcontroller at the core (ATMEGA32). There’s also 5 parallel-in/serial-out shift registers (74HC165) to read the 40 buttons, and 7 serial-in/parallel-out shift registers (74HC595) to control the 40 button LEDs and 3-digit BPM LED display, a 6N137 opto chip for MIDI input, and a 4049 Hex Inverter chip for MIDI output, rail-to-rail opamps for analog knob control, and Zarlink’s MT8816 cross-point matrix switch. There’s also headers for expanding the MT8816 chip and/or using other switches such as eight 4066’s or sixteen H11F3’s...
PC Boards, programmed AVR chips, and front panels will be available though 4ms Pedals. All schematics, diagrams, gerber files, source code, etc will be on this site (commonsound.com). The Bend Matrix will be free to make for personal use, and 4ms Pedals will handle all commercial use.
Written for AVR-GCC, using AVR Studio 4. Programmed with a STK500.
Code is here: C code
2009 April 24 Bend Matrix v2.3 kit released!!!
2009 March 27 Performed the Bend Matrix octo-phonic light and sound system for Austin Musuem of Digital Art (AMODA) at the Moose.... trippy
2009 January/February/March: Numerous updates to the code, just haven’t been posting here... Added a boot loader using MIDI (sysex). Extended functionality of Arp mode, and added the concept of Layers (Save layer, Clear layer are especially useful to latch buttons on or off while you fiddle with everything else). Also printed board version 2.3, which is much easier to build, using header pins for connections to the jacks.
2008 August: Released version 2.2, minor changes to version 2.1, making assembly easier and the powersupply cleaner.
2008 April 26: Bend Matrix installed at Pump Project in Austin, TX for the FUSEBOX festival. Three Bend Matrices (2×8) are used to control circuit-bent kids keyboards and a drum machine, and the fourth Bend Matrix (4×8) is used to route 4 audio signals around 8 amps/speakers arranged in a circle. At the center is a Dreamachine (from 10111.org a la Brion Gysin's 78 rpm plans) and the audience sits in comfortable floor chairs in an inner circle, staring at the dreamachine’s flashing lights (with their eyes closed).
2008 April 20: MIDI modes now include Send-only, Receive-only, Send/Receive, and Off. NOTE commands are sent/received to mirror the button matrix. Can be used as a MIDI controller or as a slave.
2008 April 19: New Gloob modes added
2008 April 6: Version 2.1 with 32-button matrix works!
2008 March 14: Ordered the pc boards for version 2.1. Continuing development of real-time effects using two version 2.0’s connected together with header pins.
2008 February 21: Connected two Bend Matrices together to create an 8×4 matrix (dual 4×4) under a single microcontroller. Altered concept of Path to become a filtering effect, allowing only a single button to be lit at a time (arpeggiate mode), or two or four at a time (dual/quad arp).
2008 February 15: Joystick! With the stick, you can “push” random mode to different quadrants and control the speed of randomization...
2008 February 7: Started the third Bend Matrix, using a plexiglass front panel. We intend to shield it with wire mesh.
2008 February 4: Finished the second Bend Matrix and mounted it in a shielded wooden box.
2008 February 1: Panel layout finalized. Added concepts for knob modes (strobe/bounce/gloob/random) and added bank features (not finalized). Bank features will allow 16 sets of 8 sequences to be stored. A single bank can be repeated or all banks can be played through sequentially. Also added the concept of Sequence legnth and path: length determines the number of steps in a sequence (2 - 8) before it repeats, and path determines the order of steps (1,2,3,4,5,6,7,8; or 8,7,6,5,4,3,2,1; or 1,3,5,7,2,4,6,8; or 4,5,3,6,2,7,1,8; etc..) Sequence path/length can then be applied to bank mode, allowing a seemingly infinite number of ways to play through your stored banks.
2008 January 18: It’s Alive! PCB’s arrived last week, and we assembled the first one. A few errors were found and corrected. The panels came shortly afterwords and fit like a glove (albiet an extra hole... hmmm, maybe we need another LED?) We hooked it all up to a bent casio SK-1, a bent kids “my first laptop”, a noise swash, sweptoner, mondo nocto, tupperware toy, BOSS stereo delay and 4 amps set around us in a circle. wowsers batman.
2008 January 2: Finished version 2.0f! I sent in the PCB gerber files, ordered the aluminum panels to be machined, and came up with a parts list for the first batch of 5 Bend Matrices! The panel will be 12” x 8”, so there’s plenty of room for expansion along the sides. We’ve got dibs on the first few, and next you’ll see them as kits.
2007 December 17: Finalized panel layout. Began pcb layout, starting with placement of panel components (buttons, LED display, rotary pot, banana jacks)
2007 October: Cleaned-up the schematic and inputted component data into the pcb software (drill hole sizes, clearances, etc)
2007 September 1: Breadboard completed! Decided to stick with the ATMEGA16 instead of smaller package chips, because the extra pins/ports may be useful in the future. For the same reason, I’ll stick with the MT8816. Schematic, panel layout, and C code added to wiki. Now it’s time to do PCB layout! woo hoo!
2007 July 24: Saves patches to EEPROM. The memory is rated for 100,000 writes, I’m hoping this is sufficient. Still waiting for the ATMEGA48 chips, so I re-do it for these small (DIP28) packages. After that is drawing up the schematic, settling on a panel layout, and then drafting the PCB! Will probably add more MIDI features later... (see the TODO‘s above)
2007 July 20: Got BPM meter working! 3-digit 7-segment LED using a 4511 CMOS chip and (another) ‘HC595 chip controlling that. It de/increments by 5’s, from 5BPM-995BPM. At the faster speeds there’s no difference between 995 and 990 BPM, but heck, who’s counting? Maybe I’ll make it go by 10’s after 700BPM...
Moved the tempo LED to the Play button’s LED.
Now I’m considering reducing pins, the save/play/tempo-up/tempo-down/random/latch-tap controls can possible be put on another ‘HC165. Like we need more CMOS ;)... But maybe board size could be reduced, possibly could get away with 15 or 19 data pins
2007 July 13: Played around with FET switching. Found very good switching properties for a single FET, considering using this with a CD4066 instead of the MT8816. See http://www.diystompboxes.com/smfforum/index.php?topic=58301.0 for discussion/schematic.
Got MT8816 working! works as a true cross-point matrix. I’ve got it set up as two 2×4 matrices by tying AX0 and AY2 together (see the MT8816 datasheet, the chart on the last page). This means that there’s two independent crosspoint switches: X0 and X2 cross with Y0,Y1,Y2,Y3; and X1 and X3 cross with Y4,Y5,Y6,Y7. I thought this would be useful for sequencing as a drum machine, since X0-X3 could be tied to a trigger source and then eight “drums” would be available (Y0-Y7). Also, this would allow two circuit-bent toys to be controlled totally separately. And if the Bend Matrix is being used as an audio switcher, it would function as a 8×4 patchbay (e.g. 8 mono inputs and 2 stereo outputs)
Added rotary encoder for tempo control. I like it. Not sure if digital BPM output is necessary. The way the code works now, it’s hard to get an exact BPM, the resolution is about 5 BPM around 200BPM, but it’s like 1000BPM when we’re at 2000BPM.. hmm...
Noticed random mode seems to weight towards certain areas... probably because my algorithm is just a fast counter sampled at the moment of the button press...
2007 July 11: Tested MT8816 chip (Zarlink’s Crosspoint matrix switch). Very cool chip. Not working yet, it doesn’t seem to get the STROBE command.
2007 June 29: After a hard drive crash and total loss of data, I re-coded the entire thing (that took a week!). Added tempo up/down buttons (which will become a rotary knob). Not sure how to do the display for tempo BPM, probably 3-digit 7-segment LED display with three 4511’s and a MUX. That’s a lot of extra hardware, so maybe I’ll just use MIDI clock signals to get an exact tempo. Would appreciate anyone’s ideas on this.
Sequencer passed the “overnight” test, in the morning it was still running at an accurate tempo. Occasionally the chip will glitch and slow down when the random button is released, it appears to be just executing slowly, as a debug LED flashes slowly. The phenomenon is intermittent, perhaps replacing the chip will fix it, or perhaps it’s hanging up on some part of the chip that’s accidentally enabled (timer? interrupts???)
Got a variety of analog switches, will test them out (Maxim, Analog Devices, Zarlink chips...) Determined that two 4066’s in series with a 100k resistor to ground in between switches is marginally satisfactory for switching audio signals, but the resistor would ground out some circuit bending signals that should stay floating. High hopes for the Zarlink crossbar switch chip MT8816 with it’s -90dB feed-through isolation, and cost of only pennies per switch). Ideally the analog switches will act like a true relay with no grounding and no feed-through, so any impedance signal can be run through without the switch loading it down.
Unfortunately and fortunately I’m going camping for a week in the Ozarks, so this will be on hold.
2007 June 18: Sequencer works! Hooray! 8 saved presets are cycled through. In latching mode, it does at it should. In tap mode, right now I have it turning the patch on for 1/2 of the beat length, and then turning everything off until the next beat hits. I may make this a morph feature instead, the reasoning is that in non-latching mode, we should avoid keeping any connection ON for longer than necessary.
Noticed a bug: RANDOM doesn’t save in non-latching mode... hmmm... FIXED
2007 June 11: Started on the sequencer: Added another 74HC165 for the extra 8 buttons, and another 74HC595 for their LEDs. Installed a Save button and a Play button (not functional yet).
2007 June 6: Now using 74HC595 Shift registers for matrix LED’s. (frees up pins on the uC)
2007 June 4: Random button works.
2007 May 31: MIDI input works (every keyboard note-on event triggers a matrix LED to light up, note-off triggers the light off). Currently, MIDI commands override button states, but ADC data OR’s with everything. Seems intuitive...?
2007 May 30: Button matrix works. Switch selects latching and non-latching mode (Latching mode means tap the button to make it go on, tap it again to make it go off. Non-latching mode means it goes on only as long as you hold the button down). Analog input (knob/photocell) works by OR’ing its output with the state of the buttons. MIDI is under development.
I welcome feedback, ideas etc. Email Dann
Version 1 of the Bend Matrix has been moved to this page: Bend Matrix 1