音符与音符集合的表示及算法
1. 语义澄清
音符和音符聚合的继承方案为两者提供了强大的表示能力,尤其是聚合概念为表示复杂音乐结构提供了手段。下面我们深入探讨该继承方案背后影响这些元素常见变化的细节,以及维护结构完整性所需的约束条件。
1.1 音符树
一个适度复杂的音乐结构可分解为由 Line、Note、Tuplet 和 Beam 节点组成的树,我们称之为抽象音符树或简称为音符树。验证生成的树是否代表给定的音乐输入很容易,但我们更关注逐个元素构建树时的操作问题,如插入 Beam、Tuplet 和音符等,这些操作是构建和维护该模型算法的来源。
1.2 Beam 相关语义问题
- 添加音符规则 :
- 不允许添加持续时间大于或等于四分音符的音符。这仅针对要添加到 Beam 中的音符持续时间,这些音符在 Beam 下保留其持续时间值。
- 在 Beam 下添加 Beam 会使添加的 Beam 下的元素持续时间减半。
- 持续时间缩放的冲突 :在 Beam 下添加音符不会导致持续时间减半,而添加 Beam 会。为解决此问题,我们选择按照规则添加音符,专注于单个 Beam 而不考虑嵌套情况,并自动应用由嵌套元素决定的适当缩放因子。例如,将 1/16 音符添加到有父 Beam 的 Beam 中,通过计算实际上会使其变为 1/32 音符。
1.3 Tuplet 相关语义问题
两个 Tuplet,一个有 Bea
超级会员免费看
订阅专栏 解锁全文
39

被折叠的 条评论
为什么被折叠?



