5个版本
0.2.1 | 2021年8月21日 |
---|---|
0.2.0 | 2021年3月31日 |
0.1.3 | 2020年6月14日 |
0.1.2 | 2020年2月14日 |
0.1.0 | 2020年2月11日 |
#450 in 音频
每月101次下载
用于 3 个Crate(2个直接使用)
3MB
64K SLoC
Rust fluidlite绑定
此项目旨在提供对fluidlite C库的安全Rust绑定。
FluidLite是FluidSynth的一个轻量级版本,旨在实现硬件、平台和外部依赖的独立性。它只使用标准C库。
它还增加了对SF3文件(使用ogg vorbis压缩的SF2文件)的支持,并添加了额外的设置以移除通道9(打击乐)的限制:fluid_settings_setstr(settings, "synth.drums-channel.active", "no"); 你仍然可以在任何通道上选择128号音轨来使用打击乐套件。
FluidLite保持非常少的函数功能(设置和合成器),因此MIDI文件读取、实时MIDI事件和音频输出必须外部实现。
Crates
- fluidlite 安全绑定
- fluidlite-sys 不安全绑定(使用bindgen生成)
功能
- bindgen 强制自行生成绑定而不是使用预生成的
- builtin 强制编译内置的 fluidlite C库
- pkg-config 使用 pkg-config 查找已安装的库
- with-sf3 启用 SoundFont3 支持(带有vorbis编码样本的SF2)
- with-stb 使用 stb-vorbis 解码器而不是 libvorbis/libogg。
- shared 构建共享的 fluidlite C库
- static 构建静态的 fluidlite C库
当使用 pkg-config 功能时,如果找到已安装的 fluidlite 库,则将使用该库。要强制构建和链接内置版本,可以使用 builtin 功能。
示例
use std::{fs::File, io::Write};
use byte_slice_cast::AsByteSlice;
use fluidlite::{Settings, Synth};
let settings = Settings::new().unwrap();
let synth = Synth::new(settings).unwrap();
synth.sfload("sf_/Boomwhacker.sf3", true).unwrap();
let mut buffer = [0i16; 44100 * 2];
let mut file = File::create("soundfont-sample.pcm").unwrap();
synth.note_on(0, 60, 127).unwrap();
synth.write(buffer.as_mut()).unwrap();
file.write(buffer.as_byte_slice()).unwrap();
synth.note_off(0, 60).unwrap();
synth.write(buffer.as_mut()).unwrap();
file.write(buffer.as_byte_slice()).unwrap();