DarthAffe/RGB.NET

The one-stop SDK for RGB-peripherals

420

stars

1,032

commits

C#

primary language

May 19, 2026

updated

asus
aura
coolermaster
corsair
dmx
led
logitech
msi
novation
openrgb
peripherals
razer
rgb
steelseries
wled
wooting

README

RGB.NET

GitHub release (latest by date) Nuget GitHub GitHub Repo stars Discord

IMPORTANT NOTE
This is a library to integrate RGB-devices into your own application. It does not contain any executables!
If you're looking for a full blown software solution to manage your RGB-devices, take a look at Artemis.

Getting Started

Setup

  1. Add the RGB.NET.Core and Devices-Nugets for all devices you want to use.
  2. For some of the vendors SDK-libraries are needed. Check the contained Readmes for more information in that case.
  3. Create a new RGBSurface.
RGBSurface surface = new RGBSurface();
  1. Initialize the providers for all devices you want to use and add the devices to the surface. For example:
CorsairDeviceProvider.Instance.Initialize(throwExceptions: true);
surface.Attach(CorsairDeviceProvider.Instance.Devices);

The Initialize-method allows to load only devices of specific types by setting a filter and for debugging purposes allows to enable exception throwing. (By default they are catched and provided through the Exception-event.) You can also use the Load-Extension on the surface.

surface.Load(CorsairDeviceProvider.Instance);

While most device-providers are implemented in a way that supports fast loading like this some may have a different loading procedures. (For example the WS281XDeviceProvider requires device-definitions before loading.)

  1. Add an update-trigger. In most cases the TimerUpdateTrigger is preferable, but you can also implement your own to fit your needs.
surface.RegisterUpdateTrigger(new TimerUpdateTrigger());

If you want to trigger updates manually the ManualUpdateTrigger should be used.

  1. This step is optional but recommended. For rendering the location of each LED on the surface can be important. Since not all SDKs provide useful layout-information you might want to add Layouts to your devices. (TODO: add wiki article for this) Same goes for the location of the device on the surface. If you don't care about the exact location of the devices you can use:
surface.AlignDevices();

The basic setup is now complete and you can start setting up your rendering.

Basic Rendering

As an example we'll add a moving rainbow over all devices on the surface.

  1. Create a led-group containing all leds on the surface (all devices)
ILedGroup allLeds = new ListLedGroup(surface, surface.Leds);
  1. Create a rainbow-gradient.
RainbowGradient rainbow = new RainbowGradient();
  1. Add a decorator to the gradient to make it move. (Decorators are
rainbow.AddDecorator(new MoveGradientDecorator(surface));
  1. Create a texture (the size - in this example 10, 10 - is not important here since the gradient shoukd be stretched anyway)
ITexture texture = new ConicalGradientTexture(new Size(10, 10), rainbow);
  1. Add a brush rendering the texture to the led-group
allLeds.Brush = new TextureBrush(texture);

Full example

RGBSurface surface = new RGBSurface();
surface.Load(CorsairDeviceProvider.Instance);
surface.AlignDevices();

surface.RegisterUpdateTrigger(new TimerUpdateTrigger());

ILedGroup allLeds = new ListLedGroup(surface, surface.Leds);
RainbowGradient rainbow = new RainbowGradient();
rainbow.AddDecorator(new MoveGradientDecorator(surface));
ITexture texture = new ConicalGradientTexture(new Size(10, 10), rainbow);
allLeds.Brush = new TextureBrush(texture);

Contributors

DarthAffe

856 commits

RobertBeekman

69 commits

diogotr7

43 commits

logicallysynced

15 commits

DarthAffe/RGB.NET

The one-stop SDK for RGB-peripherals

420

stars

1,032

commits

C#

primary language

May 19, 2026

updated

asus
aura
coolermaster
corsair
dmx
led
logitech
msi
novation
openrgb
peripherals
razer
rgb
steelseries
wled
wooting

README

RGB.NET

GitHub release (latest by date) Nuget GitHub GitHub Repo stars Discord

IMPORTANT NOTE
This is a library to integrate RGB-devices into your own application. It does not contain any executables!
If you're looking for a full blown software solution to manage your RGB-devices, take a look at Artemis.

Getting Started

Setup

  1. Add the RGB.NET.Core and Devices-Nugets for all devices you want to use.
  2. For some of the vendors SDK-libraries are needed. Check the contained Readmes for more information in that case.
  3. Create a new RGBSurface.
RGBSurface surface = new RGBSurface();
  1. Initialize the providers for all devices you want to use and add the devices to the surface. For example:
CorsairDeviceProvider.Instance.Initialize(throwExceptions: true);
surface.Attach(CorsairDeviceProvider.Instance.Devices);

The Initialize-method allows to load only devices of specific types by setting a filter and for debugging purposes allows to enable exception throwing. (By default they are catched and provided through the Exception-event.) You can also use the Load-Extension on the surface.

surface.Load(CorsairDeviceProvider.Instance);

While most device-providers are implemented in a way that supports fast loading like this some may have a different loading procedures. (For example the WS281XDeviceProvider requires device-definitions before loading.)

  1. Add an update-trigger. In most cases the TimerUpdateTrigger is preferable, but you can also implement your own to fit your needs.
surface.RegisterUpdateTrigger(new TimerUpdateTrigger());

If you want to trigger updates manually the ManualUpdateTrigger should be used.

  1. This step is optional but recommended. For rendering the location of each LED on the surface can be important. Since not all SDKs provide useful layout-information you might want to add Layouts to your devices. (TODO: add wiki article for this) Same goes for the location of the device on the surface. If you don't care about the exact location of the devices you can use:
surface.AlignDevices();

The basic setup is now complete and you can start setting up your rendering.

Basic Rendering

As an example we'll add a moving rainbow over all devices on the surface.

  1. Create a led-group containing all leds on the surface (all devices)
ILedGroup allLeds = new ListLedGroup(surface, surface.Leds);
  1. Create a rainbow-gradient.
RainbowGradient rainbow = new RainbowGradient();
  1. Add a decorator to the gradient to make it move. (Decorators are
rainbow.AddDecorator(new MoveGradientDecorator(surface));
  1. Create a texture (the size - in this example 10, 10 - is not important here since the gradient shoukd be stretched anyway)
ITexture texture = new ConicalGradientTexture(new Size(10, 10), rainbow);
  1. Add a brush rendering the texture to the led-group
allLeds.Brush = new TextureBrush(texture);

Full example

RGBSurface surface = new RGBSurface();
surface.Load(CorsairDeviceProvider.Instance);
surface.AlignDevices();

surface.RegisterUpdateTrigger(new TimerUpdateTrigger());

ILedGroup allLeds = new ListLedGroup(surface, surface.Leds);
RainbowGradient rainbow = new RainbowGradient();
rainbow.AddDecorator(new MoveGradientDecorator(surface));
ITexture texture = new ConicalGradientTexture(new Size(10, 10), rainbow);
allLeds.Brush = new TextureBrush(texture);

Contributors

DarthAffe

856 commits

RobertBeekman

69 commits

diogotr7

43 commits

logicallysynced

15 commits

Languages

C#

99.4%