0

我家里安装了一些 LED,我想让它们随着音乐起舞。

我的设置:

  • 由 PWM(48 步)控制的 10 个 RGB LED 灯条(即 30 个通道)通过 USB 连接到 PC。
    • LED 灯条物理上分为 4 组
  • 硬件由 Node.js 控制。
  • Traktor 在另一台机器上播放音乐。
    • Traktor 提供带有主速度和电平的 MIDI 数据。
    • 我通过 UDP 将 MIDI 数据转发到节点服务器。

我编写了一个库来抽象控制 LED,所以在 Node 中,我可以调用:

channel[n].set(intensity, r, g, b);

...它处理优化通过 USB 总线发送的数据。

因此,在我的 Node 服务器上,我收到了音乐节奏和电平数据,并希望将其转换为灯光秀。节点大约每 60 毫秒获取一次当前音频电平。数据看起来像这样(从歌曲中间开始的 20 秒样本,点击放大):

http://josh3736.net/images/ledviz.gif

MIDI 数据以 0..127 的比例输出。在这种情况下,42 的速度值对应于 128 的 BPM。

这个问题有多个部分可以解决:

  • 最重要的是,使用这些数据控制 LED 的最佳方法是什么?
    • 理想情况下,输入数据应该影响颜色之间的动画/过渡;然而,在重击时突然改变/频闪也可能很好。
  • 我应该将 Traktor 的任何其他 MIDI 数据发送到 Node 吗?
  • 如何使 4 个物理组中的每一个都偏向于相同的颜色?

感兴趣的链接:

4

2 回答 2

2

对于进行 LED 灯条动画和可视化,我的首要建议是在 HSV 色彩空间中工作。这样您就可以独立控制调色板和强度: https ://www.npmjs.com/package/color-system

使用 HSV 颜色对动画进行编码,然后在准备好将它们发送到驱动器时​​将每个像素转换为 RGB。

因此,例如,您可以将响度与 (V) 强度联系起来,将速度与色调(即彩虹的哪一部分)联系起来(H)。您可以使用正弦波来调制这些并制作不同的模式。

你可以从这里得到一些想法——这些模式看起来很复杂,但它们是简单的正弦波模式,用音乐的强度和频率调制:https ://www.instagram.com/stvito_performance_group/

于 2017-08-15T18:18:05.133 回答
0
  1. 当有新的数据样本进入时,将整个图像向右或向左滚动
  2. 以 Traktor 报告的速度闪烁 LED。

你能得到一个电平后过滤的 MIDI 报告吗?我猜你可以为不同的原色使用不同的频段。

于 2011-12-14T15:31:15.030 回答