周末设计:简单的MIDI适配器


我曾经为孩子们购买过Yamaha PSR-550合成器。 该工具不是第一次使用,而是可以使用的。 孩子们表现出热情,很快就习惯了合成器:他们弄明白了控件,学会了“写罐头”等。 合成器背面的“ MIDI IN”和“ MIDI OUT”连接器并没有困扰我。

问题陈述


在上个世纪,通过MIDI连接计算机和合成器的最简单方法是使用游戏端口 。 为了匹配接口信号(游戏端口连接器上MIDI和TTL中的“电流环”),制作了一个简单的适配器,其电路在MIDI Wikipedia文章中给出



目前,声音和主板的游戏端口已经消失了。 找不到适用于现代操作系统的游戏端口驱动程序。

Wikipedia上的文章中,原则上可以理解该接口的“物理原理 :使用start-stop协议以31250 bps的速度交换数据,并以8位数据传输而不用一个停止位进行奇偶校验。 信号电路中的逻辑零对应于5 mA的电流,逻辑单元中电路中无电流。

原则上,游戏端口可以用USB UART替换,并将Wikipedia文章中描述的适配器连接到该端口。

该解决方案的第一个问题是强制操作系统将UART COM端口定义为MIDI端口。 出乎我意料的是,在Arduino论坛上找到了解决该问题的方法。 在那里,我找到了指向虚拟COM端口“顶部”的免费MIDI端口仿真器的链接。 要将仿真端口与MIDI编辑器连接,开发人员建议使用虚拟loopMIDI线。

第二个问题:使UART以31,250 bps的速度运行。

所有这些数据已经足以制定技术建议
“为了通过MIDI将计算机与合成器连接,建议使用USB UART和适配器来匹配TTL信号与” current loop 0 ... 5 mA”信号,loopMIDI软件,Hairless MIDI <->串行桥和UART驱动程序,以使其能够工作。速度为31,250 bps。”

硬体


硬件解决方案的选择非常简单-在本文作者的垃圾箱中找到:

  • 基于CP2102的USB UART;
  • AOT101A光耦合器;
  • 微电路K1533LN2;
  • 一对连接器SSH-5(其他名称:ONC-VG-4-5 / 16-V,DIN 41524);
  • 几米的屏蔽声电缆SHGES。

结果,这样的适配器电路组装在裁剪大小为40x15的通用面包板上时:



已验证组装电路的性能,如下所示:

  1. 适配器已连接到合成器的MIDI接口。
  2. 合成器已禁用本地控制(MIDI Local = Off)。
  3. 在适配器的RX和TX信号之间安装跳线之后,合成器开始响应击键。

我希望电路的操作清楚,无需解释。 我只注意到:

  • K1533LN2芯片的元件具有“集电极开路”类型的输出,该输出在没有外部负载的情况下无法工作;
  • 电容器C1尽可能靠近电源端子DD1连接。
  • 通往合成器“ MIDI IN”连接器的电缆的编织层仅连接至适配器的公共线;
  • 通往合成器MIDI OUT连接器的电缆的编织层仅连接到该连接器的端子2。

软体类


接下来,在计算机上安装了以下软件:

  1. CP2102的VCP驱动程序
  2. 用于配置CP2102的实用程序包
  3. MIDI端口模拟器 Angus Gratton的无毛MIDI <->串行桥
  4. MIDI虚拟线环 Tobias Erichsen的MIDI
  5. MIDI编辑器Anvil Studio。

然后在loopMIDI中创建了两条线-“合成器”和“键盘”:



为了将MIDI编辑器连接到MIDI IN合成器插孔,在Anvil Studio输出和MIDI端口仿真器输入之间连接了合成器线。

为了将MIDI编辑器与MIDI OUT合成器连接器相连,在MIDI端口仿真器的输出和Anvil Studio输入之间连接了键盘电缆。





设置软件的最后一个非常重要的步骤是将CP2102比特率设置为31,250 bps,而不是38,400 bps:



设置速度后,必须单击“设置配置”按钮。 然后,在设备管理器和无毛MIDI <->串行桥中,在UART CP2102 COM端口的通信速度设置中,选择38400。

简要总结


结果,Anvil Studio的MIDI编辑器收到了与Yamaha PSR-550合成器的通讯通道。 孩子们开始热情地学习如何使用MIDI编辑器。 我恢复了内心的平静。

PS 这里讨论了如何将速度设置为31,250 bps,而不是PL2303的38,400 bps。

PPS如何将速度设置为31,250 bps,而不是CH341的38,400 bps。

Source: https://habr.com/ru/post/zh-CN447652/


All Articles