Building a Soprano T-Stick

This page is intended to serve as a resource for class members of the McGill Music Technology seminar MUMT619 – Input Devices for Musical Expression as they assemble their T-Stick.

The T-Sticks are a family of gestural musical controllers designed and built by Joseph Malloch. The first prototype (a tenor) was completed in 2006, a second (alto) T-Stick was completed in early 2007. Since 2007, the sensing hardware has been redesigned and three more T-Sticks have been built, along with several proof-of-concept prototypes integrating haptic feedback and additional sensing modalities. A third revision of the T-Stick hardware is currently in development.

The T-Stick grew out of a collaborative project undertaken by Joseph Malloch and composition student D. Andrew Stewart, partially funded by a CIRMMT student award, and also out of collaboration with performers as part of the McGill Digital Orchestra project. The T-Stick has been performed and demonstrated many times in Canada, Brazil, Italy, and the USA.

The T-Stick can sense where and how much of it is touched, tapping, twisting, tilting, squeezing, and shaking. The output of the sensors is sent over USB to Max/MSP software, which processes the data and maps it to sound synthesis parameters.

The T-Stick is intended to be an “expert” musical interface: engaging to new users, allowing virtuosic playing, and “worth practicing” in that practice time results in increased skill.

See the T-Stick page at for more information, including video of T-Stick performances.


Component Version
Capacitive Sensing Circuits 2G 3G
Touch-24 PCB 2 2
QT161 capacitive sensing IC 8 8
CD4021 8-bit shift register IC 6 6
120Ω resistor 48 48
6.8nF capacitor 36
1nF capacitor 12
22nF capacitor 48
22MHz crystal oscillator 2 2
0.1µF capacitor 2 2
10µF capacitor 2 2
Microcontroller Board 2G 3G
Arduino Mini 1 1
Arduino Mini USB Adaptor 1 1
LIS3L02AS4 3-axis analog accelerometer 1
LIS3L02AS4 adapter board 1
LIS302DL 3-axis digital accelerometer 1
0.1µF capacitor 3
Structural Components 2G 3G
Linear FSR 1
Piezo-electric contact microphone 1
ABS pipe (opaque) 0.65m (l), 1.25″ (dia.)
PVC pipe (transparent) 0.65m (l), 1.5″ (dia.)
acetate sheet 0.6×0.3m
Shrink Tubing (2″ dia.) 0.7m
End caps 2 2
End cap adapters 2 2
26 AWG stranded wire * *
Ribbon Cable * *
Copper Tape * *

*=as much as necessary 😉

Assembling the Touch-24 Printed Circuit Board

Touch-24 circuit board layout

Touch-24 circuit board layout

The Touch-24 Rev.A circuit board

The Touch-24 circuit board combines 4 Quantum QT161-DG 6-channel discrete capacitive sensing ICs with 3 CD4021 8-bit shift registers. This allows an arbitrary number of Touch-24 PCBs to be daisy-chained using 5-conductor ribbon cable. For the soprano T-Stick we will be using two of these PCBs.

  1. all components should be mounted on the side of the board marked with component names and outlines
  2. chips should be mounted so that their labels are the same orientation as the silkscreened labels
  3. XT1 marks the position of the crystal oscillator. It has no polarity so it doesn’t matter which way up it is mounted
  4. Consult the chart below for the rest of the components
Resistor and Capacitor Values
Component 2G 3G
R1-R24 120Ω 120Ω
R25 10kΩ 10kΩ
C1-C24 6.8nF 22nF
C26 10µF 10µF
C27 0.1µF 0.1µF

Assembling the Arduino board

Trim a piece of 15×25 hole perfboard so it is 11×25 holes:

You will need a 15-pin length of male header. Cut it into 4 pieces: 7, 4, 2 and 2 pins long. Remove the second pin of your 7-pin piece by pulling it with needle-nose pliers:

Solder the 4-pin piece of header to your Arduino Mini as shown in the photo. Solder the 7-pin piece and the two 2-pin pieces to the USB adapter as shown:

Place the Arduino Mini and the USB adapter as shown and solder in place. Connect the pins shown in the diagram below:

Constructing the Endcaps

Get two plumbing connector pieces from Joe. These will form the bulk of your endcaps but we need to fill in the ends. Cut two pieces of flat ABS just large enough the same width as your connectors.

Trace the inside circumference of a connector onto the squares of flat ABS. Trim the flat ABS to the traced line. File the edges to smooth.

One of the pieces will remain like this. The other needs to be drilled and filed to make room for the USB connector, two screws, and a status LED.

when the endcap is in place over the USB connector, it should butt against the end of the perfboard. Make loops using solid core wire to hold the ends of the screws so that they can be adjusted. Place the LED in the drilled LED hole; connect the short lead to ground and the long lead to pin 13 of the Arduino Mini.

Assembling the Capacitive Sensors

  1. you will need a 66cm length of the black ABS plastic pipe, **1.25″ diameter** (note this is a standard plumbing diameter – it is not *actually* 1.25″ in diameter). Cut this length and smooth the edges with a file.
  2. this pipe needs to be cut in half lengthwise in order to access the inside. This is best done using a wood saw, which is available in the storage room. You will probably find it easiest if you clamp the pipe (lightly!) in one of the vises in room 519. Try to make the cut straight and even.
  3. next, borrow a roll of 0.25″ copper tape from Joe. Cut 48 pieces of tape 6.7cm long (or long enough to wrap around the outside of one of your pieces of pipe).
  4. borrow an electrode spacing template sheet from Joe. Use the spacing template to apply the 48 pieces of tape evenly along the length of one of the pieces of pipe.
  5. use a drill and a small bit to **carefully** drill a small hole through each of the pieces of tape and the pipe beneath it, along one edge of the plastic.
  6. connect your touch24 circuit boards using 5-conductor ribbon cable.
  7. test your touch24 circuit boards to make sure they function properly.
  8. using your soldering iron, tin each key electrode by placing a small dot of solder next to the hole you have drilled. Don’t apply too much heat or the ABS plastic will melt.
  9. use 26 AWG stranded wire to connect each sensor channel to its corresponding key electrode on the pipe. Pass the wire through the drilled hole, then cut to length and strip 0.5-1 cm of insulation. Bend the exposed wire 90° so that it lies over the solder spot. Solder in place.
  10. connect the free **output** end of your touch24 circuit boards to the arduino board using 5-conductor ribbon cable

Piezoelectric Sensor

Remove the middle wire from a piezoelectric buzzer, and carefully bend the two sides up ~40° (be careful not to crack the crystal!). This will allow maximum contact with the inside of your pipe. Epoxy the piezo to the middle of the inside of the pipe (the piece with the capacitive sensors on it). Use a file or a screwdriver to rough up the area of ABS to be glued to help adhesion.

Pressure Sensor

Trim a linear FSR so that the sensor region is 50cm long. Peel off the backing paper and **carefully** stick the FSR to the outside of the other piece of ABS (the one without the capacitive sensors attached to it). Try to center the sensing part.

Drill 2 small holes next to the FSR leads. Solder wires to the FSR leads and pass them through the holes to the interior, and connect them to the voltage divider circuit on your signal processing board.

Cut a piece of foam so that its width will wrap around the half-pipe over the FSR, and its length will extend ~1.5cm past the ends of the FSR. Use double-sided tape to fasten the edges to the pipe. Repeat to make a second layer.

Assembling the Accelerometer/Signal Processing Board

This circuit board performs necessary signal processing for the piezo sensor(s), and also for the pressure sensor (for the 2G versions). These circuits will be built on a small piece of perfboard and connected to the Arduino board using ribbon cable.

Envelope follower circuit:

Envelope follower for piezo sensors in the T-Stick

Here’s the pinout for the LM358 opamp you will be using in the above circuit:

             Output A | 1   8| V+
    Inverting Input A | 2   7| Output B
Non-Inverting Input A | 3   6| Inverting Input B
                  GND | 4   5| Non-Inverting Input B

Voltage Divider circuit:

Voltage divider for the T-stick pressure sensor

Voltage divider for the T-stick pressure sensor

If you are using the LIS3L02AS4 analog accelerometer, first solder it to the provided DIP adapter board, then solder the adapter board to the perfboard. Pins 6, 9, 11, 13, and 16 need to be connected to ground. Pin 7 should be connected to V+ with a 10¬µF filter capacitor to ground. Pins 8, 10, and 12 are the output pins (y/x/z acceleration respectively) – each of these needs a 47nF filter cap connected to ground (these will be labeled 473). These caps will low-pass filter the output to ~60Hz – the cap value doesn’t need to be precise, but this helps filter out high-frequency noise.

Diagram showing how to connect the LIS3L02AS4 accelerometer, from the datasheet

Diagram showing how to connect the LIS3L02AS4 accelerometer, from the datasheet

Connecting it all Together


The Arduino website
The Digital Orchestra Toolbox