从 MIDI 设备实时获取输入(Python)

Posted

技术标签:

【中文标题】从 MIDI 设备实时获取输入(Python)【英文标题】:Getting input from MIDI devices live (Python) 【发布时间】:2009-10-12 14:23:45 【问题描述】:

我有一个触发手指(MIDI 平板电脑),我希望能够实时读取其输入并根据按下的键使 python 执行操作。

我需要它用于 Windows,最好使用 python 2.5 +

谢谢

【问题讨论】:

您可以编辑旧问题,而不是再次发布相同的问题。 ***.com/questions/1554362/reading-midi-input 的副本 【参考方案1】:

PyGame 包含一个内置的midi module,可用于 Linux、Windows 和 MacOS,并且得到很好的支持。

例如,这里是pygame.midi.Input的文档:

  Input is used to get midi input from midi devices.
  Input(device_id)
  Input(device_id, buffer_size)
        Input.close - closes a midi stream, flushing any pending buffers.   closes a midi stream, flushing any pending buffers.
        Input.poll - returns true if there's data, or false if not. returns true if there's data, or false if not.
        Input.read - reads num_events midi events from the buffer.  reads num_events midi events from the buffer.

如果您正在寻找替代方案,请查看 Python wiki 中的 PythonInMusic。

那里有各种不同的与 MIDI 输入和输出相关的项目,其中一些也适用于 Windows。 (点击每个项目后的小>号,点击进入项目主页的链接)

我个人没有使用过其中的任何一个,但我相信它会帮助您入门。

【讨论】:

我如何知道设备ID? 查看该页面上的其他功能。有一个返回默认输入设备:pygame.org/docs/ref/midi.html#pygame.midi.get_default_input_id 请记住,如果您使用 PyGame,您将不得不通过 polling 来处理事件,因此它不会像您希望的那样实时。理想情况下,应该有一个库来hook 函数到 midi 事件。

以上是关于从 MIDI 设备实时获取输入(Python)的主要内容,如果未能解决你的问题,请参考以下文章

Mido - 如何从不同端口实时获取 midi 数据

Java 从 MIDI 键盘获取输入

Java 从 MIDI 键盘获取输入

读取 MIDI 输入

从停止的设备获取当前的 MIDI 时间码

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