13 个版本 (重大更新)
0.11.0 | 2023 年 9 月 18 日 |
---|---|
0.9.0 | 2022 年 12 月 25 日 |
0.8.0 | 2022 年 12 月 20 日 |
0.5.0 | 2022 年 11 月 22 日 |
#238 在 音频
每月 50 次下载
87KB
2.5K SLoC
Staff
包含 midi、音符、和弦、音阶等音乐理论和乐谱渲染的库。
用法
use staff::{midi, Chord, Pitch};
let chord = Chord::from_midi(
midi!(C, 4),
[midi!(E, 3), midi!(G, 3), midi!(C, 4)]
);
assert_eq!(chord.to_string(), "C/E");
let pitches = [Pitch::E, Pitch::G, Pitch::C];
assert!(chord.into_iter().eq(pitches));
功能
render
: 启用render
模块svg
: 启用渲染到 SVG
synth
: 启用synth
模块serde
: 实现许多 crate 类型的 Deserialize 和 Serialize
lib.rs
:
包含 midi、音符、和弦、音阶等音乐理论的库
功能标志
Staff 使用一系列 功能标志 以减少编译代码的量。可以选择只启用某些功能。默认情况下,staff 不启用任何功能,但允许根据特定用例启用子集。以下是可用的功能标志列表。您还可以注意,在每个函数、结构和特质旁边列出了所需的一个或多个功能标志。如果您是 staff 的初学者,建议使用 full
功能标志,这将启用所有公共 API。但是请注意,这将引入许多额外的依赖项,这些依赖项您可能不需要。
full
: 启用以下列出的所有功能。std
: 启用 std,否则此 crate 将使用#![no_std]
parse
启用staff::parse
模块。fretboard
启用staff::fretboard
模块。render
启用staff::render
模块。
示例
创建一个C大调(第一转位)和弦,并遍历其音符。
use staff::{midi, Chord, Pitch};
// C/E
let notes = [midi!(E, 3), midi!(G, 3), midi!(C, 4)];
let chord = Chord::from_midi(midi!(C, 4), notes).unwrap();
assert_eq!(chord.to_string(), "C/E");
assert!(chord.into_iter().eq(notes));
创建一个C大调音阶,并遍历其音符。
use staff::{midi, Note, Scale};
// C major
let scale = Scale::major(midi!(C, 4));
assert!(scale.eq([
midi!(C, 4),
midi!(D, 4),
midi!(E, 4),
midi!(F, 4),
midi!(G, 4),
midi!(A, 4),
midi!(B, 4),
]));
依赖项
~1.3–3.5MB
~54K SLoC