1

我正在尝试用另一个音高替换乐谱中的一个音高(最终目标是生成和声部分)。

>>> from music21 import *
>>> score = converter.parse('test.mid')
>>> type(score)
<class 'music21.stream.Score'>

>>> p0 = score.parts[0].pitches[0]
>>> p0sharp = p0.transpose(1)
>>> print p0
A3
>>> print p0sharp
B-3
>>> score.replace(p0, p0sharp)
>>> print score.parts[0].pitches[0]
A3

我该怎么办?


更新:我在这里发布了我的“test.mid”文件。

4

1 回答 1

4

我刚刚检查了transpose. 只要通过inPlace=True,它就会像魔术一样工作。希望能帮助到你!

from music21 import *
score = converter.parse('test.mid')
p0 = score.parts[0].pitches[0]
print p0
p0.transpose(1, inPlace=True)
print score.parts[0].pitches[0]

对于那些想要一个完整的工作示例而不加载现有的 midi 文件的人:

from music21 import stream, instrument, meter
from music21.note import Note
from music21.stream import Score

# Creating the example score
n = Note("A2", type='quarter')
part = stream.Part()
measure = stream.Measure()
measure.append(n)
part.append(measure)
score = Score()
score.append(part)

p0 = score.parts[0].pitches[0]
print p0
p0.transpose(1, inPlace=True)
print score.parts[0].pitches[0]
于 2017-01-22T07:45:38.007 回答