是否有将流转置为给定键的功能或简单方法?
我想在一个循环中使用它,例如,获取一组主要流并将所有这些流转置为 C 大调(这样我就可以对它们进行一些统计工作)。
我看到的所有移调工具都使用音程或音调数量,而不是固定键。编写我的函数应该不难,但我想它必须已经完成......谢谢
如果s
是 a Stream
(如 aScore
或Part
),则将其上移s.transpose('P4')
一个完美四等,然后会做一个相当不错的工作(使用 Krumhansl 探测音方法)。把它们放在一起。s
k
i = interval.Interval(k, 'C')
s.transpose(i)
k
s
k = 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
最佳大调分析中找到。或者如果它是未成年人,则将其转为未成年人,等等。