Expand description
soloud
Rust bindings for the soloud audio engine library.
Supported formats: wav, mp3, ogg. The library also comes with a speech synthesizer.
Usage
[dependencies]
soloud = "1"
Or to use the latest developments:
[dependencies]
soloud = { git = "https://!github.com/moalyousef/soloud-rs" }
To play audio:
use soloud::*;
fn main() -> Result<(), Box<dyn std::error::Error>> {
let mut sl = Soloud::default()?;
let mut wav = audio::Wav::default();
wav.load(&std::path::Path::new("sample.wav"))?;
sl.play(&wav);
while sl.voice_count() > 0 {
std::thread::sleep(std::time::Duration::from_millis(100));
}
wav.load(&std::path::Path::new("Recording.mp3"))?;
sl.play(&wav);
while sl.voice_count() > 0 {
std::thread::sleep(std::time::Duration::from_millis(100));
}
Ok(())
}
To play speech:
use soloud::*;
fn main() -> Result<(), Box<dyn std::error::Error>> {
let mut sl = Soloud::default()?;
let mut speech = audio::Speech::default();
speech.set_text("Hello World")?;
sl.play(&speech);
while sl.active_voice_count() > 0 {
std::thread::sleep(std::time::Duration::from_millis(100));
}
speech.set_text("1 2 3")?;
sl.play(&speech);
while sl.active_voice_count() > 0 {
std::thread::sleep(std::time::Duration::from_millis(100));
}
speech.set_text("Can you hear me?")?;
sl.play(&speech);
while sl.active_voice_count() > 0 {
std::thread::sleep(std::time::Duration::from_millis(100));
}
Ok(())
}
To add a filter:
use soloud::*;
fn main() -> Result<(), Box<dyn std::error::Error>> {
let mut sl = Soloud::default()?;
let mut wav = audio::Wav::default();
let mut filt = filter::EchoFilter::default();
filt.set_params(0.2)?;
wav.load(&std::path::Path::new("sample.wav"))?;
wav.set_filter(0, Some(&filt));
sl.play(&wav);
while sl.voice_count() > 0 {
std::thread::sleep(std::time::Duration::from_millis(100));
}
Ok(())
}
Backends
The default backend is miniaudio, however Soloud supports several backends to varying degrees. To enable support of a certain backend, alsa for example:
[dependencies]
soloud = { version = "1", default-features = false, features = ["alsa"] }
This also assumes that those libraries headers are in your include path where CMake can find them, otherwise you can set it via the command line (posix):
$ export CXXFLAGS="-I /path/to/include"
or for Windows:
$ set CXXFLAGS="-I C:\\path\\to\\include"
The same can be done for CFLAGS if needed.
Supported backends:
- miniaudio
- oss
- alsa
- sdl2
- sdl2-static
- portaudio
- openal
- xaudio2
- winmm
- wasapi
- opensles
- coreaudio
- jack
Re-exports
Modules
Audio module containing all audio types
Filter module containing all filter types and attributes
Prelude module containing all traits and error codes
Structs
A wrapper around the raw handle of the audio object which can be used to adjust the parameters of the sound while it’s playing
Wrapper around the Soloud native object
Enums
Backends supported by the Soloud crate