用RGB led制作一个音乐可视化器

Making a music visualizer out of RGB LEDs

本文关键字:一个 音乐 可视化 led RGB      更新时间:2023-09-26

我家里安装了一些led灯,我想让它们随着音乐跳舞。

我的设置:

  • 10个RGB LED条(因此30通道)由PWM(48步)控制,通过USB连接到PC。
    • LED灯条物理位置分为4组
  • 硬件由Node.js控制。
  • 音乐在不同的机器上播放。
    • Traktor提供MIDI数据输出与主节奏和水平。
    • 我将MIDI数据通过UDP转发到Node服务器。

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

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

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

在我的Node服务器上,我有音乐节奏和关卡数据传入,并希望将其转换为灯光秀。Node大约每60毫秒获取一次当前音频电平。数据看起来是这样的(歌曲中间的20秒样本,点击查看大图):

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

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

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

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

相关链接:

  • 如何同步JavaScript动画与歌曲的节奏,而不建立一个"音频可视化"?
  • HTML 5 Beats,特别是this和this。

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

用HSV颜色编码你的动画,然后当你准备好将它们发送到驱动器时将每个像素转换为RGB。

所以你可以,例如,连接你的响度(V)强度,和节奏的色调(即彩虹的哪一部分)(H)。你可以使用正弦波来调制这些,并做出不同的模式。

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

  1. 当出现新的数据样本时,将整个图像向左或向右滚动
  2. 以Traktor报告的速度闪烁led。

你能得到关卡后过滤的MIDI报告吗?我想,你可以用不同的频带来表示不同的原色。