问题标签 [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 回答
185 浏览

python - Music21:获取音符的曲目索引

我有一个用music21 阅读的多轨midi 文件

我想弄清楚这个流中的每个音符属于哪个轨道。例如,当我在 GarageBand 中打开文件时,音符被组织成轨道:

在此处输入图像描述

mido中,每个MidiFile都有一个tracks属性,其中包含每个轨道的一个音符列表。

有没有办法让music21得到同样的结果?任何帮助,将不胜感激!

0 投票
0 回答
186 浏览

music21 - 获取已解析的 MusicXML 文件的节奏

在 MusicXML 中,可以有direction带有<sound>标签的标签,这些标签设置 BPM。例如,

是否有可能通过它们在小节中的偏移量来定位速度标记?

编辑:我使用了从 MuseScore 下载的作品。我目前找到了一个需要在解析 XML 文件之前对其进行预处理的解决方案。我使用的 XML 文件<direction>包含具有<sound>元素但没有元素的<metronome>元素。所以我所做的是在每个<direction>具有元素的<sound>元素之后,我添加了一个<direction>具有元素的新元素<metronome>,这似乎是 music21 实际解析<sound>元素的唯一方法,然后它可以与Stream.metronomeMarkBoundaries. 例子:

0 投票
1 回答
164 浏览

python - music21:在休止符上显示歌词

我想在音符和休止符上写music21的歌词(以显示不同的韵律水平)。我需要两个对象具有相似的布局,但音符的歌词位置不同。

更重要的是,像 lilypond 这样的环境甚至不支持休止符上的歌词。我对此没意见,但我需要一些方法来为这些歌词提供一个漂亮的显示。

作为参考,我试图在用户指南中做一个这样的例子 来自用户指南第 55 章的示例

但是如果我们看一下第 5 小节的其余部分,歌词的显示会比其他的要低一些。这就是我要解决的问题。

0 投票
1 回答
134 浏览

python - 使用 Music21(或替代方法)从 MIDI 中提取休止符并写入单独的 MIDI 轨道

我正在尝试将一个简单的单通道、单乐器 MIDI 文件解析为音符和休止符。我知道“休息”不是直接编码成 MIDI,而是缺少 NoteOn/NoteOff 对。

我要做的是从第一个(也是唯一的)MIDI 通道(0)读取数据,并使用 Python 中的 Music21 提取音符和休止符。一旦我这样做了:

  1. 我将把笔记留在频道 0
  2. 我将在单独的通道通道 1 上将其余部分编码为正常的 NoteOn/NoteOff 对。我还可以在此处捕获其余部分的持续时间。

然后,我可以使用这些数据在稍​​后构建的前端中显示音符和休止符。

所以我的问题:

  1. Music21 适合这个吗?或者有没有更简单的方法?
  2. 如果 Music21 合适,这样做的好策略是什么?
  3. 我目前正在使用从 URL 下载示例 MIDI 文件,requests并尝试使用requests.content. 这合适吗?

感谢您的帮助,我对 Music21 库很陌生!

0 投票
1 回答
340 浏览

python - 使用 Music 21 和 Python 输出不止一种乐器

我正在使用 Python 和 Music21 编写一种算法,该算法从输入的小提琴音乐文件和钢琴作品组成旋律。我的问题是,当我输入一个包含两种乐器的 midi 文件时,输出只有一种乐器。我目前可以将输出乐器更改为吉他、小号等,即使这些乐器不在我的原始输入文件中。我想知道我是否可以编写一些代码来识别输入文件中的仪器并输出那些特定的仪器。或者,有什么方法可以为两个输出仪器而不是一个编码?我已经厌倦了用另一个仪器复制现有代码,但算法只输出代码中检测到的最后一个仪器。下面是我当前运行的代码:

0 投票
1 回答
97 浏览

python - 如何创建包含不同乐器的多个音轨的 midi 文件?用python和music21

所以我有下面的代码

我想创建一首包含 3 条不同轨道且每条都演奏不同乐器的歌曲。上面的代码类型将所有内容组合成 1 个音轨并覆盖前 2 个乐器。有没有办法我可以做到这一点?

0 投票
1 回答
28 浏览

music21 - 使用music21的音阶类继承“deriveAll”功能的自定义音阶

我想知道定义自定义比例的正确方法是引入“比例”类的属性吗?

我是否应该将我的课程包含在“music21/scale/ init .py”中

当我在 main.py 中定义 myScale 时,它​​似乎没有继承“deriveAll()”方法/函数。

但是,没有定义deriveAll:

任何帮助将不胜感激。

0 投票
0 回答
83 浏览

django - Django - 临时midi文件music21

抱歉,如果我做的不对,我是 Web 应用程序开发的新手,我一直在使用 Django 开发一个项目,我希望我能做到以下几点:

当用户单击一个按钮时,会生成一个 Ajax 请求(我使用的是纯 Javascript)。

此请求将一些音符发送到生成旋律的服务器(Django)。

服务器将旋律保存在我想成为临时文件的 midi 文件中

所以用户可以收听midi(html模板):

我希望这个文件是临时的,这样它就不会占用空间,也就是说,用户可以收听旋律,可以选择下载它等等,但是当他们离开页面时,文件被删除并且因而不占用更多空间。

我怎么知道这个文件的 url,我想是临时的?

0 投票
1 回答
361 浏览

python - 如何使用python根据音符音高分割midi文件?

如何使用 python 根据音高分割 MIDI 文件?我尝试了 music21 库,但我真的不知道它是如何工作的......

0 投票
2 回答
396 浏览

midi - 使用带有 partitionByInstrument() 的 music21 读取 MIDI 文件以获取返回空列表的音符和和弦

我正在尝试使用此github 存储库的 .py 文件中的代码(get_notes() 函数)从该 midi 文件中提取音符和和弦数据。这是从我正在使用的存储库中复制的确切代码:

我的 midi 文件有多种乐器,我相信由于某种原因,没有任何东西被附加到笔记列表中。看到我刚刚克隆了存储库的代码并在我自己的 midi 文件上运行它,我不确定它为什么不起作用。我查看了 music21 的 partitionByInstrument() 的文档,并尝试通过更改来迭代不同的乐器:

因为不同的部分应该是文件中的不同工具,但它仍然返回一个空列表。我该怎么办?