【全網(wǎng)唯一!】學(xué)院級·系統(tǒng)化·全系列 音樂制作編曲教程(新版)『帶作業(yè)、多風(fēng)格擴(kuò)

P22課筆記
#主和弦的調(diào)號
mainHeXian = 1
#定義和弦類,實例化后其根音參數(shù)只能輸入A-G的大寫英文字母
class chord():
??def __init__(self,root,**kw):
????self.root = root
????for third,fifth in kw.items():
??????setattr(self,third,fifth)
??def play(self):
????print("該和弦的根音是",self.root)
??def transposition(self): #轉(zhuǎn)調(diào)
????if self.root == mainHeXian:
??????print("可以轉(zhuǎn)到任意一個調(diào),因為整個樂段已經(jīng)回到終止的狀態(tài)")
??????#判斷主和弦的屬和弦
????if self.root == (mainHeXian+4)-7*((mainHeXian+4)//7):
??????print("可以選擇級進(jìn)或跳進(jìn)\n")
??????print("直接轉(zhuǎn)調(diào),在音階中,兩個相鄰的音是級進(jìn),比如do→re,re→mi是級進(jìn)\n")
??????print("跳進(jìn)過渡轉(zhuǎn)調(diào),在級進(jìn)的基礎(chǔ)上,跳過某個音,比如do→mi]n")
????else:
??????print("萬能轉(zhuǎn)調(diào)")
??#把str類型的根音字母轉(zhuǎn)換到int類型
??def Root_Letter_to_Num(self):
????if self.root == "C": self.intRoot = 1
????if self.root == "D": self.intRoot = 2
????if self.root == "E": self.intRoot = 3
????if self.root == "F": self.intRoot = 4
????if self.root == "G": self.intRoot = 5
????if self.root == "A": self.intRoot = 6
????if self.root == "B": self.intRoot = 7
#萬能轉(zhuǎn)調(diào)函數(shù)
def universal_transposition(later_chord): #參數(shù)當(dāng)中有個chord類
??#先把和弦根音的root轉(zhuǎn)換到整數(shù)
??later_chord.Root_Letter_to_Num()
??GuoDu_chord_root = (later_chord.intRoot+4)-7*((later_chord.intRoot+4)//7)
??print("過渡和弦是",GuoDu_chord_root,"和弦")
#定義減七和弦法
def reduce7_Chord(later_chord):
??GuoDu_chord_root = "#"+later_chord.root
??print("過渡和弦是", GuoDu_chord_root,"和弦")
C = chord("C",third="E",fifth="G")
C.play()
print("C和弦的三音是",C.third,",五音是",C.fifth)
#測試萬能轉(zhuǎn)調(diào),假設(shè)后面的和弦是F和弦
F = chord("F")
universal_transposition(F)
#測試減七和弦法,假設(shè)后面的和弦是A和弦
A = chord("A")
reduce7_Chord(A)
-----------------------------------以上為python代碼
測試結(jié)果為
該和弦的根音是 C
C和弦的三音是 E ,五音是 G
過渡和弦是 1 和弦
過渡和弦是 #A 和弦
---------------------------------這篇學(xué)完后瞬感自己tobyfox、2un附體
