前言:
在音樂資訊檢索(Music Information Retrieval,MIR)中,chord label通常是純文字的資料,例如 'C' ,'Cmaj7' 。我的畢業論文主要處理的資料對象是把音樂訊號透過和弦辨識技術轉換出的純文字和弦,另外一個要處理的資料是從網路和弦譜上解析出的和絃資料。然而和弦的寫法有百百種(尤其是網路上的和弦寫法= =),在做出有趣的音樂資料分析之前必須先處理一下資料的格式。
pychord是一個第三方python套件,可以處理多種和弦的寫法,以下我們來看一下使用pychord在處理資料上的方便性,並且從樂理上觀察有趣的地方。
使用Pychord
首先是大家都知道的pip install pychord
再來使用pychord.Chord這個class用來將純文字和弦轉換成pychord的處理對象:
>>> from pychord import Chord >>> c = Chord("Am7") >>> c <Chord: Am7>
輸出是一個pychord.chord.Chord型態的變數,接下來就可以使用pychord的方法來解析和弦有什麼屬性囉!
>>> c.info() """ Am7 root=A quality=m7 appended=[] on=None """
還不錯吧! 使用info()這個方法可以解析出和弦名稱、和弦主音(A),以及和弦種類(小七和弦)。
和弦資料麻煩就在和弦有太多資訊了,所以我們一定要有好的工具來儲存資料特徵。
這個工具還可以處理斜線和弦(slash chord)
斜線和弦是改變最低音的主音
例如Am7/G 我們讀做 A minor seven on G,意思是原來的Am7和弦,
最低音應該要彈G,如此一來就可以強調在G的和聲
>Chord("Am7/G").info() Am7/G root=A quality=m7 appended=[] on=G
和弦比較
再來看一個有趣的東西:
>>> Chord("C#") == Chord("Db") True
XDD 看來是採十二均音律呢! 樂理上,我們把一個八度音分為12等分,用以估計兩個音之間的音程。
在琴鍵上C# 位於C的右方黑鍵,同時也是D的左方黑鍵,彈奏時我們把C#看成Db
但是從聲音頻率來看,C#與Db是兩個不同的音,這兩個論點還會引起爭論,真的很有趣!!
#記號與b記號一律寫在音名右方,寫在左方丟到pychord可是會噴錯的。
pychord還有許多用途,例如解析和弦組成音、和弦序列轉調,這些都有助於我們處理音樂資料轉換。由於和弦資料繁雜,MIR也定義了標準格式 (Harte et al. 2005),回想當初在做出有趣的和弦資料分析前,光是前處理的動作就花了好一陣子功夫,不過倒也磨練了一下資料處理的能力,也算是成為獨當一面的資料分析師的必經之路吧!!