#music #composition #daw

overtone

一个用于创建和管理丰富(即富文本)音乐项目的 API

2 个版本

0.1.1 2024 年 1 月 2 日
0.1.0 2024 年 1 月 2 日

738数据结构

MIT 许可证

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)总是可靠的,而且似乎没有什么可以从中获得(而且会失去很多时间)。

虽然标准格式将在谐波中得到出色的支持,但它将使用自己的格式(总是超集)作为兼容性层。更丰富的格式可以更高效,并且与今天音乐家的兴趣更一致。midsf2vst都尽了最大努力,但我们有他们没有的令人难以置信的事后之明

这种事后之明使谐波变得更简单,并通过优雅的设计和可组合性提供功能,而不是堆叠功能。

抽象

此API抽象了音乐概念,使社区能够开发各种功能。

overtone插件可以贡献以下任何一项

渲染器

可以将您的编排渲染到一种或多种可导出的格式中的程序。默认音频渲染器属于此类。

想象一下实现对.ogg、.vst、.mscx、.png(乐谱)、.mp4的导出器;

乐器

与轨道片段关联的程序,并声明在渲染时该片段应该如何解释。SF2PlayerHeisenberg (以及波形合成器)VST属于此类。

如吉他、钢琴、方波、SF2Player等乐器,但也可用于不渲染音频的项目。

转换器

在渲染之前,将数据从乐器转换的程序。VST效果属于此类。

考虑音频(或视觉、或任何)效果。

轨道片段类型

一种新的轨道片段类型——构建块,跨越时间分布在轨道上。前端可以为每种类型的轨道片段实现不同的UI。当渲染时,每个片段都为最终作品做出贡献。

钢琴卷轴模式、鼓点模式、竖琴模式、小提琴模式、图像、音频样本、注释和笔记等。

资源类型

一种新的资源类型(资产),可以由谐波管理和读取。从.ogg.mp3.png导入的资产属于此类。

贡献

欢迎贡献力量,尽管项目目前处于非常早期阶段。

目前不接受货币贡献——但将来将欢迎接受。

许可证

进行中

我的目标是MIT,但首先需要仔细检查依赖项。

依赖项