# MusicXML2JSON-Drum
专为打击乐设计的 MusicXML → JSON 转换工具,精准解析鼓谱,生成结构化数据,助你高效处理节奏信息。
📚 建议在使用前先阅读 W3C MusicXML 4.0 规范 (opens new window)
# 🌟 特性亮点
- 🎯 专项优化:精准提取打击乐谱的音符、节拍、时值等核心数据
- 📦 结构化输出:层次分明的 JSON 格式,便于后续加工处理
- ⚡ 即装即用:零配置开箱即用,亦支持深度自定义
- 🧩 纯 TypeScript 实现:无第三方依赖,轻量高效
# 🚀 快速开始
# 安装
# 使用 npm
npm install musicxml2json-drum
# 使用 yarn
yarn add musicxml2json-drum
# 使用 pnpm
pnpm add musicxml2json-drum
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
# 🧪 使用示例
import { Parser } from 'musicxml2json-drum'
const configs = {
36: { code: 36, name: 'Kick', value: [36], index: 0 },
38: { code: 38, name: 'Snare', value: [38, 125], index: 1 },
42: { code: 42, name: 'Hi-Hat', value: [42, 22], index: 2 },
// ...其余配置
}
const xmlStr = await loadXMLStr('example.xml')
const parser = new Parser({ xmlStr, instrumentConfig: configs })
// parser.result 可获取解析后的 JSON 结构
1
2
3
4
5
6
7
8
9
10
11
12
13
14
2
3
4
5
6
7
8
9
10
11
12
13
14
# 🧾 JSON 输出示例
以下为转换后的数据结构部分内容(节选):
{
"parts": [
{
"duration": 0,
"measures": [
{
"id": "M_1",
"notes": [
{
"type": "whole",
"kind": "rest"
}
],
"timeSignature": {
"beats": 4,
"beatType": 4
},
"metronome": {
"beatUnit": 4,
"bpm": 90
}
},
{
"id": "M_2",
"notes": [
{
"type": "eighth",
"kind": "chord",
"data": [
{ "code": 36, "name": "Kick" },
{ "code": 45, "name": "Tom2" },
{ "code": 43, "name": "Tom3" }
]
},
{
"type": "half",
"kind": "rest",
"dot": "single"
}
]
}
]
}
],
"title": "Action To Win"
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
# 📘 API 文档
👉 查看完整文档