问题标签 [mido]

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 投票
0 回答
75 浏览

python - Python:如何使用 MIDO 库标记 .midi 文件

我有这些 .midi文件,我想用每 0.032 秒的音高(MIDI 数字)标记它们。我想要的标签示例可以在这里找到。在这个任务中,我使用 Python mido 库,文档可以在这里找到。

据我所知,在处理 .midi 之前,我需要先迭代文件中可用的所有消息。我从这个文件中拿了 1 个例子,这是代码 + 结果。

我的问题是:如何使用可用的信息(速度、速度)将它们分成 0.032 秒的块?在开始标记文件之前,我应该从文件中收集更多信息吗?

0 投票
0 回答
183 浏览

python - 使用 Mido 获取 Midi-Input 并使用 Tkinter GUI 做出反应

我目前正在做一个项目。我的目标是从我的 MIDI 键盘获取输入并对音符事件做出反应。当我收到特定注释的注释事件时,我想在我的 Tkinter GUI 上可视化它,我在其上创建了一个带有矩形的键盘。我希望 GUI 一直显示,当我按下任何 c-note 时,我希望 c 矩形被标记为一个点。当我收到 note-off 事件时,我想删除点。我在 Mac 和 Python 3.9.2 上使用 Big-Sur 11.0.1。

问题是:如何在显示 TkinterGUI 的同时使用 Mido 接收 midi 输入并在 GUI 中对其做出反应。当我运行导入“klaviatur.py”文件的“keyboardInput.py”文件时,GUI 被绘制并且没有收到 Midi 输入,代码不再监听任何 midi 输入。如何在显示 GUI 的同时接收 midi 信号以在我的 GUI 上“实时”显示它们?

这是我的 Tkinter GUI 文件中的代码,名为“klaviatur.py”:

这里是代码文件“keyboardInput.py”,它获取 midi 输入并导入 klaviatur.py 文件:

谢谢您的帮助!

0 投票
0 回答
124 浏览

python - 计算单个 midi 音符的时间以存储在 numpy 数组中

我正在研究一个经过训练以生成 midis 的神经网络,但是我在将 midi 文件转换为原始数据时遇到了问题。我正在使用 mido 将每个单独的音符转换为大小为 2 的数组,因此转换后的歌曲将看起来像这样:

大多数笔记没有单独的时间。相反,它由诸如 set_tempo 或 set_signature 之类的元消息或诸如 'control_change' 之类的消息确定,如下所示:

不幸的是,我不完全理解这些元消息如何影响单个笔记,所以我不确定如何正确地将数据转换为我的网络的简单 numpy 数组。

谁能告诉我如何使用 mido 计算单个音符的时间?或者也许有一个更好的库来完成这个特定的任务?

0 投票
0 回答
60 浏览

python - 在 macOS 上使用 Python 播放 MIDI 文件

我正在尝试从 Python 播放一些 MIDI 文件(使用 PyCharm)。这是我必须读取 MIDI 文件然后播放它但没有播放声音的代码。

0 投票
1 回答
43 浏览

python - 抑制 MIDI 文件的结尾

例如,我想删除一个 midi 文件的结尾,以便拥有一个 30 秒的文件。

我试图在每个轨道上计算总时间值,并在每次超过 30 秒时删除消息。不过我听的时候还是一样的时长,唯一的区别就是文件中间有一个没有声音的间隙。

有谁知道我该怎么做?

谢谢!

0 投票
1 回答
96 浏览

python - 为什么在 macOS 上用 mido 播放 midi 时听不到声音?

我可以通过以下方式在 macOS 上播放和收听 MIDI 文件:

所以我想我的midi驱动程序正在工作。

但是,我在玩的时候听不到任何声音mido。这是我的代码:

在 macOS 上,它似乎正在运行,只是听不见。没有错误信息。

在 Windows 上,相同的代码可以完美运行,我可以听到音乐。

我想知道为什么mido不能在 macOS 上播放。有谁知道如何让它在 macOS 上运行?

0 投票
0 回答
32 浏览

python - python库上的MiDI播放位置?

我正在使用 MIDO 编写一个小型应用程序,它读取和播放多通道 MIDI 文件,并通过外部同步控制其播放速度。一切正常。我正在通过 rtmidi 使用 MIDO。

唯一的问题是它只能从文件的开头起作用,我不能从 thr 文件中的任何选定位置开始。MIDO 文档似乎没有这种可能性,并且由于它使用增量计时,因此很难估计多通道文件中的刻度位置。

关于如何实现这一目标的任何想法?我认为 pygame 也无法设置播放的 MIDI 位置......

谢谢

0 投票
0 回答
136 浏览

python - 如何将整个 MIDI 文件拆分为多个部分?

对于我正在进行的一个项目,我想将我数据库的所有 .mid 文件分成更小的部分,特别是每个 30 秒(因此一首 1 分钟 45 秒的歌曲将分为 4 个部分,分别为 30 秒、30 秒、30 秒和 15 秒长)。我尝试使用 mido 来做到这一点,但我没有成功,我似乎一次只能处理一个轨道,而不是将每个轨道的前 30 秒作为一个单独的 midi 文件取出。我的文件都包含多个乐器轨道。我应该在将它们转换为格式 0 后处理它们吗?

0 投票
1 回答
113 浏览

python - python mido MIDI包中使用MultiPort的问题

我正在一个程序中工作,该程序会在播放 MIDI 消息时自动保存它们,并且在使用单个输入端口时一切都运行良好。我想扩展为使用 2 或 3 个同时端口(该应用程序针对 VST 钢琴演奏者,有些将钢琴用作一个 MIDI 设备,将延音踏板用作另一个 USB 插槽中的第二个设备)。我能够使用两个单独的输入端口使其工作,然后使用 2 个 iter_pending() 循环。基本代码是这样的:

这样做的问题是循环是顺序的。当我通过 2 个端口发送相同的 midi 消息进行测试时,通过 port_B 进入的事件会延迟几毫秒。

MIDO 包为此包含了一个不同类型的端口: mido.ports.MultiPort() 我的问题是我无法让它工作。

如果我尝试:

正如 MIDO 文档中所建议的那样,没有打印任何味精......

我已经为 multi 中的端口做了各种语法组合,但似乎没有任何效果。

我在这里做错了什么?

0 投票
0 回答
141 浏览

python - Python:从midi文件中获取正确的开始和结束

我正在玩 python mido 库,我正在尝试获取笔记数据,但我不明白。

我的代码:

输出的一些示例部分

现在我不确定几件事。这部分意味着音符 64 开始于 1 毫秒并结束于 119 毫秒?如果是的话,有没有比这更好的方法来开始和结束笔记?

我不明白的另一件事是midi编辑器中的歌曲有3分钟,而在这个midi文本文件中没有时间值更大time=500

谢谢你的帮助。