Velostat multitouch matrix


#1

Hi there! I've been meaning to build a musical controller similar to the soundplane or the linnstrument for a while, but I always failed at some point after many hours of work. This time I hope to plan better in advance.

I found this post in this forum quite interesting:

I'm thinking about going with the velostat matrix approach, so I'm trying to foresee anything that could possibly go wrong. The approach would be to successively power the columns through a multiplexer, reading from every row at each turn.

The main problem with this approach is the leaking between tracks. Say I'm pushing with one finger at row 3 between columns 4 and 5, and with another finger at row 1 and between columns 3 and 4. When powering column 5 and reading from row 1, I'll get an unwanted signal coming from row 3.

How can I prevent this?

Additional problems:

  • if playing two rows at the same column at once, would I get half the reading?

  • the Linnstrument uses the same velostat matrix approach and from what I read, you can't "play a rectangle", that is, four notes that form a rectangle / sharing two rows and two columns. Now, my instrument is more about string emulation, so only the highest note at each row counts - would that solve it?

  • I've seen in other forums people adding a diode at each intersection, not sure I understand the reason: since tracks are continuous, what difference does it make if you solder several diodes at different heights?

If the solutions to these problems imply doubling the amount of muxes or soldering many other components, I might be better off using a key-by-key design, that is, soldering a mux channel to each "key", but that would mean 30 keys * 9 rows = 270 keys. Still, easier than building a piano, but a bit of a pain in the ass. In exchange though, it might be much more reliable.


#2

Hi, @dimaugh,

I am the original poster for the "FSR72".

I used the eeontex pressure fabric (which is no more available), I'm not sure velostat would provide equivalent sensitivity and range.
You must experiment with it to get the resistance range for your sensors in order to design the rest of the circuit.

To avoid key ghosting, I used 72 diodes . This is a classic"deghosting"/"demasking" trick.
https://www.dribin.org/dave/keyboard/html/fixing.html

Variable sensitivity over the surface was quite complicated to handle. I don't know if you will get a more even set of sensors with velostat.

I finally bought a second hand Roli Seaboard49.


#3

Hi! So nice to have the original poster! :slight_smile:

I don't expect the Velostat to be that variable, since I'll be using one single sheet in between the tracks. I hope at least, since it's thin and looks homogeneous.

72 diodes, one at each intersection, right? But I'm not sure I understand why one diode at each intersection instead of one per track. I mean, if the track is continuous, what difference does it make to solder it at one height or another?

Anyway, I found out a different approach in this very interesting paper (look at figure 10)
https://dl.acm.org/doi/pdf/10.1145/1520340.1520460

Now, the problem with that approach is I need to ground all the tracks I'm not using simultaneously. This can't be done with a multiplexer. Instead, I guess the only way is to have transistors (the ones that are open when there's no current applied at the gate) connected to ground at each track. Then, as I power column by column with a mux, I close transistor by transistor with another mux. Or perhaps even with the same mux, two cables coming out of the out channel, one applied to the track and the other applied to the gate of the transistor... though I risk a shortcircuit with that approach.


#4

Hi @dimaugh,
I've got great results with linqstat, a velostat alternative that's produced with many different carbon content levels. The result is currently in the last day on Kickstarter: https://www.kickstarter.com/projects/striso/striso-board

One tip: clean the surface with alcohol before mounting, for me that made a big difference in sensitivity.
Also I chose to not use diodes, but use software filtering instead. That technique by Ilya Rosenberg is very interesting too, and used in the Sensel Morph.


#5

Don't you have ghosting issues with some specific key combinations ?


#6

The ghosting is filtered out, and the matrix is chosen in a way that that's not really a problem. The Linnstrument does the same, filtering out the less pressed corner from every rectangle.


#7

Hey, thanks for your input @pierstitus !
I believe I've seen your Strisoboard on some microtonal groups in Facebook and I loved the idea of "bendable" keys (bendable by analogy with guitar technique, I mean). However, since I'm into things like 31edo and 46edo, I can't afford that per-key complexity.

I aspire to something rather like the Soundboard, without the y-axis. By using 12 horizontal rows and many vertical tracks 3mm wide and 3mm apart, I expect to get a fretless feel. The only thing is how to glue the velostat without getting any glue on the tracks with such a small spacing, but it should be doable.

You mean cleaning the copper tracks with alcohol?

By the way, updating my previous post about the Rosenberg technique from the paper I linked, in case it helps anyone: there's no need for the complicated transistor arrangement I described above. Using GPIO pins is more than enough. In my case, I'll be using some Teensy boards and leave the Axoloti for an independent synth-


#8

So, if you press a rectangle a corner will be missed.
So you have to design the layout so that rectangles are not musically useful.


#9

I'm using gold tracks, and am cleaning both the tracks and the carbon foil.

My first try was with aluminium tape based, stuck onto overhead sheets, looked a lot like @SmashedTransistors keyboard. It had two sensors per button.

The second version was with copper tape, and had three sensors per button. If I remember correctly the aluminium worked slightly better (the oxide conducts better), but it's already 8 years ago.

I'll look up some old pictures. :slight_smile:

Indeed, so for the Striso board I chose the matrix to be in octaves, so in an harmonic sense not too much is missing, only notes that are already played in another octave can be missed.

For the Linnstrument the matrix is not adjusted for the layout, so it does miss notes. Never heard someone complain about it, so I wouldn't bother too much. It was in the Linnstrument specifications before:

If 3 note pads are pressed that are 3 corners of a rectangle, presses to a note pad that is the 4th corner of that rectangle will be ignored.

But I can't find it on the new website, so probably Roger Linn found it doesn't have enough impact on playing to mention it anymore.


#10

Here's some pictures from the early Striso board tries from 2011, directly using an ATmega168: