首页 > 解决方案 > 如何在 python 中实现一个 MIDI 键盘

问题描述

希望使用 PYQT5 创建一个基于 GUI 的 25 键键盘,它可以支持 MIDI 控制器键盘。但是,我不知道从哪里开始(我应该使用哪些库以及如何找到支持所有 MIDI 控制器键盘的通用方法)。我计划潜在地使用 Mido 库或 PyUSB,但我仍然对如何使这一切发挥作用感到困惑。任何入门指南将不胜感激。

标签: pythonpyqt5midilibusbpiano

解决方案


MIDI 是所有制造商共享的通用标准,因此您不必担心“支持所有 MIDI 控制器键盘”,您只需要担心支持您系统的 MIDI 工作室即可。

您必须扫描您的环境以获取现有的 MIDI 端口。使用现有端口列表,您可以让用户选择他希望将键盘生成的事件发送到哪个端口和/或他希望从哪个端口接收将激活键盘的事件(例如从连接的物理 MIDI 键盘到您的计算机),可能是所有可用的输入端口。

为了支持输入事件,您需要一种准备好随时接收打开和关闭传入音符(这是键盘的主要相关消息)的回调。这也意味着您必须过滤接收到的不属于这些类型的事件,因为在 MIDI 中,事件流可能包含许多与音符混合的其他事件(弯音、控制器、程序更改等)上)。

最后请注意,MIDI 本身不会产生任何声音。因此,如果您在键盘上弹奏时打算听到某些声音,则应将生成的 MIDI 事件发送到受控设备(例如合成器或虚拟乐器),通过该设备接收的端口来生成声音。

对于该库,Mido 似乎是一个不错的选择:它具有此类项目所需的所有功能。


推荐阅读