Not another copy:
how emulators recreate HD Rumble
Switch HD Rumble is not ordinary motor vibration: it sends a low and a high frequency band, each with its own strength, changing several times per frame. Many PC emulators flatten this into two plain motor strengths. RenHDrum (powering Ryuhdr and Brontide) keeps all 4 parameters, packs 3 samples into every 15 ms packet, drives the DualSense's voice coils, and keeps rumble from delaying your buttons.
At a glance
| Criteria | Eden (Nightly) | Ryubing (Canary-1.3.351) | RenHDrum (Ryuhdr & Brontide) |
|---|---|---|---|
| Keeps pitch (low & high frequency) | ✗ Drops pitch, keeps strength | ◐ Yes, toggle off by default | ✓ All 4 parameters |
| Vibration steps per 15 ms packet | — n/a (plain rumble) | ◐ 1, close packets dropped | ✓ 3, peaks merged |
| DualSense HD haptics | ✗ Plain rumble | ✗ Not supported yet | ✓ Voice coils: USB + Bluetooth (Brontide) |
| Bluetooth button safety | ✗ Rumble queue can skip input | — Not measured | ✓ Rumble written after input |
Audio illustration only: your speakers play a sound to help you imagine the difference. It is not the real vibration signal.
Quick glossary
- HD Rumble
- Switch rumble that carries two frequency bands, each with its own strength, so it can play pitch and texture.
- AM / FM
- Amplitude (how strong) and frequency (how high the pitch) of each band.
- Packet (15 ms)
- One rumble message to the controller. A real Switch packs 3 vibration steps into each.
- Voice coil
- The speaker-like actuators inside DualSense. They play a waveform, not just on/off strength.
- SDL
- The open-source library emulators use to talk to controllers.
Three Paths from Game Telemetry to Your Hands
Three Different Approaches
Directly comparing how each emulator processes rumble telemetry in code and what it feels like in your hands.
Eden (Nightly)
A game's rumble sends two frequency bands (low and high), each with its own strength (strong and weak). Eden keeps the strength but drops low and high pitch before sending commands to the controller, like an ordinary rumble motor. DualSense controllers are handled the same way.
The controller buzzes, but musical notes and footsteps all feel the same, like an old rumble motor.
Ryubing (Canary-1.3.351)
Has an HD Rumble toggle (must be turned on manually). It sends both low and high pitch to Switch Pro Controllers and Joy-Cons, but packs only one vibration step per packet and drops packets that arrive close together. DualSense HD haptics are not yet supported. (Project status: unclear).
Produces recognizable melodies, but lacks crisp short micro-textures; in our physical hardware tests, vibrations occasionally became erratic or ceased altogether.
Ryuhdr & Brontide
Keeps all 4 parameters. Packs 3 AM/FM samples into every 15 ms packet like a real Switch, merges peaks instead of dropping packets, and only writes rumble into free slots (on Bluetooth, right after the button report). DualSense drives its voice coils through 48 kHz 4-channel audio over USB.
On our real controllers, Ryuhdr 0.4.0.1 and Brontide 1.0.0 feel the same (one shared core, checked against Ryuhdr by golden tests). Musical notes stay distinct like on a Switch, and Bluetooth doesn't swallow button presses. [Our test]
Built from Hardware Documentation, Not Copied
We did not copy the implementations of Eden or Ryubing: RenHDrum was developed independently from community hardware reverse-engineering specifications (switchbrew, dekuNukem) and validated by recording real gamepad acoustic audio to isolate accurate frequency codes.
Why SDL3 Matters
Brontide is our SDL3 testbed: the same unified base that will let RenHDrum reach new controllers.
Ryuhdr's SDL2 foundation has proven stable and resilient, but lacks driver infrastructure for next-generation hardware. SDL3 already includes driver foundations for emerging gamepads. By building Brontide on Eden with SDL3, we establish a shared, modern runtime. Today, Brontide delivers true HD Rumble for Nintendo Switch Pro Controllers and PlayStation DualSense gamepads; next-generation gamepads represent our forward-looking research roadmap.
Switch 2 Pro & Joy-Con 2
SDL3 includes USB driver support and new 5-byte HD Rumble packets. Expanding support requires adding Bluetooth transport, unlocking frequency encoding in SDL, and validating on physical hardware.
Steam Controller
SDL3 includes drivers for both 2015 and 2026 trackpad controllers. Because linear actuators handle one frequency at a time, RenHDrum's dual bands will blend into a single resonant tone.
Xbox Controllers
Researching HD Rumble emulation on standard eccentric rotating mass (ERM) rumble motors. Experimental exploration, no timeline or ETA.
Your Controller Next?
Because RenHDrum and patched SDL3 form a shared architecture across Brontide and Ryu-HDRum, every new controller driver added to the core benefits multiple emulators at once.
Credit Where It's Due
Building upon open foundations with deep gratitude for upstream pioneers.
We hold deep respect and gratitude for the teams and developers behind the projects compared above. Ryubing took the pioneering first step of implementing genuine HD Rumble communication for the Ryujinx lineage (adapting MIZUSHIKI's JoyShockLibrary-plus-HDRumble). Likewise, Eden's codebase included early controller identification recognizing Pro Controllers and DualSense gamepads as HD-capable devices. Furthermore, SDL3 (Valve and community contributors) contributed modern drivers for next-generation hardware.
These efforts showed that players care about how rumble feels. RenHDrum, Brontide and Ryu-HDRum build on these foundations, adding packet pacing, DualSense haptics and Bluetooth input safety.
Note on Methodology: Based on the source code of Ryubing Canary-1.3.351, Eden nightly 989768aa46 of 19 Oct 2026, and SDL 3.4.8. Upstream codebases may change; please tell us if any technical description here becomes outdated. [Our test] designates observations from physical hardware testing on Switch Pro and DualSense controllers conducted by Three-Dola. Ryubing project status is unclear.
Copied • Referenced • Our Own
A clear, accountable breakdown of every technical component: where it came from, its license, and what we built.
| Component | Source | License | What We Did |
|---|---|---|---|
| Brontide emulator core | Eden (git.eden-emu.dev) | GPL-3.0 | Forked, added thin HD Rumble hook |
| Ryuhdr emulator core | Ryujinx 1.1.1403 | MIT | Forked, added HD Rumble & DualSense |
| Amplitude & frequency LUT table | dekuNukem (Nintendo Switch Reverse Engineering) | Public documentation | Referenced, rewritten |
| Bluetooth report 0x32 format | SAxense (egormanga) | MPL-2.0 | Referenced report layout, written from scratch |
| DualSense USB audio haptics | Nielk1 & DualSense VCM community | Public documentation | Referenced |
| SDL | libsdl.org | zlib | Used with lightweight custom patches |
| RenHDrum core (DSP, scheduler, packet encoding) | Three-Dola | MIT OR Apache-2.0 | Original work |
If you see your work here and want it credited differently, open an issue: we will fix it.