用户指南,第19章:高级时值(复杂和分音符)
上次我们遇到 DurationTuples
对象是在第3章,那时我们还不了解流(Streams)或其他一千种酷炫的功能,所以现在回顾一下时值对象并深入了解一下它们的工作原理是个好主意。
我们会记得所有 Duration
都有一个 Music21Objects
对象存储在它们的 Duration
属性中:
.duration
from music21 import *
n = note.Note('C#4')
n.duration
…并且时值可以直接创建:
<music21.duration.Duration 1.0>
d = duration.Duration(4.0)
d
…并且所有时值都有
<music21.duration.Duration 4.0>
、 .type
和 .dots
属性。
.quarterLength
d = duration.Duration(1.5)
(d.type, d.dots, d.quarterLength)
标准
('quarter', 1, 1.5)
值从极小的2048分音符到巨大的双倍最大值:
type
点的数量只受你的想象力限制(或计算机的表示能力限制):
0<music21.duration.Duration1.0>1<music21.duration.Duration1.5>2<music21.duration.Duration1.75>3<music21.duration.Duration1.875>4<music21.duration.Duration1.9375>5<music21.duration.Duration1.96875>6<music21.duration.Duration1.984375>7<music21.duration.Duration1.9921875>8<music21.duration.Duration1.99609375>9<music21.duration.Duration1.998046875>10<music21.duration.
持续时间1.9990234375>11<music21.duration.持续时间1.99951171875>
对于非常好奇的人,尝试将点的数量设置为
0 <music21.duration.Duration 1.0>
1 <music21.duration.Duration 1.5>
2 <music21.duration.Duration 1.75>
3 <music21.duration.Duration 1.875>
4 <music21.duration.Duration 1.9375>
5 <music21.duration.Duration 1.96875>
6 <music21.duration.Duration 1.984375>
7 <music21.duration.Duration 1.9921875>
8 <music21.duration.Duration 1.99609375>
9 <music21.duration.Duration 1.998046875>
10 <music21.duration.Duration 1.9990234375>
11 <music21.duration.Duration 1.99951171875>
,然后看看 float('inf')
、 type
和 dots
会发生什么。 (一个小彩蛋…)
许多持续时间的值可以用所有这些类型和点来表示,但并非全部。我们可以通过转向三连音来获得更多的值。
三连音 ¶
三连音,比如三连音,可以通过给出一个分数或接近分数的四分之一长度来设置:
quarterLength
d = duration.Duration(0.3333333333333)
d
这样的duration的quarterLength将被表示为一个
<music21.duration.Duration 1/3>
类:
fractions.Fraction
d.quarterLength
这可以通过将其包装在
Fraction(1, 3)
函数中转换为浮点数的近似表示:
float()
float(d.quarterLength)
我们可以通过查看duration的
0.3333333333333333
属性来检查该durati