天天看點

Music21-Chapter2

Music21-Chapter2

今天繼續給大家連載Music21的教學

開局先導入Music21的所有内容:

1.音高(pitch)對象的使用

建立一個音高為bB4的p1:

p1=pitch.Pitch('b-4')#bB4
p1
<music21.pitch.Pitch B-4>
           

音高類似上期部落格的note,也有如下功能:

p1.octave
4#p1在第四個八度
p1.pitchClass
10#p1是一個八度中第11個音,第一個音是C,序号為0
p1.name
'B-'#音高名沒有組别
p1.accidental.alter
-1.0#變化音變化的半音數
p1.midi
70#midi序号,詳見上期開頭的那張圖
           

我們可以利用改變屬性的方式來改變這個音高:

p1.name='d#'#此處大小寫都可以
p1.octave=5
p1.nameWithOctave
'D#5'#音高改為#D5了
           

可以使用note.Note.pitch來代替pitch:

csharp=note.Note('C#4')
csharp.pitch
<music21.pitch.Pitch C#4>
csharp.octave# C#4這個音的八度組别
4
csharp.pitch.octave# C#4這個音高的八度組别
4
           

以符号形式輸出音:

print(csharp.pitch.unicodeName)
C♯
print(csharp.pitch.unicodeNameWithOctave)
C♯4 #輸出時帶上了組别
           

擷取csharp的等音高:類似#C和bD,#F和bG這樣的關系

csharp.pitch.getEnharmonic()#擷取常用的那個等音
<music21.pitch.Pitch D-4>
csharp.pitch.getLowerEnharmonic()#擷取低等音
<music21.pitch.Pitch B##3>
csharp.pitch.getHigherEnharmonic()#擷取高等音
<music21.pitch.Pitch D-4>
csharp.pitch.getAllCommonEnharmonics()#擷取等音清單
[<music21.pitch.Pitch D-4>, <music21.pitch.Pitch B##3>]
           

2.時值(Duration)對象的使用

通常在音樂中我們用到的時值有1,0.5,0.25,0.125

分别對應“whole”,“half”,“quarter”,’‘eighth’’,“16th”,也就是對應我們在音樂中了解的,全音符,二分音符,四分音符,八分音符,十六分音符。建立一個時值的時候參數可以傳上面這些字元串也可以傳數字,“whole”對應4.0,"half"對應2.0,"quarter"對應1.0,短于“eighth”就都使用數字作為參數了

halfDuration=duration.Duration('half')
halfDuration=duration.Duration(2.0)#兩句代碼作用相同
           

建立帶有附點的時值:

附點時值的計算方法:在一個音的右下方點上一個點就是加上一個附點,加一個附點後的時值=原時值×1.5

建立一個時值為1.5的時值:

dottedQuarter=duration.Duration(1.5)
dottedQuarter.quarterLength#quarterLength屬性對應該對象的時值
           

這個時值就相當于時值1.0×1.5之後的結果,從“quarter”變過來的,是以它的類型也為“quarter”

dottedQuarter.type
'quarter'
halfDuration.type#而剛剛的二分音符類型就為half
'half'
           

dots屬性表示時值中含有附點的個數:

dottedQuarter.dots
1#這個長1.5的時值中有一個附點
           

如果在這個基礎上再加一個附點,就是1.5×1.5=1.75,附點可以一直加的都是在基礎上×1.5,如果再加就是1.75×1.5,多年唱歌的經驗來看,樂譜中最多出現兩個附點的音符,多了基本沒有了

dottedQuarter.dots=2
dottedQuarter.quarterLength
1.75
           

當我們新建立一個音的時候,它的時值預設時1.0

n1=note.Note()#預設C4
n1.duration
<music21.duration.Duration 1.0>
           

改變n1的音高和時值,當時值為3.0的時候,時值類型是half,因為2.0×1.5=3.0,源于2.0(half)

n1.pitch.nameWithOctave='E-5'
n1.duration.quarterLength=3.0
n1.duration.type
'half'
           

本期部落格最後我們把最後的n1這個音輸出來:

Music21-Chapter2

由于沒有規定拍号,n1時值長為3.0的,拍号自動識别成6/8拍了,這個拍号是以8分音符為一拍,每小節有六拍,3.0相當于3個4分音符的長度,也就是6個八分音符長度,正是這個小節一共有6拍,是以識别成了6/8

以上是本期全部内容,我們下期再見!