从音符中获取调和音阶的算法?

标签 algorithm midi audio-processing

<分区>

从存储在数组中的一系列 MIDI 音符(带有 MIDI 音符编号)中,是否存在一种算法来获取这些音符所暗示的最可能的调或音阶?

最佳答案

如果您使用的是 Python,则可以使用 music21 工具包来执行此操作:

import music21
score = music21.converter.parse('filename.mid')
key = score.analyze('key')
print(key.tonic.name, key.mode)

如果您关心用于查找 key 的特定算法,您可以使用它们而不是通用的“ key ”:

key1 = score.analyze('Krumhansl')
key2 = score.analyze('AardenEssen')

等这些方法中的任何一种也适用于和弦。

(免责声明:music21 是我的项目,所以我当然有推广它的既得利益;但您可以查看 music21.analysis.discrete 模块,从中获取其他项目/语言的想法。如果您有MIDI 解析器,Krumhansl 算法不难实现)。

关于从音符中获取调和音阶的算法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14734644/

相关文章:

c# - Notepad++ 的 Compare 插件算法

ruby - 在井字游戏中调试递归 MiniMax

java - 从数组中检索特定范围的数据 (Java)

java - midi 键盘不适用于所有平台

python - music21:按音符位置将音符写入 MIDI 文件

c# - 帮助实现这个节拍检测算法?

audio - 如何在 Audiokit 中正确设置多带通滤波器?

c++ - stable_partition 如何成为一种自适应算法?

java - 为什么第一个 sqrt 算法比第二个更快?