Tablo: an E-textile Controller for Stroke, Position and Pressure

Series: alt.ctrl activities; builds on Tabla; Spatial arrangement

The Tablo is played like a hand drum. Conductive stretch fabric, held in an embroidery hoop, is draped over an upturned bowl. Resistive strips (petals) run down the bowl, and piezoresistive fabric strips sit on the flat ring around it. A single gesture grounds many independent circuits at once, so the Tablo senses from very light touches to fast, muscular strikes: a dynamic range that is hard to reach with stacked position and pressure sensors.

Position: the grounded fabric shorts each petal from the top down as it is pushed toward the bowl, so each petal is a nearly massless displacement sensor. Pressure: pressing the fabric onto a strip on the base lowers that strip's resistance to ground, as aftertouch. Strokes: how fast the displacements change gives the speed of a strike, and following which petals are displaced gives the direction and speed of a stroke around the bowl.

Two hands play the Tablo: grey conductive fabric, stretched in a wooden hoop, drapes over a bowl at its centre, and the fingers press it down.
Playing the Tablo. From the teardown page.
Cross-section drawing: conductive fabric in a hoop drapes over an upturned bowl and touches a grounded ring at its top. On the right, the fabric is pushed against a resistive petal from the top down, shorting that part of it; further out, a finger presses the fabric onto a piezoresistive strip on a conductive segment on the base. The petal's tip and the segment each connect to a pull-up resistor and an analog input.
How the Tablo senses position and pressure: an illustration drawn from the Tablo pages and the NIME 2009 paper, not to scale.

Materials

ItemAmazonAdafruitSparkFunLessEMFMouserDigi-Key
Conductive stretch fabric for the drape (the Tablo's is silver-plated and translucent); for example a knit silver fabric, sold in 20 cm squares, so check the size you need1167485-1167
An embroidery hoop, larger than the bowl and the ring of strips around it
A bowl to turn upside down, not hemispherical (see step 1)
A hand holds a heel-shaped piece of black Velostat with conductive thread taped to it.
Photo: Becky Stern, Adafruit (source), Velostat cut for a shoe sensor, CC BY-SA 3.0
Resistive carbon-loaded plastic sheet (Velostat/Linqstat), for the petals
1361Velostat Film485-1361
Copper foil tape with conductive adhesive, for the petal tips1128PRT-13827
Conductive fabric or tape for the ring at the top of the bowl (the Tablo pages name gold-plated fabric, copper fabric and gold tape)
A folded square of silver-grey woven conductive fabric.
Photo: John Park, Adafruit (source), CC BY-NC-SA 3.0
Conductive fabric for the segments under the pressure strips
1168485-1168
Piezoresistive fabric, such as Eeonyx's EeonTex, for the pressure strips and a disc at the top of the bowl; contact the manufacturer, Eeonyx
A base board, acrylic or plywood, with a seat for the bowl
Pull-up resistors, one for each sensor
A microcontroller that can read 33 analog inputs: 16 petals, 16 pressure strips and the centre disc. For example a Teensy 4.1, which has 18 analog inputs, with two 16-channel analog multiplexersDEV-167711568-16771-ND
The red SparkFun CD74HC4067 16-channel analog multiplexer breakout board.
Photo: SparkFun Electronics, CC BY-NC-SA 3.0 (SparkFun, 2011)
A 16-channel analog multiplexer breakout (CD74HC4067)
BOB-09056474-BOB-09056
Hookup wire
A red bowl upside down at the centre of a round board, with one black strip running down its side and a copper-coloured disc on its top. Around it, a ring of copper-coloured segments, one with a grey strip laid on it.
The parts, from Tablo Textile Sensing Description.

Tools

  • Scissors
  • Soldering iron
  • An MCU IDE

Skills

  • Cutting and taping conductive materials
  • Soldering
  • Reading sensors through voltage dividers
  • Sending OSC messages

Instructions

  1. Choose the bowl. A hemispherical bowl does not work well. A catenary profile may make the reading change almost linearly with the finger's position; the Tablo's own bowl, a found cereal bowl, comes close. Fabric draped over the bowl hangs in a curve like the witch of Agnesi.
  2. Cut the corolla: a flower-shaped piece of resistive plastic with 16 petals. Lay its centre on the bowl's flat top and its petals down the sides, keeping them apart.
  3. Fold each petal's tip under the rim, inside the bowl, and tape it there with conductive-adhesive copper tape. Solder a wire to each piece of tape.
  4. Make the common centre: a ring of conductive fabric or tape on the bowl's flat top, touching every petal, and wired to ground. The drape is grounded wherever it touches this ring.
  5. Seat the bowl at the centre of the base. Around it, tape 16 segments of conductive fabric to the base, each with its own wire, and lay a strip of piezoresistive fabric on each (the first Tablo had two). Slip a disc of piezoresistive fabric into the top of the bowl as a centre pressure sensor.
  6. How the centre disc is wired: not yet written.
  7. Wire every sensor as a voltage divider: a pull-up resistor from the supply to the sensor's wire, which an analog input reads (most microcontrollers cannot enable a built-in pull-up on an analog input; first-generation Arduinos could); the ground ring completes each circuit through the drape. Measure each sensor's resistance untouched and fully pressed, and choose its pull-up near the geometric mean of the two: that gives the widest range of readings.
  8. Surround the sensing nodes with grounded fabric, to keep electrical noise down.
  9. Stretch the conductive fabric in the embroidery hoop, and fix the hoop to the base so that the fabric drapes over the bowl and rests on the ground ring. The hoop comes off, so the fabric, the only moving part, can be washed or replaced.
  10. Read all the inputs, through the multiplexers, and send them as OSC messages over USB. The Tablo drove resonance-model sounds in Max/MSP.
  11. Calibrate each petal: record its reading with the fabric resting, and with the fabric pressed fully onto the bowl along it, and scale it to a displacement from 0 to 1.
  12. Position: one mapping from the 2008 paper splits the petals into two halves, one for each hand. Sum each half's displacements as vectors along their petals, to give each hand a direction and an amplitude, and take the ratio of the arithmetic and geometric means of the displacements as the size of the gesture.
  13. Pressure: map each strip's reading, and the centre disc's, to aftertouch.
  14. Strokes: estimate a strike's speed from how fast the displacements change, using the moment the fabric reaches a pressure strip as the reference point. Follow which petals are displaced, reading by reading, to find the direction and speed of a stroke around the bowl.
  15. Play. The sensitivity changes with distance from the bowl's centre, a variable gearing that suits several styles: tap the fabric onto the bowl with the fingers of one hand, like a hand drum, while leaning toward the other side with the palm; or play with both hands from the hoop toward and around the base of the bowl.
A hand lifts the grey stretch fabric at the edge, showing the black bowl with thin red lines running down it, copper-coloured pieces at its base, and dark grey fabric segments on the flat ring around it.
Under the drape. From Tablo Textile Sensing Description.

Variations

  • Put it on the floor and play it with the feet, as several pedals.
  • Shine programmable lights up through a translucent stretch fabric as visual feedback, like a guitar's frets, and put the loudspeaker under the surface.
  • Build it in a line, like a keyboard, instead of in the round.
  • Scale it up so that several people can play it together.
  • Try other bowl profiles, such as a catenary, and compare how linear the response is.
  • Start smaller, as the first Tablo did, with two pressure strips on the base.
The first prototype opened: its hoop of grey fabric lifted off a plywood base, which holds a black bowl ringed in copper at its top and two large grey pads around it.
The first prototype, with two pressure pads on its base. From the teardown page.
A person holds up the Tablo's hoop; red and blue lights shine through its dark fabric.
Lights shining through the fabric. From the Tablo page.

Related resources

Coding Prompt Build Block

A prompt to give a coding assistant, to start the code for this activity. Copy the box, answer its questions about your board and pins, and test what comes back on the bench before you rely on it.

I am building "Tablo: an E-textile Controller for Stroke, Position and Pressure", the activity at https://adrianfreed.com/tablo-etextile-controller.html.

Write a program for a microcontroller that reads a fabric controller's 33 sensors: 16 petals and 16 pressure strips, through two 16-channel analog multiplexers (CD74HC4067), and a centre disc. Each sensor is a voltage divider with an external pull-up resistor (most microcontrollers cannot enable a built-in pull-up on an analog input), and its reading falls as the fabric presses on it.

Calibrate each petal: record its reading with the fabric resting and with the fabric pressed fully onto the bowl along it, and scale it to a displacement from 0 to 1. For position, split the petals into two halves, one for each hand: sum each half's displacements as vectors along their petals, to give each hand a direction and an amplitude, and take the ratio of the arithmetic and geometric means of the displacements as the size of the gesture. Map each pressure strip's reading, and the centre disc's, to aftertouch.

Send everything as OSC messages over USB, at a steady rate; the Tablo drove resonance-model sounds in Max/MSP.

Libraries to explore:

Before writing anything, ask me what I am using: the board and its pins, or the software (such as Max, Pd or Python), and check its documentation for what this needs. Put the pin numbers, ranges and other settings in one block at the top, each with a comment. Say which of the libraries above you use, and why. Start with a test that shows the raw readings, so that I can check the wiring and the ranges before the rest.

This activity by Adrian Freed is licensed under Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International (CC BY-NC-SA 4.0): you may share and adapt it with attribution, for non-commercial purposes such as personal projects and teaching, and you must share adaptations under the same licence. Product names and links belong to their suppliers.

Design strategies: