汪 鐳, 鄭曉妹,2, 申 林
(1.同濟大學 電子與信息工程學院,上海 201804; 2.上海師范大學 信息與機電工程學院,上海 200234;3.上海師范大學 音樂學院,上海 200234)
隨著計算機和數字設備的廣泛應用,電子音樂已經進入到了完全數字化的計算機音樂(Computer Music)時代,并且在近幾十年迎來了最蓬勃的發展時期.計算機音樂領域涉及到數字樂器接口、數字音頻、合成技術、聲音分析、聲音信號處理和算法作曲等多個方面,而其中算法作曲(Algorithmic Composition)無疑是最具挑戰性的領域.算法作曲是指使用形式化的作曲規則作為音樂創作的手段,以使音樂家們可以利用計算機作為音樂創作的工具,實現自動作曲[1].音樂的形式化過程由來已久[1-2],早在11世紀,就出現了一種根據經文中的元音設計音高的模型,這種形式化技術可以實現經文旋律的創作;在14~15世紀之間,一種等節奏模式被應用在具有均勻節奏的經文歌中;到了20世紀,集合論和隨機過程被引入到算法作曲中,出現了序列作曲和隨機作曲技術.Lejaren Hiller是現代算法作曲的先驅,他最先將計算機應用于作曲中,并創造了最早的計算機作曲作品《Illiac弦樂四重奏組曲》.隨后,一大批音樂家們都開始使用形式化程序來創作樂曲,算法作曲進入到一個迅速發展的時期.算法作曲系統總是與不同的算法和策略緊密聯系,迄今,在算法作曲中使用的技術包括隨機過程、音樂文法、分形、混沌、專家系統、神經網絡和遺傳算法.而基于遺傳算法的一類算法作曲系統,利用遺傳算法的一系列進化算子來進行音樂的創作,又稱為進化作曲.由于遺傳算法的簡單通用、易于實現,使得遺傳算法作曲目前已經成為算法作曲中最為活躍的一支,在旋律動機生成、旋律發展和弦配置等音樂創作方面獲得了較為豐富的成果.本文作者將從不同角度討論進化作曲技術,最后分析幾個具體的作曲系統實例.
進化作曲主要采用以遺傳算法為主的進化計算技術.遺傳算法(Genetic Algorithm,GA)是一種啟發式搜索算法,它采用了自然進化模型,從代表問題候選解集的一個種群開始,按照適者生存和優勝劣汰的生物進化過程,逐代進化產生出問題的最優解或近似解[3].在進化過程中,算法使用了一系列的進化算子包括交叉、變異等操作.遺傳算法由于思想簡單、便于實現、魯棒性強以及適于并行計算等特點,在諸多領域獲得了廣泛的應用.在音樂創作領域,組成音樂的元素例如音高、時值很容易用數字表示,而作曲的方法例如音樂材料的發展手段等又和遺傳算法中的進化操作有異曲同工之處.因此,把遺傳算法推廣到在音樂空間的搜索,產生符合音樂規則的樂曲是非常有效和可行的.20世紀90年代初,Horner首先把遺傳算法應用到算法作曲領域[4],隨后一大批計算機學者和音樂家們相繼做了有益的嘗試和探索,設計了不同的進化作曲系統,并獲得了大量的音樂創作成果[4-20].
基于遺傳算法的進化作曲系統結構如圖1所示.

圖1 進化作曲系統結構
2.1.1 作曲目標
不同的作曲系統最終的目標并不完全相同,有些是生成主題動機,有些是發展旋律,有些是產生和弦、配置和聲等.作曲目標影響著算法的具體實現,決定了算法中音樂元素的表示方式,不同的目標對應不同的音樂形式.算法中的基因編碼可能是基于一個音符,也可能代表一個和弦,或者一個音符序列;而個體的染色體結構可能設計成一個樂句,也可以是一段和聲.
2.1.2 初始化種群
根據作曲目標確定了音樂的表示形式后,將生成初始種群,種群的初始化可以是隨機產生,也可以由用戶定義的初始個體構成.從由用戶定義生成的初始種群開始進化,可以有效地保證每代進化的音樂在用戶可以接受的范圍內,這樣系統最終的音樂輸出更符合用戶的喜好.
2.1.3 音樂的進化
進化作曲系統大都采用遺傳算法的基本進化操作,包括選擇、變異和交叉.系統從種群中根據適應度選擇個體,然后借助于遺傳算子進行交叉和變異,產生出新種群.這樣逐代進化,直至達到終止條件.交叉和變異等算子的設計與音樂作曲方法相關,發展音樂的一些基本手法如重復、迭奏、變奏等可以作為進化算子的設計依據.
2.1.4 適應度計算
算法在進化過程中,不借助其他外部信息,只僅僅根據適應度來對個體進行選擇,因此適應度函數的設計是算法中非常重要的一部分,它的好壞將直接影響最終的音樂輸出結果.一些系統根據音樂規則設計適應度函數,保證參加進化的個體是符合音樂邏輯的;另一類系統的適應度需要人類參加評判,根據專家或用戶的打分,進行個體選擇,以保證個體滿足用戶喜好或者是符合人類聽覺經驗.
作曲(Composition)的精確定義是完整的音樂創作和創作音樂的行為[21].在傳統音樂中作曲是指對素材進行嚴密的安排組織并成為最后可以演奏的音樂,這樣的行為才稱之為作曲.而在當今的數字音樂時代,由于計算機和數字設備的應用,即便是沒有最后的演奏,也可通過軟硬件來得到想要的音樂效果.因此作曲的概念更為廣泛,即使是不能演奏的音樂創作過程也屬于作曲行為.這個概念尤其體現在算法作曲系統中,當前的算法作曲系統,包括進化作曲系統,大多數都是完成作曲的一個子任務,系統輸出的旋律并不一定是能夠直接演奏的完整音樂作品.
完成一個音樂內容的創作,涉及調性的選擇及變化,縱向的音高排列,橫向的和聲連接、聲部對位,節奏穿插,音色的選取及搭配、節拍的變化、速度的變化等很多過程.因此可以說旋律的創作、和聲配置、聲部的對位、織體創作、編曲等等,這些過程都是在作曲.在進化作曲系統中,作曲者都是針對不同的作曲過程進行設計和實現,很少有系統能夠實現作曲的全部行為.
大多數進化作曲系統的目標是旋律的生成和發展.最早把遺傳算法應用到算法作曲中的Horner,完成了一個計算機輔助作曲程序[4],該程序僅僅完成一個簡單的主題橋接任務:從原始音樂動機變換到目標動機.Biles的進化作曲系統GenJam[5]可以產生16小節長的一段爵士樂旋律,旋律的進化過程使用了倒影、逆行、重復等旋律發展技法.SENEgaL系統[18]允許用戶生成和模仿類似于非洲西部地區音樂風格的節奏,與其他系統不同之處,SENEgaL不是單純的進化作曲系統,它的最終目的是發展為可以用于音樂教學的人機交互界面.Drezewski和Tomecki的EvoMusComp系統[14]既可以完成給定主題動機的變換,也可以根據給定的調號生成全新的旋律片段.系統還提供一個人機交互界面,允許用戶選擇參數構建不同的適應度函數,并且可以隨時終止進化過程.
和聲的配置是音樂創作中的一個重要過程,在多聲部音樂寫作中,四聲部和聲創作是最基本的形式[22].四部和聲包括的4個聲部分別是:高音(Soprano)、中音(Alto)、次中音(Tenor)和低音(Bass),和聲的主要結構是和弦的縱向結合以及橫向進行規律.Bach in a Box[15]是較早實現和聲配置功能的進化作曲系統,該系統能夠根據事先給定的某個聲部旋律片段,產生和弦,最終輸出一段巴洛克風格四部和聲.R.De Prisco等人設計的系統同樣用于四部和聲創作[17],與Bach系統不同的是,后者實踐的是巴洛克時期數字低音(Figured Bass)的作曲手法:根據給定的低音聲部以及說明其上方和弦的數字信息,系統自動實現和弦的排列,輸出包含其他3個聲部的四部和聲.
能夠輸出一首完整樂曲的進化作曲系統并不多,Damon的自動作曲方法是其中之一[7],這種方法中樂曲的風格不受限制,只要事先給出初始樂曲各段材料以及待演奏的樂器,系統即可生成“悅耳”的歌曲.
遺傳算法是一種啟發式搜索算法,啟發信息蘊含在適應度函數中,算法在進化搜索中依靠適應度函數來進行選擇,因此在進化系統中,適應度函數的選取至關重要.根據適應度計算方法的不同,進化作曲系統主要分為以下兩類:自動進化系統和交互式進化系統.
2.3.1 自動進化系統
這些系統根據音樂規則設計相應的適應度函數,進化過程中使用這些規則計算個體的適應度,進行進化,進化過程不需要人的參與,是一種自動進化過程.用于適應度函數設計的規則大都基于基本的音樂作曲理論,包括音高的范圍、音程的范圍、旋律的穩定性、音符和終止符的密度、旋律的變化、和弦的規律、和聲邏輯等.根據作曲目標的不同,適應度函數的定義各有差異.例如,生成多聲部和聲的系統在適應度函數中大多考慮和聲進行的規則,文獻[15]和[16]都把和弦進行中出現平行四度、五度、七度作為個體適應度減分的依據,而平行八度則被認為是禁止出現的.音樂作曲包含的內容廣泛,規則錯綜復雜,一個作曲系統的適應度函數設計不可能包括所需要的全部規則,而且基于音樂理論的規則可以說明樂曲要遵循的音樂邏輯,但或許很難用于判斷樂曲的好壞.因此,一種交互式遺傳算法(Interactive Genetic Algorithm,IGA)被引入到進化作曲系統中,在這種系統中適應度由音樂導師來評判.
2.3.2 交互式進化系統
在基于交互式遺傳算法的進化作曲系統中,算法根據外部用戶的打分來計算適應度[23],這樣系統就可以和用戶進行交互.算法充分考慮用戶的喜好,根據用戶的評判選擇來進行進化,解決了自動進化系統中,基于音樂規則的適應度函數不能代表人類情感的問題.交互式進化系統中和系統進行交互的可以是普通用戶或者是音樂導師,可以是一個人也可以是一個群體.GenJam是交互式進化系統的代表;Jacob的系統也使用了交互式遺傳算法[10].然而在交互式系統中,用戶打分階段需要花費大量的時間,而且導師容易產生聽覺疲勞,因此,Billers把他的GenJam改進為Autonomous GenJam[20],直接省略了適應度函數計算這一階段.
Horner最早把遺傳算法應用到計算機作曲中,實現了一個簡單的計算機輔助作曲程序[4].該程序能夠完成主題橋接,也就是從一個原始音樂動機出發,經過一系列的變換(橋),最終生成目標動機,圖2給出了一個主題橋接的例子.

圖2 主題橋接示例
系統中定義的變換包括刪除音符、旋轉、突變、交換等操作,從原始動機到目標動機所經歷過的變換操作的集合就是橋.系統的適應度分兩步計算,首先衡量經過橋變換后的動機與目標動機的匹配度,這個匹配度既考慮相同音符的比例,也考慮音符順序的匹配程度;然后進一步計算適應度,考慮音符長度的匹配程度,如果長度也是精確匹配,個體的適應度將達到最大值.
Horner的輔助作曲程序能夠實現的功能雖然簡單,但它是最早應用遺傳算法的進化作曲系統.系統可以實現一個卡農形式的五聲部輪唱主題的生成,在給定原始動機下,各聲部獨立進行進化,最終輸出經過橋接的音樂序列.
Prisco利用遺傳算法實現了1個基于十二音作曲體系的樂曲創作[16].十二音體系是勛伯格創立的無調性音樂體系[24],在這種作曲方法中,1個八度里的所有12個半音(C,C#,D,D#,E,F,F#,G,G#,A,A#,B)是平等的,在一個音出現以后,其他11個半音出現之前,該音不能重復使用,以免形成調性中心.十二音作曲法中,首先要有1個12個半音組成的1個音列,稱之為種子序列或原形O(Original),從原形又可以派生出序列的幾種變形,包括逆行R(Retrograde)、倒影I(Inversion)、倒影逆行RI(Retrograde of Inversion)等,圖3給出了1個原形及其變形[25].

圖3 一個原形序列及其變形
(1) 編碼.包括原形和這幾種派生變形的序列以及它們在不同音高上的移位所產生的所有序列形式就是十二音作曲的基本材料,序列被定義為T,個體是一個K×V的結構,其中K代表樂曲中聲部的數量,V是樂曲的長度,用序列的個數來表示.
(2) 解碼.在個體的編碼中沒有指定音高的定義,只有抽象的12個半音音符,因此從基因型到表現型映射時要確定抽象音符的具體音高.系統設計了一個映射函數gpm(genotype-phenotype mapping),該函數根據事先給定的音高范圍,為樂曲中每個音符指定具體的一個音高:X=gpm(C).
(3) 樂曲進化過程.系統的進化設計基于基本的十二音作曲技法,變異基于R、I、RI等序列變形操作來實現,對于待變異的個體C中的每個序列用其變形序列替換而生成新的個體.交叉操作則使用單點交叉,根據隨機產生的交叉點位置,交換2個個體的基因,產生新個體.系統中適應度函數的設計則主要考慮了十二音技法中的和聲規則,包括音程的協和度量、和聲的手法等.系統最終可以實現4個聲部,長達30個序列的樂曲進化.
Biles應用遺傳算法實現了一個實時交互式演奏系統——GenJam[5,20].GenJam可以對一段爵士旋律片段進行進化,進化的結果用于爵士獨奏的材料.
GenJam中的算法設計了2個分層關聯種群:樂節種群(measure population)和樂句種群(phrase population).一個樂節定義為8個音符組成的小節,而一個樂句包含4小節.這2個種群各自進行進化,有各自的變異和交叉運算.
樂節和樂句種群中個體的適應度單獨計算,盡管樂句由樂節組成,但是樂句個體的適應度并不是由其中的4個樂節的適應度相加即可得,因為4個適應度都很高的樂節組成的樂句并不一定是好聽的.GenJam采用交互式遺傳算法進行進化,系統沒有定義適應度函數,個體的適應度通過和音樂導師交互來獲得.導師在聽完樂句或樂節后給出好或者壞的評判,以此為依據生成個體的適應度.樂句和樂節的適應度用于2個種群的進化選擇,其中樂節的適應度決定著樂句的某些變異操作.
在GenJam的進化過程中,樂節種群包含64個個體,樂句種群包含48個個體,每代進化產生50%的新個體,這些個體的適應度都由導師打分,因此在每代進化中導師都需要評判幾十個音樂片段的“好壞”.這種交互式打分方式需要耗費大量的時間,而且容易引起音樂導師的審美疲勞.另外,GenJam作為一個交互式實時演奏系統,進化的結果要作為實時演奏的音樂材料,因此需要一個快速的進化過程.因此,Biles對GenJam系統進行了修改,將其擴展為Autonomous GenJam.Autonomous GenJam和前期版本有很大的不同.Biles選擇了很多四小節爵士樂句,根據它們的風格不同,建立了10個爵士樂數據庫,包括博普、后博普、搖擺樂等不同風格,這些數據庫作為樂節和樂句種群的種子材料,初始種群從這些數據庫中隨機選擇產生,這樣可以保證生成的個體符合爵士樂的風格.在進化階段不使用適應度函數,省略了導師的交互評分階段,個體的選擇根據爵士樂數據庫中的風格特征來進行.Biles把Autonomous GenJam用于爵士樂的四小節輪奏中,獲得了較好的實時效果.
GenJam是目前為止最為成功的進化作曲系統之一,從1994年最初設計的一個簡單概念模型開始,Biles不斷地對它進行修改完善.現在的GenJam已經是一個較為成熟的交互式實時演奏系統,可以與人類表演者一起進行各種形式的爵士樂演奏.
遺傳算法目前已經成為算法作曲領域最重要的策略之一.基于遺傳算法的進化作曲系統可以幫助人類完成作曲的不同任務,包括音樂動機的生成,旋律的發展,多聲部的和聲等不同的音樂層次.遺傳算法的目標是找出最優解或者近似解.然而在音樂作曲領域,并沒有所謂的“最優解”,大多數進化作曲系統所生成的作品只能是合乎音樂邏輯的,而不一定是最動聽的.如何讓自動作曲系統更好地模擬人類作曲的過程,使得系統生成的音樂不止是合乎邏輯的,而且是動聽的,也是包括進化作曲系統在內的算法作曲系統未來的目標.
參考文獻:
[1] 柯蒂斯·羅玆.計算機音樂教程[M].北京:人民音樂出版社,2011.
[2] 馮寅,周昌樂.算法作曲的研究進展[J].軟件學報,2006,17(2):209-215.
[3] 王小平,曹立明.遺傳算法理論、應用和軟件實現[M].西安:西安交通大學出版社,2002.
[4] HORNER A,GOLDBERG D E.Genetic algorithm and computer-assisted music composition[C].Proceeding of the 4th International Conference on Genetic Algorithm.San Diego:Morgan Kaufman Publishers,1991.
[5] BILES J A.GenJam:A Genetic Algorithm for Generating Jazz Solos[C].Proceedings of the International Computer Music Conference.San Francisco:International Computer Music Association,1994.
[6] BURTON A R,VLADIMIROVA T.Generation of Musical Sequence with Genetic Techniques[J].Computer Music Journal,1999,23(4):59-73.
[7] DAMON D Z.A Novel Approach to Automatic Music Composition:Using Genetic Algorithm[C].Proceedings of the 2006 International Computer Music Conference.San Francisco:International Computer Music Association,2006.
[8] TUOHY D R,POTTER W D.GA-based Music Arranging for G.uitar[C].2006 IEEE Congress on Evolutionary Computation.Piscataway:IEEE Press,2006.
[9] GARLAND J A,COPLEY P.The Suitability of Genetic Algorithms for Music Composition[J].Contemporary Music Review,2003,22(3):43-55.
[10] JACOB B L.Composing With Genetic Algorithms[C].Proceedings of the 1995 International Computer Music Conference.San Francisco:International Computer Music Association,1995.
[11] JACOB B L.Algorithmic Composition as a Model of Creativity[J].Organised Sound,1996,1(3):157-165.
[12] KURT T.GeNotator:an Environment for Exploring the Application of Evolutionary Ttechniques in Computer-assisted Composition[J].Organised Sound,1999,4(2):127-133.
[13] MARQUES M,LASEEB-ISR-IST L,OLIVEIRA V,et al.Music composition using genetic evolutionary algorithms[C].Proceedings of the 2000 IEEE Conference on Evolutionary Computation.Piscataway:IEEE Press,2000.
[14] DREZEWSKI R,TOMECKI P.Evolutionary System Supporting Music Composition[J].Intelligent Interactive Multimedia Systems and Services Smart Innovation Systems and Technologies,2011,11:29-38.
[15] RYAN A,INTYRE M.Bach in a Box:The Evolution of Four Part Baroque Harmony Using the Genetic Algorithm[C].First IEEE Conference on Evolutionary Computation.Piscataway:IEEE Press,1994.
[16] DE-PRISCO R,GIANLUCA Z,ROCCO Z.A Genetic Algorithm for Dodecaphonic Compositions[M].Applications of Evolutionary Computation,Heidelberg:Springer,2011.
[17] DE-PRISCO R,ZACCANINO R.An Evolutionary Music Composer Algorithm for Bass Harmonization[M].Applications of evolutionary computing,Heidelberg:Springer,2009.
[18] DIMITRIOS T,ELENI M.A Dynamic GA-Based Rhythm Generator[M].Trends in Intelligent Systems and Computer Engineering,US:Springer,2008.
[19] TOWSEY M,BROWN A R,WRIGHT S K,et al.Toward Melodic Extension Using Genetic Algorithms[J].Educational Technology & Society,2001,4(2):54-65.
[20] BILES J A.Autonomous GenJam:Eliminating the Fitness Bottleneck by Eliminating Fitness[C].Proceedings of the 2001 Genetic and Evolutionary Computation Conference Workshop Program.San Francisco:GECCO,2001.
[21] 崔曉東.作曲[EB/OL].(2013-09-17)[2013-10-20]http://baike.baidu.com/view/903729.htm.
[22] 桑桐.和聲學教程[M].上海:上海音樂出版社,2001.
[23] SUNGE-BAE C.Towards Creative Evolutionary Systems with Interactive Genetic Algorithm[J].Applied Intelligence,2002,16:129-138.
[24] 鄭英烈.序列音樂寫作教程[M].上海:上海音樂出版社,2007.
[25] 高師《基本樂理》教材編寫組.基本樂理[M].北京:人民音樂出版社,2000.