Crate fluidlite[][src]

Expand description

Rust fluidlite bindings

github crate docs LGPL-2.1 CI

This project aims provide safe Rust bindings to fluidlite C library.

FluidLite is a very light version of FluidSynth designed to be hardware, platform and external dependency independant. It only uses standard C libraries.

It also adds support for SF3 files (SF2 files compressed with ogg vorbis) and an additional setting to remove the constraint of channel 9 (drums): fluid_settings_setstr(settings, “synth.drums-channel.active”, “no”); you can still select bank 128 on any channel to use drum kits.

FluidLite keeps very minimal functionnalities (settings and synth), therefore MIDI file reading, realtime MIDI events and audio output must be implemented externally.

Crates

Features

  • bindgen Force generate bindings itself instead of use pre-generated
  • builtin Force compile builtin fluidlite C-library
  • pkg-config Use pkg-config to find installed libraries
  • with-sf3 Enable SoundFont3 support (SF2 with vorbis-encoded samples)
  • with-stb Use stb-vorbis decoder instead of libvorbis/libogg.
  • shared Build shared fluidlite C-library
  • static Build static fluidlite C-library

When pkg-config feature is used the installed fluidlite library will be used if found. To force build and link builtin version you can use builtin feature.

Example

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

Structs

Closure logger wrapper

Reference to SoundFont object

The setting hints

The SoundFont loader object

Logging

Logger implementation backed by log crate.

Reference to Preset object

The range of setting value

The single setting of specific type

The generic settings object

The settings reference

The synth object

The iterator over tunings

The library version info

Enums

Common error type

Logging level

Traits

The file reading API

The SoundFont interface

The SoundFont preset interface

The trait which implements samples data buffer interface

The single setting object interface

The settings interface

Log output handler

Type Definitions

Bank number (0..=127)

Channel number

Control number

Font Id

Key number

Preset Id

Program number (0..=127)

Generic result type

Result without value

Control value

Velocity value