Back to list

RenHDrum

Make the rumble in emulators feel like the real thing: 5ms micro-timed HD Rumble and DualSense audio haptics in a Rust research engine.

电量还有一格
Author
@电量还有一格
Project ShowcaseDeveloper ToolsOnlineclaudegemini
2
0

Project intro

Controller rumble is more than a buzz: the Switch's HD Rumble can mimic ice cubes shaking in a glass or coins dropping into a pocket, and RenHDrum is built to chase exactly that feeling — a real-time haptics synthesis engine in Rust that brings authentic HD Rumble and DualSense haptics into emulators. It exports a zero-allocation C ABI with no external crate dependencies, so emulator authors can plug it straight in.

It tackles four hard problems: 5ms AM/FM multi-sample envelopes with attack pre-emphasis, so vibrations start and stop cleanly; Bluetooth packet pacing with Write-After-Input gating, so wireless packets don't choke controller input; DualSense 48kHz four-channel audio haptics that drive the PS5 controller's voice-coil motors directly; and translation of Switch rumble into the four motors of an Xbox One controller. It supports the Switch Pro Controller, DualSense, and Xbox One S, over USB or Bluetooth.

The project has 22 stars and 17 commits on GitHub, and just shipped v0.2.1, with v0.2.0 released the same day — updates are coming fast. Author Three-Dola also keeps a public research notebook that walks through the low-level problems one by one — 5ms micro-timing, Bluetooth pacing, DualSense 48kHz DSP — with oscilloscope traces and measured data, not just a code dump.

Be clear about the limits: this is a research core library, not an app ordinary users can download and play with — you have to wire it into an emulator fork to feel anything. Switch 2 and Steam controllers are still at the research stage and aren't playable yet, and beyond the Xbox One S, other controller models rely on users reporting back how theirs feels.

Actions

Visit project URL

Tech stack

rust

Project info

Project category
Developer Tools
Project status
Online
Collaboration intent
None

Comments (0)

ME
0/1000
Loading comments...