Issue
Road bumps' heave channel renders from the instantaneous heave magnitude
above a threshold. In games where heave reads ~0 at rest (which the effect
relies on to stay silent on smooth roads), freefall reads ~9.8 m/s², above
the default full scale, so a jump likely produces full-strength rumble for
the whole flight. Code-derived prediction, not yet observed; the test
settles it.
Test
Disable all effects except road bumps. Disable airborne ducking. Jump.
Any title other than Forza works (heave is the only road bumps input
everywhere else); Wreckfest 2 or AC are good candidates.
- Before fix: continuous rumble while airborne confirms it; silence clears
this issue.
- After fix: silent while airborne; curbs, potholes, and landing impacts
still trigger road bumps haptics.
Possible fix
High-pass the heave channel: bumps are transients, sustained freefall is a
DC offset. A high-pass ignores freefall while keeping curb hits and landing
thumps. Applies inside the effect, so it covers every telemetry source;
titles whose freefall heave reads ~0 see no change. The filter must be
time-based, since sources tick at different rates.
Related: #30, #32, #35.
Issue
Road bumps' heave channel renders from the instantaneous heave magnitude
above a threshold. In games where heave reads ~0 at rest (which the effect
relies on to stay silent on smooth roads), freefall reads ~9.8 m/s², above
the default full scale, so a jump likely produces full-strength rumble for
the whole flight. Code-derived prediction, not yet observed; the test
settles it.
Test
Disable all effects except road bumps. Disable airborne ducking. Jump.
Any title other than Forza works (heave is the only road bumps input
everywhere else); Wreckfest 2 or AC are good candidates.
this issue.
still trigger road bumps haptics.
Possible fix
High-pass the heave channel: bumps are transients, sustained freefall is a
DC offset. A high-pass ignores freefall while keeping curb hits and landing
thumps. Applies inside the effect, so it covers every telemetry source;
titles whose freefall heave reads ~0 see no change. The filter must be
time-based, since sources tick at different rates.
Related: #30, #32, #35.