kits ... forum ... about us ... contact ... license ... 4ms Pedals

VERSION 2.3 (kit)

Kit now available from 4ms Pedals!

General Information


What is it?

The Bend Matrix is an automatic patch-bay and sequencer with real-time analog controls.

What would I use it for?

  • Circuit bending:
    • Add MIDI in/out to your circuit bent projects
    • Program/save/recall patches of bend points
    • Sequence trigger points to essentially convert any sound generating device into a player piano
    • Real-time analog controls (joystick, knobs, photocells) provide special effects/glitching/strobing/arpeggiation and randomization
  • Effect switching/re-ordering:
    • Change effect ordering and routings on the fly: store up to 8 patches per bank, with 16 banks
    • Series, parallel, and series-parallel configurations possible
    • Sequence your effect changes, so you can simply hit “next” after each song and the next effect ordering
    • Assign up to 4 effects in any order and combination of in/out of the loop
    • Dynamic re-routing for special effects
    • External stomp switches and rack-mounting available.
  • Modular Synthesizers (max +/-5V):
    • Patch synthesizer modules together using a central button matrix to control routings
    • Save/recall patches, (8 per bank, 16 total banks = 128 patches)
    • Sequence patches within banks, sequence playback of multiple banks
    • NOTE: Most modular synthesizers operate on +/-12V or greater, which exceeds the Bend Matrix’s maximum range. Modular signals must be attenuated to within +/-5V before running to the Bend Matrix. An alternative is the VCA Matrix eurorack module, which can tolerate up to +/-15V (a VCA Matrix-compatible sequencer is forthcoming)
  • Art Installations
    • Flexible configuration allows a variety of sound sources and amplifiers to be dynamically routed (16 total bi-directional ports: e.g 4 inputs ⇒ 8 outputs, or two separate 4 in ⇒ 4 out...)
    • Route trigger/sensor/microphone signals to various processing devices
    • Outputs can trigger lights, sounds, motion, anything that runs on electrical power (use your imagination!)
    • Quadrophonic/Hex/Octophonic sound installations: route 4 instrument/sound sources to 8 amplifiers. Each sound source can be spun, bounced, ping-ponged, etc.

What can it do?

  • Connect/disconnect glitch points within an external circuit-bent device (two separate 4×4 matrices)
  • Connect/disconnect/route audio inputs into multiple outputs (normally 4 inputs⇒8 outputs or 8⇒4)
  • Act as a patch matrix for modular synthesizers, or any other CV/signal routing
  • Store up to 8 “patches” in memory (memory is held even when power is disconnected)
  • Sequence the 8 stored patches at specified BPM (5-1000BPM)
  • Generate random patches
  • Apply effects to the current patch (or sequence of patches) using analog controls: randomization, arpeggiation, strobing, bouncing.

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 ( 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 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 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


Early version!!


Version 1 of the Bend Matrix has been moved to this page: Bend Matrix 1


commonsound/bendmatrix.txt · Last modified: 2012/05/16 20:05 by
Recent changes RSS feed Driven by DokuWiki