music21 - 将流转置为给定的键
music21 - Transpose streams to a given key
是否有将流转置为给定键的函数或简便方法?
我想在循环中使用它,例如,取一组主要流并将所有流转为 C 大调(这样我就可以对它们进行一些统计工作)。
我看到的所有移调工具都使用音程或音调数,而不是固定键。编写我的函数应该不难,但我想它必须已经完成...谢谢
如果 s
是 Stream
(例如 Score
或 Part
),则 s.transpose('P4')
会将其上移至纯四等. 如果你知道 s
的调为 k
大调,那么 i = interval.Interval(k, 'C')
会让你做 s.transpose(i)
从 k
转到 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
中找到最佳大调分析。或者如果是未成年人就转为未成年人等等
是否有将流转置为给定键的函数或简便方法?
我想在循环中使用它,例如,取一组主要流并将所有流转为 C 大调(这样我就可以对它们进行一些统计工作)。
我看到的所有移调工具都使用音程或音调数,而不是固定键。编写我的函数应该不难,但我想它必须已经完成...谢谢
如果 s
是 Stream
(例如 Score
或 Part
),则 s.transpose('P4')
会将其上移至纯四等. 如果你知道 s
的调为 k
大调,那么 i = interval.Interval(k, 'C')
会让你做 s.transpose(i)
从 k
转到 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
中找到最佳大调分析。或者如果是未成年人就转为未成年人等等