Raspberry Pi上的MIDI路由器

我想谈谈如何解决硬件合成器爱好者可能熟悉的问题。


如果我想对接MIDI控制器和合成器,但是其中一个仅具有USB连接器却没有MIDI,该怎么办? 而且,出于明显的原因,我想在不使用计算机的情况下进行所有操作。


我曾在互联网上搜索过几次以寻找用于此目的的设备,但除了找到一些连接到几个小型流通设备的链接(花费很多钱)之外,我什么都没找到,这些链接已经停产了。


在某个时候,它突然出现在我身上:您可以使用Raspberry Pi并在其上进行所有操作-这是一台真正的计算机,在此计算机上可以轻松完成这些操作。


对于完整的声音处理,它可能很弱,但是MIDI消息流应该已经被传送。


[顺便说一句, Raspberry Pi有一个音效处理器 ,但是它需要最新的Raspberry Pi型号,该型号价格昂贵得多,外加一个额外的屏蔽罩,价格也不便宜,我决定不打扰]。


言归正传。 Raspberry Pi获得了第一个模型,并在几个晚上组装了一个工作原型。 简而言之,它是如何工作的。


ALSA Midi


最初,我计划采用PureData并为其编写一个简单的补丁程序,该补丁程序会将Midi消息从一个端口传输到另一个端口。


但是,当我开始在Linux上使用MIDI时,我发现了一种更为简单的方法。


Linux具有标准的声音输入/输出系统-ALSA。 它同时支持音频流和MIDI。


为了使程序通过ALSA接收MIDI消息,您首先需要将其连接到这些消息的源。 但这正是我们解决这个问题所需要的! 我三思而后行,我放弃了PureData并使用ALSA本地工具进行了所有操作。


这是结果。


连接


当您将MIDI设备连接到系统时,它会出现在ALSA设备中,并且您可以使用标准命令执行各种操作。 我们对aconnect团队感兴趣, aconnect团队只是使端口断开连接。 详细文档可在此处找到


实际上,我们只需要执行两项操作:显示可用设备的列表,并将一个设备连接到另一个设备:


 #   MIDI-,    aconnect -l #     Arturia Keystep  Xio aconnect 'Arturia KeyStep 32' 'Xio' 

我用自动启动systemd脚本包装了这些命令,并将它们配置为不断循环启动,您可以在这里看到我是如何做到的。


替代品


如果仍需要以某种方式处理MIDI流,然后再将其发送到输出,则可以使用几个选项:



如果您知道更多选项,请发送。


更新:摘要


经过一个半月的实验,我总结一下。


结果,实践表明,转移票据无关紧要-票据经常移出并跳过。


对于时钟传输,这或多或少是正常的-在受控合成器的琶音器与门框的主节奏同步中,我听不到门框的声音。


但是对于控制器消息的传输,这似乎是理想的。
现在,您可以将Launch Control XL连接到任何语法。


参考文献


当我由于某种原因上次研究这个问题时,我什么都找不到。


这次有很多事情,我将在这里发布链接,这样,如果出现相同的问题,您就不会重复我的路径。


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


All Articles