引用自維基百科
由符合基本音階的音程結構所構成的音列的音高位置,就叫作調。
調的命名建立在主音的基礎上,如由7個自然音級從C開始按順序排列的是就C調,將C調移高一個純五度就是以G爲主音的G調。將C調移低一個純五度就是以F爲主音的F調。
不同的調一般用樂譜開頭譜號後標明的調號來區別,不同的調運用到音樂作品中的具體形式就是各種調式。
也就是說,每個調(KEY)要包含7個音(NOTE)。
那麼,在MIDI傳輸協議中,旋律樂器的音值∈[0,127],共128個,如何辨認出C大調主音Do?
經過逐一的試聽,現在把bC調、C大調、#C調的音調值篩選出來。C語言代碼直接貼在下面。
#define D1 36 //bC
#define D2 38
#define D3 40
#define D4 41
#define D5 43
#define D6 45
#define D7 47
#define M1 48 //C大調 Do
#define M2 50 //C大調 Re
#define M3 52 //C大調 Mi
#define M4 53 //C大調 Fa
#define M5 55 //C大調 So
#define M6 57 //C大調 La
#define M7 59 //C大調 Si
#define H1 60 //#C
#define H2 62
#define H3 64
#define H4 65
#define H5 67
#define H6 69
#define H7 71
不難發現這樣兩條規律:
- 一個調內,第三音和第四音差值爲1,其它相鄰的音差值爲2
- 兩個相鄰的調間,低調的最高音和高調的最低音差值爲1
答案很簡單,因爲他們中間還有一個音——這個音就是鍵盤上的黑鍵!而上述代碼宏定義出的都是白鍵。
宏定義出的音對應該鍵盤圖中從左開始連續的21個白鍵。