1. 程式人生 > >【其它】音階中的數學

【其它】音階中的數學

觀察 感覺 在一起 事先 時代 條件 天然 變化 技法

1. 動機

  近期,六歲的女兒在學鋼琴,作為監工和陪練,這對我卻是個不大不小的困難。因為陪練並不是站在一旁嚷嚷著“好好練琴”就行,共同學習、一起交流才能夠讓小孩有持續的熱情。為了把這件事變得有趣和高效,我打算從零學一點音樂,首先至少能看懂少兒鋼琴的書吧。想想我們這一代的農村學校,連個音樂老師都沒有,更不談什麽音樂知識,能接受到的音樂“熏陶”恐怕也只有大街小巷的那些流行歌曲了。這種粗糲的音樂審美也許已經無法提高,但“學習基礎樂理”這樣的硬任務應該還是可以完成的。

  很久之前就聽說音樂和數學有著千絲萬縷的聯系,我早就想一睹音樂中的數學之美,但拿起各種正規樂理教材後,心裏的落差還是很大的。不僅沒有數學教材的那種幹凈利落,甚至也沒有計算機教材的循序漸進,整個就是雜亂概念的堆砌。概念沒有清晰的定義、沒有引入的原因,概念間復雜的關系更是說不清楚道不明,名詞總是硬生生地放在那裏,你記就是了。也許是因為多年的理工科工作習慣,這樣的書我真是一頁也看不下去,不是看不懂,而是看得不得勁。但靜下心來想想,我需要的只是對概念來源的一個解釋,哪怕是一個錯誤的解釋,只要我覺得合理就行。

  當然我也知道,音樂本身還是感性的東西,它變換莫測、風格多變,甚至連好壞都沒有統一的標準,想用一套理論就把它完全解釋肯定是不現實的。但萬事萬物都都會有一些基本規律存在,人類文明也正是在歸納總結中積累起來的,即使是藝術、文學類的創作,也都要滿足基本的美學規律。音樂作為一個普世的文化活動,經過上千年的流傳和演進,在不同地域的文明中都建立起了理論體系。但令人驚奇是,在音律的基本要素上,各種體系都殊路同歸,具有非常類似的構成。如今,音律的語言已經趨於一致,人們已經有了統一的描述方式,並且在此之上繼續探索、總結……

  音律中跟數學關系最直接、最久遠的當屬音階系統了,早在古希臘時期,畢達哥拉斯學派就發現,頻率呈簡單整數比的兩個音聽起來非常協和,並且幾乎全世界的音階系統,都是基於這樣一個簡單的事實建立起來的。下面開始,我就試圖用自己淺薄的數學知識來解釋一下這套體系,當然其中以數學的闡述為主,而有意淡化樂理的瑣碎概念和樂譜的基本知識,那些在任何一本樂理書上都有詳盡的介紹。最後我還想說,對於樂器演奏技法、甚至音樂理論學習,整理這些東西並無大用,用這種思維去學習音樂也必將學無所成。但對於一個理科生,只是想要一個解釋而已,這不算過分吧,先讓我痛快了再說!

技術分享

2. 關於聲音

  首先嚴格說,聲音就是一段聲波,它是物體震動從而帶動的空氣震動。當然,雜亂無章的震動並不能對聽覺提供可識別的特征信息,具有明顯特征的聲音在一段時間內應當(或近似)呈現一定的周期性,所謂周期性就是震動以一定頻率重復出現。有三個特征可以完整刻畫一段周期聲波,首先是聲波的震動周期,它一般用頻率來表示,在音樂裏還叫音高,人耳能聽到的聲音頻率大概是\(20\sim 20000Hz\)。第二個是聲波的形狀,它構成了每段聲音的獨特感覺,音樂上也叫音色,不同樂器發出的聲音都很容易辨認,就是因為它們的音色不同。第三個就是聲音震動幅度的大小,它直接關系到聲音的大小,也就是我們平常說的音量

  教材上還告訴我們,每個周期聲波都是有一系列頻率為\(f,2f,3f,\cdots\)的正弦波(振幅不同)疊加而成的。但我覺得這個說法並不嚴謹,雖然傅裏葉級數告訴我們:“滿足一定條件的周期函數可以有唯一的傅裏葉分解”,但這並不能說明:周期聲波天然地就是由那些正弦波疊加而成的。傅裏葉級數只是數學工具,它是個人工概念,用來幫助人們分解聲音以便更好的分析。就好比物理上經常把運動按正交軸進行分解一樣,這是用數學工具來分析運動,但並不是說:運動天然地就是由兩個方向的運動組成。

  正弦波也叫簡諧波,它是由簡諧振動產生的聲波,而簡諧振動現實中非常普遍的一種運動。所謂簡諧振動可以這樣描述:它在中心兩側運動,加速度(或所受合力)始終指向中心,並與位移\(y\)成正比。彈簧的震動就是典型的簡諧振動,其實現實中大部分物體的自身震動都是由若幹簡諧振動組成的,這也說明了為什麽周期聲波都可以很好地進行傅裏葉分解。在音樂裏,簡諧波也叫純音,純音疊加而成的復合音,如果仍然有明顯的周期,則叫單音,否則叫拍音。單音的傅裏葉分解中,周期最大的純音叫做這個單音的基音,其它純音則叫泛音

  到這裏還有最後一個問題:為什麽簡諧波就是正(余)弦波,僅僅因為它好看嗎?我只得承認,書本裏學的知識已經全部忘記了,現在只好自己再推算一遍。一種直接的方法就是根據簡諧振動的特點,可以得到式(1)的常微分方程,從而解得\(y(t)\)是正弦函數。還有一種間接的證明方法,就是觀察如圖的勻速圓周運動。考察運動點\(P\)以及其加速度\(a\)在\(y\)軸的投影,顯然它們成正比關系,具體說就是\(a_y(t)=\dfrac{a}{R}y(t)\)。也就是說簡諧振動正是勻速圓周運動在一維空間的投影,設它的角速度是\(\omega\)(逆時針方向),它的波形自然就是\(R\sin\,\omega t\)。

\[y‘‘(t)=ky(t)\tag{1}\]

技術分享

3. 十二平均律

  單絲不成線,單音不成樂,一首動聽的音樂當然要有不同音高的單音,才能表達出情緒的波動。我們也看到,任何一種樂器都能發出多種音高,它們交叉、重疊、依次推進,形成了非常有節奏的韻律。為了能用不同的樂器、在不同的時間和場所彈奏同樣一首曲子,需要對每個音作明確定義,這就要事先選定一組單音做為標準,這個組合也被稱為音階。每種樂器使用的音階不盡相同,但挑選時都遵循著類似的準則,這裏我們先跳過漫長的歷史過程,來看看如何合理地構建一個通用的音階。

  首先我們知道一個常識:人耳對音高的感知滿足對數函數,也就是說音高分別為\(F_a,F_b\)的聲音,我們感覺到的“聲高”比(我捏造的詞)則是\(\dfrac{L_a}{L_b}=\dfrac{\ln F_a}{\ln F_b}\)。設音階中單音的聲高和音高分別是\(L_i,F_i\),則容易有關系式(2)成立(\(C\)為某常數)。另外,我們希望音階裏的“聲高”是逐漸遞增的,也就是說\(L_1,L_2,\cdots,L_n\)成等差數列。由式(2)易知\(L_a-L_b=C\ln F_a/F_b\),從而\(F_1,F_2,\cdots,F_n\)成等比數列。

\[\dfrac{L_1}{\ln F_1}=\dfrac{L_2}{\ln F_2}=\cdots=\dfrac{L_n}{\ln F_n}\;\Rightarrow\;L_i=C\ln F_i\tag{2}\]

  把音階設計成等比數列有很多好處,首先是得到了一套完整、遞進的聲高系統,它能滿足各種場合的需求。還有就是等比音高可以很方便地“轉調”,所謂轉調就是把樂曲中的每個音都同時升高或降低相同的聲高,下面的調式中會碰到這樣的情況。總之這是一個不錯的開始,只要再添加少許限制,就可以確定這套音階了。音樂中的不同單音扮演著不同的角色,它們需要配合使用才能體現出流暢或變化,所謂流暢就是兩個單音出現重合或疊加時,並不顯得突兀,而是顯得十分“協和”。

  早在古希臘時期人們就發現,頻率成簡單整數比的兩個音在一起更加協和,尤其是成倍數關系的兩個音疊加時,音高並沒有變化。這個其實不難解釋,兩個周期比為\(m:n\)的兩個音重合時,周期變為最小公倍數\([m,n]\),當\(m,n\)都不大時,重合音的音高也沒有突然降低,並且都是原來音高的倍數。既然倍數關系的音高是最協和的,我們就必須把最簡單的倍數\(2:1\)添加到音階中,任意選定一個“基礎音”後,它的\(2^k,2^{-k}\)倍音也必須出現在音階中,這就得到了音階序列\(\cdots,\,2^{-2}F,\,2^{-1}F,\,F,\,2F,\,2^2F,\,\cdots\)。

  但是成倍數的單音又太過協和了,完全體現不出變化,樂曲會顯得很空洞。所以需要在\([F,2F]\)間再添加一些音(其它區間類似),當然添加不能忘了等比關系,添加後的音應當是式(3)的序列。這時只要確定整數\(n\)即可,而這只需再添加一個音。所有非倍數的整數比中最簡單的就是\(2:3\),從而把\(\dfrac{3}{2}F\)添加進序列(3)是毫無爭議的,也就是尋找\(m\)使得\(2^{\frac{m}{n}}=\dfrac{3}{2}\)。

\[2^0F=F,\:2^{\frac{1}{n}}F,\:2^{\frac{2}{n}}F,\:\cdots,\:2^{\frac{n-1}{n}}F,\:2^{\frac{n}{n}}F=2F\tag{3}\]

  但顯然\(\log_2\dfrac{3}{2}=0.5849625\cdots\)是無理數,不能表示成\(\dfrac{m}{n}\)的形式,這時我們只能稍作妥協,取一個\(\log_2\dfrac{3}{2}\)的近似分數。到了這一步,自然地就想到了實數的連分數表示,首先算得\(\log_2\dfrac{3}{2}\)的簡單連分數是\([1,1,2,2,3,1,5,2,23,\cdots]\),前幾個近似分數分別是\(1,\dfrac{1}{2},\dfrac{3}{5},\dfrac{7}{12},\dfrac{24}{41},\dfrac{31}{53},\cdots\)。第一個達到\(0.1%%\)精度的(包括第一類近似逼近)是\(\dfrac{7}{12}\),\(12\)大小合適,並且在古代是個很有地位的數(因為約數多),不選它簡直天理難容了。

\[\log_2\dfrac{3}{2}=\cfrac{1}{1+\cfrac{1}{1+\cfrac{1}{2+\cfrac{1}{2+\cdots}}}}\approx\dfrac{7}{12}\tag{4}\]

  以此建立音階的方法就叫做十二平均律,它誕生於相當久遠的中國古代,16世紀由明朝的朱載堉發展成完整的理論,然後在16世紀末傳播到歐洲並在17世紀得以普及。十二平均律是目前通用的音律體系,後面的音程、調式、調性、和聲、和弦理論都是建立在此之上的,只不過這些理論幾乎都是在歐洲發展起來的。

4. 音程與協和性

  在音律中有時非常關心兩個單音之間的“距離”,它顯然可以用單音的頻率比來度量,這個比率在音樂中也被叫做音程。由於十二平均律得到音階形成完整的等比數列,從而可以用相鄰單音的頻率比作為單位來“數”出音程大小,這個單位叫做一個“半音”,兩個半音則叫一個“全音”,這樣的音程表示法也叫音數。至於為什麽把半音作為一個單位,我想大概是因為許多音階中,兩個半音的距離是比較主要的音程,這個在下面的調式中將詳細討論。另外,一個半音還被分為100個音分,它可以用來度量更小精度的音程。

  由於\(F\)與\(2F\)的單音極度相似,音階中就好像只有12個音循環出現(只是音高加倍),因此我們把討論的重點放在一個周期中。在正式給出這些音的名稱之前,這裏先用數字\(0\sim 12\)代表它們,下面要討論的是這13個單音之間的協和程度。這屬於樂理中的和聲學部分,那裏把音程的協和程度分成了五種:極完全協和、完全協和、不完全協和、不協和、極不協和。首先我們知道,音\(0\)與音\(12\)以及自身是非常協和的,它們也叫做極完全協和音程

  然後我們還知道,音\(0\)與音\(7\)的頻率比近似為\(2:3\),它們的協和程度也很高,從而被叫做完全協和音程。接下來,音\(7\)的\(\dfrac{3}{2}\)倍音出現在了下一個循環中,熟知取模運算的你一定知道,它就是音\(2\)的2倍音。從而易知音\(2\)與音\(7\)的近似頻率比為\(\dfrac{4}{3}\),它們也是完全協和的。換句話說,任何一個音都有上下兩個與它完全協和的音,這個協和關系可以像下圖那樣形成一個環鏈(因為7與12互質)。

技術分享

  歷史上,早期的音階其實就是用上圖的環鏈構建的,但只是使用了環中的\(5\)-\(0\)-\(7\)-\(2\)-\(9\)-\(4\)-\(11\)一段共七個音。由於音程\(\dfrac{3}{2}\)也叫純五度(下面再介紹),故這個方法也叫五度相生律。但不難發現,五度相生律中會出現分母很大的分數,崇尚小整數比的古人利用小質數\(2,3,5\)構建出了它們的近似分數(見下表,不包括括號內的音),這個生成法也叫純率。五度相生律更註重單音之間的協和性,而純率更關註所有單音與\(F\)之間的協和性,在無法協調的情況下,十二平均律則是一個折中的方法。並且十二平均律的平滑性和完整性,也使得它成為了後來的標準。五度相生律和純率被長期使用的期間,七個音的音名也被約定俗成地繼承了下來(見下表,括號中是它們的唱名),後來添加進來的五個音只好用升降號來表示。

十二平均律 五度相生律 純率 音名(唱名) 音程
\(1\) \(1\) \(1\) C (Do) 純一度
\(2^\frac{1}{12}\) \((256/243)\) \((17/16)\) C# / Db 小二度
\(2^\frac{2}{12}\) \(9/8\) \(9/8\) D (Re) 大二度
\(2^\frac{3}{12}\) \((32/27)\) \((6/5)\) D# / Eb 小三度
\(2^\frac{4}{12}\) \(81/64\) \(5/4\) E (Mi) 大三度
\(2^\frac{5}{12}\) \(4/3\) \(4/3\) F (Fa) 純四度
\(2^\frac{6}{12}\) \((729/512)\) \((7/5)\) F# / Gb 增四 / 減五
\(2^\frac{7}{12}\) \(3/2\) \(3/2\) G (So) 純五度
\(2^\frac{8}{12}\) \((128/81)\) \((8/5)\) G# / Ab 小六度
\(2^\frac{9}{12}\) \(27/16\) \(5/3\) A (La) 大六度
\(2^\frac{10}{12}\) \((16/9)\) \((9/5)\) A# / Bb 小七度
\(2^\frac{11}{12}\) \(243/64\) \(17/8\) B (Si) 大七度
\(2\) \(2\) \(2\) C (Do) 純八度

  伴隨著七個單音,音程也有對應的名字,單音到自身的音程叫一度,然後依次增一度,到2倍音程叫八度。可見度數並不是嚴格的定義,而是一個經驗性的命名,從我有限的資料中並未找到它的來源,以下純屬瞎掰。由於一度、四度、五度、八度有很強的協和性和確定的頻率,它們也被叫做純音。二、三、六、七度前面都補充了一個降半音的音,為區別開來,把原來的四個叫大X度,新增的叫小X度。這十三個度數之間近似相差半個音,之所以說近似,是因為非平均律下,這個間距就不是半個音了。所以當一個音要增、減半個音(一個音)時,還特地取名為增、減音程倍增、減音程),下表總結了音程名稱的變化規律,左右相鄰的兩個音程相差半個音。

倍減音程 減音程 純音程 增音程 倍增音程
小音程 大音程

  關於其它音程的協和性,一般把三度、六度看成是不完全協和的,大二、小七看成是不協和的,小二、大七看成是極不協和的,增四/減五則表現極不穩定。其原因一般也歸結為整數比的“復雜”程度,但如何定義這個復雜程度則莫衷一是,各種解釋都不能讓人信服。如果小整數比的理論成立,那這些協和性很可能只對純律有效。在十二平均律下,每個頻率都有許多近似分數,如何選擇代表分數是個難題,以下只是我的推測。

  對於音程為\(x>1\)的兩個音,設周期分別為\(T,xT\),它們的和聲不一定有固定周期,只有一些大大小小的近似周期。一個近似周期應當同時約等於\(T,xT\)的倍數,設它們是\(mT,nxT\),要想周期比較明顯,\(|m-nx|T\)應當足夠小。最小的近似周期應當滿足:\(m,n\)盡量小而\(|m-nx|\)也能足夠小,回顧連分數的知識可知,這等價於求實數\(x\)的第二類最佳逼近\(\dfrac{m}{n}\)。純率選取的分數其實就是達到一定精度的第二類逼近,然後\(n\)越小的協和性越好,這與感覺基本吻合。另外我還有一個猜想,那種有理逼近比較慢的音程,由於近似精度低且兩個近似周期之間相差小,和聲會顯得不協和或不穩定。比如典型的增四/減五音,它的連分數是\([1;2,2,2,2,2\cdots]\),由於連分數的逼近速度慢,它的和聲就很不穩定。

5. 調式和調性

  以上是關於音階的基礎理論,在實際的曲調中往往只選取少量的音組成音階,並且在不同時代、不同地區形成了各種風格的音階。這裏講的“風格”其實就是音階的“調”,它關系到音樂的情感色彩和情緒高低。一個調(音階)包括選定的主音以及其它音的音程,它們分別稱為調性調式

  先來看調式,它是指圍繞某個主音)而生成的音階,對於一種調式,其它音的個數以及相對主音的音程是確定的。在不同的歷史時期和地區,產生了風格迥異的調式,這裏只拿自然大(小)調為例,介紹調式的構成。自然大(小)調就是我們熟悉的七音音階,除了主音外先加入上下五度的兩個音:屬音V)和下屬音),然後是位於主音、屬音中間的中音)和位於主音(高八度)、下屬音中間的下中音(Ⅵ),最後再加上與主音相鄰的上主音)和下主音)(小調中叫導音)。一般來說,自然大調表現出陽光明朗的風格,而自然小調則陰暗憂傷一點。

  在具體音程上,首先兩個屬音的位置沒有疑問,以純五度為準。但主音和屬音之間相差\(3.5\)個半音,中音的位置有兩種選擇,自然大調選擇\(2+1.5\)方式,而自然小調選擇\(1.5+2\)的方式,這種不同繼而還會影響上(下)主音的位置。最終,自然大調的音程從主音開始依次是“全全半全全全半”,而自然小調則是“全半全全半全全”。如果把音程放到一個八度閉環中,不難發現大、小調其實是“同構”的,只不過平展後有些音相差八度而已。

技術分享

  調性比較簡單,主音是什麽,一般就叫什麽調,比如C調、G調。由於在平均律中有同音異名的現象,同一個調可能有兩個名字,比如F#調和Gb調就是相同的。但在非平均律下,它們會有細微的差別,這個我們不多討論。還有一個問題我們一直沒有解決,就是這些音的頻率究竟是多少?歷史上,標準音的標準一直在變,直到1936年,美國標準委員會才將小字一組的A音(a1)定為440Hz,而與它同一組的C音稱為中央C

  有了調式和調性後,音樂的調也就確定了,比如C大調、A小調等。下圖將12個音按照五度音程串成一個圓環,由前面的討論可知,圓環中任何7個相鄰的音都正好構成一個自然大(小)調。7個相鄰音中的(順時針)第2個是大調的調性音,而第4個則是小調的調性音,利用這個圖可以快速確定不同的音調。至此,我們就算整理完音階中的數學解釋了,但對於樂理知識,這些只能算開篇和序言,希望我這種另類的開篇可以幫助到你。

技術分享

  博客總目錄這裏


【前序學科】 實數系統(連分數)

【參考資料】

[1] 《寫給理工科看的樂理》,博客園Devymex

[2] 知乎: www.zhihu.com/question/20612595; www.zhihu.com/question/28518092

【其它】音階中的數學