是否有将流转换为给定密钥的功能或简便方法?
我想在一个循环中使用它,例如,取一组主流并将所有的转置到C大调(这样我就可以用它们做一些统计工作)。
我看到的所有移调工具都使用间隔或音调数,而不是固定键。编写我的函数应该不会那么难,但我想它必须已经完成了...谢谢
答案 0 :(得分:3)
如果s
是Stream
(例如Score
或Part
),则s.transpose('P4')
会将其移至完美四等等。您知道s
作为k
专业的密钥,然后i = interval.Interval(k, 'C')
会让您s.transpose(i)
从k
转移到C. {C.}}知道s
的关键,然后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
中找到最佳主键分析。如果是未成年人等,可将其转换为未成年人