A small Windows console client built on RGB.NET that drives the LEDs of every supported device on the machine at once.
On start-up the app loads the Asus, Corsair and Logitech device providers, aligns them into a single
RGBSurface and prints the devices it found. From there it runs one of two modes:
| Mode | Argument | Behaviour |
|---|---|---|
| Rainbow | (none) | Puts a moving LinearGradientBrush with a RainbowGradient across all LEDs. A timer advances the gradient every 100 ms. |
| Sync | sync |
Reads the colour of the Asus mainboard's Mainboard1 LED and mirrors it onto every other LED, so peripherals follow whatever the mainboard software is doing. |
The colour mirroring is done by SyncBrush, a tiny AbstractBrush that returns the sync LED's current
colour for every render target.
REM rainbow across all devices
RGB.exe
REM mirror the mainboard colour onto everything else
RGB.exe syncThe process keeps running until you press a key.
Open RGB.sln in Visual Studio and build, or use MSBuild:
nuget restore RGB.sln -Source https://www.myget.org/F/rgb_net/api/v3/index.json
msbuild /property:Configuration=Release RGB.slnThe RGB.NET packages used here are pre-release builds published to the project's MyGet feed rather than
nuget.org, so the extra -Source is required. .gitlab-ci.yml in the repo root does the same two steps
on a Windows runner.
- C#, .NET Framework 4.6.1, console application
- RGB.NET (Core, Brushes, Groups) plus the Asus, Corsair and Logitech device providers
- Windows
- The vendor software/SDKs that RGB.NET talks to (Aura, iCUE, Logitech Gaming Software). Sync mode additionally needs an Asus mainboard — it aborts with "No mainboard to sync with is loaded." if none is detected.
Note that sync mode opens Asus devices without exclusive access on purpose, so the mainboard can be read back while its own software controls it.
A 2018 experiment against an early RGB.NET version. The API has changed considerably since, so expect to update the calls before it compiles against a current release.
MIT — see LICENSE.