用RGB LED制作音乐可视化器

时间:2011-12-13 19:07:54

标签: javascript node.js visualization midi led

我家里安装了一些LED,我想让它们与音乐共舞。

我的设置:

  • 10个RGB LED灯条(30个通道)由PWM(48级)控制,通过USB连接到PC。
    • LED灯条实际上分为4组
  • Hardware由Node.js控制。
  • 音乐是在Traktor的另一台机器上播放的。
    • Traktor以主节奏和等级提供MIDI数据。
    • 我将MIDI数据通过UDP转发到节点服务器。

我已经写了一个库来抽象控制LED,所以在Node中,我可以打电话:

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

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

所以在我的节点服务器上,我有音乐节奏和关卡数据,并希望将其转换为灯光秀。节点大约每60ms获得当前音频电平。数据看起来像这样(来自歌曲中间的20秒样本,点击更大):

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

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

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

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

感兴趣的链接:

2 个答案:

答案 0 :(得分:2)

我做LED条带动画和可视化的最佳建议是在HSV色彩空间中工作。这样您就可以独立控制调色板和强度: https://www.npmjs.com/package/color-system

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

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

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

答案 1 :(得分:0)

  1. 当有新的数据样本进入时,向右或向左滚动整个图像
  2. 以Traktor报告的速度闪烁LED。
  3. 你能获得过滤后级别的MIDI报告吗?我猜你可以为不同的原色使用不同的频段。