Page 13 - 《软件学报》2026年第5期
P. 13
1892 软件学报 2026 年第 37 卷第 5 期
算法 2. NLTM 算法.
输入: MIDI 文件 I; 时值类别集合 D = {d ,...,d };
0
11
输出: 归一化时值转移矩阵 Y, 尺寸 12×12.
1. τ ← I.ticks_per_beat // 每拍的 ticks
beat
2. τ ← [τ ,...,τ ] // 由 τ 推导的 12 类时值 ticks
0 11 beat
3. Y ← zeros(12,12) // 初始化 12×12 的全 0 矩阵
4. for instrument ∈ I.instruments do
5. if instrument.is_drum then // 跳过打击乐器
6. continue
7. end if
8. Λ ← ∅ // 存放时值类别序列
9. for note ∈ instrument.notes do
10. ∆ ← note.end − note.start // 时值 (ticks)
11. k ← argmin |∆−τ | // 匹配最近类别
p∈{0,...,11} p
k to Λ
12. append
13. end for
14. for t = 1 to |Λ|−1 do // 统计相邻音符对
15. k ← Λ[t −1]
16. l ← Λ[t]
17. X[k,l] ← X[k,l]+1
18. end for
19. end for
20. for k = 0 to 11 do // 行归一化
11 ∑
21. s ← Y[k,l]
l=0
22. if s , 0 then
23. for l = 0 to 11 do
24. Y[k,l] ← Y[k,l]/s
25. end for
26. end if
27. end for
28. return Y
通过算法 1 构建音高转移矩阵 (PCTM) 和算法 2 构建音长转移矩阵 (NLTM), 得到两个归一化的 12×12 矩阵,
它们共同组成了音乐知识特征. 这两种矩阵不依赖具体序列顺序, 从统计上有效地刻画了乐曲在音高和节奏维度
上的内在结构与倾向性. 图 3 直观地展示了同一 MIDI 文件建模得到的 PCTM (图 3(a)) 和 NLTM (图 3(b)) 的可视
化示例, 不同的颜色强度代表了不同的转移概率, 从中可以观察到该乐曲在音高和节奏上的特定规律.
随后, 将音乐知识特征堆叠形成二维特征图输入到互补音乐特征提取模块. 如图 4 所示, 模块通过多层的 3×3
卷积块操作, 捕捉输入特征中的局部空间特征, 卷积块操作可以表示为:
∑ K−1
K−1 ∑
l l l−1 l
F = σ BN W m,n · X i+m,j+n +b (1)
i,j
m=0 n=0

