2 个版本
0.1.1 | 2024 年 1 月 2 日 |
---|---|
0.1.0 | 2024 年 1 月 2 日 |
738 在 数据结构
2MB
236 行
包含 (ELF 库, 8MB) music-core.so
Overtone
一个音乐项目的 API,它抽象化了加载、管理和编辑项目、编排、资产和插件,这些插件可以组合起来制作音乐。
🚧 这是一个正在进行中的项目,处于相当早期阶段。它还不适合用于正式用途。
它在音乐创作中某种程度上重新发明了轮子,专注于 丰富的音乐组件,这有助于 Overtone 中阅读和编写音乐的乐师更好地传达音乐理念。您可以用标记(滑音、锤击、断奏、强音等)装饰您的音乐,这些标记更好地模拟了人类对音乐的感知,同时仍然可以从 Overtone 音频插件中获取有意义的回放。
此外,所有音乐功能都没有内置,因此来自所有文化背景和领域的音乐家可以共同在共享空间中工作。
项目
Overtone 项目只是一个包含 Overtone.toml
文件的文件夹。
[info]
name = "Untitled Project"
license = "MIT"
authors = ["Pedro Braga"]
[editor]
requires_version = "0.0.1"
[[plugins]]
id = "music-core"
path = "./plugins/music-core.so"
有了这个,您可以像这样加载项目
Project::load_from_directory("./examples/Untitled Project")?;
API 的其余部分将允许您创建新的编排、管理编排和外部依赖项,并以安全的方式调用渲染器。
设计哲学
自由,如同爱 <3
Overtone 是自由开源软件,并且将始终如此。它没有任何基于云的功能,也没有订阅。一分钱不用付,永远归您所有。
最小化供应商锁定
您的项目不是一个隐藏的文件,而是一个普通的目录。无法以纯 TOML(由于其大小)保存的内容将保存为开放的二进制格式:STIF(结构交换格式)。
模块化
Overtone 不提供很多特定的音乐功能,以保持轻量。相反,功能,甚至基本功能,都是通过 plugins
提供的。如果实现了 Overtone 前端,它可能附带一些核心插件捆绑,但想法是:您选择您需要的,您甚至可以用其他插件交换基本功能。这反映了编程语言和包管理器的情况(我想到了 cargo
)。
Overtone 将管理您的插件依赖项,并在您打算打开文件时通知您缺少哪些插件以及需要哪些版本。
谐波轻量且快速。它通过坚持一个目标,避免臃肿来实现这一点。到目前为止,项目成熟的标志是随着其发展,它变得越来越小。
安全
谐波是用Rust实现的,但不仅如此,它还关注其内部故障情况,总是返回有用且丰富的错误,以防止程序崩溃或冻结。
每个可能失败的功能都应该返回一个OvertoneApiError
枚举实例,该实例愉快地描述了失败。
谐波前端可以通过享受内部依赖模型来避免崩溃,在该模型中,如果Overtone的某些区域缺失依赖项或存在问题,则会阻止这些区域(如果TrackFragment
的.mp3
文件缺失,则无法播放声音;Overtone不会崩溃,相反,前端可以显示一个有用的图标和弹出窗口)。
有用
谐波的目标是拥有最佳的UX,始终在其数据类型中提供有用的上下文,以防止常见的错误。例如,谐波会跟踪项目的版本、编排和使用的插件,这样你就不会意外地损坏你的文件。
新鲜
好的旧文件格式(如.mid
)总是可靠的,而且似乎没有什么可以从中获得(而且会失去很多时间)。
虽然标准格式将在谐波中得到出色的支持,但它将使用自己的格式(总是超集)作为兼容性层。更丰富的格式可以更高效,并且与今天音乐家的兴趣更一致。mid
、sf2
、vst
都尽了最大努力,但我们有他们没有的令人难以置信的事后之明。
这种事后之明使谐波变得更简单,并通过优雅的设计和可组合性提供功能,而不是堆叠功能。
抽象
此API抽象了音乐概念,使社区能够开发各种功能。
overtone
插件可以贡献以下任何一项
渲染器
可以将您的编排渲染到一种或多种可导出的格式中的程序。默认音频渲染器属于此类。
想象一下实现对.ogg、.vst、.mscx、.png(乐谱)、.mp4的导出器;
乐器
与轨道片段关联的程序,并声明在渲染时该片段应该如何解释。SF2Player
、Heisenberg (以及波形合成器)
、VST
属于此类。
如吉他、钢琴、方波、SF2Player等乐器,但也可用于不渲染音频的项目。
转换器
在渲染之前,将数据从乐器转换的程序。VST
效果属于此类。
考虑音频(或视觉、或任何)效果。
轨道片段类型
一种新的轨道片段类型——构建块,跨越时间分布在轨道上。前端可以为每种类型的轨道片段实现不同的UI。当渲染时,每个片段都为最终作品做出贡献。
钢琴卷轴模式、鼓点模式、竖琴模式、小提琴模式、图像、音频样本、注释和笔记等。
资源类型
一种新的资源类型(资产),可以由谐波管理和读取。从.ogg
、.mp3
、.png
导入的资产属于此类。
贡献
欢迎贡献力量,尽管项目目前处于非常早期阶段。
目前不接受货币贡献——但将来将欢迎接受。
许可证
进行中
我的目标是MIT,但首先需要仔细检查依赖项。