游夢琪,陳柳姣,周 莉,賀晶嫻
(中國地質(zhì)大學(xué)(武漢) 藝術(shù)與傳媒學(xué)院,湖北 武漢 430074)
算法作曲是用形式化的作曲規(guī)則作為音樂創(chuàng)作的手段,使音樂家們可以利用計算機作為音樂創(chuàng)作的工具,實現(xiàn)自動作曲[1].早在11世紀(jì)就出現(xiàn)了1種根據(jù)經(jīng)文中的元音設(shè)計音高的模型來實現(xiàn)經(jīng)文旋律的創(chuàng)作[2],Horner等[3]通過遺傳算法在計算機作曲中的應(yīng)用實現(xiàn)了完成主題橋接的計算機輔助作曲程序,Biles等[4]實現(xiàn)了GenJam實時交互式演奏系統(tǒng),Prisco等[5]實現(xiàn)了基于十二音作曲體系的樂曲創(chuàng)作系統(tǒng).國內(nèi)方面,鄭銀環(huán)等[6]設(shè)計了音程序列挖掘算法,曹西征等[7]提出了面向蒙古族歌曲旋律的自動伴奏算法,鄭曉妹等[8]實現(xiàn)了基于旋律馬爾科夫鏈的中國民歌的自動作曲模式,鄧陽等[9]設(shè)計出和弦體系構(gòu)造函數(shù)自動和弦編配的動態(tài)規(guī)劃算法,實現(xiàn)了機器自動和弦編配.基于以上研究,可知算法作曲是復(fù)雜多樣的,研究者主要使用遺傳算法、馬爾科夫鏈等工具進(jìn)行研究,且研究對象大多集中于西方音樂,對于中國民族音樂涉及較少.
模板匹配是1種最原始、最基本的模式識別方法,其原理是選擇己知的對象作為模板,與圖像中選擇的區(qū)域進(jìn)行比較,從而識別目標(biāo).目前模板匹配多用于圖像檢測,趙麗紅等[10]介紹了人臉檢測相關(guān)的算法和理論,分析了各種方法的優(yōu)缺點,并提出了關(guān)于人臉檢測問題的進(jìn)一步研究方向;田梅等[11]構(gòu)建和弦轉(zhuǎn)位的狀態(tài)轉(zhuǎn)移圖和和弦手勢模板庫進(jìn)行識別;張大寶等[12]提出了1種基于音視模板匹配的新聞視頻識別方法.在音樂相關(guān)方面,蔡岳建等[13]用剪輯的8首樂曲片斷作為實驗材料,對其調(diào)式和速度對大學(xué)生情緒的影響進(jìn)行了研究;吳晶晶等[14]提取音樂中的調(diào)式調(diào)性等特征,通過計算機對音頻信號的自動分析及處理,實現(xiàn)對鋼琴音樂演奏的特征識別.
音樂調(diào)式是音樂構(gòu)成的重要因素之一,音樂調(diào)式的識別是人工智能作曲的1個關(guān)鍵技術(shù)環(huán)節(jié).對中國民族音樂調(diào)式的智能識別的研究目前較少,例如鄧陽等[15]在2018年提出的基于決策樹的中國民族音樂五聲調(diào)式識別算法,對中國民族音樂的六聲、七聲調(diào)式尚未涉及.以上對音樂調(diào)式的研究主要是通過音頻分析或人工分析等進(jìn)行的.
針對以上問題,對中國民族音樂調(diào)式的判斷可將典型調(diào)式特征作為模板,與待處理的調(diào)式進(jìn)行比較,識別待處理調(diào)式中調(diào)式特征的存在與符合度情況,與模板匹配原理一致,因此可采取構(gòu)建調(diào)式模板進(jìn)行調(diào)式識別.本文提出通過尋找中國民族音樂調(diào)式的特征,將MIDI形式的單聲部旋律進(jìn)行模板匹配,判斷該旋律的調(diào)式調(diào)性,并用該方法來識別是否為中國民族音樂調(diào)式,對轉(zhuǎn)調(diào)、西洋大小調(diào)式、中古調(diào)式、阿拉伯調(diào)式等其他調(diào)式的研究尚不涉及.
調(diào)式[16]是樂音組織結(jié)構(gòu)形式,是指若干高低不同的樂音圍繞某個有穩(wěn)定感的中心音,按一定的音程關(guān)系組織在一起,構(gòu)成1個有機的體系.以調(diào)式的中心音為起始音和結(jié)束音,其他各音按音高的順序依次排列成音階的形式,稱調(diào)式音階.
調(diào)式根據(jù)調(diào)式音階中樂音的數(shù)量可分為3大類別: 七聲音階調(diào)式、五聲音階調(diào)式以及特殊調(diào)式.七聲音階調(diào)式有中古調(diào)式、西洋大小調(diào)式、中國民族音樂七聲調(diào)式以及吉卜賽調(diào)式;五聲音階調(diào)式有中國民族音樂五聲調(diào)式以及日本民謠調(diào)式和律調(diào)式;特殊調(diào)式有印度尼西亞音樂、阿拉伯音樂、印度音樂、泰國音樂等調(diào)式.
不同的歷史時期與不同的民族和地域形成了各種不同的調(diào)式.各種調(diào)式因其音階結(jié)構(gòu)、調(diào)式音級間相互關(guān)系以及音律等方面的差異而各具特色與表現(xiàn)力.調(diào)式可賦予音樂以一定的情感與風(fēng)格.
我國民族眾多,民間音樂的調(diào)式豐富多樣,應(yīng)用最廣泛的是五聲調(diào)式和以五正聲音階為基礎(chǔ)的各種調(diào)式[16].
五聲調(diào)式是指在“五度相生律”的基礎(chǔ)上按照純五度排列起來的5個音所構(gòu)成的調(diào)式,如圖1所示.將這5個音依高低順序排列起來便是五正聲音階,各音級的名稱是宮、商、角、徵、羽,如圖2所示,其中任何1個音都可當(dāng)做主音,可分別構(gòu)成五聲宮調(diào)式、五聲商調(diào)式、五聲角調(diào)式等5個調(diào)式.
圖1 五聲調(diào)式Fig.1 Pentatonic mode
圖2 五正聲音階Fig.2 Positive pentatonic scale
以五聲調(diào)式為基礎(chǔ),在角-徵、羽-宮兩個小三度之間加上1個音,使五聲調(diào)式得以擴大成六聲調(diào)式或七聲調(diào)式,這些增加的音稱為偏音,同樣是由“五度相生律”得來,其名稱為: 清角、變徵、變宮、閏,如圖3所示.
圖3 正音與偏音Fig.3 Positive tone and offset tone
七聲調(diào)式是指在五聲調(diào)式基礎(chǔ)上增加兩個偏音構(gòu)成的調(diào)式,其中傳統(tǒng)的七聲調(diào)式有3種: 雅樂音階(偏音為變徵與變宮)、清樂音階(偏音為清角與變宮)以及燕樂音階(偏音為清角與閏).
五聲(五正聲)音階中存在唯一的大三度——宮角大三度,即宮音與角音的音程關(guān)系為大三度.在音階中找到唯一的大三度就可以確定該音階為五正聲音階以及其宮音,調(diào)式中最主要的音為主音,主音是出現(xiàn)頻率最高的音符,根據(jù)主音與宮音可以確定其調(diào)式.
七聲音階中偏音出現(xiàn)的頻率極大地少于主干音,而主干音也就是5個正音,存在唯一的大三度,可以通過對比出現(xiàn)頻率以及出現(xiàn)頻率較高的音之間的大三度確定該音階是否為七聲音階.在確定為七聲音階后進(jìn)行音階排序,則可確定宮音以及偏音名稱,再結(jié)合主音可以確定其調(diào)式.
模板匹配是1種基本的模式識別方法[17],主要應(yīng)用在計算機視覺、圖像處理和語音識別等領(lǐng)域.模板就是1幅已知的小圖像,而模板匹配就是在1副大圖像中搜尋目標(biāo),已知該圖中存在目標(biāo),且該目標(biāo)同模板有相同的尺寸、方向和圖像元素,通過一定的算法可以在圖中找到目標(biāo),確定其坐標(biāo)位置.該原理同樣應(yīng)用在中國民族音樂調(diào)式的模式識別中,已知五聲調(diào)式和七聲調(diào)式的模板,可以通過對旋律進(jìn)行特征搜尋、模板匹配,最終得出該旋律的調(diào)式.圖4為本文算法的流程圖.
圖4 本文算法的流程圖Fig.4 The flow chart of the algorithm in this paper
通過提取并陳列旋律中所有的音高來判斷有無偏音并確定該旋律所屬的模板來進(jìn)行匹配: 無偏音的旋律歸屬于中國民族音樂五聲調(diào)式模板,有偏音的旋律歸屬于中國民族音樂七聲調(diào)式模板,符合中國民族音樂調(diào)式音階組成邏輯的旋律屬于中國民族音樂調(diào)式.
基于判別五聲調(diào)式和七聲調(diào)式的方法進(jìn)行調(diào)式模板的構(gòu)建,如圖5,圖6所示.
圖5 五聲調(diào)式模板Fig.5 Template for pentatonic mode
圖6 七聲調(diào)式模板Fig.6 Template for heptatonic mode
音樂樂器數(shù)字接口(Musical Instrument Digital Interface, MIDI)是編曲界最廣泛的音樂標(biāo)準(zhǔn)格式,可稱為“計算機能理解的樂譜”.與波形文件不同,MIDI文件不對音樂進(jìn)行抽樣,而是將音樂的每個音符記錄為1個數(shù)字,所以與波形文件相比要小得多,可以滿足長時間音樂的儲存需要.由于MIDI文件包含的信息較多,為了能較好地提取出所需的音高信息,得到樂曲調(diào)式,選取對象的MIDI文件在音軌數(shù)量上需有一定的限制.
MIDI文件的預(yù)處理主要是針對MIDI字節(jié)進(jìn)行解碼與重復(fù)音的去除,通過MIDI解碼器f(MIDI)進(jìn)行MIDI到音符的映射計算,例如:
f(MIDI)=[Note(1),Note(2),Note(3),…,Note(N)],
(1)
式中:Note(i)(i=1,2,…,N)表示音階列表scale中相同的所有音高的出現(xiàn)次數(shù).
由式(1),設(shè)列表Pitch=f(MIDI),設(shè)計1個八度重復(fù)刪除算法f(Delete,Pitch)如下:
f(Delete,Pitch)=[scale(1),scale(2),scale(3),…,scale(N) ],
(2)
式中:Delete與Pitch為相同的輸入音高列表;函數(shù)f(Delete,Pitch)的映射關(guān)系為對比計算,將Delete與Pitch的每個元素進(jìn)行遍歷后得到音階列表:scale=f(Delete,Pitch);scale(i) ,i代表音階中音高的序號,記為音符序列號.通過f(MIDI)映射關(guān)系,將MIDI字節(jié)轉(zhuǎn)化為1個整型的音高列表數(shù)據(jù),用于后續(xù)的計算.圖7為MIDI文件預(yù)處理的流程圖.
圖7 MIDI文件預(yù)處理的流程圖Fig.7 The flow chart for the preprocessing of MIDI file
對MIDI文件進(jìn)行預(yù)處理后得到了1組較為準(zhǔn)確的音高序列并進(jìn)行模板匹配,對由5個音高組成的音階進(jìn)行五聲調(diào)式模板匹配,找出該音階中的音程關(guān)系存在唯一的大三度即找出宮音與角音,如果沒有調(diào)式外的音程關(guān)系出現(xiàn),則可以直接得出最終調(diào)式.由于調(diào)式的復(fù)雜性,并不能完全去除其所受的干擾,當(dāng)無大三度時將考慮是否為陜北調(diào)式,由于陜北調(diào)式中存在唯一特征音程小三度,所以將再次在音階中尋找是否存在唯一小三度音程,從而通過羽音找出宮音,確定其調(diào)式.
對由7個音高組成的音階進(jìn)行七聲調(diào)式模板匹配,通過對出現(xiàn)的7個音高的頻率進(jìn)行排序,由于偏音出現(xiàn)頻率明顯小于正音,找出頻率次數(shù)最小的兩個音高即為偏音,對于出現(xiàn)頻率前5的音高進(jìn)行五度音程關(guān)系排序,方法如下.
設(shè)排序算子為f(Note)sort,將上述預(yù)處理MIDI文件f(MIDI)的列表經(jīng)過排序算子f(Note)sort生成1個新的列表文件,文件包含每個音符出現(xiàn)的次數(shù),計算公式如下:
(3)
通過這種映射關(guān)系計算出每個音符的出現(xiàn)次數(shù),最后通過模板匹配函數(shù).由式(3)最終將模板所需要的樣本進(jìn)行歸一化處理,得到1個列表數(shù)據(jù):Modeldata,設(shè)模板匹配函數(shù)為:f(Model)data,具體映射關(guān)系如下:
(4)
若偏音出現(xiàn)頻率較少且出現(xiàn)頻率前5的音高能根據(jù)五度音程關(guān)系進(jìn)行排列,則為Style1(中國民族七音樂聲調(diào)式);在出現(xiàn)頻率排在前5位的音高中存在唯一的大三度,確定宮音與角音,再結(jié)合出現(xiàn)的偏音確定偏音名稱,通過主音、宮音與偏音名稱最終定調(diào),由于調(diào)式的復(fù)雜性,有一些旋律所提取出來的音高信息與模塊不完全匹配,如一些旋律會存在音階使用不全的情況,對于最終定調(diào)會產(chǎn)生影響,而偏音“閏”和“變徵”只存在于中國民族音樂七聲調(diào)式音階中,因此可通過偏音進(jìn)行判定;由6個音高組成的音階與七聲音階不同之處在于六聲音階只有1個偏音,判斷方法與七聲調(diào)式一致.可對匹配度進(jìn)行排序,較高匹配率的進(jìn)行模板匹配并核驗,低匹配度的則可能為Style2(非常規(guī)調(diào)式或非中國民族音樂調(diào)式).
進(jìn)行調(diào)式模塊匹配后,需用對調(diào)式特征進(jìn)行核驗來最終確定其調(diào)式.
調(diào)式特征1:“宮”音核驗.找出宮音后將按照基于宮音的調(diào)式音程關(guān)系對樂曲中的所有音符進(jìn)行歸類,如果所有音符都能夠準(zhǔn)確地按照與宮音音程關(guān)系進(jìn)行分類,那么核驗通過.反之,如果出現(xiàn)調(diào)式外的特殊音程,例如出現(xiàn)在宮音上方的音與宮音構(gòu)成小二度,這是在中國民族音樂調(diào)式中不存在的音符,核驗失敗.
調(diào)式特征2: 偏音次數(shù)核驗.找出偏音后將其與整首樂曲中所有音符進(jìn)行核對,在對大量的中國民族音樂調(diào)式分析后得出偏音在全曲中所占比重主要在10.3%~21.6%之間,少數(shù)在31.9%.因此若偏音次數(shù)出現(xiàn)頻率在21.6%以下,則核驗通過.反之,如若出現(xiàn)在21.6%~31.9%之間,則需通過其他調(diào)式特征繼續(xù)核驗來判斷,如若出現(xiàn)在31.9%以上,則核驗失敗.
調(diào)式特征3: 特征音列組核驗.將整首樂曲所有的音符進(jìn)行3個音1組劃分,如若3音組為以二度與三度或二度與四度為主構(gòu)成以及由宮、商、角3音構(gòu)成的連續(xù)二度3音組,則核驗通過.反之,如若出現(xiàn)“和弦式進(jìn)行”、“音階式進(jìn)行”等特征音列組則判定核驗失敗.
調(diào)式特征4: 尾音(主音)核驗.將主音與整首樂曲中最后一個尾音進(jìn)行核對,如若主音與尾音為同一音,則核驗成功.反之,則可能為非常規(guī)調(diào)式、轉(zhuǎn)調(diào)調(diào)式或非民族調(diào)式,核驗失敗.
調(diào)式特征5: 第7級音核驗.將初步定調(diào)的調(diào)式中提取出第7級音與第1級音進(jìn)行向上二度判定,如若未構(gòu)成向上小二度關(guān)系,則核驗通過.反之,則核驗不通過.
表1 MIDI文件格式的實驗樣本Tab.1 The experimental samples of MIDI file format
實驗樣本主要為單聲部旋律: 中國五聲調(diào)式與七聲調(diào)式民歌以及少量西方大小調(diào)式進(jìn)行干擾,測試算法對于中國民族音樂調(diào)式判斷的可靠性.
選取如表1所示的8首中國民歌以及4首西方大小調(diào)式歌曲作為樣本進(jìn)行試驗.
3.2.1 五聲調(diào)式分析
選取五聲調(diào)式民歌《茉莉花》進(jìn)行測試.將計算所得的音高、出現(xiàn)頻率等數(shù)據(jù)進(jìn)行繪圖.圖8為《茉莉花》的原始音高圖.
圖8 《茉莉花》的原始音高圖Fig.8 The original pitch chart of Jasmine
表2 《茉莉花》的計算結(jié)果Tab.2 The calculation results for Jasmine
圖9為《茉莉花》的音高頻率圖.根據(jù)每個音高出現(xiàn)的頻率進(jìn)行排序,可以較清晰地看出作品的主干音都是出現(xiàn)頻率較高的音符.從預(yù)處理后的圖10中可以看出將原始音高圖整理成了1條由5個音高構(gòu)成的具有單調(diào)性的音階圖.《茉莉花》的計算結(jié)果如表2所示.
根據(jù)以上實驗結(jié)果,我們可以得出: 通過對《茉莉花》的音符進(jìn)行統(tǒng)計,可以清晰地得出每個音符出現(xiàn)的次數(shù),再對其MIDI文件進(jìn)行預(yù)處理,得到1條具有明顯單調(diào)性的音高分布圖,由此可得作品的旋律的音階,最終通過計算得出調(diào)式為G徴五聲調(diào)式,與人工判斷一致.
圖9 《茉莉花》的音高頻率圖Fig.9 The pitch frequency chart of Jasmine
圖10 《茉莉花》的音階圖Fig.10 The scale chart of Jasmine
3.2.2 七聲調(diào)式分析
選取七聲調(diào)式民歌《是咱知心人》進(jìn)行測試.圖11為《是咱知心人》的原始音高圖.
圖11 《是咱知心人》的原始音高圖Fig.11 The original pitch chart of I know you
圖12為《是咱知心人》的音高頻率圖.根據(jù)每個音符出現(xiàn)的頻率進(jìn)行排序,可以較清晰地看出作品中每個音出現(xiàn)的頻率次數(shù),其中有些音明顯少于其他音出現(xiàn)的頻率次數(shù).從預(yù)處理后的圖13中可以看出將原始音高圖整理成了1條由7個音高構(gòu)成的具有單調(diào)性的音階圖,結(jié)合音高頻率圖可以發(fā)現(xiàn)58號音與64號音高的頻率次數(shù)明顯少于其他音高.《是咱知心人》的計算結(jié)果如表3所示.
圖12 《是咱知心人》的音高頻率圖Fig.12 The pitch frequency chart of I know you
圖13 《是咱知心人》的音階圖Fig.13 The scale chart of I know you
表3 《是咱知心人》的計算結(jié)果Tab.3 The calculation results for I know you
根據(jù)以上實驗結(jié)果,我們可以得出: 通過對《是咱知心人》的音符進(jìn)行統(tǒng)計,可以清晰地得出每個音符出現(xiàn)的次數(shù),再對其MIDI文件進(jìn)行預(yù)處理,得到1條具有明顯單調(diào)性的音高分布圖,由此可得作品的旋律的音階,找出偏音,最終通過計算得出調(diào)式為燕樂G徴七聲調(diào)式,與人工判斷一致.
3.2.3 大小調(diào)式音樂分析
選取大調(diào)《一閃一閃小星星》進(jìn)行測試.圖14(見第268頁)為《一閃一閃小星星》的原始音高圖.
圖14 《一閃一閃小星星》的原始音高圖Fig.14 The original pitch chart of twinkle twinkle little star
圖15 《一閃一閃小星星》的音高頻率圖Fig.15 The pitch frequency chart of twinkle twinkle little star
圖16 《一閃一閃小星星》的音階圖Fig.16 The scale chart of twinkle twinkle little star
表4 《一閃一閃小星星》的計算結(jié)果Tab.4 The calculation results for twinkle twinkle little star
圖15為《一閃一閃小星星》的音高頻率圖.從音高頻率圖中可以較清晰地看出每個音的出現(xiàn)頻率次數(shù)相差較小,民族調(diào)式特征不明顯.從預(yù)處理后的圖16中可以看出將原始音高圖整理成了1條由6個音高構(gòu)成的具有單調(diào)性的音階圖,結(jié)合音高頻率圖可以發(fā)現(xiàn)69號音高的頻率次數(shù)少于其他音高,民族調(diào)式特征不明顯.《一閃一閃小星星》的計算結(jié)果如表4所示.
表5 實驗樣本的計算結(jié)果Tab.5 The calculation results of the experimental samples
通過對《一閃一閃小星星》的分析得出: 調(diào)式特征不符合所構(gòu)建的民族音樂調(diào)式模板,特征音列組為西洋大小調(diào)的音列組,由此判斷為非中國民族音樂調(diào)式.判斷結(jié)果符合預(yù)期.
3.2.4 樣本測試的結(jié)果
從表5的實驗結(jié)果來看,對中國民族音樂調(diào)式與非中國民族音樂調(diào)式的識別基本正確,本算法對中國民族音樂調(diào)式的識別具有較高的準(zhǔn)確性.
調(diào)式是音樂構(gòu)成的重要因素之一,不同的調(diào)式確定了不同的音樂風(fēng)格.本文提出的中國民族音樂調(diào)式識別算法以中國民族音樂理論為基礎(chǔ),通過對MIDI文件的音高數(shù)據(jù)進(jìn)行提取,再借用模板匹配思想設(shè)計完成中國民族音樂的調(diào)式的判定,最后再對判定結(jié)果進(jìn)行核驗,通過核驗得出了音樂調(diào)式識別的最終結(jié)果.
從實驗數(shù)據(jù)來看,本算法對中國民族音樂調(diào)式的判斷具有較高的準(zhǔn)確率,能夠準(zhǔn)確地辨別出中國民族音樂調(diào)式和非中國民族音樂調(diào)式,并且能夠細(xì)分出中國民族音樂五聲調(diào)式和七聲調(diào)式.
此前的人工智能作曲算法大多以西洋大小調(diào)體系的西方音樂和流行音樂為主要研究內(nèi)容,較少涉及中國民族音樂.本文提出的基于模板匹配的中國民族音樂調(diào)式的識別算法為中國民族音樂的智能作曲研究提供了新方法,為推動人工智能與中國民族音樂的交互發(fā)展提供了新的發(fā)展路徑.