跳转到内容

什么是组件?

RGB 控制器——风扇集线器、ARGB 接头、LED 灯带控制器——将其输出驱动为按顺序排列的简单 LED 链。控制器不知道也不关心物理连接的是什么;它只是按顺序逐个 LED 地向线缆发送颜色。

问题在于,不同的产品以非常不同的方式排列这些 LED。一个 16-LED 风扇将它们排列成一个圆圈。一个 30-LED 灯带将它们排成一条线。双环风扇可能有一个 8 个 LED 的内环和一个 16 个 LED 的外环。如果您希望这些 LED 在 SignalRGB canvas 上位于正确的位置——以便灯光效果在整个系统中正确对齐——您需要知道形状,而不仅仅是数量。

组件解决了这个问题。 组件是特定 RGB 产品的 JSON 描述:它有多少个 LED、每个 LED 在 2D 空间中的位置,以及每个 LED 的名称。SignalRGB 使用该描述将 canvas 颜色正确映射到 LED 链中的正确位置,无论哪个控制器在驱动它。


SignalRGB 附带一个大型内置组件库,涵盖来自众多供应商的风扇、灯带、泵头和其他 RGB 配件。该库也接受社区贡献——如果某个产品尚未涵盖,您可以为其创建组件 JSON 文件并提交。

有关 JSON 格式,请参阅组件结构


用户通过 SignalRGB 中的选择器 UI 将组件分配给控制器设备上的通道。例如,连接三个 Corsair LL120 风扇到 Corsair Lighting Node Pro 的用户可能会配置:

  • 通道 1 → Corsair LL120 · Corsair LL120 · Corsair LL120

SignalRGB 沿通道的 LED 链按顺序堆叠组件,并根据其 LED 坐标将每个组件定位在 canvas 上。用户可以随意排列它们——三个风扇排成一行、L 形,或者它们在机箱中的实际位置。

插件不需要知道连接了哪些产品。它只需调用 device.channel("Channel 1").getColors(),就能获得用户配置的任何内容的正确映射颜色数据。无论通道上是 16-LED 风扇还是 30-LED 灯带,这种抽象都有效。


如果您正在为灯光控制器(具有一个或多个输出通道驱动通用 LED 链的设备)编写插件,您不需要在插件中构建特定产品的 LED 映射。您定义通道,组件系统处理其余的事情。

这意味着:

  • 您的插件自动适用于组件库中的任何产品
  • 用户可以在同一控制器上混合和匹配不同产品
  • 新产品只需添加组件 JSON 文件即可获得支持——不需要更改插件

有关插件端 API,请参阅使用组件;有关如何创建组件文件,请参阅组件结构