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 音频

Download history 36/week @ 2024-01-08 13/week @ 2024-01-15 8/week @ 2024-01-22 11/week @ 2024-02-05 16/week @ 2024-02-12 31/week @ 2024-02-19 28/week @ 2024-02-26 46/week @ 2024-03-04 23/week @ 2024-03-11 21/week @ 2024-03-18 25/week @ 2024-03-25 48/week @ 2024-04-01 9/week @ 2024-04-08 17/week @ 2024-04-15 23/week @ 2024-04-22

每月101次下载
用于 3 个Crate(2个直接使用)

LGPL-2.1

3MB
64K SLoC

Rust 35K SLoC // 0.0% comments C 29K SLoC // 0.2% comments Perl 110 SLoC // 0.0% comments

Rust fluidlite绑定

github crate docs LGPL-2.1 CI

此项目旨在提供对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

功能

  • 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();

依赖项