音乐编码之道(十八)| 调与调号
音乐编码之道(十八)| 调与调号
## 调与调号`ks2.alteredPitches`还有一个方法可以让我们看到任何给定音阶的升降记号:```python
[, ]
ks2.('C')
<music21.pitch.Accidental sharp>
ks2.('E') is None
注意,我们只给出了C到B的字母名称的字符串。这样是行不通的:
True
我们可以创建带有荒谬数量升号的调号,并得到奇怪的升降记号:
ks2.accidentalByStep('C#')ks12 = key.KeySignature(12)
ks12.accidentalByStep('F')
这些荒谬的调号在一些程序(如)中显示,并导出到,但在大多数阅读器中不显示。
谱号和音符一样可以移调,将每个音符都移动:
<music21.pitch.Accidental double-sharp>ks4 = ks2.transpose('M2')
ks4
并且事后可以更改升号的数量:
<music21.key.KeySignature of 4 sharps>ks4.sharps = 0
ks4
我们可以得到与谱号对应的大调或小调音阶:
<music21.key.KeySignature of no sharps or flats>ks2.getScale('major')<music21.scale.MajorScale D major>ks2.getScale('minor')
我们稍后会看到如何使用音阶。
如果我们将一个放入一个中,我们就可以看到它:
<music21.scale.MinorScale B minor>
注意Note 'C’被视为C自然音,因此需要在前面加上自然记号。然而,音符F#不需要自然记号来显示。在调用流的
m = stream.Measure()
m.insert(0, meter.TimeSignature('3/4'))
m.insert(0, ks2)
d = note.Note('D')
c = note.Note('C')
fis = note.Note('F#') # German name
m.append([d, c, fis])
m.show()
过程中,复制了音符并将F#的.show()设置为.pitch..,并为C音符创建了一个具有自然记号和显示状态为True的变化音。然后这些副本被丢弃,所以我们在这里看不到它们:
False
但我们也可以调用
fis.pitch.accidental.displayStatus
.(=True)
m.makeAccidentals(inPlace=True)
fis.pitch.accidental.displayStatusFalsec.pitch.accidental, c.pitch.accidental.displayStatus
如果我们有一个
(<music21.pitch.Accidental natural>, True)
(不是任何),我们还可以使用小节对象的属性设置小节开头的调号:
.
当然,生活并不完全是关于升号的;如果我们不能使用降号,那么对象将变得非常糟糕。要做到这一点,只需将降号的数量指定为负数。所以-1表示一个降号,-2表示两个降号。或者如果你已经有了一个正数,只需乘以-1。
m.keySignature = key.KeySignature(4)
m.show()eroicaFlats = 3
ksEroica = key.KeySignature(-1 * eroicaFlats)
ksEroica<music21.key.KeySignature of 3 flats>ksEroica.sharps