Notebook

Dated working notes: devices and demonstrations, workshops and events, code, finds, and annotated performances. Reflections are under Reflections; the 2010 Exploratorium notes are on Exploratorium 2010, under Projects.

Games in the Round: a Gaming Platform from the M5Stack Dial's Bezel and Round Screen

Make games for a round screen played with the ring around it: an M5Stack Dial, a LiPo cell and a 3D-printed case that holds both, with games such as a pinball table that falls into a vortex, and several players over the Dials' own Wi-Fi, with no server.

Recuperate the Razer Hydra: Two Magnetic 6-DoF Controllers Back to OSC, MIDI and Two-Player Games

Bring the Razer Hydra back without Sixense's unmaintained SDK: build on VRPN's open driver, read and record its streams, calibrate its magnetic tracking, replace its default gamepad mode, build a 3D viewer with record and playback, then map its two controllers to OSC, MIDI and two players.

Recuperate the P5 Glove: an Orphaned Data Glove Back to OSC, MIDI and Games

Bring Essential Reality's 2002 P5 Glove back into use without its vendor's software: find what may legally be used, read its streams, calibrate them, switch off its mouse mode, build a 3D viewer with record and playback, then bridge it to OSC, MIDI and a game device.

Add Rumble to the USB Nunchuck: a MOSFET and a Pager Motor

Give the USB Nunchuck the vibration the Wii Remote has and the Nunchuck lacks: a coin vibration motor inside, switched by a logic-level MOSFET from a spare pin of its microcontroller, and set by OSC or MIDI from the computer.

Recuperate the Sensel Morph: Pressure Images, Overlays and Games on an Apple-Silicon Mac

Bring Sensel's Morph back on an Apple-silicon Mac without Rosetta or Sensel's closed libraries: build its open driver natively, read its pressure images with the open Liberation decoder, learn what each overlay makes the firmware send, and start with the gaming overlay before trying the drum pad, plain, Buchla Thunder and Art overlays for games.

A Phone as a Gamepad: TouchOSC over Wi-Fi to a Microcontroller That Plays a USB Gamepad

Design a gamepad's controls in TouchOSC on a phone, send them over Wi-Fi as OSC to an ESP32-S3, and let the ESP32-S3 present them to a computer as a USB gamepad: the computer sees a gamepad, and the player plays a layout of their own.

A Phone as a Gamepad over Bluetooth MIDI: TouchOSC to an nRF52840 That Plays a USB Gamepad

The Bluetooth sibling of the Wi-Fi recipe: design a gamepad's controls in TouchOSC on a phone, send them as MIDI over Bluetooth LE to a board built on Nordic's nRF52840, and let the board present them to a computer as a USB gamepad, with no Wi-Fi network in between.

Fingers as Shapes: Point, Vector, Triangle and Quadrilateral Gestures from a Multitouch Screen, as OSC

Read one to four fingers on a phone or tablet as a shape (a point, a vector, a triangle or a quadrilateral), send the shape's measures as OSC, and play a granular synthesizer with them. The triangle is the gesture set of the ICMC 2001 paper for the Tactex MTC Express pad; the others generalize it.

Try a Ukulele: Your Guitar Chord Shapes in a New Key

Play a ukulele with the chord shapes and melodic figures you know from the guitar's four highest strings: they sound a fourth higher, in a new key.

Put a 9-DoF Sensor Inside a Wii Nunchuck: 3D Orientation on Its Own Cable

Open a Wii Nunchuck and solder a small 9-DoF board, a gyroscope, accelerometer and magnetometer, to its own I2C wires, so that its cable carries the turning of the hand and a fused 3D orientation beside the joystick, buttons and accelerometer.

Make a Wii Nunchuck a USB Controller: a BNO086 on SPI and a Microcontroller Inside

Build a BNO086 orientation sensor and a small RP2040 board into a Wii Nunchuck in place of its cable: the sensor on SPI, the Nunchuck on an I2C bus of its own, and one USB-C port that is a serial port for OSC, a MIDI device, a gamepad and a mouse at once.

Make a Universal Platform for Frankensteining Controllers

Build one battery-powered RP2040 base that takes Wii, USB, touch and analog controls apart and puts them back together as new instruments, with sound, a servo, LEDs and a small display.

E-Textile Pressure-Sensing Kalimba

Build a controller of stiff bamboo strips, placed for the thumbs, that press on piezoresistive fabric, so that each tine measures how far it is plucked, pressed or bent.

Augment an Electric Guitar with Surface Sensors

Tape strip, force and fabric sensors onto an electric guitar to find which parts of it can be reached while playing the strings, then glue down the ones that work.

String Synthesizer

Pull strings instead of pressing keys: a row of long-lever microswitches, each worked by its own string.

Add Pressure Sensitivity to Switches

Many buttons close their contacts with conductive rubber, which is piezoresistive: read them as analog inputs and they report how hard they are pressed.

Replace a Game Controller with Mouse and Keyboard

A keyboard and mouse adapter lets a console take a computer keyboard and mouse in place of its game controller.

Intervene in USB Controller I/O Streams with an MCU Interposer

Put a microcontroller with a USB host port between a game controller and the computer, pass everything through, then remap.

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

Drape conductive stretch fabric over an upturned bowl ringed with resistive and piezoresistive strips, and sense where the hands press, how hard, and how they strike and sweep.

Paper FingerPhone

Rebuild the Stylophone in conductive paper: a keyboard you play with your fingers, a paper pressure sensor for vibrato, one microcontroller, and a pizza box as the sounding board.

Hair-Braid Sound Controller

A wig with three strands, each sounding one note; braided together, they sound a chord. Made by Tess Buckley with Adrian Freed at the Stochastic Labs residency.

Headpieces That Sound Through Touch

Two crocheted e-textile headpieces, one tuned to a minor key and one to major, that sound more as their wearers touch: a circuit closed through contact. Made by Tess Buckley with Adrian Freed at the Stochastic Labs residency.

Set Up a Gametrak for Music

Get a Gametrak's six tether readings and its footswitch into Max/MSP or Pd, and pass them on as OSC.

Build a Tether Sensor from String Pots and Joysticks

Make a Gametrak-style three-axis tether sensor from a string potentiometer and a joystick.

Tethered Theremin

Play a theremin with Gametrak tethers: one hand's position sets the pitch, the other's pull the volume.

Pendaphone

Hang a ball from a ceiling-mounted Gametrak: its weight balances the tether's pull, and its swing plays the sound.

Steer Sound with a Tether

Move sounds around a room with a Gametrak's tether and a sound spatialization system, and strike a virtual gong.

Tethered Cube

Tie a light cube between a floor and a ceiling Gametrak to sense its position and orientation, and play with how it twists.

Conducting with a Geared Gametrak

Choose a Gametrak's range of motion with its tether length, and use it to follow conducting gestures.

Tea-Chest Bass

Pin a Gametrak tether along an angled pole to make a plucked, stopped string, like a tea-chest or washtub bass.

Tethertonium

Add conductive thread to a tether and a conductive fingerboard, and time touches with the footswitch input: a simulated trautonium.

Kotrak

Take Gametraks apart and remount their tether sensors in a row, to capture a koto player's pressing and pulling of the strings.

Ondestrak

Rebuild a Gametrak into an Ondes Martenot-style ribbon controller: a finger ring on a loop of cord sets the pitch, and pressing the board sets the volume.

Replace the Gametrak's Electronics

Swap the Gametrak's own circuit board for your own microcontroller, wired or wireless.

Round Slide Harp

A round, upright harp of Gametrak tethers bound by a movable ring, for groups of players from young children to skilled musicians.

Semblance Typology of Entrainments

These english words are built from Greek or Latin prefixes for "same" or "together" or "with". There are many others still to be explored, e.g.,

synonym - together in meaning

synorogeny - form boundaries

conclude- close together

symptosis - fall together

symptomatic - happening together

symphesis - growing together

sympatria - in the same region

symmetrophilic - lover of collecting in pairs

synaleiphein - melt together

A Synthesizable Hybrid VCO using SkyWater 130nm Standard-Cell Multiplexers

Summary

I introduce a new synthesizable VCO using (n+1) mux2i cells from the SkyWater130 PDK to form a (2n+1) hybrid ring oscillator.

Birds of the East Bay 2020

Enjoy this Flockumentary:

Exercising the odot language in Graphics Animation Applications

One of my jobs on the odot language development team was developing a diverse set of applications and tests to give feedback to the language design team (mainly John MacCallum) on affordances and difficulties with the language.

C++ container output stream header file

This header file provides extensions to the iostream << operator so you can pretty print C++ containers. It has a few interesting examples of template metaprogramming and uses some of the more modern C++ (2017) features. The repo code is evolving: https://github.com/adrianfreed/containerostream

Routing the FingerPhone

Intro

I am studying how IC routing is done in large chips. I am following advice I often give people that it is helpful to learn how to do something by hand before using an automation tool. I was skeptical about this for chip routing because the scale of the problem these routers solve (trillions of gates) is outside what can be done by hand. As it turns out a few of the things I know about routing PCBs helped prepare me for learning some of the conceptual and strategic aspects of what these tools do.

Tablo: teardown of the first Tablo Prototype

It has only two base pressure sensors and uses a pre-Arduino era microcontroller

Tablo Demonstration at the San Francisco Exploratorium

This overview of e-textile music controllers includes a brief demo of the Tablo 8 minutes in.

Tablo Textile Sensing Description

Position is sensed by measuring the resistance of each ring of 16 conductive plastic strips around the bowl. The resistance is lowered as the draped conductive fabric shorts out more of a section of the strip. Pressure is sensed using the piezoresistive fabric strips around the annulus surrounding the bowl. Each piezoresistive strip sits on a segment of conductive fabric taped to the acrylic base. The resistance between this conductor and the ground potential is established by the conductive draped fabric in contact with the conductive gold tape at the top of the bowl.