加入星计划,您可以享受以下权益:

  • 创作内容快速变现
  • 行业影响力扩散
  • 作品版权保护
  • 300W+ 专业用户
  • 1.5W+ 优质创作者
  • 5000+ 长期合作伙伴
立即加入

USB MIDI适配器

2021/03/18
687
服务支持:
技术交流群

完成交易后在“购买成功”页面扫码入群,即可与技术大咖们分享疑惑和经验、收获成长和认同、领取优惠和红包等。

虚拟商品不可退

当前内容为数字版权作品,购买后不支持退换且无法转移使用。

加入交流群
扫码加入
获取工程师必备礼包
参与热点资讯讨论
放大
方块图(2)
相关方案
  • 方案介绍
  • 相关文件
  • 相关推荐
  • 电子产业图谱
申请入驻 产业图谱

基于Arduino Micro或Leonardo的简单USB转MIDI适配器,可以过滤MIDI数据(可选)。
硬件部件:

  • Arduino Micro    ×    1个    
  • 6n137光耦合器×    1个    
  • 1N4148 –通用快速开关    ×    1个    
  • 电容100 nF    ×    1个    
  • 电阻220欧姆    ×    3    
  • 电阻10k欧姆    ×    1个    
  • 通孔电阻,470欧姆    ×    1个    
  • LED(通用)    ×    1个    
  • LED支架×    1个    
  • DIN音频/视频连接器,5触点    ×    2个    
  • 一块通用PCB×    1个    
  • PCB安装座×    1个    

软件应用程序和在线服务:

  • Arduino IDE    

我在网上搜索了如何使用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库一起使用。

  • usb_midi_interface_twiE32gvR3.fzz
    描述:原理图
  • 源码.rar
    描述:源码

相关推荐

电子产业图谱