Magenta魔改记-2:数据格式与数据集

Magenta魔改记-2:数据格式与数据集

数据格式:MusicXML与MIDI

上一节我们主要提到了两种数据格式:MIDI(.mid/.midi)和MusicXML(.xml/.mxl)。其实他们二者,包括提到的ABC notation,都是在计算机中用于记谱的文件格式。
在这其中,ABC notation是以文本形式储存的,更接近于简谱。并且,ABC notation也应用的不广泛,更不用说和打谱软件对接了,因此在此就不详细展开了,感兴趣的可以看https://en.wikipedia.org/wiki/ABC_notation 。
而对于MIDI与MusicXML二者,他们表达的内容很相似,但差别在文件储存的格式上。

MIDI

MIDI,全称为Musical Instrument Digital Interface。而现如今对于MIDI这个名称的含义有三重意思:

  1. 连接音乐设备的物理接口(Musical Instrument Digital Interface)
  2. 存储和回放音乐的文件格式(Standard MIDI File)
  3. 通用MIDI(General MIDI)

对于MIDI的历史,最早可以追溯到八世纪水力驱动的自动乐器,到后来的八音盒、自动钢琴等。
而我们重点关注的是第二个含义,标准MIDI文件(SMF)。
关于标准MIDI文件的格式,https://www.csie.ntu.edu.tw/~r92092/ref/midi/ 有着很详尽的介绍。
MIDI文件是一种二进制文件,其中绝大部分由一个个事件(Events)组成,每个事件都有其相对应的时间戳。这其中最普遍的时间就是音符(Note)。音符又可分为按下(Note on)和抬起(Note off)。这二者的参数都是(通道,音高,力度),其中通道指的是?,而音高就是MIDI中以八位二进制数相对应的音高(中央C对应60,各音高按十二平均律依次加减)。
其他的常见事件包括time_signature(节拍标记,例如4/4拍)、key_signature(调式标记,例如B小调)、以及control_changes(控制器输入变化,如踩踏板)。
因此,我们在上一节中,可以看到Magenta利用pretty_midi库将MIDI文件转化成了一个一个事件列表,其中音符事件又合并成了Note(start,end,key,instrument,programe),其中program又指的是这个音符应当播放的音色。
然而,我们可以发现,在MIDI文件中,音符的start和end的绝对时间非常不整

你可能感兴趣的:(计算机音乐,人工智能,TensorFlow,音乐,自动作曲)