Midi 控制器设备名称

Posted

技术标签:

【中文标题】Midi 控制器设备名称【英文标题】:Midi Controller Device Names 【发布时间】:2017-02-28 22:16:27 【问题描述】:

为了编写一个 midi(包装)库,我试图弄清楚 midi 设备的“名称”是在哪里定义的。是设备给定的还是它所连接的系统给定的?

例如,我在一台连接了 midi 控制器的 linux 机器上从“amidi”获得以下输出。

amidi -l
Dir Device    Name
IO  hw:1,0,0   MIDI 1

它的名字总是“MIDI 1”(原文如此!),我不确定我是否可以假设这个供应商/型号的每个设备都具有相同的名称。

【问题讨论】:

【参考方案1】:

对于 PCI 声卡,驱动程序知道名称。

对于 USB 设备,snd-usb-audio 驱动程序查看设备的描述符以获取设备名称,并附加“MIDI x”以获取 MIDI 端口名称。如果没有定义设备名称,它会根据设备编号构造一个默认名称,因此这看起来就像您的 MIDI 控制器显式返回一个空字符串。在您的情况下,这会导致一个荒谬的结果,但是使用这个名称是您的库可以做的最好的事情。

(以 root 身份运行“sudo lsusb -v 2>&1 | grep -e iManufacturer -e iProduct”以查看您的 USB 设备声明的内容。)

【讨论】:

以上是关于Midi 控制器设备名称的主要内容,如果未能解决你的问题,请参考以下文章

从 C# 控制台应用程序枚举 UWP MIDI API 设备?

演奏世间所有乐器——Midi设备到底有多神奇?

Ubuntu 的 MIDI 设备的名称是啥

用于虚拟 DJ 的 Arduino Usb MIDI 控制器

使用带有 USB midi 控制器的 midiio 接口 (linux)

在 C++ 中从 MIDI 设备获取 ID