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

Download history 89/week @ 2024-03-11 74/week @ 2024-03-18 77/week @ 2024-03-25 90/week @ 2024-04-01 96/week @ 2024-04-08 33/week @ 2024-04-15 28/week @ 2024-04-22 46/week @ 2024-04-29 23/week @ 2024-05-06 51/week @ 2024-05-13 86/week @ 2024-05-20 139/week @ 2024-05-27 137/week @ 2024-06-03 74/week @ 2024-06-10 39/week @ 2024-06-17 28/week @ 2024-06-24

每月下载量 302
用于uiua

MIT 许可证

81KB
2K SLoC

github crates.io docs.rs

霍达恩

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::resampleUnrolledSource 转换为 Source

外部控制和自动化

Rodio 的 Source 特性允许您对音频流执行许多基本转换,但一旦开始播放声音,用于这些转换的参数就无法更改。例如 rodio::Source::amplify 接受一个 f32,该值会改变 Source 的音量。

但如果您想在播放时更改 Source 的音量呢?这在几乎所有播放音频的应用程序中都很常见。

Hodaun 也有 Source::amplify,但它接受一个实现 Automation 特性的值。这可以是一个静态数字,就像 Rodio 一样,但它也可以是您代码中其他地方修改的外部控制值,甚至可以是一个随时间改变值的 Source

依赖关系

~0.4–30MB
~442K SLoC