23、音乐变换与约束引擎在音高分配中的应用

音乐变换与约束引擎在音高分配中的应用

1. 音乐变换概述

音乐变换的探讨与之前有所不同,更侧重于算法和技术,而非详细的表示或相关的细节。一些起初看似与音乐变换无关的话题,如约束解决方案和旋律搜索,后续会展现出其重要性。音乐变换是一个深奥的学术话题,可为音乐创作工具提供强大技术,也是更强大变换的基础。

1.1 约束编程基础

约束编程是一种通过定义变量和约束关系来描述问题的编程方式。一个问题由一组变量和一组约束条件构成,变量从不同的值域取值,约束条件描述变量之间需满足的关系。约束求解器/引擎接收变量和约束作为输入,输出满足约束的变量值分配。

例如,有如下约束问题:
- 变量:$I \in$ 整数;$S \in$ 字符串
- 条件:
- $S$ 以 “abc” 开头
- $S[3] \in$ {‘1’, ‘2’, ‘3’}
- $len(S) == 4$
- $I == len(S) + as_integer(S[3])$

其解包括 $(S, I)$ 为 ((‘abc1’, 5), (‘abc2’, 6), (‘abc3’, 7)) 等赋值。与 Python 编程不同,约束编程首要关注问题描述,而非具体的求解算法。解由约束引擎生成,其内部工作复杂,通常不在用户的控制范围内。

常见的约束编程工具包括 Prolog、SWI - Prolog、Gecode、OptaPlanner 和 python - constraint 等。

1.2 音乐约束与解空间

在音乐领域,音乐变换通常是将一个音乐片段映射到满足特定条件的新片段,主要

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值