跳到内容

jgab3103/乐谱元数据生成器

存储库文件导航

音乐配乐元数据生成器


这个软件是悉尼科技大学的一篇论文的一部分。其目的是将MusicXML文件转换为带时间戳的JSON文件,以使此类数据更适合时间序列分析和数据可视化。MusicXML没有显式地编码时间信息(从某种意义上说,任何特定的音符或休息都无法查询其时间位置),它的重点是表现,而不是分析。

样本输出

    {
      “迷笛号”:-1,
      “当前和弦根”:"0",
      “当前和弦根为int”:0,
      “当前和弦类型”:0,
      “和声音符标志”:,
      “当前度量”:1,
      “持续时间”:720,
      “由于绑定笔记导致的持续时间”:720,
      “位置”:0,
      “测量中的位置”:0,
      “测量位置”:0,
      “时间签名分子”:,
      “时间签名分母”:8,
      “每分钟四分之一拍”:60,
      “时间戳”:“1685-03-20T13:00:00.000Z”,
      “仪器”:“第0部分”,
      “语音”:1,
      “流派”:“原声爵士乐”,
      “作曲家名称”:“维克托·杨”,
      “作曲家国籍”:“美国”,
      “编剧姓名”:“奈德·华盛顿”,
      “抒情诗人国籍”:“美国”,
      “表演者姓名”:“基思·贾勒特”,
      “表演者国籍”:“美国”,
      “标题”:《星光下的斯特拉》,
      “作曲家收藏”:“未被邀请者”,
      “执行者集合”:“实时标准”,
      “组成日期”:1944,
      “记录日期”:1983,
      “录制位置”:{
        “纬度”:[
          48.8566,
          “N”
        ],
        “lon”(长):[
          2.3522,
          “E”
        ]
      }
    },

用法

下载并运行npm安装后,使用MusicXML2MusicJSON模块和以下命令。它将把音乐JSON文件的副本输出到./outputData(./output数据)文件夹和可视化/数据文件夹。您可以将路径文件名直接放在convertMusicXML2JSON.js中,或将文件名作为参数发送

节点 转换音乐XML2MusicJSON.js型 //选项1-将文件路径名直接放入此文件
节点 转换音乐XML2MusicJSON -(f) “<您的音乐XML文件>” - “<您的元数据文件>” -o(o) “<输出文件>” //选项2-在命令行上传递文件路径名

测试、文档和可视化

MusicXML2MusicJSON代码的代码文档可以在外面的文件夹并已使用生成JS文件

我发现测试这些数据最方便的方法是使用钢琴可视化,所以我将其与您期望的常规测试一起包括在内。这是一个很小的node/express应用程序,将在musicJSON文件所在的位置查找数据。当您运行

节点 可视化数据.js型

运行上面的可视化命令可以从localhost:8080获得可视化效果,如图1所示。

图1。

属性描述

仪器
带仪器名称的字符串
语音
整数作为音符或休息的当前语音编号
Midi编号
0到127之间的整数,其中60=中间C=C4
持续时间
整数,表示音符或休息的持续时间,其中四分之一音符=256
捆绑票据的持续时间
修改持续时间属性作为整数值。与下一个音符相连的音符或休止符将累积下一个音的持续时间。绑定到前一个注释的注释的值为0。这是持续时间的更准确表示
和声音符标志
布尔值表示音符是和弦的一部分
测量
表示当前度量值的整数
绝对位置
表示休止符开始位置的整数,其中四分之一符=256
测量位置
表示度量值开始位置的整数,其中四分之一音符=256
测量中的位置
整数,表示从音符或休止符开始到其所在度量值开始的距离,其中四分之一音符=256
时间签名分子
表示度量中的拍数的整数
时间特征分母
表示度量中节拍类型的整数
每分钟四分之一拍
整数表示标准bpm节拍器度量,但所有值都会转换为计算每分钟四分之一音符的节拍。如果MusicXML中没有可用的节奏信息,则默认值为60
时间戳
根据“绝对位置”和“每分钟四分之一拍数”属性计算的相对于音乐开始的音符或休息时间(以毫秒为单位)

问题和未来工作

我专注于MusicXML规范的各个部分,这些部分是我在一个以时间、频率和位置类型信息为中心的特定研究项目中所需要的。我还在使用它的一个变体作为我的音乐搜索和分析软件的后端解析器stelupa.com网站.

需要尽快解决几个遗漏问题——需要对全局元数据进行编码(如合成年份等),需要进行更多测试,还需要解决一些绑定注释问题。还有符号、属性和方向(如slurs、mordents、direction等),我也会把它们带过来,但仍然要决定如何构造它们。此外,我主要使用Sibelius来生成MusicXML,我不知道这是否能很好地处理以其他方式生成的MusicXML文件。我会很快弄清真相,至少让事情符合MuseScore。一旦我把这些东西整理出来,我就会把它作为一个npm模块发布到野外。如果您想添加任何内容,请告诉我,或发送拉取请求。

杰米·加布里埃尔

关于

创建乐谱元数据的博士论文软件

资源

星星

观察者

叉子

发布

未发布版本

包装

未发布包