音乐编码之道(十八)| 调与调号

音乐编码之道(十八)| 调与调号

## 调与调号

`ks2.alteredPitches`

还有一个方法可以让我们看到任何给定音阶的升降记号:

```python
[<music21.pitch.Pitch F#>, <music21.pitch.Pitch C#>]

ks2.accidentalByStep('C')

<music21.pitch.Accidental sharp>

ks2.accidentalByStep('E') is None

注意,我们只给出了C到B的字母名称的字符串。这样是行不通的:

True

我们可以创建带有荒谬数量升号的调号,并得到奇怪的升降记号:

ks2.accidentalByStep('C#')

ks12 = key.KeySignature(12)
ks12.accidentalByStep('F')

这些荒谬的调号在一些程序(如Lilypond)中显示,并导出到MusicXML,但在大多数MusicXML阅读器中不显示。

谱号和音符一样可以移调,将每个音符都移动:

<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')

我们稍后会看到如何使用音阶。

如果我们将一个KeySignature放入一个Stream中,我们就可以看到它:

<music21.scale.MinorScale B minor>

../_images/usersGuide_15_key_22_0.png

注意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.accidental.displayStatus,并为C音符创建了一个具有自然记号和显示状态为True的变化音。然后这些副本被丢弃,所以我们在这里看不到它们:

False

但我们也可以调用

fis.pitch.accidental.displayStatus

或者.makeNotation(inPlace=True)在小节上手动完成这个操作:

.makeAccidentals(inPlace=True)

m.makeAccidentals(inPlace=True)
fis.pitch.accidental.displayStatus

False

c.pitch.accidental, c.pitch.accidental.displayStatus

如果我们有一个

(<music21.pitch.Accidental natural>, True)

(不是任何Measure),我们还可以使用小节对象的Stream属性设置小节开头的调号:

.keySignature

../_images/usersGuide_15_key_29_0.png

当然,生活并不完全是关于升号的;如果我们不能使用降号,那么KeySignature对象将变得非常糟糕。要做到这一点,只需将降号的数量指定为负数。所以-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

  • 18
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

qq_31339083

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值