我曾经为孩子们购买过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的通用面包板上时:

已验证组装电路的性能,如下所示:
- 适配器已连接到合成器的MIDI接口。
- 合成器已禁用本地控制(MIDI Local = Off)。
- 在适配器的RX和TX信号之间安装跳线之后,合成器开始响应击键。
我希望电路的操作清楚,无需解释。 我只注意到:
- K1533LN2芯片的元件具有“集电极开路”类型的输出,该输出在没有外部负载的情况下无法工作;
- 电容器C1尽可能靠近电源端子DD1连接。
- 通往合成器“ MIDI IN”连接器的电缆的编织层仅连接至适配器的公共线;
- 通往合成器MIDI OUT连接器的电缆的编织层仅连接到该连接器的端子2。
软体类
接下来,在计算机上安装了以下软件:
- CP2102的VCP驱动程序 。
- 用于配置CP2102的实用程序包 。
- MIDI端口模拟器 Angus Gratton的无毛MIDI <->串行桥 。
- MIDI虚拟线环 Tobias Erichsen的MIDI 。
- 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。