什么是组件?
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 格式,请参阅组件结构。
组件的使用方式
Section titled “组件的使用方式”用户通过 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 灯带,这种抽象都有效。
为什么这对插件作者很重要
Section titled “为什么这对插件作者很重要”如果您正在为灯光控制器(具有一个或多个输出通道驱动通用 LED 链的设备)编写插件,您不需要在插件中构建特定产品的 LED 映射。您定义通道,组件系统处理其余的事情。
这意味着:
- 您的插件自动适用于组件库中的任何产品
- 用户可以在同一控制器上混合和匹配不同产品
- 新产品只需添加组件 JSON 文件即可获得支持——不需要更改插件