24 个版本 (13 个重大更新)
0.14.5 | 2024 年 2 月 24 日 |
---|---|
0.14.4 | 2023 年 10 月 20 日 |
0.14.2 | 2023 年 9 月 9 日 |
0.13.4 | 2023 年 1 月 4 日 |
0.7.0 | 2022 年 3 月 28 日 |
#11 在 #composition
每月 398 次下载
655KB
12K SLoC
Monument
一个快速、灵活且人性化的作曲生成器。
Monument 可以被视为计算机作曲家:你给它提供你想要的作曲的描述,它会根据你对“好”的定义生成最佳作曲。
Monument 目前处于 alpha 阶段(见已知问题)。
Monument 指南可以在这里找到。
目标
Monument 的最终目标是 尽快并以最简单的方式为你生成你想要的作曲。Monument 也应该是正确的并且性能良好的,但这应该是所有软件的目标。
请注意,这并不一定意味着生成完美的作曲,或者生成 所有可能的 作曲。Monument 保证不了这两点,但作为回报,Monument 的速度比我所知道的任何其他作曲程序都要快得多(如果有人知道任何更快的通用程序,请告诉我!)。
Monument 不是为谁准备的?
如果你想要进行穷举搜索或想要保证最优结果,那么 Monument 就不适合你 - SMC 在获取最优结果方面非常擅长。如果你想进行穷举搜索拼接,我认为你需要编写自己的生成器。祝你得到结果一切顺利,直到宇宙不可避免的“热寂”。
如果你需要一个图形用户界面,Monument 还不适合你(目前还不适合)。
如果你需要一个用户界面变化不频繁的生成器,Monument 还不适合你(目前还不适合)。
功能
- 快速。真的很快。这具体意味着快速生成你可能想要敲钟的作曲。
- 拼接简单:生成拼接就像添加多个方法一样简单。支持各种拼接样式,例如仅在调用时更改方法。
- 多部分简单。例如
part_head = "134265"
将允许134265
或142365
(但不能是123465
或134256
)。 - 常用事物的缩写 - 例如
length = "peal"
或length = "QP"
,或者添加前后旋律[[music]] run_lengths = [4, 5, 6, 7, 8]
- 许多调整参数以确保Monument理解你的意图
- 调用权重以鼓励稀疏调用。给调用一个负分,即使它错过了一点音乐也能生成稀疏调用。
- 为特定的行进模式中的每一行添加权重。例如,鼓励男高音一起或手钟友好的课程。
计划中/进行中的功能
- 一个图形用户界面,使作曲审查更容易。
- 杜弗限制。例如,在音乐课程之间要求不超过3个领导。
- 将范围要求添加到音乐计数中。例如,要求所有24个5678/8765。
- 要求特定的课程/段。例如,要求所有
*6578
课程(但不一定是所有的6578)。 - 可变分数,以鼓励在作曲的特定地方使用某些类型的音乐
- 例如,为方法平衡、方法变化等添加更多调整参数。
已知问题
- 三重方法如Grandsire和Stedman将产生非常奇怪的作曲。支持这些方法是完全有意的,但在它们能够很好地与Monument的敲钟模式匹配之前,还有一些问题需要回答。
- 内存使用量很大。这是由于Monument当前搜索算法的工作方式。简而言之,Monument不断跟踪一个大的作曲前缀队列,并反复用稍微长一点的队列替换最佳前缀。存储足够大的队列需要大量的内存,而我还没有实现真正的内存限制。在此期间,将
-Q <number>
添加到命令的末尾将限制队列长度为<number>
(默认限制为10,000,000)。
作曲很困难
最后,值得注意的是,生成作曲在一般情况下是非常困难的(实际上是NP困难)。总会有一些查询对于Monument(或任何其他生成器)来说太困难而无法完成,因此任何关于速度的承诺都是尽力而为,不是保证。
内部机制
如果你想要从高层次理解Monument的工作原理,请查看'Under the Hood'帖子。
如果你想要详细了解代码(例如,以贡献),ARCHITECTURE.md
文件提供了Monument代码和内部工作的高层次概述。
依赖关系
~7–37MB
~520K SLoC