4

是否有将流转置为给定键的功能或简单方法?

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

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

4

1 回答 1

4

如果s是 a Stream(如 aScorePart),则将其上移s.transpose('P4')一个完美四等,然后会做一个相当不错的工作(使用 Krumhansl 探测音方法)。把它们放在一起。ski = interval.Interval(k, 'C')s.transpose(i)ksk = s.analyze('key')

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最佳大调分析中找到。或者如果它是未成年人,则将其转为未成年人,等等。

于 2016-05-29T17:54:48.760 回答