如何替换 music21 乐谱中的音高
How to replace pitches in a music21 Score
我正在尝试将总谱中的一个音高替换为另一个音高(最终目标是生成和声部分)。
>>> 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" 文件 here。
我刚刚检查了 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]
我正在尝试将总谱中的一个音高替换为另一个音高(最终目标是生成和声部分)。
>>> 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" 文件 here。
我刚刚检查了 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]