本文主要是介绍音乐编码之道(十八)| 调与调号,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
音乐编码之道(十八)| 调与调号
## 调与调号`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>
注意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.displayStatusFalsec.pitch.accidental, c.pitch.accidental.displayStatus
如果我们有一个
(<music21.pitch.Accidental natural>, True)
(不是任何Measure
),我们还可以使用小节对象的Stream
属性设置小节开头的调号:
.keySignature
当然,生活并不完全是关于升号的;如果我们不能使用降号,那么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
这篇关于音乐编码之道(十八)| 调与调号的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!