Hair-Braid Sound Controller

Series: alt.ctrl activities

Made by Tess Buckley with Adrian Freed, at the Stochastic Labs residency. A wig with three strands, each carrying a sound: alone, a strand is one note; woven together, the strands become a chord, here A minor. Braiding takes another pair of hands, so the instrument is played between two people.

… This summer at Stochastic Labs residency I focused on SONIFYING the us, making the collective visible, memorable & musical.

This piece takes the form of a wig with three strands, each carrying a sound. Alone, a strand is one note. Woven together, the strands become chords (in this case A minor), the tonalities that make music, that make life. We become more when entangled & in contact. To braid is to make a new sound and meaning, something that didn't & couldn't exist in any single strand.

Braiding is one of the oldest rituals of care we have. It takes another pair of hands, someone trusted enough to hold your head and pull the strands taut. That dependency is the point. Braiding is grooming turned into intimacy, a repeated tending that says: I will handle you gently, and you can let me.

A braid is a small, literal diagram of how identity actually forms: not sealed inside one body, but worked out between bodies, strand over strand, each one legible only in relation to the others. A single strand held alone has no pattern. It becomes part of something only once it meets another. That is as true of my three sisters and mom's hair, pictured behind the piece, as it is of a self.

[…]

A knot, a chord, a person: none of it means anything as one strand alone. All of it, entangled and in relation, means more.

Made with Adrian Freed

Tess Buckley, in a LinkedIn post about the piece
The braid making sound (15 seconds, with sound).

Materials

ItemAmazonSeeed StudioMouser
A wig with three strands
Resistive thread, knotted down each strand of the braid
A Seeed Studio XIAO SAMD21 (sold earlier as the Seeeduino XIAO): the braid's sensing was developed on it, and its SAMD21 chip has a touch controller. Three of its pads read the three strands102010328713-102010328
A USB-C cable, from the board to the computer
A computer with Chrome or Edge, to run the sound page that reads the board over Web Serial and plays the notes

Tools

  • Scissors
  • An MCU IDE
  • Chrome or Edge, for the sound page

Skills

  • Braiding, with a partner
  • Knotting thread down a strand
  • Programming capacitive touch sensing on an MCU
  • Making sound in a web page

Instructions

  1. Give each strand its own note and each pair of strands its own register of one chord. In the build, a touched strand chimes a note of C major, C5 for the left strand, E5 for the middle and G5 for the right, and two strands braided together hold an A minor triad in a register of their own: left and middle A2 C3 E3, left and right A3 C4 E4, right and middle A4 C5 E5. All three joins together make A minor across three octaves, and C major, A minor's relative major, keeps every chime consonant with it.
  2. Knot resistive thread down the length of each strand, tying it around the strand at intervals, as the video shows.
  3. Wire the near end of each strand's thread to its own pad on the board, one that the SAMD21's touch controller can sense on its own: in the build of September 2026, the left strand went to D0, the middle to D6 and the right to D1. D2 and D3 will not do, because the touch controller cannot sense a lone pad through them.
  4. Program the board to read, on those same pads: a touch on each strand, with the touch controller (Adafruit's FreeTouch library); which strands the braid has brought into contact, by driving one strand and seeing whether another follows; and, for strands in contact, the resistance across the join, read with the ADC, which rises the further from the board they meet. Have it send all of this to the computer over USB. A strand's touch reading collapses while it touches another, so read touch and braiding together.
  5. Make the notes on the computer, in a browser page that reads the board over Web Serial and plays them with Tone.js: a note when a strand is touched, and the chord while strands are braided together.
  6. Play it with someone else: one person wears the wig, or it sits on a stand, and another braids it.
Knotting resistive thread down a strand (1 minute 29 seconds).

Variations

  • Braid more strands: the XIAO SAMD21 has seven pads its touch controller can sense on their own (D0, D1, D6, D7, D8, D9 and D10), enough for up to seven strands. This build has three.
  • Let where two strands join colour the sound: the resistance across a join rises the further from the board it is, and the sound page can open a filter on the chord as the nearest join comes closer to the board. The join positions were not placed accurately, so treat it as a colour, not a ruler.
  • Make the notes on the board instead of a computer, with an M5Stack MIDI Synthesizer Unit on serial, as the Headpieces That Sound Through Touch do. The XIAO's serial transmit pin is D6, so move the middle strand to D8, D9 or D10.

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 "Hair-Braid Sound Controller", the activity at https://adrianfreed.com/hair-braid-sound-controller.html.

Write a program for a Seeed Studio XIAO SAMD21 (or another SAMD21 board) in a wig with three braided strands. Each strand has resistive thread knotted down its length, wired at its near end to its own pad, one that the SAMD21's touch controller can sense on its own (on the XIAO: D0, D1, D6, D7, D8, D9 or D10, not D2 or D3).

Sense three things on the same pads. First, a touch on each strand, with the touch controller: at start-up, with hands off, measure each strand's resting level, and let it follow slow drift only while nothing touches the strand. Second, which strands the braid has brought into contact: float one strand, drive another, and see whether the first follows, in both polarities, driving only one strand at a time so that a braid short never sets two outputs against each other. Third, for strands in contact, the resistance across the join, read with the ADC, which rises the further from the board they meet; turn the touch controller off and clear its pad enables before each such read, because left running it spoiled those readings when this was built. A strand's touch reading collapses while it touches another strand, so do not let its resting level learn from it then.

Send each change to the computer over USB serial as it happens, and a full report at least every quarter of a second, in a form a web page can parse. On the computer, a web page reads the port with Web Serial and plays the sound: each joined pair holds an A minor triad in its own register for as long as the join lasts (left and middle A2 C3 E3, left and right A3 C4 E4, right and middle A4 C5 E5), and a touched strand rings a chime, one pitch per strand from a C major chord (left C5, middle E5, right G5). Keep a join's voice through a dropout shorter than 450 ms, and let a strand chime again only after 285 ms off touch: both were set between the gaps measured in the recorded sessions of this build (join dropouts at 119 to 398 ms and then from 474 ms up; touch gaps up to 270 ms, separate touches 300 ms or more apart), timed by the frames' own clock. Ask me before changing the notes.

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 and Tess Buckley 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: