python - music21 - 将流转置为给定的键

标签 python music21

是否有将流转换为给定键的函数或简单方法?

我想在循环中使用它,例如,获取一组主要流并将所有流转置为 C 大调(这样我就可以对它们进行一些统计工作)。

我看到的所有移调工具都使用音程或音调数量,而不是固定键。编写我的函数应该不难,但我想它必须已经完成...谢谢

最佳答案

如果 s 是一个 Stream(例如 ScorePart),那么 s .transpose('P4') 会将其上移纯四度等。如果您知道 s 的调为 k 大调,则 i = interval.Interval(k, 'C') 会让你执行 s.transpose(i)k 移动到 C。如果你不如果不知道 s 的 key ,那么 k = s.analyze('key') 会很好地找出它(使用 Krumhansl 探测音方法)。将它们放在一起。

from music21 import *
for fn in filenameList:
    s = converter.parse(fn)
    k = s.analyze('key')
    i = interval.Interval(k.tonic, pitch.Pitch('C'))
    sNew = s.transpose(i)
    # do something with sNew

这假设您的作品很可能是专业的。如果不是,您可以将其视为平行大调(f-minor -> F-major)或在 k.alternativeInterpretations 中找到最佳大调分析。或者如果是未成年人,则将其转为未成年人,等等。

关于python - music21 - 将流转置为给定的键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37494229/

相关文章:

python - ANSI 图形代码和 Python

python - 我怎样才能将一个有n列的矩阵转换成只有一列的矩阵?

python - 检查某个部分(来自 krn)在 music21 中具有哪个标签或名称

python - music21 是否包含音符转换计数器?

python-3.x - 为什么 music21 以意想不到的方式使用音高属性?

python - 有没有办法让Python Turtle中的一个对象与另一个对象一起旋转?

python - Pandas - 读取数据(两行标题,索引列)

python - 将 IPNetworks 列表转换为实际子网

xml - music21格式流为ABC+并保存为文件

python - music21 如何创建一个 element.lyric 即使在该偏移处没有音符或元素(创建一个不可见的元素?)