I built this as a prototype for a massively scalable haptic broadcast system. I'm using ESP-NOW to send real-time FFT patterns from a single leader node to as many followers as I want: it's designed to be fast, cheap, and ready for 2026-stack parametric manufacturing.
I chose the ESP-NOW protocol for PULSE so I could bypass all the usual Wi-Fi and networking headaches. It’s a completely autonomous ecosystem; I wanted something that could scale to an industrial level without needing any external dependencies like routers or cloud servers.
Entirely standalone. No computers, cloud servers, or local Wi-Fi bridges required for signal routing.
High-speed Fast Fourier Transform analysis is performed directly on the ESP32-C3 Leader nodes in real-time.
True plug-and-play. Followers synchronize instantly to the broadcast frequency the millisecond they receive power.
I built the software engine for PULSE to be as responsive as possible. For the Leader node, I'm using arduinoFFT to slice incoming audio into discrete frequency bands: I'm not just sending raw volume, I'm analyzing the sound in real-time on the ESP32-C3, splitting it into Bass, Mids, Treble, and Transients. This data is then packed into a tight struct and broadcasted over ESP-NOW at roughly 100Hz.
The Followers are designed to be as lightweight as possible. Each node listens for the broadcast and filters for its assigned channel. I implemented an Asymmetric Envelope (Instant Attack, Slow Decay) on the followers; this ensures that even if a frame is dropped over the air, the haptic motor feels responsive and doesn't stutter during fast transients.
I also built a mobile-friendly Captive Portal for the Leader. It lets me tune the mic gain, motor gates, and frequency splits from my phone without having to re-flash the code: it’s the ultimate way to calibrate the haptics in real-time.
View Source on GitHubI've centered the hardware around standard, modular components that are easy to find. My parametric scripts are tuned specifically to these parts, so every time I print a new shell or sled, everything snaps together with a perfect friction-fit.
The SuperMini is basically the brain of everything I build here. I love these boards because they're dirt cheap; I usually grab them for under $2.00 during big sales. More importantly, they're fully Open-Source Hardware. Right down to the RISC-V CPU architecture, everything is open, which keeps the whole infrastructure transparent and easy to verify.
I designed this architecture to be as versatile as possible. My parametric generators can handle
virtually any haptic motor I throw at them; whether it's a precision coreless unit, a motor I've
harvested from old electronics, or even a simple handmade coil I wound myself. Haptics should be
cheap and accessible, and this setup makes that a reality.
→ Understanding DC Brushed Motors (Concept Video)
I’ve always been fascinated by those vibrating disc pagers you see at restaurants; the ones they hand you while you wait for a table. They’re simple, rugged, and remarkably effective. I wanted to capture that same industrial form factor for PULSE, so I designed the Haptic Saucer.
While it looks like a restaurant pager, its function is completely different: these discs are designed to slide into wearables or pockets to give people a tactile, visceral experience during live music. I’ve envisioned two main ways to use them. First, there's the General Saucer, which captures the full spectrum of audio; low, middle, and high, into a single tactile unit.
Then there are Specialized Saucers tuned for specific frequencies. I can build a Saucer with a massive, heavy haptic motor dedicated solely to low-end bass bins, while others use smaller, high-RPM motors to replicate the sharp energy of the treble. By mixing and matching these specialized discs across different parts of the body, I can create a distributed haptic array that maps perfectly to the music.
Explore the Haptic Saucer →Capturing haptics in action through still photography is notoriously difficult since tactile sensations are felt rather than seen. Here is the actual production hardware: the heavy-duty protective outer saucer puck and the inner modular drive sled. The casing is specifically engineered to shield the sensitive motor, ESP32, and LiPo battery from severe mechanical impacts and moisture during energetic live stage performances.
I used to use browser-based SketchUp for rapid modeling, but lately, the experience has been going downhill. It feels like they're stripping away core features, cluttering the interface with tools I didn't ask for, and constantly pushing for premium upgrades. It's enshittification in real-time, as Cory Doctorow would put it.
I considered switching back to Fusion360 or Blender, but I realized those tools all have a built-in speed ceiling. I only have one set of hands, and manual modeling can only go so fast. Moving completely over to parametric modeling was the obvious solution. Now, I can zap up tight form factors with dedicated slots for hardware and wiring, then subtract those negative shapes from my models in seconds: it completely removes the design ceiling while helping me build a massive personal library of reusable parts.
(Full disclosure: I got a bit sidetracked auditing the best real-time parametric modeling tools for the 2026 stack; the multi-environment comparison you see below is the result of that deep dive).
High-performance cylindrical housing for haptic assemblies. Uses a sled-in-shell architecture with modular tracks.
When I need serious speed for complex math, I go straight to the raw WASM kernel. It's the fastest boolean engine I've found for the web.
I use this when I want a purely functional approach. It’s predictable, modular, and fits perfectly into my existing JavaScript workflow.
Live audio-to-haptic synchronization test: performing music via a Moog Theremini, where real-time frequency analysis on the Leader node triggers immediate tactile vibration on the table-mounted PULSE follower saucer.