LinnStrument uses a custom, patented touch sensor sheet that is attached to the top of the primary circuit board inside the unit. The silicone playing surface sits directly on top of this sensor sheet, as shown this exploded view.Here is a picture of the sensor sheet itself, and here is an exploded view of the sensor's layers. It consists of 2 plastic sheets separated by a spacer. The layers are:
1) Top sheet: on the downward-facing surface are printed 26 vertical columns of fixed resistor material for sensing Y-axis position, covered with a second layer of force-sensing resistor material to sense pressure.
2) Spacer: 2mm-wide horizontal separators between adjacent rows, that keep the top and bottom sheets from touching unless the sensor sheet is pressed from above.
3) Bottom sheet: on the upward-facing surface are printed 8 horizontal rows of fixed resistor material for sensing X-axis position, covered with a second layer of force-sensing resistor material to sense pressure.
The ends of the rows and columns are connected to analog switches, which connect them to either +3.3v, ground, or ADC (with or without a pull-up resistor to +3.3v), depending on whether X, Y or Z (pressure) is being measured:
1) To measure X (left/right location) of a specific cell:
Connect left end of the cell's row to ground and right end to +3.3v. Connect both ends of the cell's column to the ADC (analog to digital converter). Moving a touch left to right within the cell will produce a voltage at the ADC that is proportional to the position of horizontal touch within the cell.
2) To measure Y (front/back location) of a specific cell:
Connect bottom end of the cell's column to ground, and top end to +3.3v. Connect both ends of the cell's row to the ADC (analog to digital converter). Moving a touch forward or backward within the cell will produce a voltage at the ADC that is proportional to the position of vertical touch within the cell.
3) To measure Z (pressure) of a specific cell:
Connect both ends of the cell's row to ground, and both ends of the cell's column to the ADC (analog to digital converter) as well as to a pull-up resistor to +3.3v. With no pressure, the ADC will read 3.3 volts. As finger pressure increases and the force-sensing material of the 2 sensor layers press against each other, the resistance between them will be lower, resulting in a proportionally lower voltage at the ADC.
Here's a schematic of a simplified 3 row by 3 column sensing system, showing the electrical connections for measuring X, Y or Z for a single cell. (For far too much detail, here's the patent.)
This circuit permits the sensing of X, Y or Z on a single cell at a time. To allow polyphony, the cells (row/column intersections) are scanned sequentially at sufficiently high speed that the musician perceives the response to multiple touches to be simultaneous. When not touched, the system continuously scans all 200 playing cells sequentially for pressure only. When a touched cell is sensed, the X and Y positions are also sensed but only for the touched cells.
To sense a horizontal pitch slide across multiple cells, the software recognizes when a touch is moving left or right from one cell to another and interprets this as a continuous pitch slide instead of a new note as the finger enters the adjacent cell. In this case, a Note On message is sent only when the first cell is touched, then only pitch bend messages are sent as the touch moves across adjacent cells, terminating when the finger is released and a Note Off is sent.
The resistive material is opaque, which prevents LED light from shining through it. To allow LinnStrument's lit pads, a 3mm circle in the center of each cell of the sensor is left with the resistive material unprinted, thereby allowing light to pass through. LED light from the LED circuit board shines up through 3mm holes on the main circuit board, then through the unprinted transparent holes in the touch sensor sheet, and is finally diffused by the 2mm thick silicone playing surface. This results in soft diffused round circles of light in the center of each playing pad. Given the large size of a fingertip and the force-spreading property of the silicone playing surface, the 3mm diameter unprinted windows of the touch sensor do not affect sensing accuracy.
Here's an Image and video of the original 3x3 proof of concept, which uses 6 commercially available 100mm 2D position and pressure sensing strips. The ends of the 3 rows and 3 columns are connected to an Arduino Due board and a circuit consisting of a high speed ADC and analog switches that connect the row and column ends to the various required signals.
Here's an Image of the first complete prototype, including a full size sensor, an Arduino Due board, and breadboards containing the ADC, analog switches and LED drivers.
By using the simple Arduino-compatible hardware and software, editing the open source software is simple for amateur programmers. I (Roger) wrote the code up to the point of minimal function, then Geert Bevin took over to write the large volume of remaining software, fine-tuning it into the precise, sensitive and professional musical instrument it is.