Skip to content

Latest commit

 

History

History
253 lines (149 loc) · 20.7 KB

Tutorial.md

File metadata and controls

253 lines (149 loc) · 20.7 KB

和弦标注指南

项目的意义

为什么要标注和弦数据集

起初标注的理由是因为要进行和弦识别的课题,而和弦识别作为音乐信息检索中的一个方向,与其他方向一样都存在训练数据匮乏的情况。因此目前机器学习在这方面效果并不好,需要增加一点数据集供训练和测试。

虽然现在很难说这个数据集还有什么更有用的地方。但也许,它还可以被用在:

  1. 现代音乐和声进行分析

  2. 自动作曲方面的机器学习训练

  3. 调式和风格聚类

  4. 音乐可视化

其实最后一点是我挺喜欢的一点。考虑到当代音乐游戏中节奏永远是主导地位,而旋律和音乐游戏永远不太沾边。试想一下如果有一款和旋律相关的音乐游戏诞生的话,它会是怎么样的?

最后,如果有想训练和弦试听方面的乐感的话,这个数据集也许有那么一点用。

为什么你会决定去做这样的工作

其实做这一切的最主要源头还是兴趣吧,因为一直想去做这样的事情,虽然看不出来有什么大用途。我没有收到外界的精神支持,到目前为止也没有收到物理支持(因为本科科研项目申请的问题,可能没经费)。所以只能说是个人兴趣在支持着做这个项目。

如果你也能像我一样对这样的工作抱有好奇、兴趣,或想借此来提升自己的乐感的话,那么非常欢迎你加入这个项目。

为什么要选用osu!这款音游作为数据

当我第一次看到osu!这个游戏的时候其实我的内心是拒绝的。但之后某天突然发现,osu!所能带来的价值可能远超它游戏本身。osu!的曲库有几千首ranked的曲子,每首在osu里都具有非常规整的数据格式——谱面文件。而谱面文件中与MIR最相关的部分就是它对曲子的节拍线和曲速的标注。

对于和弦标注而言,比较难做到的一点是确定和弦转换的时间点。但从一般的经验来看,和弦切换基本都发生在节拍线上,或者小节线间距的某个分数倍率上。因此如果一首曲子的节拍线已经划好,那么在它上面标注和弦就变得简单了很多,不用再自己确定每个节拍转换的时间点。

总体而言,osu!数据集的优势和劣势可以总结如下:

优点:

  1. 已经有基本正确的节拍标注;
  2. 曲库量大;
  3. 风格相比于之前已标注的某些数据集(如Beatles)较为广泛和大众化一些;

缺点:

  1. 音频文件音质不高(试听音质);
  2. 许多曲子无法找到。

对于第一个缺点,它对于音质要求高的听众来说可能比较致命,但对于音乐信息提取而言几乎没有影响(只要不是压成全是噪音或者水印的那种)。

为什么不能自动标注

自动标注的准确率目前只有60%-70%左右(对多风格而言,平均意义下),因此即使能自动标注也要人工修正许多地方。

我如何参与这个项目

来帮助项目进行标注,或指出标注的问题,并且提交issue或pull request都是参与的方法。

另外MIREditor这个标注工具的作者编写经验不足,使用起来不太方便,对非osu数据集也不是很友好。你也可以帮助来改善这个标注工具,增加它的功能性以及跨平台性。

如果你想参与,请继续阅读下去,下面的内容将会向你介绍参与项目所必须的知识储备。

预备乐理知识

如何训练和弦听辨能力

训练方法

对于和弦听辨能力的训练,是一个循序渐进的过程,它与相对音高(或绝对音高)听辨能力的训练过程类似,只不过在相对音高(或绝对音高)听辨能力训练时会专注于一个音,但和弦听辨时你需要专注于多个音的组合。这并不意味着你需要立即反应出这个组合里每个音是什么,如果你能直接在大脑中建立音符组合到和弦本身的映射的话,也是可以的。

如果你是相对音感拥有者,有如下的一些建议,这些建议的重点是希望你能够先听辨某一类和弦的情感,通过情感来推断出这个和弦是什么。初期训练时,注重六个基本三和弦的听辨,即自然大调上的一到六级和弦,例如C自然大调/a自然小调中就是C、Dm、Em、F、G、Am这几个和弦的分辨。在这之后,可以对其他种类的三和弦有初步的了解,比如挂4和弦和减三和弦(Bdim),体会它们的情感与基本三和弦(大三和弦、小三和弦)的微妙区别,然后尝试去听辨出它们。

在熟悉调性上的三和弦的听辨之后,你可以尝试听辨离调的三和弦。离调或变调时的听辨对于相对音感拥有者而言是较为困难的事情,因为在你的大脑中会发生调性的漂移(即使只是离调并未变调),每级和弦的情感将不再稳定。先从常用的离调和弦入手,比如说C大调/a小调中的D、E、Fm、A、bB这几个三和弦(也就是自然大调下的II、III、iv、VI、bVII这几个和弦)。注意,在a小调中出现D、E等和弦的出现可能意味着它的调性是a旋律小调或a和声小调,如D、E是旋律小调调性上的和弦,但在训练时,依然可以把它视为离调和弦处理。

这时你可以去尝试“搜索和弦”,你需要去收集有这些离调和弦的曲子,熟悉每个离调和弦的引入和解决方法。例如说,II可以通过II-V解决,iv可以通过I-iv-I引入并解决。这些现代音乐中常用的进行,你在古典和声学原理书中不一定找到,所以还是要自己找曲子去体会,不要依赖书中所讲。在熟悉离调和弦的套路之后,尝试去听辨出它们。

随着训练曲目的增多,你可能可以了解更多离调和弦的引入和解决方法,例如C大调/a小调中还可以出现的离调三和弦有Cm、bE、B、bA等等,通过巧妙地解决都能使乐曲不产生变调,但富有不一样的色彩。通过理解它们在乐曲中的地位以及情感色彩能够更好地让你记忆并听辨它们。

最后更进一步地,你可以尝试训练七和弦。七和弦可以视为两个三和弦叠加而成(例如(1 3 5 7)=(1 3 5)+(3 5 7)),你可以尝试去分离出它们,也可以尝试去感受并记忆七和弦的整体情感。训练七和弦时最重要的一点在于区分四种基本七和弦的情感(大大七、大小七、小大七、小小七),之后凭借你的三和弦听辨功底,七和弦的听辨也应该不难了。

如果你是绝对音感拥有者,和弦识别可能没上面那么麻烦,但似乎变成了一个苦差的机械活,因为对你而言听辨和弦可能不再意味着去听辨它们在调性中的“情感”,而仅仅从音符组成上去听辨它们。对于绝对音感的和弦听辨学习,还是建议参考艺考的训练方法,因为我没有经验可以传授。

训练资源

初期进行和弦听辨的训练时,重要的是要有“标准答案”作为你的参考,也就是有和弦标注的曲子,它们的来源一般有:

  • 一些有自带歌曲的电子琴
  • 流行音乐的吉他谱
  • 这个项目里标注正确的曲子

另外对于不同风格的曲子,听辨难度也是不同的,从经验而言:

  • 大部分流行音乐(包括华语、英语等)的和弦分辨是比较简单的;
  • 一部分电子乐、舞曲使用的和弦较简单,但可能旋律色彩偏单调。并且由于节奏成分比较多,听辨和弦有可能会受干扰;
  • 轻音乐等无歌词音乐注重旋律,和弦往往会复杂,色彩丰富;
  • 世界民族音乐(以及带民族风格的流行音乐)由于有民族调性,所以和弦分辨会比较困难,但和弦色彩丰富;
  • 许多注重旋律的Remix、同人音乐所使用的和弦往往是比较复杂及晦涩的。

另外有一些小众音乐是明显无调性的,不适合相对音感者听辨和弦,典型的有爵士乐里的蓝调音乐。

标注工具简明教程

使用Windows 7或以上版本的参与者可以使用该标注工具。它提供简单的可视化界面以及交互方式,但总体来说还是有不少问题。它的使用教程可以看这本简单的手册

标记指南与技巧

如何调整节奏

基本可以肯定的是,一首osu!里的ranked谱面,由于音游对节奏把握的精准度要求,它的节拍标注是基本准确的。

标注工具会自动读取osu!的谱面信息,并且把它转化成自己的节拍标注格式。你需要调整的是少数作图者所忽视的地方,包括但不局限于:

  1. 错误的小节线位置;
  2. 节拍数标错;
  3. 节拍线密度不对(例如将BPM除以2或者乘以2看待);
  4. 变速处节拍线比较混乱,需要删除多余的节拍线。

对于节拍数(Metre number)的问题需要注意,这里标注采用两种常用的节拍数,一种是4拍子,另一种是3拍子,也就是说标注正确的节拍应该采用这两种设定之一。如果你看到一首曲子标程2拍子,但节拍中有很明显的“强-弱-次强-弱”的变化规律,那么它应该是4拍子的曲子。对于6拍子、8拍子等其余节拍数的调整类似。

你可能没见过一些例如5拍子或7拍子的曲子,但它们是存在的。对它们而言,5拍子往往是2+3或者3+2的节拍组合,7拍子类似。但是这种情况非常少见,在标注时遇到这些特殊情况再特殊处理。

如何标记调性

调性概念在这个项目中调性被(暂时)简化了,简化的主要原因是,现代音乐已经不再拘泥于古典乐理中的调性束缚了,变得更为自由而难以驾驭。

你经常容易听到一首曲子在e自然小调、e旋律小调和G自然大调三种调性中自如地切换,而且频率尤其地快(例如4小节或8小节就进行转换),以至于你很难下手把它标成许多个不同调性连续转调组成的片段。另一方面,当代音乐也融入了非常多的民族调式,很难说到底有多少种民族调式可以互相分离,并且与经典的大小调分离开来。民族调性的标注尤为复杂且很难被听辨(除非对于像标注Beatles数据集的专业人士那样)。

所以在这个项目中,做了一点删繁就简的工作,只需要标注25种调性,分别是十二种大调、十二种小调和无调性。也许在将来会有更好的方案提出,但目前这已经足够。并且注意以下几个方面:

  1. 一般一首曲子发生转调时,在转至新调的那个小节开始标注新的调性;
  2. 对于关系大小调中的转调(例如a小调转C大调),一般不按1处理,而是将其视为一个调性。视为哪个调性由关系大小调哪个在全曲中占有主导地位决定;
  3. 碰到民族调式时,按你自己的乐感确定它与哪个大调或小调比较接近,并且予以标注。自己的感觉往往是最有说服力的;
  4. 一般不标注“无调性”这种调性,对于无调性歌曲一般的做法是不予标注。

关于音高名称和唱名

本项目中的调性主音名称、调性下音高名称与调性本身无关,这点与五线谱不一样。所有的重升和重降记号都是不合法的,并且对于有两种等价写法的升降记号(例如C和B#,Eb和D#)均只留下了一个。绝对音高的记号只有下面所列出的是合法的:

C C# D Db E Eb F F# G Ab A Bb B

如果要记忆升降号的规律,可以参考钢琴上黑键的位置,然后按“升降升降降”这一口诀记忆。

对于唱名的记号,类似地,只有下面所列出的是合法的:

1 #1 2 b3 3 4 #4 5 b6 6 b7 7

如何标记和弦

和弦标注在这个项目里是需要重点考量的内容。在纯粹听辨的基础上,有时可能还要加以分析。首先来讲讲分析。

和弦分析框架

古典和弦分析法并不适用于当今的大部分音乐,尽量不要通过T、D、S分析法分析乐曲的和声进行,因为大部分情况下你会失望而归。另外一种分析法“罗马数字分析法”由于调性的问题也不再能很好地适用,因为基于调性和弦分析必须建立在稳定的调性上,但现代音乐的调性其实已经失去了很大程度的稳定性。例如,关系大小调切换时的自由性导致很多a小调下的进行和C大调下的进行可以混合使用(一个不太恰当的例子是River flows in you的四和弦循环)。

标注和弦采用了一种新的和弦分析法,它参考了大小调的唱名命名规则——小调的主音是la而大调的主音是do。这种分析法在自然大调意义下与罗马数字分析法相同,用I、II、III、IV、V、VI、VII对音阶进行罗马数字标号,然后通过罗马数字的大小写确定和弦是大三还是小三,罗马数字后的符号确定和弦的种类。例如,D大调下的iii表示F#m和弦,v°表示Adim和弦。

对于小调而言这种分析法发生变化,它不再将主音定义为罗马数字标号I,而是VI(6),以保持与关系大小调相同的分析记号。这样一来,自然小调音阶的罗马数字标号分别为VI、VII、I、II、III、IV、V,与小调音阶唱名(6712345)类似。在这种记号意义下,D小调下的ii表示Gm和弦,而VI表示D和弦。

以上记号被标注系统所采用,作为进行和弦分析的手段。如果不希望用这种记号,可以切换到“绝对和弦”模式下进行标注,此时和弦的标记都按绝对音高标记进行(如Gm和Adim)。

和弦标记的一些准则

这些准则其实可以通融,因为在音乐里凡事没有绝对。但在大部分情况下,有以下经验性的准则:

  1. 无乐音部分标为N(无和弦),但如果无乐音部分很短(例如不到一小节),那它应该跟随前面或后面的和弦标记,不应该贸然标记为N(无和弦);
  2. 另一种标记为N(无和弦)的情况是你在长时间内只听到了一个声部。一个声部就意味着只有一个音高,此时无法断定和弦(可标注的和弦至少要两个不同音,在只有两个音的情况下,又必须是某个和弦缺失了它能缺失的某级音的情况);
  3. 转位和弦一般标得和原位和弦相同,但有一种情况例外,就是转位和弦恰好是另一个已经定义的和弦。例如,C6和Am7具有相同的四个音高,唯一不同的就是和弦的根音不同。如果Am7和弦中C成为了最低音(或你听起来像是这样),那么它应该被标为C6和弦而不是Am7和弦。

注意,即使你不标注七和弦只标注三和弦,(3)所述的问题也不能避免,试试考虑Caug和Eaug这对和弦,或Gsus4和Csus2这对和弦的音高区别。

和弦标记的化约

这个项目中同一首曲子的和弦标记按难度分为三个标记层次,分别是基本三和弦,扩展三和弦以及七和弦。如果还没有能力听辨七和弦,可以先标注三和弦。

每个层次包括的和弦类别如下(目前):

  • 基本三和弦: major, minor
  • 扩展三和弦: major, minor, diminished, augmented, sus4, sus2
  • 七和弦: major, minor, diminished, augmented, sus4, sus2, dominant 7, major 7, minor 7, minor major 7, diminished 7, half-diminished 7, major 6, minor 6

对于一个和弦标记层次所无法表示的和弦,需要化约到这个标记层次可以标记的和弦。如果没有合适的和弦,就必须标记为X(不可表示和弦)。

如下是和弦化约的一个例子。

  • 所有和弦 ---> 七和弦层次 ---> 扩展三和弦层次 ---> 基本三和弦层次
  • CmM7 ---> CmM7 ---> Cm ---> Cm
  • Cm9(b5) ---> Cm7(b5) ---> Cdim ----> X
  • Csus4 ---> Csus4 ---> Csus4 ---> C(或X)
  • Cm6 ---> Cm6 ---> Cm ---> Cm

和弦决策问题

如果你练习过和弦视听,则会在听到歌曲后对其中的和声进行有一定的感觉,这种感觉根据训练的程度会有所不同。例如在初期你可能连大小三和弦都分辨不出来,但不需要着急,在一段时间的训练后你会有这方面的经验。同时你也可以根据建议,用这套标注工具来训练你听辨和弦的能力。

下面摘录几个典型的和弦决策问题,可能在你眼中这并不是大问题,或者如果没有找到你所遇到的问题也不必担心,可以通过其他方式进行交流或者询问。

  1. B和弦还是Bm和弦?

    有时你无法听辨出一个和弦是大三和弦还是小三和弦,这时你可以观察Chroma中哪个三音对应的平均能量值最高,通过这点来断定它是大三还是小三和弦。 但有的时候事情往往不一定有那么简单。例如你发现这个和弦其实是B(1+5),它缺三音。这时你还是应该把它标记成B和弦或Bm和弦中的一个(因为没有B(1+5)格式的标注),具体是哪个,要根据上下文出现的相同和弦以及调性决定。

  2. 我能听辨出减三和弦和增三和弦,但却听不出是减三还是增三?

    减三和增三和弦的最大特点是不和谐(或者说刺耳),你很容易就能发现。减三和增三本身的区别其实很明显,一种是收缩性的不和谐,一种是扩张性的不和谐,可以尝试多体会一下。

  3. C大调中,这个是Em和弦还是G和弦?

    你可能很容易听到5,7这两个音,但第三个音是2还是3你很难判断,所以出现了上述问题。这种情况是比较常见的,有时chroma又不能告诉你明确的答案,这时可能就要发挥你的主观能动性了。一方面是多听听局部,尝试找出那个缺失的音,另外一方面是参考上下文的相同标注。

  4. C大调中,这个是Em7和弦还是G6和弦?

    这个问题的情况下,你可能听到了5,7,2,3中的所有音,但你确定不了根音是哪个。你必须在两个根音中作出决策,究竟是3还是5。这种情况的建议与上面相同,依然是多听,多参考周围的标注,另一方面可以从情感上考虑,这个片段听起来像大三和弦的情感(积极)还是小三和弦的情感(低落)?如果你能确定这个,那么问题也就解决了。

  5. 这个和弦是Gsus4还是G?

    这个区别是明确的,挂四和弦的要求是缺三音,如果你听到三音的话,这个和弦应该是add4而不是挂4,它化约到常规和弦应该写为G而非Gsus4。只有你发现三音确实不存在时,它才是挂4和弦。

  6. 这个和弦是Gsus4还是Csus2?

    与4一样,判断根音。但值得注意的是,当代音乐很喜欢用sus4和弦,sus4和弦也有许多固定用法,却很少用sus2和弦。所以从分析上来讲,它是sus4和弦的可能性会更大一些。只有在你有十足把握它是sus2的情况下,再填上它是sus2和弦。