问题标签 [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 投票
1 回答
554 浏览

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

我的代码:

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

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

我正在使用 Windows 7 和 Python 2.7。

0 投票
1 回答
1504 浏览

python - 在 Mac 上从 Python Mido 库输出 MIDI 声音

我正在尝试使用带有 mido 库的 python 向我的计算机内部扬声器输出一条注释。我有一台 Mac,我了解到默认情况下您需要通过 IAC 驱动程序才能将任何声音输出到扬声器。我启用 IAC 驱动程序并使用以下命令搜索正确的输出:

从那里我创建了简单的脚本:

进口米多

note=60 应该输出中间 C,velocity 是音量。

然而,根本没有发出声音。我假设必须识别端口,因为我没有收到任何错误,但再次没有声音输出。有人知道发生了什么吗?

0 投票
1 回答
1843 浏览

midi - 在 Python MIDI MIDO 读取/保存文件中转换时间/刻度

以下程序使用 MIDO 读取“g1.mid”,然后将其保存到“g1_new.mid”。我的问题是:在读取文件时,“msg.time”是一个浮点值,但在保存文件时,“消息中的时间”是一个整数。在这种情况下,我们如何将 'msg.time' 转换为 'tick in message'?

注意:这段代码在一个关于音乐生成的项目中。

0 投票
1 回答
1292 浏览

python - 如何将MIDO下的ticks_per_beat设置为一个新的MIDI文件?

MIDO 下的阅读ticks_per_beat可以通过mid.ticks_per_beat. 但是,如果我想将ticks_per_beat(例如 120 或 480)的值保存到一个新的 MIDI 文件中,该怎么做呢?(ps我可以如下设置“拍号”或“节奏”。但是,在我看来,这些值和ticks_per_beat.)之间没有关系。)

0 投票
1 回答
276 浏览

python - MIDI乐器索引python

我有一些 MIDI 文件。每个 MIDI 文件都有一些乐器。我需要知道每个 MIDI 文件包含哪些乐器。我发现了一些python可以解析 midi 文件的库,例如mido。例如,下面是解析一个 MIDI 文件的结果:

我可以看到这个 MIDI 文件中有多少曲目,但我不知道每个曲目播放的是什么乐器。这是midi仪器。有人知道解决方案吗?

0 投票
0 回答
129 浏览

python - 从 json 文件中提取信息,Python

我正在尝试从我转储的 JSON 文件中提取信息。我使用 Mido 模块来获取我需要的信息,而我发现获得这些功能的唯一方法是将其转储为 JSON。但是,经过一番搜索,我尝试并没有设法将信息提取并存储在 python 数组 ( numpy array)* 下面,您会看到示例代码。我很确定[[文件开头的 double 会造成所有这些麻烦。

输出 :

那么,要关闭它,我该如何提取这些信息?JSON甚至是一个好方法吗?如果是这样,我怎么能真正提取这些信息?或者有办法进去[[ ]]
[Windows 7,Python 3.6+]

0 投票
1 回答
322 浏览

python - 多个midi节目同时播放?

我正在使用 mido 库来用 python 控制 amsynth。

到目前为止,这工作得很好……但是我一次只能播放一个“预设”。

我正在尝试使用“program_change”来切换乐器,这样我就可以一次演奏几种乐器。

举个简单的例子:

但是当我尝试这个时,一旦我切换频道,第一个节目的音符就会被剪掉。

所以也许问题是每个程序都需要在不同的频道上:

但这也不起作用。

作为一种解决方法,我一直在考虑运行多个 amsynth 实例……但这对我来说似乎是不正当的。

如何同时演奏多种乐器?

编辑:

听起来我需要在开始播放之前将节目分配给频道,然后像这样按频道播放:

但是,这会使用程序 3 播放两个音符,因此不幸的是,这不起作用。

0 投票
1 回答
119 浏览

python - Python通过比较倒数第二个值来加/减计数器

我正在尝试根据某些条件通过添加/减去来计算列表中的项目数。

了解更多情况:我有一个 Midi 控制器,只要转动旋钮,它就会输出 Midi 数据。无论旋钮在哪里,我都想将计数器重置为 0,当它朝一个方向转动时,它会增加值并在另一个方向上减小。

每条 midi 消息都会输出如下内容:

所以我想我可以检查下一条收到的消息是大于还是小于上一条消息。

我遇到的问题是索引如下:

自动产生 IndexError: list index out of range 这很有意义,因为您可以获得空列表中的倒数第二个项目。但是我不确定如何在没有这样的检查的情况下检查值是增加还是减少......感觉就像一个 catch-22。

另外我不确定实现计数器的最佳方法是什么。对于如何解决此问题的任何想法,我将不胜感激。

代码

更新代码

0 投票
1 回答
162 浏览

python - 关于 python、音乐和事件的问题,有没有更优雅的编程方式?

目标:创建一个程序,该程序将能够根据从 MIDI 音符触发的事件来关闭和打开音乐的灯光。

大家好,我希望这不是一个太宽泛的问题。我正在做一个项目,我从 midi 文件中获取事件并将这些事件转化为时间。我从 midi 文件中记下一个注释,并将其附加到一个列表中作为放置时间

示例: https ://imgur.com/swZsrk9

我把所有这些都放在一个列表中。不要担心我是如何做到的,因为这不是我要讨论的主要目标。我刚刚在我的示例代码中用硬编码的列表替换了列表。

我现在有一个我希望灯打开或关闭的时间列表,现在我只需要设置一个无限循环,它的计时器从 0 秒开始(随着歌曲的开始)和计时器 == (列表中的下一次)它将打印出一行。这是我的代码:

这是它运行的视频:https: //www.youtube.com/watch?v= VW-eNoJH2Wo&feature=youtu.be 忽略弃用警告

它可以工作,但有时,由于编程的性质,time.clock() 并不总是 == 列表中的下一项。我知道这将是一个问题,因为您不能依赖代码执行多长时间。有时,完成一个 while 循环需要比平时多几毫秒的时间,所以当你调用 time.clock() 方法时,它 != 列表中的下一次。然后列表不会删除它的第一项,然后它永远不会等于第一项。

我尝试了 10 毫秒 (.1),但它并没有给我所需的准确性。

此外,它看起来很笨拙,有时事件会延迟几毫秒,这会使效果不那么令人愉悦。正如您从我的视频中看到的那样,打印的时间并没有完全排列在它们需要的位置,即使它们完美地放置在它们需要在 midi 文件中的位置。

问题:有没有更优雅的方法来解决这个问题?我似乎一直在寻找修补它以使其更好地工作的方法,然后它总是回到编程的本质,其中 cpu 总是不可靠的。我一直试图想出不同的方法来做到这一点,但我想不出任何办法。您的帮助将不胜感激!!

0 投票
1 回答
420 浏览

python - 如何矢量化 midi 输入?

我想创建一个将接受音乐训练的 LSTM 模型(使用 Keras),但我在对 midi 输入进行矢量化时遇到了困难。我尝试在 python 中使用“Mido”库,从中可以提取以下格式的数据:

我正在将其转换为数组

其中velocity表示速度以及是否为note_on\note_off。现在的问题是我如何在这里输入时间,我的意思是时间以刻度为单位(我猜)。我如何将这些滴答声转换为秒,并且我将这个数组提供给顺序模型,我将如何再次将时间转换为输出中的滴答声?