-
Notifications
You must be signed in to change notification settings - Fork 6
Lighting
The Lighting tab is visible when the active slot has a DualShock 4, DualSense, or DualSense Edge assigned as a physical device. 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 touchpad, and the mute LED above the microphone. Game writes always win; macro overrides beat user settings; the Input Reactive overlay layers on top of the base mode; user settings apply when nothing higher in the priority chain is driving the lightbar.
The Lighting tab is per (slot, device). Selecting a different physical device in the assigned-devices dropdown re-binds the tab to that device's own configuration, so 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.

A single dropdown selects the active base mode. The picker exposes eleven entries:
| Mode | Effect |
|---|---|
| Off (Game Owns the Lightbar) | PadForge writes nothing for the base. The game (or the firmware default) controls the bar. The Input Reactive overlay below can still drive per-press flashes over a black base. |
| Static Color | Solid color from the configured RGB. |
| Breathing (Single Color Fades) | Single 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 toggle. |
| Audio Pulse — Static Color | Modulates the configured base color by the system audio peak. |
| Audio Pulse — Random Color per Beat | New random hue selected 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), instant switch at thresholds. |
| Audio Bands — Three Colors, Smooth Gradient | Same three colors with linear interpolation between thresholds. |
| Audio Bands — Three Colors, Crossfade at Boundaries | Same three colors with a configurable crossfade width at each threshold. |
Below the base picker, conditional sub-sections show only the controls relevant to the active mode (period, palette, audio bands, etc.).
A second dropdown directly under the base mode picker, independent of the base. Pick any base — Static, Rainbow, AudioPulse, Off — and layer per-press flashes on top.
| Variant | Effect |
|---|---|
| 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 configured palette color. Shares the palette editor with Color Cycle base mode. |
| Base Color per Press | Each press flashes a fixed RGB. The flash color is configured below in its own picker, separate from the base color, so a Static-blue base + white per-press flash works (or any other combination). |
The flash composes by lerping from the base color toward the overlay color by pulseIntensity — at intensity 1.0 the flash is solid, decaying linearly to 0.0 over the configured Hold + Decay window, at which point the base mode shows through unchanged.
Macro lightbar overrides still beat the overlay; game-driven writes still win at packet level.
The Pulse Hold and Pulse Decay sliders below the overlay dropdown apply to all three variants.
Visible for Static Color, Breathing, and Audio Pulse — Static Color. Wraps a color picker, hex input, R/G/B sliders with reset buttons, and a swatch preview in a bordered card.
The hex input accepts six-digit RGB (RRGGBB or #RRGGBB). Press Enter or click away to apply.
Visible for Breathing, Rainbow Cycle, Color Cycle, and Audio Pulse — Rainbow Cycle. Ranges 250–10000 ms. Default 3000 ms (3-second cycle). Reset returns to the default.
Visible whenever the Color Cycle base mode OR the Cycle Through Palette overlay variant is active. A wrapping list of palette entries; each entry has an in-place color picker with hex + RGB sliders and a remove button. Add Color appends a new swatch with a rolling hue distinct from the last entry. Reset Palette restores the four default colors (red, green, blue, yellow).
The Color Cycle mode also exposes a "Blend smoothly between palette colors" checkbox — on, the bar lerps between consecutive palette entries; off, it hops.
The palette can hold any number of entries from 1 to N — there is no fixed cap.
Visible for every Audio Pulse and Audio Bands mode.
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 is used, but reads the full waveform (no bass-cutoff filter).
Visible only for Audio Thresholds, Audio Gradient, and Audio CrossFade. 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: the Quiet→Medium and Medium→Loud thresholds (% of the peak range), each with a reset button. For Audio CrossFade, a "Crossfade Width" slider controls how wide the transition zone is at each threshold (0–50 %, default 5 %).
Two sliders visible whenever the Input Reactive overlay is non-Off.
- Pulse Hold (0–5000 ms, default 0). The flash holds at full intensity for this long after the press. 0 means the decay starts immediately at the rising edge.
- Pulse Decay (0–5000 ms, default 600). After the hold window, the flash fades linearly to 0 over this many milliseconds. 0 means a hard cutoff at the end of the hold window — useful with a non-zero Hold for a clean on/off blink.
The synth tracks rising edges off the slot's combined output state, including the DualSense touchpad click, so any button on any device mapped to the slot fires a pulse.
A separate card below the lightbar mode picker. Five small white LEDs below the DualSense touchpad show a player-slot pattern; an additional 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 — only affects the player row; firmware exposes no separate brightness register for the mute LED. |
Each dropdown — Lightbar Mode at the top of the tab and the three Indicator LED dropdowns above — has a one-click reset button to its default (Off / Off / Off / High).
The synth (Ds5EffectSynthesizer.cs) writes the DualSense USB Report 0x02 / BT Report 0x31 payload (47 bytes plus CRC for BT). The lightbar fields:
| Byte | Field |
|---|---|
| 41 | Lightbar setup flags (0x02 to enable RGB write) |
| 42 | LED brightness |
| 43 | Player indicator (low 5 bits = pattern, bit 5 = no-fade flag — important for hot-plug reliability) |
| 44–46 | Lightbar R/G/B |
The "no-fade" flag (bit 5 of byte 43) tells the firmware to skip its default boot/connect fade animation and apply the requested state immediately — without it, late-connect packets are visually overridden by the firmware's default lightbar state.
The 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 feeding the audio modes comes from the same WASAPI loopback capture as Audio Rumble, but reads the full waveform (no bass-cutoff filter). The capture runs at the same 30 Hz tick.
- For best audio response, keep Sensitivity in the 4–8 range. Above 12 the bar is at peak most of the time.
- For Color Cycle, "Blend smoothly" gives a smoother visual but uses more dispatch cycles. With the smooth 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 your Quiet→Medium and Medium→Loud thresholds are in ascending order. Reversing them produces the wrong band selection.
- DualShock 4 supports the same base modes (Static, Breathing, Rainbow, ColorCycle, every Audio Pulse and Audio Bands variant) and the Input Reactive overlay; PadForge synthesizes the full DS4 USB Report 0x05 / BT Report 0x11 + CRC32 packet through the same dispatcher path as DualSense. The DualSense-only fields (player-indicator row, mute LED, adaptive triggers) are silently dropped when the assigned device is a DS4.