2012-03-20 65 views
3

我正在连接几个相同的USB-MIDI设备并使用Python和pyportmidi与他们交谈。我注意到,当我在Linux上运行我的代码时,偶尔会以不同的顺序枚举设备的MIDI端口,因此我会将消息发送到错误的设备。由于这些设备没有唯一的标识符,因此我被告知应该通过它们连接的USB端口来识别它们。是否有可能找出哪个USB设备连接到portmidi/pyportmidi

有什么方法可以检索这些信息吗?我的应用程序将在Linux上运行,但Mac OS支持对于开发很有用。

这很烦人,因为它们通常按照合理顺序枚举 - 集线器中的第一个设备是portmidi中的第一个设备,但有时它们不是 - 通常前两个设备被切换。我必须物理移动设备,而不必拔掉以修复它们。

+0

@Charles为什么这个问题不值得portmidi标签? pyportmidi只是portmidi上的一个python包装器。适用于portmidi的答案几乎肯定也适用于pyportmidi。 – rjmunro 2012-05-15 14:34:42

+0

这个问题实际上是关于pyportmidi,而不是portmidi。当它仅适用于一个问题时,创建一个新标签是没有意义的*实际上并不涉及标签定义的主题。 – Charles 2012-05-15 16:02:47

+0

@Charles:答案几乎肯定会适用于任何使用portmidi的人,无论是直接通过pyPortMidi,还是通过portmidi-ruby或任何其他简单的包装器。如果一般的portmidi答案在pyPortMidi中不起作用,那将是pyPortMidi中的一个错误。 – rjmunro 2012-05-16 11:00:19

回答

0

lsusb应该做的伎俩。在那里列出所有设备及其各自的集线器。

+0

如何将我从lsusb获得的内容映射到pyPortMidi中的设备? – rjmunro 2012-03-20 16:34:04

+0

直到现在我还不知道pyPortMidi:我已经查看了源代码,应该有类似'PmDeviceInfo'的东西,它有一个接口'interf'和一个名字'name',并且应该被映射到一个名为'GetDeviceInfo '。也许你可以在那里找到缺失的链接。不幸的是我现在无法自己测试它。 – devsnd 2012-03-20 16:55:04

+0

那么,它是怎么回事? – devsnd 2012-03-21 12:33:23

相关问题