#midi #sampling #recording #manifest-file #sampler #file-format #api-bindings

dot-multisample

绑定到.multisample清单文件格式

1个不稳定版本

0.1.0 2023年10月21日

#748音频


用于 multirec

MIT/Apache

24KB
543

dot-multisample

.multisample清单文件格式的绑定

用法

提供的绑定是为与quick-xml一起使用而创建的,因为(截至编写时间)它具有最佳的Serde对XML文档的支持。

请参见"load"示例以获得更实际的演示,但这里有一段简短的代码片段

let path: &std::path::Path = "path/to/Instrument.multisample".as_ref();
let manifest = std::fs::read_to_string(path.join("multisample.xml")).unwrap();

let config: Multisample = quick_xml::de::from_str(&manifest).unwrap();

println!("{} by {}", config.name(), config.creator());

lib.rs:

.multisample格式领域模型

GitHub上的模式相匹配,截至提交4e7971f1

示例

let multi = Multisample::default()
    .with_name("My Instrument")
    .with_generator("Rust")
    .with_category("Piano")
    .with_creator("Me")
    .with_description("Toy piano I found at the second hand shop")
    .with_keywords(["noisy", "dirty", "metallic"])
    .with_samples([
        Sample::default()
            .with_file(path.join("C2.wav"))
            .with_key(Key::default().with_root(36)),
        Sample::default()
            .with_file(path.join("C3.wav"))
            .with_key(Key::default().with_root(48)),
        Sample::default()
            .with_file(path.join("C4.wav"))
            .with_key(Key::default().with_root(60)),
    ]);

依赖关系

~0.4–1MB
~23K SLoC