Python编曲实践(十):用Ableton Live 10手工扒的Grunge摇滚数据集,涵盖Grunge时期四大代表乐队的经典专辑

前言

  • 音乐数据不同于图片数据,其节拍和速度的变化会严重影响数据集的构建,而如今并没有稳定且高效的方法来对节拍和速度来进行读取,大部分较为可靠的方法都无法对音乐行进过程中出现的节拍和速度变化作出响应,更何况网上流传的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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章