×

基于Arduino Micro的简单USB MIDI适配器

消耗积分:0 | 格式:rar | 大小:0.19 MB | 2022-12-13

香香技术员

分享资料个

方案介绍

这是个基于 Arduino Micro 或 Leonardo 的简单 USB 到 MIDI 适配器,可选择过滤 MIDI 数据。

我在网上搜索了如何使用 Arduino 构建 USB 到 MIDI 适配器,但不幸的是,我只找到了不太好的解决方案(糟糕的 MIDI 软件或硬件实现)。所以我决定自己构建并将结果放在 hackster.io 上。

我使用带有面包板的 Arduino Leonardo 来构建第一个原型。一切正常后,我使用 Arduino Micro 构建了一个焊接版本。两者都基于 ATmega32u4,它具有原生 USB,允许它以 USB MIDI 接口的形式呈现给您连接到的 PC。

MIDI 使用光耦合器和一些电阻器来创建完全隔离的电流回路。该电路非常标准,我使用了 6n137,因为它快速且广泛可用。如电路图所示,只有 MIDI OUT 连接器的针脚 2 接地,这是 MIDI 的标准。

在软件方面,我决定使用出色的Control Surface库。与其他一些库或手动编码的实现不同,Control Surface 可以正确处理有点复杂的 MIDI 协议的所有不同方面。

Control Surface 还允许您添加各种附加功能。例如,您可以添加一些连接到模拟/数字输入的电位器、踏板或按钮,以添加额外的 MIDI 控件。只需在Control Surface网站上查看更多信息,这真的很容易!

您还可以注册回调,以便在从 MIDI 传递到 USB 或其他方向之前处理数据。在我的例子中,我用它来修复我的 Roland D50 合成器损坏的 MIDI 实现。每次按下最后一个键时,D50 都会发送“所有音符关闭”命令。现代实现,例如我使用的大多数 VST 乐器,将其解释为所有运行音符延音的立即硬截止。通过过滤掉“所有音符”,D50 再次成为主控键盘。

我在使用 Control Surface 库时遇到的一个问题是它不能很好地处理大型 SysEx 包。这导致在尝试使用 D50 编辑器/图书管理员时出错,因为它发送了相当大的 SysEx 包。我在源代码的注释标题中添加了有关如何解决此问题的说明。编写库的人表示,一旦 2.x 版本出来,这个问题就会得到解决。

我包括了基本的 USB 到 MIDI 接口源代码和一个带有“所有音符关闭”过滤的版本。

当然,您也可以使用其他库或编写自己的 MIDI 实现,硬件应该与任何支持 USB MIDI 和串行 MIDI 的 MIDI 库一起使用。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

评论(0)
发评论

下载排行榜

全部0条评论

快来发表一下你的评论吧 !