Physical Tone Matrix

[Andrew Jenner] pulled off something amazing with this Physical Tone Matrix. He wanted to build a physical version of a flash applet he had seen. Two layers make up the main user interface. The top layer is a sheet of acrylic that acts as a touch interface and below there’s an LED matrix. [Andrew’s] touch interface uses wires running throughout the acrylic as contacts which are polled via transistor pairs. As you can see in the video after the break it works well and we like the fact that there’s a tactile component (due to the bumpy wires) you don’t get when working with a touchscreen.

The 16×16 grid of LEDs on the bottom layer correspond to each ‘button’ on the touch matrix hand have some extra functions such as playing Conway’s Game of Life. This fantastic build still has a couple of kinks to work out, most notably the interference in the audio circuit, but we’re quite impressed at what he’s achieved quickly. Plus, this is more economical than a monome and larger than some of the monome clones we’ve seen.


33 thoughts on “Physical Tone Matrix

  1. Brennan, I would say it’s just a quantitive difference in the amount of time spent counting cycles and trying to shave off an instruction or two from a critical inner loop. I think most of the loops in the interrupt routine can’t be made any faster without sacrificing functionality, but I’d love to be proved wrong!

  2. yosh, I had to rewatch the video to see what you were talking about. I think it’s just the bright LEDs causing oversaturation and bloom in the camera’s CCD when the ambient light is low and the exposure length increases. Weird that it seems to “move up” like smoke though.

  3. Can’t LEDs be turned into “touch” sensors? I seem to recall someone “painting” on an LED matrix using his fingers. That way he could’ve avoided that plastic sheet.

  4. if author read classic “art of electronics” instead playing with Arduino he would know that LEDs can be used as input device so whole top layer which he made is extra garbage

  5. @Brennen – using for example C, you need to include heavy librarys such as stdio, which would also contain a load of other unused functions.

    using ASM you can write the code 100% your self, with no dead code.

  6. Gee a lot of vitriolic comments here regarding touch sensing.

    Yes there is a better way of doing it.

    But there is nothing wrong with doing things the “hard way” or the “unorthodox” way. It’s called learning… and *gasp* … fun even!

  7. @anon and others:
    Yes, I understand the difference between C and assembly, but assembly by itself is a very low level language, and I actually find it hard to have extraneous/unnecessary code when you are programming in assembly. So I think the term “optimized” is rather redundant, unless you are literally counting and shaving off instruction cycles to get your timing perfect. More power to him for coding in assembly, but I think it’s a bit of a fluff term.

  8. @brennan-optimized assembly is not a “fluff” term. it is exactly what you describe, shaving off clock cycles until it is as fast or perfect as it can be. even when writing in pure assembly there are often many optimizations that can be made.

  9. @Tachikoma: There was exactly one vitriolic comment. My comment was just a simple reflection on his approach that could perhaps give him an idea for an improvement. It’s called discussing and *gasp* it can be educational even.

  10. @therian, I have read the Art of Electronics and there’s nothing in there about using LEDs as touch sensors – I think the technique is more recent than 1989. It could be used here but it’s not necessarily a better way – it makes the electronics much more complicated because you can’t just use simple shift registers. It would reduce the LED duty cycle since you need part of the cycle for the detection. Finally, I don’t think it works if the LED is off.

  11. IS that 800hz max2721 noise i hear? its a real pain to isolate, can propagate through ground wires and everything, Best run that IC on a completely separate power supply from any audio.

  12. @DeFex, there’s no MAX2721 in this (that’s a cellphone modulator isn’t it?). The noise is caused by the LEDs using a lot of current (~500mA peak) at 977Hz (the line rate of my LED matrix) and putting ripples on the power supply lines. I should have used larger decoupling capacitors to smooth this out – I miscalculated when figuring out how much capacitance I needed.

  13. @Alber the height of hand above LED array is 3rd dimension
    @Andrew Jenner yes book dos not contain anything about touchscreens but it mention LED as light input device

  14. @therian, the closest thing I can find is on page 996 where it says “A diode junction acts as a photodector”, but then it goes on to talk about photodiodes (which are designed for light detection, and are not LEDs). I might have missed something though – it’s a big book.

    @DeFex, I think it’s just a question of using enough capacitors – as long as the decoupling capacitance is much larger than the current ripple amplitude divided by the product of the voltage ripple amplitude and ripple frequency, the capacitor should be able to smooth out the ripples.

  15. @kernelcode, it might, but inductors bring their own engineering headaches. You need a very large inductor (>0.01H for 500mA at 5V and 1000Hz) which is relatively expensive at the DC currents required. An inductor will generate a very large voltage when the power is turned off, so you need some kind of protection in there. Then there’s the problem of resonance with any capacitance you’ve got across the circuit.

  16. There’s nothing ‘fluffy’ or imaginative about heavily optimized assembly. There was a time when clock speeds hovered around 1mHz and 12K of RAM was a lot, and in those times a lot of people had no other choice.

    Try doing a code conversion, speed conversion, and I/O in 1K sometime & you’ll want to learn about shaving corners in a hurry.

Leave a Reply

Please be kind and respectful to help make the comments section excellent. (Comment Policy)

This site uses Akismet to reduce spam. Learn how your comment data is processed.