有谁知道在Linux上获得MIDI SysEx数据双向转储的好方法吗?(在雅马哈PSR-E413 MIDI键盘和运行在葡萄酒中的雅马哈MusicSoft下载器的副本之间)
我想反向工程的协议,用于复制MIDI文件到和从我的键盘的内部内存,为此,我需要做一些有效的交换之间的记录。
该实用工具确实在葡萄酒(再轻轻一推)中工作,但当我使用FUSE文件系统时,我不想依赖于葡萄酒中一个廉价的、无脚本的应用程序。
以下是当前的状况:
snd-seq-dummy工作。
发布于 2012-09-07 00:34:16
这个问题已经有一段时间没有答案了,虽然我对你的问题没有一个确切的答案,但我也许有一些东西可以把你推向正确的方向(或者其他有类似问题的人)。
当我想嗅探用于设置和读取Akai LPK25 MIDI键盘上预置的数据时,我遇到了一个类似的问题,尽管不那么复杂。类似于您的安装程序,安装键盘的软件可以在葡萄酒中运行,但我也没有运气为Linux找到嗅探器安装程序。
由于缺乏现有的解决方案,我在virmidi端口上使用了ALSA路由。我理解你为什么认为它们是无用的,因为没有额外的软件,它们无法帮助嗅探MIDI的流量。
我的解决方案是在Java中编写一个MIDI中继/桥,在那里我从virmidi端口读取输入,显示数据并将其进一步发送到键盘。来自键盘的答案(如果有的话)也被读取、显示并最终传送回virmidi端口。可以设置葡萄酒中的应用程序来使用virmidi端口进行通信,理论上这个过程是完全透明的(除了潜在的延迟问题)。该应用程序是以通用方式编写的,而不是硬编码到我的问题上。
我只处理了大约20字节长的SysEx消息,所以我不确定该软件在侦听大量数据传输方面的效果如何。但也许您可以按照示例修改/编写自己的程序。
可在此获得的资料来源:https://github.com/hiben/MIDISpy
(Java1.6,包括ant构建文件,源代码在BSD许可下)
发布于 2015-03-27 17:43:07
我喜欢在这方面使用aseqdump。
pages/aseqdump1.html
发布于 2020-02-28 16:15:33
为此,您可以使用虚拟midi设备。因此,您必须加载snd_seq_dummy,以便它至少创建两个端口:
$ sudo modprobe -r snd_seq_dummy
$ sudo modprobe snd_seq_dummy ports=1 duplex=1那么您应该有一个名为Midi through的设备
$ aconnect -i -o -l
client 0: 'System' [type=kernel]
0 'Timer '
1 'Announce '
client 14: 'Midi Through' [type=kernel]
0 'Midi Through Port-0:A'
1 'Midi Through Port-0:B'
client 131: 'VMPK Input' [type=user,pid=50369]
0 'in '
client 132: 'VMPK Output' [type=user,pid=50369]
0 'out '我将从这个例子中获取端口和设备编号。你必须根据你的设置亲自检查它们。
现在,将您最喜欢的MIDI设备插入到Midi Through端口:
$ aconnect 132:0 14:0
$ aconnect 14:0 131:0此时您有一个连接,您可以同时监视两个设备。你可以用aseqdump来监视MIDI的对话。有不同的可能性。我建议监视回送设备和真实设备之间的连接。这允许您将rawmidi连接到回送设备。
$ aseqdump -p 14:0,132:0 | tee dump.log现在一切都准备好了。您只需在MIDI应用程序中小心端口名。它应该从Midi Through Port-0:B读取MIDI数据并将数据写入Midi Through Port-0:B。
其他提示:您可以使用图形前端patchage通过拖放方式连接和检查MIDI连接。如果这样做,您将看到每个Midi Through端口发生两次,一次作为输入,一次作为输出。两者都必须连接,以使这一设置工作。
如果您想使用GMidiMonitor或其他应用程序,可以使用aconnect监视两个混合流(没有显示方向),假设129:0是Midi Monitor端口:
$ aconnect 14:0 129:0
$ aconnect 132:0 129:0如果希望获得确切的方向信息,可以添加仅连接到其中一个端口的另一个GMidiMonitor实例。丢失的消息来自另一个端口。
https://stackoverflow.com/questions/10219487
复制相似问题