所以基本上我希望以某种方式从我的计算机中给定一个音频文件作为输入(很可能是 mp3,或者我也可以使用一些可以处理其他类型的音频引擎)来控制一些 LED 灯,这样它们就像示波器一样一个在winamp。
我需要什么才能做到这一点?我有兴趣自己构建东西,编码,硬件等。
我将在 Windows 上使用 C++。
所以基本上我希望以某种方式从我的计算机中给定一个音频文件作为输入(很可能是 mp3,或者我也可以使用一些可以处理其他类型的音频引擎)来控制一些 LED 灯,这样它们就像示波器一样一个在winamp。
我需要什么才能做到这一点?我有兴趣自己构建东西,编码,硬件等。
我将在 Windows 上使用 C++。
这是一种可能的方法(高级描述):
您可以在连接多个 LED 的基本电路中安装一个简单的微控制器 (MCU)。LED 连接电路应该很容易找到。大多数 MCU 制造商还会在产品数据表中提供示例测试/LED 闪光电路,以及示例程序。
MCU 可以通过并行端口与您的 PC 连接(我使用了 ATmega8,其输入引脚与并行端口引脚电平兼容)。它还可以使用更复杂/更高级别的方法进行接口 - 通过串行/usb 端口使用 UART 到串行或 UART 到 USB 模块与您的 MCU。然后,您可以通过并行/串行/usb 从 PC 应用程序向 MCU 输出不同的值,并让 MCU 代码根据需要使 LED 闪烁。尽管不建议这样做,但有一些关于从并行端口本身为 LED 供电的文章。我使用 inpout32.dll 直接访问并行端口寄存器。.NET 框架提供了一个 SerialPort 类,如果不使用并行端口方法,您可以使用该类。
至于音乐方面,我从来没有在软件中处理过音频文件。周围应该有一些库,您可能可以将幅度/频率随时间的变化缩放到可在您拥有的 LED 上显示的数字刻度。由于这意味着您需要一个基本的音频播放器,我相信您可以在 PC 应用程序的音频方面找到一些信息。
编辑:
在我的回答中,我认为这是一个个人项目,并提出了一种在预算上很容易的方法——在当地的电子商店花几美元就可以买到一切。这是一个好的开始,但正如其他答案所暗示的那样,可能有更好的可扩展解决方案。从套件开始——预制的 MCU 板可能更容易但更昂贵!不过,如果是为了专业项目,这可能是值得的!
祝你好运!
使用 Arduino 开发人员套件听起来是个不错的案例。这基本上是一个小型外部设备,可以连接到您的 USB 端口并驱动外部电子设备。
在软件方面,您需要点击音频流,将其通过带通滤波器,然后对其进行阈值处理。如果频带中的信号超过阈值,则通过向 Arduino 发送命令来点亮 LED。
所以我猜你想建立一个像 LED 墙这样的东西。困难在于将视频信号(您可以通过 winamp 插件或自定义解决方案预先构建)映射到 LED 墙像素。我碰巧对活动业务中使用的商业解决方案有所了解。通常,您通过将一组 LED 灯条或 LED 瓦片组合在一起来构建 LED 矩阵。这些设备通过DMX 512协议进行控制。DMX 512 有 512 个通道,每个通道的分辨率为 8 位。单个 LED 像素通过 3 通道 RGB 控制。
诸如Madrix之类的 LED 闪电控制软件需要将图像发生器的信号映射到 LED 像素上,然后再将其映射到 DMX 信号。DMX 并不难实现,它是一个非常简单且非常健壮的协议,可以用廉价的电缆连接,并且在微控制器、DMX/USB 适配器等方面也有很多商业解决方案。
使用并口直接驱动LED。如果您有简单的需求,并行端口真的很容易使用。看看这个资源来连接 eksamples。
当我在罗斯基勒大学时,我们将整个计算机科学大楼变成了一个巨大的 VU 仪表,用于每年一次的校园聚会。
Basically an old pc was used to sample soundlevel as a value between 0-255. That value vas directly output to the "classic" pc parallel port.
The parallel port drove a series of 220V relays conected to green and red lightbulbs that were places in different CS offices.
I looked great! The pièce de résistance was the Japaneese turist who shoved up out of nowhere taking pictures of the building...