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日 |
#105 in 音频
每月150次下载
在monument_cli中使用
560KB
10K SLoC
纪念碑
快速、灵活且人性化的生成器。
纪念碑可以被看作是一个计算机作曲家:你提供你想要的作曲描述,它会根据你对“好”的定义生成最好的作曲。
纪念碑目前处于alpha测试阶段(见已知问题)。
纪念碑指南可以在这里找到。
目标
纪念碑的最终目标是让你以尽可能快和简单的方式获得你想要的作曲。纪念碑应该也是正确和高效的,但这应该是所有软件的目标。
请注意,这并不一定意味着生成完美的作曲,或者生成所有可能的作曲。纪念碑不保证这两者,但作为回报,纪念碑比我所知的任何其他作曲程序都要快几个数量级(如果有人知道任何更快的一般可用程序,请告诉我!)。
纪念碑不适合谁?
如果你想要运行穷举搜索或想要保证最佳结果,那么纪念碑不适合你 - SMC在穷举搜索以获得最佳结果方面非常出色。如果你想要穷举搜索拼接,我认为你需要编写自己的生成器。我祝愿你在宇宙必然的热寂之前获得最佳结果。
如果你需要一个图形用户界面,纪念碑(目前)不适合你。
如果你需要一个用户界面不经常变化的生成器,纪念碑(目前)不适合你。
特性
- 快速。真的很快。这特别意味着生成你可能会想要响起的作曲速度快。
- 易于拼接:生成拼接就像添加多个方法一样简单。支持各种拼接样式,例如仅在调用时更改方法。
- 简单多部分。例如:
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的代码和内部工作的高级概述。
依赖关系
~4–28MB
~406K SLoC