问题标签 [music21]

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 回答
3525 浏览

python - 如何从 MIDI 文件中提取单个和弦、休止符和音符?

我正在制作一个程序,该程序应该能够从某个 midi 文件中提取音符、休止符和和弦,并将音符和和弦的相应音高(以 midi 音调数字 - 它们从 0-127 变为 csv 文件)供以后使用。

对于这个项目,我使用的是 Python 库“Music21”。

这是我用作测试的分数的链接。 https://musescore.com/user/1699036/scores/1225766

当我运行 extract_notes 函数时,它返回两个空数组和行:

它返回

我对它为什么这样做感到困惑。这首曲子应该有两个部分,高音和低音。如何将每个音符、和弦和休止符放入一个数组中,以便将其放入 csv 文件中?

0 投票
1 回答
876 浏览

python - 如何从 music21 乐谱中获取所有钢琴部分?

我能够使用 music21.stream.Score 获得所有部分

或者

但我找不到检查每个声部是否使用钢琴乐器的方法。有没有更好的方法来做到这一点?

0 投票
1 回答
85 浏览

python - 识别不同流中的同时音符

我想确定何时应同时播放来自两个不同部分/乐器的音符。

https://cdn.shopify.com/s/files/1/1280/7719/products/Air_on_the_G_String_Preview.jpg?v=1464908099

拿上面的乐谱。在第三小节中,高音谱号的重音 A 和低音谱号的 B 应一致演奏。如何解析 music21 流并找到所有这些实例?

我知道一个片段的每个“部分”都可以按照其注释的顺序进行解析:

但这不允许我确定第一部分中的一个音符何时与第二部分中的一个音符在同一时刻开始。

0 投票
2 回答
2158 浏览

python - Python music21库从流中创建png

我在streammusic21. 我阅读了文档并使用它ConverterLilypond来执行此操作。

此代码将生成 png 文件、eps 文件计数文件、tex 和 texi 文件。为什么?我怎样才能只生成一个文件,PNG文件?

当我尝试在 jupyter 中运行此代码足以显​​示chords.show()图像时,但通常在脚本中show生成一个文件,而不是图形。

编辑:

带有环境变量的代码

0 投票
1 回答
259 浏览

python - 无法使用 partitionByInstrument 将文件分成几部分

使用 music21 无法使用partitionByInstrument.

显示休闲错误

此外,当我检查歌曲对象包含的内容时song.show("text"),我可以看到有部分。生糊在这里

此问题发生在所有诺丁汉 midi 数据集上。当我尝试不同的 MIDI 文件时,一切都很好,并且可以正常partitionByInstrument工作

0 投票
0 回答
63 浏览

python - 以全处理器能力运行music21

我正在尝试通过从较大的数据集中仅提取特定歌曲来创建数据。具体来说,我的意思是歌曲只有两种乐器,一种来自键盘家族,另一种来自弦乐家族。简化的代码如下所示:

这个过程需要很多时间,我想对其进行优化。主要问题是为什么处理器不能以全功率运行,而只有 17% 左右。music21的最后一个版本说 - “Feature Extraction runs multicore by default”

在此处输入图像描述

0 投票
0 回答
93 浏览

d3.js - Music21 和 D3.js 用于音乐特征提取和可视化?

我正在寻找有关哪些工具可用于以下有关音乐特征提取和可视化的方案的建议(在我的 Mac 上):

  1. 识别和分组乐谱中同时发声的音符(来自不同的声音/乐器)(即使它们在不同的时间偏移中受到攻击,尽管由于不同的持续时间长度而在某个点一起发声);然后以图形方式连接它们(例如在乐谱表示上,用一条线连接它们)

  2. 识别旋律和伴奏部分(分配给不同的声音/乐器,可能在同一个声音/乐器中互换)

  3. 提取初始音调和以下调制;然后在基于 5 度圆的比例上映射所有提取的音调(其中 0 是初始音调,-1 是低 5 分之一,+1 是高 5 分之一,等等)

我一直在考虑使用music21(我感兴趣的音乐作品是其语料库的一部分),但我不确定这是否是正确的方法。还有其他可以提供帮助的工具(例如 jSymbolic2??)吗?

那么可视化呢?上述场景是否可以在 music21 中直观地“解决”,还是我需要一个额外的工具,比如 D3.js(我过去曾短暂使用过)?

如果您对上述任何一种情况有任何建议,那将对我有很大帮助!谢谢,伊利亚斯

0 投票
1 回答
387 浏览

python - music21 并行解析文件

我想使用 music21 库并行解析 MIDI 文件,因为有时脚本挂起并且 CPU 加载到 100%。问题是我的函数返回文件中的注释列表,当我使用common.runParallel这个函数时,我得到了TypeError: 'list' object is not callable

我怎样才能解决这个问题?

EDID

我将功能更改为:

它运行良好

0 投票
0 回答
653 浏览

python - 在python中为每个条拆分midi文件

我想将 python 中的 MIDI 文件划分为条形并获取这些条形中的音符。所以我使用music21库,我可以得到笔记,但我不能按小节分开。我想知道第 1 小节是什么笔记,第 2 小节是什么。希望能对这个问题有所帮助。谢谢。

0 投票
1 回答
400 浏览

python - Julia PyCall 在运行 Music21 模块时遇到困难

我是一个初学者,在使用 Julia 的 PyCall 与 MIT Python 音乐模块 music21 交互时遇到困难。

根据 Music21 的网站,为了以乐谱显示短旋律,可以在 Python 中输入:

这是我尝试在 Julia 中执行此代码的操作:

我首先初始化了music21,它似乎工作:

然后我尝试通过键入以下内容在 Julia 中重新创建上述 Python 示例:

converter.parse("tinynotation: 3/4 c4 d8 f g16 agf#").show()

更新 1 根据 rickhg12hs 的建议,我尝试了 music21.converter.parse("tinynotation: 3/4 c4 d8 f g16 agf#").show()。

现在我在“解析”上收到此错误消息:错误:类型 PyObject 没有字段解析堆栈跟踪:1 eval(::Module, ::Any) at ./boot.jl:235

这似乎是一种改进,因为它现在在代码链中稍后崩溃,在“Parse”而不是“Converter”。

更新 2 - 已修复 此问题与点重载有关。基于此链接,我尝试将代码修改为如下所示:

但现在我得到了这个错误

我发现我要做的最后一件事就是下载 MuseScore,现在问题已经解决了!

有关此解决方案的丑陋和即将修复的更多上下文,请参阅@crstnbr 的答案。

非常感谢!纳库尔