On the system level (image below), there are four types of HD Rumble 2 vibrations:
- Haptic vibration instruction
- Audible vibration instruction
- Streaming PCM waveform
- Preset PCM waveform

An “instruction” basically is a command to the motor to vibrate at a given frequency and amplitude (image below), sent from the console to controller every 0.125ms. For reasons I don’t understand, the haptic and audio instructions are treated as two different categories (but then encoded together).

A long waveform, such as a tune, is streamed from the console to controller, sent every 20ms; this is a “streaming PCM”. On the other hand, a short waveform that is frequently used and needs instant response (e.g., force feedback for shooting) is pre-loaded in the controller’s memory as a “preset PCM”. In either case, the controller’s MCU converts the PCM into instructions, and passes them to the motor every 0.125ms.
In theory, the user has individual controls over:
- Haptic rumble strength
- Audible rumble volume
- Overall output level (affecting both)
… but this seemingly has not been implemented in the System.
Source: Patent application JP2026015708
[Originally posted on 2026-03-24 Pacific Time]