前言

  • 音乐数据不同于图片数据,其节拍和速度的变化会严重影响数据集的构建,而如今并没有稳定且高效的方法来对节拍和速度来进行读取,大部分较为可靠的方法都无法对音乐行进过程中出现的节拍和速度变化作出响应,更何况网上流传的MIDI数据本身质量参差不齐,参考价值本身不高。针对以上困难,我大胆提出手动提取音乐数据的想法。手动扒谱与自动构建数据集相比难免会消耗大量的时间,但是可靠性显著提升,用起来会感觉更加安心。
  • 本篇文章分享的是前一段时间我通过Ableton Live 10对Grunge摇滚的代表作品进行手动编辑取得的Grunge Library数据集,其中包含了Nirvana、Soundgarden、Alice in Chains、Pearl Jam和Stone Temple Pilots这五大Grunge摇滚代表乐队,数据集构建的重点在于吉他和贝斯的连复段(Riff)和独奏段落(Solo)的提取。选择Grunge摇滚是因为它的存在时间很短,同时符合这一风格分类的乐队及作品也极为有限,缺点在于数据量较小。
  • 蓝奏云下载地址在文末,欢迎下载并尝试使用。希望本篇博文能够为同领域的研究者们提供数据集构造方面的新思路,并对我想法中的不足和错误进行指正,十分感谢您的阅读!

对摇滚史密斯和独立电子感兴趣的朋友们,欢迎关注鄙人B站主页,感谢大家支持!

工具简介

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)

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

  1. Python编曲实践(九):如何计算并估计音乐的调性(大/小调+主音)?Krumhansl-Schmuckler调性分析算法的原理与实现

    前言 之前,我在 Python编曲实践(五)中记录了构建MIDI数据集Free MIDI Library的过程,其中预处理阶段十分重要的一个步骤是移调,即把所有音乐的调性调整为C大调或A小调,这样会使 ...

  2. Python编曲实践(八):我,乔鲁诺·乔巴那,能用两百行代码写出JOJO黄金之风里我自己的出场曲!

    前言 前些天笔者写的文章 Python编曲实践(七):整整一百行Python代码写出黑人抬棺梗曲<Astronomia>的旋律 受到了大家的许多支持和好评,本篇文章挑战更复杂.更有挑战性, ...

  3. Python编曲实践(十一):通过PyQt5和PyGame开发的简易MIDI电钢琴,支持键盘控制、基础存储、音符可视化及调性提示等功能

    前言 这个项目是我在半年前从零开始进行开发的,主要是为了在学习Python编曲初期通过开发这一个电钢琴界面来练练手,并实现一些通用的基础函数来方便后续的项目使用.这一电钢琴软件的功能无法与正统的商业软 ...

  4. Python编曲实践(一):通过Mido和PyGame来编写和播放单轨MIDI文件

    前言 人工智能编曲是一个十分复杂的话题,而这一话题的起点便是选择一个良好的编曲媒介,使得开发者能够将AI的音乐灵感记录下来,并且能够很方便地将其播放.编辑.分享. MIDI文件是电脑编曲的一种通用格式 ...

  5. Python编曲实践(五):通过编写爬虫来爬取海量MIDI文件,预备构建数据集(附有百度云下载链接)

    前言 由于毕业设计的课题是通过CycleGAN搭建一个音乐风格转换系统,需要大量的音乐文件来训练神经网络,而MIDI文件作为最广泛使用的一种电脑编曲保存媒介,十分容易搜集资源,也有很多成熟的Pytho ...

  6. Python编曲实践(四):向MIDI文件中添加鼓组音轨

    前言 在前面三篇文章中,我介绍了如何通过Python的Mido库添加旋律.和弦和模拟滑音.颤音.然而,鼓的作用也是不可忽视的,它就像骨骼一样支撑起整个音乐,而编辑鼓点的样式也为想象力的发挥提供了无限空 ...

  7. Python编曲实践(三):如何模拟“弯音轮”实现滑音和颤音效果

    前言 弯音轮,是在MIDI键盘或专业电子琴一旁安装的一个装置(如下图). 通过前后拨动滚轮,可以实现弯音和颤音的效果.这对于追求特殊电音效果的作曲者来说是必不可少的,而这两个技巧也是吉他等乐器演奏时十 ...

  8. Python编曲实践(二):和弦的实现和进行

    前言 上一篇文章 中我简单介绍了如何使用Mido这个库在Python中实现MIDI编程,分享了我的经验和心得,但是单音轨的纯音符堆砌听起来太单薄了,故本篇文章介绍如何轻松添加和弦音轨,使得乐曲更加饱满 ...

  9. 【2020新书】Python Pro专业实践原则,Practices of the Python Pro,250页pdf

    点击上方"AI遇见机器学习",选择"星标"公众号 重磅干货,第一时间送达 转自:专知 Manning2020新书<Practices of the Pyt ...

  10. python如何导入txt数据集-终于找到python入门到实践数据集

    Python是一款功能强大的脚本语言,具有丰富和强大的库,重要的是,它还具有很强的可读性,易用易学,非常适合编程初学者入门.以下是小编为你整理的python入门到实践数据集 环境配置:下载Python ...

最新文章

  1. 企业中数据中心管理者地位的逆袭
  2. Oracle存储过程中如何根据指定的参数判断该参数的值否存在数据表中:
  3. ubuntu 开启dhcp服务并配置
  4. PCL中3D点云特征描述与提取(一)
  5. 各省能源平衡表(2000-2018年)
  6. 算法洗脑系列(8篇)——第四篇 枚举思想
  7. 联想r720安装固态_联想LenovoR720游戏笔记本如何安装固态硬盘
  8. IntelliJ IDEA破解
  9. LOJ-10102(桥的判断)
  10. 高精地图应用(四)横向定位
  11. 软件版本GA、RC、beta、Build 等含义
  12. 深入AXI4总线- [一] 握手机制
  13. 如何把wps随机数据固定_WPS Excel:巧用随机函数rand和randbetween生成各种数据
  14. 第一个java程序(输出个人信息)
  15. godaddy nginx_2020年7种最佳GoDaddy替代品(更便宜且更可靠)
  16. html转换成jsp格式文件
  17. 谷歌浏览器打开或者关闭自动翻译
  18. 【创新应用】5AloT(5G+AI+物联网)深度研究报告:下一轮科技红利
  19. a链接的四种状态:link、visited、hover、active
  20. 【Python实战】如果没有音乐,生活就是一个错误 :n首回味无穷的歌,总有一曲深得你心哦~

热门文章

  1. RDA226数字热释电传感器调试笔记
  2. Java8 实战系列-02-lambda 表达式简介
  3. sql server 性能优化
  4. 《深入浅出通信原理》知识总结
  5. C#SHA1算法及注意事项
  6. SQL Server 2014 安装与SQL语言学习笔记(一)
  7. 《Fortran 95 程序设计》阅读笔记三
  8. BW型模拟带通滤波器设计的Matlab仿真
  9. chinakr的推荐软件列表2007版
  10. vray渲染器的工作流程你清楚吗?