• 沒有找到結果。

第二章 相關研究

3.4 精確分段

前面我們將音樂作粗略的分段後,從這些粗略段落中,再探勘出音樂的動機。接下來,

圖 3.25:兩個音快速的交替演奏。

我們會利用動機與粗略分段的結果找出精確的段落。根據動機探勘的結果,我們保留存在 有動機的粗略段落,將完全沒有探勘出動機的粗略段落刪除。此外,保留下來含有動機的 粗略段落,我們會進一步做合併的動作。接下來,我們介紹決定Fine segmentation 的幾個 步驟。

首先,刪除不包含任何動機的粗略分段。第二,我們利用動機以及粗略段落的結 果,對粗略段落做 Split 與 Merge,找出同一個動機所構成的段落,我們稱之為 Theme segments。 第三,音樂中除了 Theme segments 以外剩下的段落,我們稱之為 Non-theme segments。我們將長度超過一定量的 Non-theme segment,也定成一個 Theme segment。

在第一個步驟中,我們會刪除沒有包含動機的粗略段落。在探勘動機時,我們會紀錄 各個段落探勘出來的動機。如果一個粗略段落無法探勘出任何的動機,很可能是因為該粗 略段落是屬於伴奏或間奏較為不重要的部份或者沒有一個明顯的主題,所以我們無法從中 探勘出重複出現的動機序列。因此,我們會刪除不包含動機的段落。

第二個步驟,我們檢查動機在各個粗略段落分佈的情形。首先,我們先介紹將粗略段 落做 Split 的情形。如圖 3.26 所示,每一個長條代表一個粗略段落,長條中顏色所標的的 部分為動機或動機變化發生的位置,不同顏色代表不同的動機。圖 3.26 上方的粗略段落 中,包含兩種不同的動機分佈在其中,相同的動機是連續在一起,中間沒有出現其他動機。

在這個情形下,我們將粗略段落做Split,Split 的切割點在一種動機開始出現的位置上。圖 3.26 下方的粗略段落中,包含數個不同的動機,而且分散在其中,沒有連續的出現。對於 這種情形,我們不會做 Split,而將整個粗略段落當作可能的 Theme segment。接者我們介 紹將粗略段落做Merge 的情形。如圖 3.27 所示,一個長條代表一首完整的音樂,長條中有 顏色所標示的部分代表不同的粗略段落,相同顏色的粗略段落代表由相同的動機所構成。

圖 3.27 上方的長條中,第一、二、四與五個粗略段落由相同的動機所構成,第三與第六個 粗略段落是由同一個動機所構成。我們檢查相鄰在一定範圍內的兩個粗略段落是否由同一 個動機所構成,如果由相同的動機所構成,我們會將兩個粗略段落合併為一個,如圖 3.27 下方長條所示。

圖 3.26:兩種動機在粗略段落中分佈的情形。

圖 3.27:合併相同動機的粗略段落。

第四章

系統實作

本章介紹系統實做的相關議題與解決的辦法。音樂內容所包含的特徵值非常多,針對 不同的需求,我們需要擷取不同的特徵值以供處理。因此,我們必須擷取適合探勘段落或 動機的特徵值。舉例來說,我們探勘音樂動機的步驟中,利用音樂動機處理的特性。音樂 動機處理中,會利用音樂的Pitch interval 特徵。Pitch interval 的特徵表示法又分為兩種,一 種稱為Real interval,另外一種稱為 Tonal interval。Tonal interval 會受到 Musical Scale 所影 響,我們必須要考慮因為不同的Musical Scale 所造成的 Tonal interval 變化,這些變化會造 成結果的不同,詳細差別細節會在後面的章節討論。

除了 Pitch interval 外,節奏的資訊也因為特性上的不同,必須多做考慮。根據根據 Dixon[13]等人所述,大部分節奏的資訊主要是音符開始演奏的時間,而 Inter-Onset Interval(IOI)的表示法較為符合這個特性。舉例來說,一般的音樂盒所演奏的音樂,並不會 按照原來音樂的音長來發聲。因為音樂盒的每個音都只有在開始發聲的時候被彈奏,並沒 有理會一個音的長短是否不足或過長。但是,我們人類卻依然可以辨識出音樂和所播放的 音樂。因此,我們可以使用 IOI 表示節奏,相對於原始音長,讓資料更適合於音樂的動機 探勘。

4.1 調性音階

由於,音樂的音高關係會因為不同的Musical scale 而有不同音程差關係。所以,我們 將MIDI 檔案原本所記錄的音高,依照對應的 Musical scale 轉換成 Tonal pitch 的表示法。

如圖 4.1 上方所示,C 大調的音階實際在 MIDI 檔案所記錄的資訊是<60, 62, 64, 65, 67, 69, 71, 72>;而下方的 G 大調音階實際在 MIDI 檔案所紀錄的是<60, 62, 64, 66, 67, 69, 71, 72>。

如果考慮Tonal transposition 的情形,在 C 大調的 64 與 65 應該視為一個間距一個音,而在 G 大調中的 64 與 65 視為半個音。所以,針對 Musical scale 的不同,我們必須做不同的對

應。在MIDI 檔案格式中,會紀錄一個 Key signature。Key signature 在音樂中,決定 Musical scale。由此我們可以將 MIDI 原本的音高資訊,對應回 MIDI 檔案所設定的 Musical scale。

我們建立一個對應原始音高與Musical scale 的表格,將各個不同的 Musical scale 對應 於原始MIDI 音高的資訊記錄在表格內。透過我們對應的表示方法,C 大調音階的 MIDI 音 高<60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72>,經過處理後,原來的序列會變成<36, 36.5, 37, 37.5, 38, 39, 39.5, 40, 40.5, 41, 41.5, 42, 43>。其中<61, 63, 66, 68, 70>是音階中的升降音,

在轉換後會變為<36.5, 37.5, 39.5, 40.5, 41.5>。

4.2 音長區間量化

MIDI 是紀錄製作者演奏的資訊,在彈奏時,常常會有誤差。所以在 MIDI 檔案紀錄的 拍子長度,通常都是不準確的。而我們比對音符時,必須同時考慮音高與音長。因此,我 們必須針對音長的部分做Quantization。在 MIDI 檔案中,記錄有 Time signature 的資訊,這 個Event 會紀錄 1 拍的長度是多少個 tick time。利用這項資訊,我們可以矯正 MIDI 製作過 程所發生的誤差。針對音長長短不同,我們使用不同的解析度來矯正音長。當音長為一拍 以上時,我們以1/2 拍做 Quantization;如果小於一拍,我們以 1/4 拍做 Quantization。

4.3 動機整合

我們在探勘動機時,分別對音高與音長使用不同的表示方法,以利我們使用動機處理 的特性。為了讓我們整合多種不同表示法所代表的動機,我們會把所有探勘出來的動機,

圖 4.1;C 大調與 G 大調音階。

60 62 64 65 67 69 71 72 Pitch:

60 62 64 66 67 69 71 72 Pitch:

對應找出原始序列的資料。為了有效率的找出對應原始序列,我們紀錄探勘出來動機的 Onset time,讓我們加快找出對應的序列。因此,所有的表示法我們都可以透過 Onset 的資 訊找出對應的原始序列。

4.4 MIDI parser

MIDI 檔案有許多種不同的格式,主要分為 GM、GS 與 XG 三種。第一種 GM 格式是 一般標準的MIDI 格式,也是最常見的格式。我們實驗測試的資料以 GM 格式為主。第二 種GS 格式是由 Roland 公司所提出,提供比 GM 多的音色與特殊的 Events,用來做更複雜 的作曲工作。最後一種XG 是由 YAMAHA 公司所提出,與 GS 的目標相同,一樣提供更多 不同的音色與特殊的 Events。這三種不同的格式,其 Event 儲存的方式也不太相同。我們 利用一個由Matthias Pfisterer 所製作的 MIDI parser 來剖析 MIDI 檔案的 Binary 格式。這個 Parser 是以 Java 提供 MIDI 的類別(class)所製作,主要能將 GM 的 Binary MIDI 格式,轉換 成文字表示的 Events。我們保留需要的 Event 資訊,包含有下列兩種。第一種,與整首音 樂有關的Events。Time signature,標示音樂中,每一個小節的拍長。Resolution,標示一拍 的音長有多少個Tick time。Key signature,標示音樂所使用的 Musical scale。第二種,與音 符有關的Events。Note On,表示一個音符開始發生的 Event,以及 Note Off,表示一個音 符結束發音的Event,兩者都包含有音高與音量的資訊。

4.5 轉換 MIDI 格式

我們對 MIDI 檔案作分段或動機探勘後,必須將我們找出來的重複序列轉換回 MIDI 的檔案格式,以供使用者可以在網頁上收聽。因此,我們使用一個可以以文字資料轉換成 MIDI 檔案的工具。由於我們是以音符表示方式來探勘段落與動機等資訊,所以我們利用一 個由Guenter Nagler 所提供的工具“Dmp2midi”。我們先將探勘出來的結果,轉成 Dmp2midi 所使用的輸入格式,如圖 4.2 所示。然後,資料輸入到 Dmp2midi 中轉換成 MIDI 檔案。

Dmp2midi 的輸入格式與一般五線譜記譜的方式相似,與 MIDI 的 Event 不同。Dmp2midi 以音符為單位,紀錄每一個音符開始發生的時間、音高、音量與音長。圖 4.2 表示七個音 的資訊,第一小節有三個音,第二小節有四個音。

192 units per quarternote Track 1:

M001 ======= Beat: 4/4

M001 1.000 C6 V100 2.000 M001 3.000 B5 V100 1.096 M001 4.096 F5 V100 0.096 M002 ======= Beat: 4/4

M002 1.000 A5 V100 1.000 M002 2.000 G5 V100 1.000 M002 3.000 F5 V100 1.000 M002 4.000 D5 V100 1.000

圖 4.2:Dmp2midi 的文字格式。

4.6 系統介面

我們建立一個簡單的系統,簡單介紹各個步驟,系統的介面。圖 4.3 為系統首頁,可 以讓使用者聆聽原始的MIDI。經由粗略分段的結果,將每一段以 Motivic treatment 方法找 出的動機,我們分別統計出各個動機變化出現的數量,以及動機的長度。圖 4.4 為最後精 細分段結果呈現的頁面,所有段落的長度也會被呈現出來。四個步驟的 MIDI 音樂檔都可 以直接在線上收聽。

圖 4.3:原始 MIDI 檔案頁面。

圖 4.4:最後找出精細段落的頁面。

第五章

實驗

5.1 實驗資料與實驗設計

本研究目的在於提供使用者可以瀏覽音樂的主題段落。所以我們針對 10 首不同的音 樂,做主題分段。表 5.1 為我們所實驗的音樂列表,包含有巴洛克時期、古典時期、浪漫 時期等不同時期。所有的音樂我們請兩位受過專業音樂教育的愛樂者,以主題為基礎做分 段,以作為評估實驗結果的Ground truth。

表 5.1:音樂資料列表

作曲者 曲名 時間長度

海頓 小夜曲 05:43

莫札特 土耳其進行曲 03:44

柴可夫斯基 胡桃鉗序曲 03:18

芭達潔芙絲卡 少女的祈禱 03:52

布拉姆斯 圓舞曲 01:42

莫札特 小步舞曲 02:26

貝多芬 給愛麗斯 02:56

巴哈 聖母頌 02:25

布拉姆斯 匈牙利舞曲 02:03

韋瓦第 春之頌 03:08

在我們所提出來的方法中的第一步驟對於所有音樂,我們針對音長的部分產生兩份不 同的資料,分別以Original Duration 與 IOI 的表示法來表示。接者分別從兩份資料找出粗 略分段結果、動機以及最後的精細分段結果。最後,我們將兩份個別的精細分段結果與 Ground truth 做比較,評估我們所提出的方法效果。

5.2 實驗評估方法

目前的相關研究在評估準確率時,常用Precision 以及 Recall 兩種評估值。Precision 的

目前的相關研究在評估準確率時,常用Precision 以及 Recall 兩種評估值。Precision 的

相關文件