蘇飛
(商洛學(xué)院 藝術(shù)學(xué)院, 陜西 商洛 726000)
近些年來,在頻譜作曲中,將計算機(jī)技術(shù)應(yīng)用于樂譜研究成為一個重要的研究方向。通過某種算法策略控制獲得音符序列,最終得到完整旋律,形成一種算法的頻譜作曲,能向觀眾傳遞直觀感受,因此,頻譜作曲相較傳統(tǒng)作曲方式實用性更高[1-2]。在計算機(jī)作曲方面,目前已經(jīng)有多種計算機(jī)算法應(yīng)用于頻譜作曲中,如應(yīng)用較多的神經(jīng)網(wǎng)絡(luò)算法、專家系統(tǒng)法、馬爾科夫鏈表轉(zhuǎn)換法等[3-6]。但算法在應(yīng)用過程中存在一定局限性,神經(jīng)網(wǎng)絡(luò)算法對采用的數(shù)據(jù)提出了較高的要求[7],而專家系統(tǒng)更多的受限于譜曲的規(guī)則限制[8],馬爾科夫鏈表轉(zhuǎn)換法更多的是依靠當(dāng)前所具備的知識和信息來實現(xiàn)對音樂頻譜作曲[9]。相較而言,遺傳算法不依賴于問題參數(shù)本身,能夠獲得更好的全局最優(yōu)解特性,被越來越多地應(yīng)用于樂曲創(chuàng)作中[10]。通過利用遺傳算法對樂曲進(jìn)行編碼,并采用交叉、變異算子獲得滿意解能較好的保證樂曲的呈現(xiàn)度[11],但利用遺傳算法在進(jìn)行頻譜作曲時,容易忽視短句的構(gòu)成或調(diào)性更高的音樂頻譜,適應(yīng)函數(shù)主要依靠系統(tǒng)本身定義,使得樂曲差異性較大[12]?;诖?,本研究提出一種新的音樂知識遺傳算法,通過在適應(yīng)函數(shù)中引入人的策略來提升評價標(biāo)準(zhǔn),有效提升遺傳算法在頻譜作曲中的適應(yīng)度和呈現(xiàn)度。
遺傳算法(GA)基于自然選擇和遺傳變異的全局概率算法,形式簡單,具有較強(qiáng)的普適性。通過遺傳算法來采用二進(jìn)制編碼方式,能減少外界噪聲對樂譜的影響,將樂譜信息方便地表示出來[13]。遺傳算法的譜曲流程,如圖1所示。
圖1 遺傳算法的編曲流程
算法的具體流程如下。
(1) 選擇編碼策略,將樂曲集合X轉(zhuǎn)化為串結(jié)構(gòu)空間S;
(2) 定義適應(yīng)度函數(shù)f(x);
(3) 根據(jù)進(jìn)化策略選擇群體n,確定交叉、變異算法,交叉概率Pc、變異概率Pm等參數(shù);
(4) 生成初始化群體P;
(5) 計算群體串解碼后的適應(yīng)度函數(shù)f(x);
(6) 通過交叉、變異算子形成新一代群體;
(7) 判定群體是否滿足規(guī)則限制,或算法達(dá)到迭代次數(shù),若不滿足則返回步驟(6)重新計算。
遺傳算法編碼是將一個問題的可行解從解空間域轉(zhuǎn)化為能處理的搜索空間中,描述問題可行解的過程。編碼決定了染色體排列形式,同時決定了基因變換到解空間的表現(xiàn)形式和交叉、變異操作[14]。通常,遺傳算法作曲時,采用二進(jìn)制編碼方式將樂譜信息表示出來。
在遺傳算法的作曲過程中,首先要制定相關(guān)規(guī)則用編碼的形式將音樂知識表現(xiàn)出來,再根據(jù)交叉、變異后獲得新的樂曲,作出評價。通常適應(yīng)度函數(shù)根據(jù)不同樂曲間要素差異,定義權(quán)值獲得不同適應(yīng)值[15]。樂曲的要素如下所述。
(1) 大的間隔度:遺傳算法中進(jìn)行交叉、變異算法的初始染色體是隨機(jī)的,因而樂曲中的連續(xù)音符間存在較大間隔。為避免這類間隔造成樂曲頻譜雜亂,使用者要限制音符間的最大音程,當(dāng)音程超過設(shè)定值后,適應(yīng)度閥值取超出部分與權(quán)值之積。
(2) 模式匹配:算法執(zhí)行過程中,在音樂片段間設(shè)置匹配模式,從心理學(xué)角度將模式匹配加入適應(yīng)度函數(shù)中,聽眾在欣賞音樂的過程中不僅能識別該模式,同時也希望音樂中展現(xiàn)相類似的音樂模式,此外,音樂中主題的發(fā)展也是通過重復(fù)的節(jié)拍聯(lián)系起來。
(3) 音符特征:在一個小節(jié)中,第一強(qiáng)拍和次強(qiáng)拍作為強(qiáng)拍位置音符,若第一次強(qiáng)拍和次強(qiáng)拍為和音或休止符,則賦予正的權(quán)值,若不是和音,則賦予負(fù)的權(quán)值。對于樂曲中的長音符,使用者可以指定為長音符,對于音符中的長音符,設(shè)定和音音符與協(xié)調(diào)旋流音權(quán)值為正,無和音的休止符、音階音符取負(fù)的權(quán)值。
(4) 速度:使用者按照一定的標(biāo)準(zhǔn)選定樂曲進(jìn)行速度,算法通過在每對連續(xù)小節(jié)中增加音符和休止符判定樂曲的速度。
選取曲譜的初始種群后,對編碼進(jìn)行交叉、變異操作,獲得新的曲譜,具體操作流程如圖2所示。
圖2 染色體交叉、變異操作
首先對選擇的初始種群染色體進(jìn)行單點或多點交叉操作,其中適應(yīng)度更大染色體進(jìn)入下一輪種群,在作曲系統(tǒng)中,通過變異算子尋找樂曲缺陷或能引人愉悅的樂曲進(jìn)化方向[16]。對于其中的單個音符變異,隨機(jī)選定一個音符,并用新的音符代替,或采用稍高的音符,也可隨機(jī)選取兩個音符數(shù)量相等片段進(jìn)行位置交換,或改變?nèi)旧w的序列,獲得新的音符染色體序列。在復(fù)制和交叉過程中因為變異和分割形成的單調(diào)沉悶音符,可以執(zhí)行合并重復(fù)音符向,即將染色體中任意相同音高的連續(xù)音符合并為等長音符。
算法終止條件與適應(yīng)度函數(shù)有關(guān)。當(dāng)選定適應(yīng)度函數(shù)后,借助人的理解來判定樂曲的優(yōu)劣,采用自適應(yīng)評價適應(yīng)度函數(shù)時,利用最大迭代次數(shù)或作品相似度作為終止條件[17]。
本節(jié)中提出基于遺傳算法的交互式作曲系統(tǒng)。通過適應(yīng)度函數(shù)進(jìn)行樂曲評價。由于作曲過程中的樂曲質(zhì)量的提高,只需要較少的迭代次數(shù)就能獲得滿意的樂曲,大大降低了作曲時間。對于樂曲中存在的單個音符在節(jié)奏、和弦、旋律上的不同組合,產(chǎn)生的數(shù)量過于龐大,系統(tǒng)選擇對特定子集進(jìn)行處理來合理減少搜索空間計算方法。在樂曲信息的編碼過程中,音樂知識和規(guī)律是作曲系統(tǒng)中構(gòu)筑樂曲的必要因素,而規(guī)則是通過適應(yīng)度函數(shù)執(zhí)行的,本研究采用人對個體的評價作為適應(yīng)度函數(shù)來驗證群體對規(guī)則的遵守情況,降低算法對樂理知識的高要求。
通常音樂作品是由一個主調(diào)聲部和多個復(fù)調(diào)聲部構(gòu)成。為簡化運算,只產(chǎn)生單聲部樂曲,樂曲長度采用4節(jié)拍,拍號為4/4,為便于對樂曲細(xì)微變化處進(jìn)行準(zhǔn)確評價,形成易識別樂曲,將樂曲調(diào)號定為C大調(diào),主音固定在譜表小字一組c上。音符時值以整數(shù)方式表示,以十六分音符為準(zhǔn),定義值為1,其他音符按表1所示定義,休止符與普通音符相同。由于系統(tǒng)中主音固定在小字一組c上,因此取各音與c間的半音倍數(shù)對應(yīng)整數(shù)值作為音符音階,拍子的力度同樣采用整數(shù)值進(jìn)行定義,樂曲不同音符、音程和力度的編碼處理,如表1所示。
表1 樂曲的編碼處理
由單個或多個音符以一定的形式組成樂曲,將潛在的信息表示出來。在本研究系統(tǒng)中,單個音符以{音程種類,音符時值,拍子力度}的整數(shù)值形式來表示,如圖3所示。
{(14,2,2),(11,2,2),(9,2,2),(11,2,),(14,8,2)},{(14,2,2),(11,2,1),(9,2,2),(11,2,1),(14,8,2)}圖3 樂曲的整數(shù)法表示
選擇一段《丟手絹》的五線譜,用整數(shù)的表示方法。其中小括號內(nèi)表示一個音符信息,大括號為一小節(jié)音符信息。
系統(tǒng)提供了音程交叉、時值交叉、力度交叉3種方式,音程交叉方式下的染色體變化,如圖4所示。
圖4 染色體的音程交叉算法
同時,可定義變異概率值,對某一段染色體某個組成部分進(jìn)行修改、刪除等操作。
選取兒童音樂《小星星》作為初始種群,在適應(yīng)度函數(shù)下,通過異常算法交叉、變異操作生成新的樂曲,如圖5所示。
(a) 初始五線譜
(b) 進(jìn)化五線譜圖5 頻譜樂曲的生成
圖5(a)為樂曲的初始五線譜。采用二進(jìn)制編碼方式對樂曲進(jìn)行編碼操作,并根據(jù)3種交叉方式,以及5%的隨機(jī)變異率進(jìn)行交叉變異操作。通過隨機(jī)替換單個音符、改變小節(jié)音符和音符序列、復(fù)制音符片段進(jìn)化樂曲。對樂曲進(jìn)行迭代計算,當(dāng)進(jìn)化到50次時,去除其中存在的旋流音以及不和諧音符,獲得新的五線譜如圖5(b)所示。
對比新舊兩個五線譜可以發(fā)現(xiàn),生成新的樂曲以很快地收斂速度達(dá)到適應(yīng)值。采用模式匹配時,染色體權(quán)重取值相較于其他特征值更為重要,若模式匹配進(jìn)化過程中超過權(quán)重閾值,則形成單調(diào)重復(fù)的五線譜,毫無律動性。
將遺傳算法應(yīng)用于作曲中,獲得了一種新的計算機(jī)算法頻譜作曲方式。通過遺傳算法將樂譜轉(zhuǎn)化為數(shù)字編碼形式,以人作為適應(yīng)度函數(shù),進(jìn)行交叉、變異算子形成新的樂曲。通過實例分析可以看出,遺傳算法應(yīng)用于作曲中的效果與系統(tǒng)的音樂知識表現(xiàn)程度相關(guān),當(dāng)規(guī)則越充分,則作品呈現(xiàn)度越高,算法在小節(jié)音樂作曲中獲得了較好的效果。但由于算法是一類隨機(jī)、啟發(fā)式的搜索方法,制作新樂曲的效果不能與作曲家相提并論,后續(xù)可以將神經(jīng)網(wǎng)絡(luò)引入到遺傳算法中,實現(xiàn)對更長樂曲制作的算法改良。