8 个不稳定版本 (3 个破坏性更新)
0.4.1 | 2023年8月7日 |
---|---|
0.4.0 | 2023年8月7日 |
0.3.0 | 2023年7月7日 |
0.2.3 | 2023年4月24日 |
0.1.0 | 2023年4月19日 |
在音频分类中排名 172
每月下载量 302
用于uiua
81KB
2K SLoC
霍达恩
Rust 的音频输入输出和合成库。
基于 cpal 构建。
特性
- 音频输入输出
- 静态大小的样本帧
- 基本的波形生成器
- 使用
Source
特质的模块化音频处理节点 - 音频自动化
- 低通滤波器
- ADSR 包络
- 处理音乐音符的类型
与 Rodio 的不同之处
虽然这个库受到了 Rodio 的启发,但它被设计来解决在现实应用中使用 Rodio 的一些痛点。
静态大小的样本帧
与 Rodio 类似,Hodaun 也有一个 Source
特质,它抽象化了音频流。使 Hodaun 与 Rodio 区别的主要之处在于,Hodaun 的 Source
在帧级别而不是样本级别处理音频。
在 Rodio 中,Source
一次处理一个样本,即使连续的样本对应于同一样本帧的不同通道。这使得编写通道感知的自定义 Source
难以实现。
相比之下,Hodaun 的 Source
特质将同一帧中的样本分组到静态大小的数组(或对于单声道音频只是一个数字),并为每个通道提供一个值。
采样率
在 Rodio 中,采样率是 Source
的一个属性。当处理合成音频时,这可能会有些奇怪。正弦波的采样率是什么?谁在乎?它是一个具有无限分辨率的数学函数。
在 Hodaun 中,采样率 传递给 Source
,并由 Source
决定如何处理它。在实践中,这意味着 Source
的采样率会适应音频输出设备的采样率。
可以具有各种可能采样率的来源,如音频输入设备或音频文件,实现 UnrolledSource
而不是 Source
。此特性行为更接近 Rodio 的 Source
特性。可以使用 UnrolledSource::resample
将 UnrolledSource
转换为 Source
。
外部控制和自动化
Rodio 的 Source
特性允许您对音频流执行许多基本转换,但一旦开始播放声音,用于这些转换的参数就无法更改。例如 rodio::Source::amplify
接受一个 f32
,该值会改变 Source
的音量。
但如果您想在播放时更改 Source
的音量呢?这在几乎所有播放音频的应用程序中都很常见。
Hodaun 也有 Source::amplify
,但它接受一个实现 Automation
特性的值。这可以是一个静态数字,就像 Rodio
一样,但它也可以是您代码中其他地方修改的外部控制值,甚至可以是一个随时间改变值的 Source
。
依赖关系
~0.4–30MB
~442K SLoC