gpt4 book ai didi

linux - 在 ALSA MIDI SysEx 交换上双向嗅探/监听

转载 作者:IT王子 更新时间:2023-10-29 00:36:23 26 4
gpt4 key购买 nike

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

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

该实用程序在 Wine ( with a little nudging) 中确实有效,但我不想在可以使用 FUSE 文件系统时依赖 Wine 中廉价的、不可编写脚本的应用程序。

这是目前的情况:

  • 我的键盘通过内置的 USB-MIDI 桥连接到我的电脑。 USB 转储器/窥探器是可能的,但我希望尽可能避免使用它们。我什至不想在开始之前就必须解码另一层协议(protocol)编码。
  • 我只运行 Linux。但是,如果除了基于 Windows 的转储器/窥探器之外真的没有其他选择,我可以尝试让 USB 1.1 直通在我的 WinXP VirtualBox VM 上运行。
  • 我为我的音频系统运行纯 ALSA,使用 dmix 进行波形音频混合。
    • 如果需要声音服务器,我愿意尝试使用 JACK。
    • 请不要使用 PulseAudio。从我的系统中删除它花了足够长的时间。
  • 如果过程涉及 ALSA MIDI 路由:
    • 我可以从下载器中选择的虚拟直通设备是首选,因为它通常只出现在 ALSA 补丁 bay GUI 中,如 patchage在它开始与键盘通信之前的一瞬间。
    • 都不是KMIDIMon也不GMIDIMonitor据我所知支持双向监听。
    • 维尔米迪 isn't relevant而且我还没有设法让 snd-seq-dummy 工作。
  • 我想如果我真的必须的话,我可以修补 ALSA 以获得转储,但这确实是最后的选择。
    • 我的绝大多数编程经验都是使用 Python、PHP、Javascript 和 shell 脚本。
    • 我几乎没有用 C 语言编程的经验。
    • 我什至从未见过内核模式代码的一瞥。
    • 我希望保持系统稳定和正常运行时间较长。

最佳答案

这个问题已经有一段时间没有答案了,虽然我对你的问题没有确切的答案,但我可能有一些东西可以把你推向正确的方向(或者其他有类似问题的人)。

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

由于缺乏现有的解决方案,我使用 ALSA MIDI 路由通过 virmidi 端口推出了自己的解决方案。我理解为什么您认为它们毫无用处,因为如果没有额外的软件,它们就无法帮助嗅探 MIDI 流量。

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

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

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

(Java 1.6,包括 ant 构建文件,源代码在 BSD 许可证下)

关于linux - 在 ALSA MIDI SysEx 交换上双向嗅探/监听,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10219487/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com