2012-04-18 160 views
4

有谁知道在Linux上获得MIDI SysEx数据双向转储的好方法吗? (在Yamaha PSR-E413 MIDI键盘和在Wine中运行的Yamaha MusicSoft Downloader副本之间)双向嗅探/窥探ALSA MIDI SysEx交换

我想反向设计用于将MIDI文件复制到键盘的内部存储器或从其中复制的协议我需要记录两者之间的有效交流。

该实用程序在Wine中工作(with a little nudging),但我不希望在Wine中使用FUSE文件系统时,不得不依赖Wine中便宜且无法编写脚本的应用程序。

这里的事情的当前状态:

  • 我的键盘通过内置的USB-MIDI桥连接到我的电脑。 USB转接器/窥探器是可能的,但如果可能的话,我宁愿避免它们。我甚至不想在我开始之前解码另一层协议编码。
  • 我只运行Linux。但是,如果真的除了基于Windows的dumper/snooper之外没有别的选择,我可以尝试在我的WinXP VirtualBox VM上使用USB 1.1传递。
  • 我使用dmix为我的音频系统运行裸ALSA以进行波形音频混合。
    • 如果需要声音服务器,我愿意试验JACK。
    • 请不要PulseAudio。花费足够长的时间从我的系统中删除它。
  • 如果该过程涉及ALSA MIDI路由:
    • 虚拟直通设备,因为它常常只出现在一个ALSA跳线盘GUI等patchage瞬间之前,我可以从内部的下载器是优选的选择开始与键盘通信。
    • KMIDIMonGMIDIMonitor都不支持双向监听,据我所知。
    • virmidi isn't relevant和我还没有设法得到snd-seq-dummy工作。
  • 我想我可以修补ALSA来获得转储,如果我真的必须的话,但它确实是最后的选择。
    • 绝大多数我的编程经验是Python,PHP,Javascript和shell脚本。
    • 我几乎没有经验用C编程。
    • 我从来没有见过内核模式代码的一瞥。
    • 我宁愿保持系统稳定,正常运行时间也很长。

回答

4

这个问题一直无人接听了一段时间,虽然我没有一个确切的答案,你的问题我可能有东西,可以把你在正确的方向(或类似的问题,也许其他人)。

当我想要嗅探在Akai LPK25 MIDI键盘上用于设置和读取预设的数据时,我有一个类似的简单但不复杂的问题。与您的设置类似,设置键盘的软件可以在Wine中运行,但我也没有找到Linux的嗅探器设置。

由于缺乏现有的解决方案,我使用ALVIA ​​MIDI路由通过virmidi端口转出我自己的解决方案。我明白为什么你看到它们毫无用处,因为没有额外的软件,它们无法帮助嗅探MIDI流量。

我的解决方案是在Java中编程一个MIDI继电器/桥接器,从virmidi端口读取输入,显示数据并将其发送到键盘。键盘上的答案(如果有的话)也被读取,显示并最终传回到virmidi端口。 Wine中的应用程序可以设置为使用virmidi端口进行通信,理论上这个过程是完全透明的(除了潜在的延迟问题)。该应用程序是以通用方式编写的,而不是硬编码到我的问题。

我只处理大约20个字节长度的SysEx消息,所以我不确定该软件对于嗅探大量数据的传输有多好。但也许你可以修改它/按照这个例子编写你自己的程序。

来源可在这里:https://github.com/hiben/MIDISpy

(Java 1.6的,包括Ant构建文件,来源是根据BSD许可证)

+0

谢谢。一旦我不再因刚刚开始一个新的学期课程而感到不知所措,我会试一试。 – ssokolow 2012-09-07 12:31:14

-1

有关使用gmidimonitor什么?请参阅http://home.gna.org/gmidimonitor/

+0

正如在问题中所说的,“就我所知,KMIDIMon和GMIDIMonitor都不支持双向窥探。” – ssokolow 2012-12-30 07:30:29