ALSA MIDI SysEx交换上的双向监听/监听

问题描述 投票:5回答:4

有人知道在Linux上双向获取MIDI SysEx数据的好方法吗? (在Yamaha PSR-E413 MIDI键盘和在Wine中运行的Yamaha MusicSoft Downloader的副本之间)

我想对用于将MIDI文件复制到键盘内部存储器或从键盘内部存储器复制MIDI的协议进行反向工程,为此,我需要对两者之间的有效交换进行一些记录。

[该实用程序确实可以在Wine(with a little nudging)中工作,但是当我可以使用FUSE文件系统时,我不想依赖于Wine中一个便宜的,无法编写脚本的应用程序。

这是当前状态:

  • 我的键盘通过内置的USB-MIDI桥连接到我的PC。 USB翻斗车/窥探器是可能的,但我希望尽可能避免使用它们。在开始之前,我不需要解码另一层协议编码。
  • 我仅运行Linux。但是,如果除了基于Windows的转储程序/窥探器之外别无选择,我可以尝试在WinXP VirtualBox VM上使用USB 1.1直通。
  • 我使用dmix为音频系统运行裸ALSA,以进行波形音频混合。
    • 如果需要声音服务器,我愿意尝试使用JACK。
    • 请不要使用PulseAudio。从我的系统中删除它花费了足够长的时间。
  • 如果该过程涉及ALSA MIDI路由:
    • 我可以从下载器内部选择的虚拟直通设备是首选,因为它通常只在开始与键盘通信的瞬间出现在patchage之类的ALSA修补程序海湾GUI中。
    • 据我所知,KMIDIMonGMIDIMonitor都不支持双向监听。
    • virmidi isn't relevant,但我没有设法使snd-seq-dummy工作。
  • 我想,如果确实需要,我可以修补ALSA以获得转储,但这实际上是最后的选择。
    • 我的大部分编程经验是使用Python,PHP,Javascript和Shell脚本。
    • 我几乎没有使用C语言进行编程的经验。
    • 我什至从未见过内核模式代码。
    • 我希望保持系统稳定和正常运行时间长。
linux midi alsa wine sniffing
4个回答
4
投票

这个问题已经有一段时间没有得到解答了,虽然我没有确切的答案可以解决您的问题,但也许有些事情可以将您推向正确的方向(或者其他有类似问题的人。)>

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

由于缺乏现有的解决方案,我在VirMidi端口上使用ALSA MIDI路由进行了滚动。我了解您为什么认为它们无用,因为如果没有其他软件,它们将无法帮助监听MIDI流量。

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

我只处理大约20字节长的SysEx消息,所以我不确定该软件如何监听大量数据的传输。但是也许您可以按照示例修改它/编写自己的程序。

此处提供来源:https://github.com/hiben/MIDISpy

((包含Java 1.6,包含ant构建文件,源已获得BSD许可)


1
投票

我喜欢使用aseqdump


0
投票

您可以为此目的使用虚拟Midi设备。因此,您必须加载snd_seq_dummy,以便它至少创建两个端口:


-1
投票

如何使用gmidimonitor?参见http://home.gna.org/gmidimonitor/

© www.soinside.com 2019 - 2024. All rights reserved.