[−][src]Crate soloud
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 = "0.3"
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 = "0.3", 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
pub use audio::*; |
pub use filter::*; |
pub use prelude::*; |
Modules
audio | Audio module containing all audio types Audio sources |
filter | Filter module containing all filter types and attributes Audio filters |
prelude | prelude module containing all traits and error codes |
Structs
Handle | A wrapper around the raw handle of the audio object |
Soloud | Wrapper around the Soloud native object |
Enums
Backend | Backends supported by the Soloud crate |