Skip to content

Lighting

hifihedgehog edited this page May 26, 2026 · 12 revisions

Lighting

DualSense and DualShock 4 lightbar control with fifteen modes (twelve base modes plus three per-press Input Reactive overlay variants), player LEDs for DualSense, and the lightbar above the DS4 touchpad.

Lighting tab with mode picker and audio-band cards


When the tab shows

The Lighting tab appears when the active slot has a DualShock 4, DualSense, or DualSense Edge assigned. It controls:

  • The lightbar base color
  • An Input Reactive overlay layered on top
  • Audio-driven color modulation
  • Palette-based color cycling
  • The player-indicator LEDs below the DualSense touchpad
  • The mute LED above the DualSense microphone

The tab is per pad per slot. Pick a different physical device in the assigned-devices dropdown and the tab re-binds to that device's config. Two Sony pads on the same slot can carry different modes, palettes, and overlay variants. Macro lightbar actions stay slot-level. They fan out across every Sony pad on the slot, each rendering with its own per-device settings.

Priority chain

Game writes always win at packet level. Macro lightbar overrides beat user settings. The Input Reactive overlay layers on top of the base mode. User settings apply when nothing else is driving the lightbar.


Lightbar base modes

A single dropdown selects the active base mode. Thirteen entries.

Mode What it does
Off (Game Owns the Lightbar) PadForge writes nothing for the base. The game or firmware default controls the bar. The Input Reactive overlay can still flash on a black base.
Static Color Solid color from the configured RGB.
Breathing (Single Color Fades) One color fades in and out at the configured period.
Rainbow Cycle Smooth hue rotation through the full color wheel.
Color Cycle Steps through the configured palette. Smooth blend is a toggle.
Audio Pulse — Static Color Modulates the configured base color by the system audio peak.
Audio Pulse — Random Color per Beat A new random hue on each detected onset.
Audio Pulse — Rainbow Cycle Hue rotation modulated by audio peak.
Audio Bands — Three Colors, Hard Transitions Three colors (Quiet / Medium / Loud) with instant switching at thresholds.
Audio Bands — Three Colors, Smooth Gradient Same three colors with linear blending between thresholds.
Audio Bands — Three Colors, Crossfade at Boundaries Same three colors with a configurable crossfade width at each threshold.
Battery — Gradient by Charge Level Color reflects current battery level (red → yellow → green). DualSense and DualShock 4 battery reads.
Strobe — Square-Wave Flash Hard on/off square-wave flash at the configured period.

Sub-sections below the picker show only the controls the active mode needs (period, palette, audio bands, and so on).


Input Reactive overlay

A second dropdown sits under the base picker. The overlay is independent of the base. Pick any base (Static, Rainbow, Audio Pulse, Off) and layer per-press flashes on top.

Variant What it does
Off No overlay. Base mode renders alone.
Random Color per Press Each button press rolls a fresh random hue and flashes it over the base.
Cycle Through Palette Each press steps to the next palette color. Shares the palette editor with Color Cycle base mode.
Base Color per Press Each press flashes a fixed RGB. The flash color has its own picker, separate from the base. A Static-blue base with a white per-press flash works. So does any other pairing.

The flash composes by lerping the base color toward the overlay color by pulseIntensity. At intensity 1.0 the flash is solid. The intensity decays linearly to 0.0 over the configured Hold plus Decay window. At 0.0 the base mode shows through unchanged.

Macro lightbar overrides still beat the overlay. Game-driven writes still win at packet level.

The synth tracks rising edges on the slot's combined output state, including the DualSense touchpad click. Any button on any device mapped to the slot fires a pulse.

Pulse Hold and Pulse Decay

Two sliders below the overlay dropdown apply to all three non-Off variants.

Slider Range Default What it does
Pulse Hold 0–5000 ms 0 The flash holds at full intensity for this long after the press. 0 starts the decay immediately at the rising edge.
Pulse Decay 0–5000 ms 600 After the hold window, the flash fades linearly to 0 over this many milliseconds. 0 cuts off hard at the end of the hold. Useful with a non-zero Hold for a clean on/off blink.

Single color picker

Visible for Static Color, Breathing, and Audio Pulse — Static Color. A color picker, hex input, R/G/B sliders, and a swatch preview live in a bordered card. Each channel has its own reset button.

The hex input takes six-digit RGB (RRGGBB or #RRGGBB). Press Enter or click away to apply.


Period

Visible for Breathing, Rainbow Cycle, Color Cycle, and Audio Pulse — Rainbow Cycle. Range is 250–10000 ms. Default is 3000 ms (a 3-second cycle). Reset returns to the default.


Color cycle palette

Visible whenever Color Cycle is the base mode or Cycle Through Palette is the overlay variant. A wrapping list of swatches. Each entry has an in-place color picker with hex and RGB sliders, plus a remove button.

  • Add Color appends a new swatch with a hue rolled to be distinct from the last entry.
  • Reset Palette restores the four default colors (red, green, blue, yellow).

The palette can hold any number of entries. No fixed cap.

Color Cycle exposes a "Blend smoothly between palette colors" checkbox. On, the bar lerps between consecutive palette entries. Off, it hops at the period boundary.


Audio-driven settings

Visible for every Audio Pulse and Audio Bands mode.

Sensitivity

Slider 1.0–20.0. Default 4.0. Multiplies the WASAPI loopback peak before the lightbar reacts, so quiet content can still drive a noticeable response. The same WASAPI capture as Audio Rumble feeds the lightbar. The lighting path reads the full waveform with no bass-cutoff filter.

Audio bands

Visible only for the three Audio Bands modes. Three bordered cards side-by-side: Quiet, Medium, Loud. Each card has a color picker, hex input, R/G/B sliders, and per-channel reset buttons.

Above the cards are the Quiet-to-Medium and Medium-to-Loud thresholds, set as a percent of the peak range. Each threshold has a reset button. For Audio CrossFade, a "Crossfade Width" slider sets how wide the transition zone is at each threshold (0–50 %, default 5 %).


Indicator LEDs (DualSense)

A separate card below the lightbar mode picker. Five small white LEDs below the DualSense touchpad show a player-slot pattern. One mute LED sits above the microphone.

Control Values
Player Pattern Off, Player 1, Player 2, Player 3, Player 4, All
Mute LED Mode Off, Solid, Pulse
LED Brightness High, Medium, Low. Affects the player row. Firmware exposes no separate brightness register for the mute LED.

Each dropdown on this tab has a one-click reset button to its default (Off / Off / Off / High).


DualShock 4

The DS4 lightbar sits above the touchpad as a single LED strip. The same RGB the dispatcher writes is the color of the touchpad-area light.

DS4 supports the full set of thirteen base modes (Off, Static, Breathing, Rainbow, Color Cycle, the three Audio Pulse variants, the three Audio Bands variants, Battery, Strobe) and the Input Reactive overlay. PadForge synthesizes the full DS4 USB Report 0x05 / BT Report 0x11 plus CRC32 packet through the same dispatcher path as DualSense.

The DualSense-only fields (player-indicator row, mute LED, adaptive triggers) are dropped when the assigned device is a DS4. Those controls stay hidden on the tab.


Wire format

The synth (Ds5EffectSynthesizer.cs) writes the DualSense USB Report 0x02 / BT Report 0x31 payload (47 bytes plus CRC for BT).

Byte Field
41 Lightbar setup flags (0x02 enables RGB write)
42 LED brightness
43 Player indicator (low 5 bits is the pattern, bit 5 is the no-fade flag)
44–46 Lightbar R / G / B

The no-fade flag (bit 5 of byte 43) tells the firmware to skip its default boot or connect fade animation and apply the requested state right away. Without it, late-connect packets get visually overridden by the firmware's default lightbar state. Important for hot-plug reliability.

Animated modes (everything except Off and Static) drive a 30 Hz timer in the dispatcher. Idle modes only push when the config changes. Animated modes push every tick.

The audio peak feeds in from the same WASAPI loopback capture as Audio Rumble. Same 30 Hz tick rate. The lightbar reads the full waveform with no bass-cutoff filter.


Tips

  • Keep Sensitivity in the 4–8 range for the best audio response. Above 12 the bar sits at peak most of the time.
  • For Color Cycle, "Blend smoothly" looks better but costs more dispatch cycles. With the blend off, the bar hops between palette entries at the period boundary.
  • For the Input Reactive Cycle variant, a non-empty palette is required. The Random and Base Color variants don't use the palette.
  • The Audio Bands modes assume the Quiet-to-Medium and Medium-to-Loud thresholds are in ascending order. Reversing them produces the wrong band selection.

Related pages

  • Force Feedback: rumble and audio bass body rumble (the audio capture is shared with the lightbar's Audio modes).
  • Adaptive Triggers: DualSense trigger effects on the same physical pads that drive the lightbar.
  • Macros: macro-driven Lightbar Color, Lightbar Mode Set, and Lightbar Mode Cycle action types.

Clone this wiki locally