如何访问和更改 Pygame.midi?

Posted

技术标签:

【中文标题】如何访问和更改 Pygame.midi?【英文标题】:How to access and change Pygame.midi? 【发布时间】:2021-04-06 19:39:17 【问题描述】:

我正在使用 Pygame.midi,您可以从 127 种乐器中进行选择。

我想知道如何将 MIDI 乐器更改/添加到此列表中。

是否有任何地方的 pygame.midi 乐器列表,如果没有,pygame 使用哪些库来实际执行 midi?

我看到了一个叫做 PortMidi 的东西,我想知道这是否是 Pygame 使用的。

我只想知道如何访问 pygame.midi 并添加乐器。

【问题讨论】:

【参考方案1】:

Pygame 不提供工具。它只是将 MIDI 命令发送到系统的内置合成器,通常是声卡的一部分。 MIDI 一次允许 127 种乐器。有一个名为“通用 MIDI”的标准试图定义 127 种乐器的基线,这可能就是您的系统正在使用的。

您使用“sysex”(系统专有)消息来告诉合成器更改乐器到通道的分配。 pygame 通过write_sys_ex 命令支持该功能,但您必须了解合成器的内部结构才能知道要发送哪些命令。

【讨论】:

有趣,这是否意味着不同机器上的仪器可能不一样?您如何建议我在使用 pygame.midi 的同时使用自定义乐器? 这确实意味着,是的。大多数原始设备都是从通用 MIDI 集开始的,所以你会得到大致的结果,但质量差异很大。如果有人将合成器作为他们的默认 MIDI 设备插入,这种情况可能会发生,那么所有的赌注都没有了。 您只能在合成器提供的乐器中进行选择。您不能在 MIDI 中加载自己的样本。

以上是关于如何访问和更改 Pygame.midi?的主要内容,如果未能解决你的问题,请参考以下文章

使用 pygame.midi 播放 midi 音符时出现分段错误

将 MIDI 事件转换为 pygame 事件

pygame.midi.Input.read 不能是字符串

Python 编写 MIDI 文件

Pygame Midi libasound_module_conf_pulse.so 错误 + 无法打开从站

如何在flutter中访问和更改来自不同文件的变量