#music #midi #dsp #helper #linear-interpolation #math

music-math

处理音乐/音频的常用函数和辅助工具

2个版本

0.1.1 2024年4月16日
0.1.0 2024年4月11日

#205 in 音频

MIT许可证

19KB
225

🎹 music-math-rs 🎹

CI MIT licensed pre-commit

此crate包含处理音乐/音频/DSP在Rust中的常用函数和辅助工具。

几乎所有DSP、音频或音乐软件都使用了这些函数的变体,这里的目的是提供一套经过良好测试、基准测试和可靠的函数集,可以在不同的项目中重复使用。

其中一些函数灵感来自计算机音乐环境,如SuperCollider、Max/MSP、PureData等,但其他一些只是处理音频、音乐或DSP时非常通用或有用的代码片段。

它包含以下模块和函数

  • midi:用于在MIDI音符编号和频率之间转换、转调等的函数。
    • get_midi_note_name:获取MIDI音符编号的名称。
    • get_midinote_from_name:获取音符名称的MIDI音符编号。
    • note_name_to_octave_position:获取音符名称的八度位置,例如"D" = 2。
    • octave_position_to_note_name:获取八度位置的音符名称,例如2 = "D"。
    • to_frequency:将MIDI音符编号转换为频率。
    • transpose:安全地转调MIDI音符编号,确保它在范围内。
  • scaling:用于在不同范围之间缩放值的函数,其中包括db和振幅、linlin和linexp之间的转换等。
    • linlin:线性地将值从一个范围缩放到另一个范围。
    • linexp:线性地将值从一个范围缩放到另一个范围,但具有指数曲线。
    • dbamp:将分贝值转换为振幅值。
    • ampdb:将振幅值转换为分贝值。
  • binaryops:
    • clip:将值夹在最小和最大值之间。
    • fold:将值夹在最小和最大值之间。
    • wrap:将值夹在最小和最大值之间。
  • interpolation:
    • linear:在两个值之间进行线性插值。
    • hermite:在两个值之间进行三次Hermite插值。

有关更多信息,请参阅文档。

开发

只需要just来启动所有工具和配置。

通过安装此工具,您将设置一个提交前钩子,在提交工作之前运行所有测试和检查,它会自动格式化代码,并且通常不允许您提交未文档化或不安全的代码,以及其他事项。

cargo install just
just init # setup repo, install hooks and all required tools

运行:

just run

测试:

just test

基准测试:

just benchmark

在提交工作之前:

just pre-commit

查看所有可用命令:

just list

贡献代码:

所有贡献都受欢迎——这可能是代码的修复、错误报告、文档改进等。

Clippy 将强制执行大多数代码风格规则,但您也可以运行 cargo fmt 来格式化您的代码。

请注意,如果您添加或修改代码,您还应该为该代码添加或修改测试,并运行基准测试(在代码更改前后)以检查性能影响。

许可证:

本项目许可协议为以下之一:

贡献:

除非您明确声明,否则您提交给本项目并由 Apache-2.0 许可证定义的工作,将按照上述协议双重许可,没有任何额外条款或条件。

依赖项:

~155KB