Python 在portmidi/pyportmidi中是否可以找到MIDI设备连接到的USB端口

Python 在portmidi/pyportmidi中是否可以找到MIDI设备连接到的USB端口,python,usb,midi,pyportmidi,Python,Usb,Midi,Pyportmidi,我正在连接几个相同的USB-MIDI设备,并使用Python和pyportmidi与它们交谈。我注意到,当我在Linux上运行代码时,偶尔会以不同的顺序枚举设备的MIDI端口,因此我会将消息发送到错误的设备。由于这些设备没有唯一的标识符,我被告知应该识别它们连接到哪个USB端口 有没有办法检索这些信息?我的应用程序将在Linux上运行,但Mac OS支持对开发非常有用 这很烦人,因为它们通常以合理的顺序枚举-集线器中的第一个设备是portmidi中的第一个设备,但有时它们不是-通常前两个设备是交

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

有没有办法检索这些信息?我的应用程序将在Linux上运行,但Mac OS支持对开发非常有用


这很烦人,因为它们通常以合理的顺序枚举-集线器中的第一个设备是portmidi中的第一个设备,但有时它们不是-通常前两个设备是交换的。我必须在不拔掉插头的情况下移动设备来修复它们。

lsusb
应该可以做到这一点。这里列出了所有设备及其各自的集线器。

如何将我从lsusb获得的信息映射到pyPortMidi中的设备?直到现在我才知道pyPortMidi:我已经查看了源代码,应该有类似于
PmDeviceInfo
,它有一个接口
interf
和一个名称
name
,应该映射到一个名为
GetDeviceInfo
的python函数。也许你可以在那里找到丢失的链接。不幸的是,我现在不能自己测试它。@Charles为什么这个问题不值得使用portmidi标签?pyportmidi只是portmidi上的python包装器。适用于portmidi的答案几乎肯定也适用于pyportmidi。问题实际上是关于pyportmidi的,而不是关于portmidi的。如果新标记只适用于一个与标记定义的主题无关的问题,那么创建一个新标记是没有意义的。@查尔斯:答案几乎肯定适用于任何使用portmidi的人,无论是直接使用、通过pyPortMidi、通过portmidi ruby还是任何其他简单的包装器。如果一般的portmidi答案在pyPortMidi中不起作用,那将是pyPortMidi中的一个bug。