问题标签 [pyportmidi]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
243 浏览

python - 除非我添加延迟,否则使用 pyportmidi 发送大量数据会停止工作

我正在尝试使用 pyportmidi 与 Novation Launchpad 交谈。我注意到,如果我只是继续使用midiOut.WriteShort()它发送指令,它将处理前 100 个左右,然后释放其余的。

我猜某处有一个缓冲区快满了,一旦它满了,指令就会丢失。我可以通过在每条消息后添加 time.sleep(.1) 来解决该问题,但这显然会使事情变得非常缓慢。有没有办法测试缓冲区是否已满,只有在需要时才睡觉?或者在我发送更多数据之前等待缓冲区清空的方法?

0 投票
1 回答
442 浏览

python - 是否可以在 portmidi / pyportmidi 中找出 MIDI 设备连接到哪个 USB 端口

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

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

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

0 投票
1 回答
343 浏览

python - 有没有办法让 pyPortMidi 在 Win7-64 上工作?

我正在尝试将 pyPortMidi 用于我为 OSX、win32 和 win64 构建的应用程序。我已经让它在 OSX 和 win32 上工作,但我一直试图让它在 win64 上工作。

pyPortMidi 是一个名为 PortMidi 的 C 库的包装器,可从PortMidi 源代码下载0.7 版和John Harrison 的网站下载0.9 版。我已经尝试了具有相同故障模式的两个版本。

首先,我使用面向 X64 的 MSVC++ 2008 Express 构建了 PortMidi。包含的测试程序可以工作并且能够与midi端口通信,所以我认为PortMidi构建很好。

接下来我构建了 pyPortMidi。对于 0.7 版,我不得不稍微修改 setup.py 文件以说明包含文件的正确位置(从 ../win32 移动到 ../pm_common)并且它构建时没有错误。虽然 0.7 版使用 cython 构建 _pyportmidi.c,但 0.9 版使用 pyrex 做同样的事情;为了让它工作,我必须使用使用 easy_install 安装的 pyrex 版本。它也没有错误地构建。

我可以将库导入 Python,但是当我第一次调用它时,它会立即使 Python 崩溃:

有没有人让 pyPortMidi 在 X64 上运行?关于如何调试此问题的任何建议?

0 投票
1 回答
222 浏览

c - 将 Midi 序列写入文件

我有一个用 C 语言编写的控制台程序,它使用 PortMidi 库生成简短的随机音乐作品。最终,我想将这些序列写为 MIDI 或音频文件。

我在 portmidi 库中找到了一些关于读写函数的解释:Pm_read()Pm_write(); 但是,没有例子,我很难理解和实现这一点。

无论如何我可以一次导出整个序列吗?

如果没有,是否需要递归读取缓冲区并保存单个 MIDI 音符?还是我需要将整个序列读入缓冲区然后保存?

0 投票
1 回答
847 浏览

python - 尝试发送控制更改消息时 MIDI 消息数据无效

我正在使用 pygame.midi 库来发送 MIDI 消息(控制更改消息,而不是注释)。这个想法是从输出(来自这个python程序)发送到另一个程序的输入。

如您所见,我正在发送 0x74,124,0。我从 rakarrack(我想控制的应用程序)实现图表中获取这些数字:http ://rakarrack.sourceforge.net/midiic.html

我究竟做错了什么?

0 投票
1 回答
70 浏览

python - 使用非标准库冻结没有错误代码

我正在使用一个名为 Novation Launchpad 的 MIDI 控制器进行一些工作,该控制器有一个可供导入和使用的 python 模块。

我的代码一直卡在行上LP = launchpad.Launchpad()。所以这是我尝试调试的方式:

该程序从不打印I've worked,所以我知道我的问题在于创建 Launchpad 实例。

使用朋友的笔记本电脑,我们没有遇到任何问题。我有间歇性的问题,它工作和不工作,真的不知道从哪里开始寻找!

0 投票
1 回答
554 浏览

python - 关闭 mido 端口时的“PortMidi: `Bad pointer'”

我的代码:

在最后一行之后,将打印以下错误:

除此之外,一切似乎都很好。但是我正在开发一个控制台应用程序,这个输出很烦人。我怎样才能摆脱这个错误?

我正在使用 Windows 7 和 Python 2.7。

0 投票
1 回答
1214 浏览

python - 如何使用 python-rtmidi 获取 midi 事件

的文档python-rtmidi基本上是有史以来最糟糕的。我试图弄清楚如何使用该程序获取 midi 事件数据。我想要的数据是这样的

[1]

我什至不确定是否python-rtmidi可以获得这些数据,这就是他们的文档有多糟糕,他们甚至没有告诉你他们的应用程序是做什么的。但无论如何,我需要这些数据,而且我需要它在 python 程序中。网页上存在的唯一示例python-rtmidi似乎仅显示了如何将 midi-event 输出到外部乐器。我想要相反的。我希望仪器中的数据显示在我的计算机上。我至少可以让软件感应我的外部仪器。例如,当我使用以下代码时

它可以检测到我的外部 Alesis 键盘,但我没有看到类似于键盘上按下键的变量。我还需要指出,我需要可以实时记录事件的 python 软件。我的第一个目标是获取 midi 事件,然后编写一个程序来计算事件是否定时正确。


更新

这家伙至少在做我想做的事。他可以得到 midi 事件,但他没有说他是如何得到它们的。

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

0 投票
1 回答
88 浏览

python - 如何访问和更改 Pygame.midi?

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

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

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

我见过一个叫做 PortMidi 的东西,我想知道这是否是 Pygame 正在使用的。

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