OpenResonance
Open-source wearable haptics. Build it yourself and feel what your computer is playing.
Role Solo project
01 / 05
Drag to spin · tap to buzz
Two wristbands that turn whatever your computer plays into vibration you can feel, split across separate motors so a kick drum lands as weight and a snare lands as a snap. It works with games, music and sim racing telemetry. Board, case, firmware and app are all open, and the repository has everything needed to build a pair.
What it does
Two pods sit either side of your wrist and vibrate in step with whatever the computer is playing. A bass hit lands as weight, a snare lands as a snap. It works with anything the machine can play, because it listens to the audio itself instead of waiting for a game to support it.
It also takes live sim racing telemetry, so gear shifts, revs and braking come through as separate sensations, and a game engine can drive it directly over a documented protocol.
It is open, and it is finished
Board, case, firmware and desktop app are all published. The repository has the PCB fabrication files with the exact ordering settings, print profiles for the case, the firmware, the app, and the BLE protocol, which is everything you need to build a pair yourself.
Why two motors and not one
Your controller has one motor and one buzz. That is the entire vocabulary, and it is welded shut.
Here the mapping is the product. The desktop app decides which part of the sound goes to which motor and how hard, with four processing modes per motor and presets you can keep. If you want it to behave differently, you change it.
Signal path
06 stages- 01 System audio no virtual cable
- 02 FFT NumPy, ~60 Hz
- 03 Bands low / high split
- 04 Bluetooth LE to both wristbands
- 05 ESP32-C3 20 kHz silent PWM
- 06 Motors thump and texture
It listens to the audio itself rather than waiting for a game to support it, which is why anything the computer can play already works.
Four prototypes
04 steps


Prototype 1
Two tiny coin motors in a printed case. Comfortable, but far too weak to feel through skin, and the battery did not fit inside the shell.
Prototype 2
A deliberately rough second pass: stronger motors pulled out of hobby servos, a fixed layout, a proper strap. Enough to prove motor choice was the whole problem, though it still buzzed rather than thumped.
Prototype 3
The split layout arrives. One large low-frequency motor for the thump, two small ones for detail, so different parts of the sound map to different sensations. First version that felt like a product, even with a mess of wire inside.
Prototype 4
The final build. The wiring became a custom KiCad board fabbed by JLCPCB, the case was redesigned around it, and a Python app now captures live audio and streams both bands over Bluetooth.