深入了解Music21Object类
网站和元素的存储
所有的 .activeSite
(即元素)都有一个 Music21Objects
属性,它是一个 .sites
对象,保存了关于该元素存储在哪些地方的信息。简单来说,它是可以迭代的:
from music21 import *
n = note.Note()
s1 = stream.Stream(id='s1')
s2 = stream.Stream(id='s2')
s1.insert(10, n)
s2.insert(20, n)
for s in n.sites:
print(s, s.elementOffset(n))
注意:
<music21.stream.Stream s1> 10.0
<music21.stream.Stream s2> 20.0
流的顺序是保证插入到站点中的顺序。
.sites
还有更多功能,但主要面向开发人员。稍后我们会回到站点。
演绎:
f.derivation
现在:
<Derivation of <music21.note.Note F> from <music21.note.Note C> via 'transpose'>
从 C 中获得了自己的生命。我们可以给 C 添加一个升号,而 F 到 C 的转位关系不会受到影响:
f
c.pitch.accidental = pitch.Accidental('sharp')
(c, f)
但是,如果想对 f 做一些事情,它可以通过改变自己和它的每个元素的 c 来实现:
f.notehead = 'diamond'
for n in f.derivation.chain():
n.notehead = 'diamond'
(f.notehead,<