前言
- 音樂數據不同於圖片數據,其節拍和速度的變化會嚴重影響數據集的構建,而如今並沒有穩定且高效的方法來對節拍和速度來進行讀取,大部分較爲可靠的方法都無法對音樂行進過程中出現的節拍和速度變化作出響應,更何況網上流傳的MIDI數據本身質量參差不齊,參考價值本身不高。針對以上困難,我大膽提出手動提取音樂數據的想法。手動扒譜與自動構建數據集相比難免會消耗大量的時間,但是可靠性顯著提升,用起來會感覺更加安心。
- 本篇文章分享的是前一段時間我通過Ableton Live 10對Grunge搖滾的代表作品進行手動編輯取得的Grunge Library數據集,其中包含了Nirvana、Soundgarden、Alice in Chains、Pearl Jam和Stone Temple Pilots這五大Grunge搖滾代表樂隊,數據集構建的重點在於吉他和貝斯的連復段(Riff)和獨奏段落(Solo)的提取。選擇Grunge搖滾是因爲它的存在時間很短,同時符合這一風格分類的樂隊及作品也極爲有限,缺點在於數據量較小。
- 藍奏雲下載地址在文末,歡迎下載並嘗試使用。希望本篇博文能夠爲同領域的研究者們提供數據集構造方面的新思路,並對我想法中的不足和錯誤進行指正,十分感謝您的閱讀!
工具簡介
Guitar Pro 7
Guitar Pro 7是目前最爲常用的吉他打譜軟件,其功能強大,且有十分龐大的使用羣。在數據集構建的過程中我主要使用了其自帶的MIDI文件導出功能,可以將網上搜集到的.gp5和.gpx文件轉化爲MIDI格式文件,十分好用。(此軟件是收費軟件,購買費用在150元左右)
軟件界面如下圖所示,可以看到其對吉他譜的支持十分完善:
Ableton Live 10
Ableton Live 10是我自己最喜愛的DAW,在數據集構建的過程中主要是使用它的Session View來對MIDI數據進行裁剪,導出的MIDI片段默認是120BPM,這樣省去了後續的一些工作。(此軟件本身是收費軟件,不過大部分購買的聲卡或MIDI鍵盤都會附贈初始版的 Ableton Live Lite,功能完全夠用)
下圖演示的是通過Session View來分割MIDI段落,並通過Export MIDI Clip功能來導出MIDI片段:
具體流程
- 從吉他譜分享網站上搜集.gp5或.gpx文件,我是從吉他社找的,資源還比較全
- 用Guitar Pro 7打開文件,導出爲MIDI格式
- 用Ableton Live 10導入MIDI格式文件,在Session View模式中切割出Riff和Solo部分,分別導出爲MIDI文件
- 將導出的Riff文件以小節爲單位分割爲UnitRiff,並移調到以C爲主音
- 合併保存爲.npz文件
數據集存儲格式
下載得到grunge_library.zip數據集,解壓後結構如下:
其中各個子文件夾的用途如下:
- dataset:兩個構建好的數據集,可以直接用於訓練網絡,使用方法可以參考項目代碼,吉他數據集大小爲(2191, 64, 60),貝斯數據集大小爲(1221, 64, 48)
- midi_files:數據集使用的所有MIDI文件,保存格式爲“樂隊名 - 專輯名 - 音軌號 - 歌曲名.mid”
- mongo_db:包含MongoDB數據庫的導出json,安裝MongoDB之後可以通過雙擊import.bat文件來批量導入
- raw:構建數據集過程中使用的所有文件,存儲結構爲樂隊 - 專輯 - 歌曲,其中每個歌曲對應的文件夾中保存了提取出的RIFF(吉他連復段)、BASS(貝斯連復段)和SOLO(吉他獨奏段落),以及Ableton工程文件和Guitar Pro文件
- unit_riffs:從吉他和貝斯連復段中裁剪得到的單小節長度的單元連復段
下載地址
藍奏雲:https://wws.lanzous.com/idJn6e4xo5a
密碼:7of4
後記
本數據集的數據量較小,訓練效果可能並不會很理想,故本篇文章僅僅是一種人工構造數據集方法的介紹,如果對文中內容有任何疑問的話請及時與我聯繫,十分感謝您的閱讀!(PS:近期在上傳一些搖滾史密斯的遊戲視頻,歡迎關注我的B站賬號:Troodeec的個人空間 - bilibili)