Building a Sopranino T-Stick

See this page ( for instructions for a more recent model of the sopranino 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 “sopranino” T-Stick. This will be a smaller “lab” version of the performance interface, with a focus on acquiring the knowledge and skills needed for building performance-grade DMIs.

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


Component Quantity
CY8C20180 (datasheet | register reference) 2
SO16->DIP adapter boards 2
560Ω resistor 16
0.1µF capacitor 2
Arduino Nano (info) 1
ADXL345 3-axis digital accelerometer (datasheet) 1
Linear FSR (info) 1
LDR (link | datasheet) 1
Piezo-electric diaphragm (link | datasheet) 1
ABS pipe 0.3m (l), 1.25″ (dia.)
Shrink Tubing (2″ dia.) 0.35m
End caps 2
End cap adapters 2
26 AWG stranded wire *
Ribbon Cable *
Copper Tape (link | datasheet) *

*=as much as necessary 😉

Assembling the Capacitive Sensing Circuit Board

  1. solder your CY8C20180 ICs to their adapter boards
  2. solder DIP pin header to the adapter boards
  3. trim one of your pieces of protoboard so it is narrow enough to fit inside your ABS pipe
  4. solder both your adapter boards to the protoboard. For simplicity, make sure they have the same orientation.
  5. solder a ~10cm long piece of 5-conductor ribbon cable to one end of your protoboard. The connections will be :
    1. VDD (+5V)
    2. XRES
    3. SDA
    4. SCL
    5. VSS (GND)
  6. use solid-core wire and solder to connect the ribbon cable to your capacitive sensors, using the pinout diagram below. *Only connect the XRES pin on ONE of the capsense ICs.
  7. we will use GP0[0-3] and GP1[0-3] for capacitive sensors (see pinout diagram below). Each sensor pin should be connected to it’s corresponding copper strip through a 560Ω resistor.

Pinout for Cypress Capsense Express CY8C20180

Assembling the Capacitive Sensors

  1. you will need a 30cm 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 16 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 16 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. 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.
  7. 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.
  8. connect the free **output** end of your capsense circuit board to the Arduino board using 5-conductor ribbon cable

Testing the Capacitive Sensors

Download this Arduino firmware for setting up the configuration registers on the CY8C20180 chips and reading touch data from them. This download also includes an example max patch for reading the touch data over USB.

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. The epoxy is kept in room #519, and you should do the gluing in this room rather than the electronics lab. Please make sure you replace the covers on the epoxy.

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 Analog Signal Processing Board

This circuit board performs necessary signal processing for the piezo sensor, the FSR, and the LDR. These circuits will be built on a small piece of perfboard and connected to the Arduino board using ribbon cable.

Envelope follower circuit:

Buffer and envelope follower circuit for the T-stick piezo sensor

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

Connecting it all Together

Since the Arduino Nanos are still backordered, we will be temporarily using the MiniBee RevB circuit board developed for the Sense/Stage project. This PCB contains an Atmel ATMEGA328 microcontroller loaded with a customized Arduino bootloader, and has been designed to interface easily with an XBee radio transceiver. The board also contains an ADXL345 3-axis accelerometer with I2C output. In order to allow easy replacement of the MiniBee at a later date, we will be mounting it to the T-Stick circuits using 10×2 pin header. Below is a diagram showing how to connect to the pin header (this is a view from above your circuit board – the side without copper):


The Arduino website
The Digital Orchestra Toolbox

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s