1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84
#![feature(arc_new_cyclic)] #![feature(doc_cfg)] #![deny(clippy::all)] //! Riddle crate for loading and playing audio data. //! //! Built largely on the back of `::image` and its dependencies. //! //! # Riddle Example //! //! The **recommended** way to use this crate is through the main `riddle` crate. //! Riddle exposes this crate through `riddle::audio`. //! //! ```no_run //! use riddle::*; //! //! fn main() -> Result<(), RiddleError> { //! let rdl = RiddleLib::new()?; //! //! // Load the clip //! let clip_bytes = include_bytes!("../../example_assets/boop.wav"); //! let clip = audio::Clip::load(&clip_bytes[..], audio::ClipFormat::Wav)?; //! //! // Play the clip //! let player = audio::ClipPlayerBuilder::new(&rdl.context().audio()) //! .play(&clip)?; //! //! let start_time = std::time::Instant::now(); //! rdl.run(move |rdl| { //! if std::time::Instant::now() - start_time > std::time::Duration::from_secs(2) { //! rdl.quit() //! } //! }) //! } //! ``` //! //! # Direct Example //! //! If you don't want to depend on `riddle`, you can use this crate directly. //! //! ```no_run //! use riddle_audio::{ext::*, *}; //! //! fn main() -> Result<(), AudioError> { //! let (audio_system, _audio_main_thread_state) = AudioSystem::new_shared()?; //! //! // Load the clip //! let clip_bytes = include_bytes!("../../example_assets/boop.wav"); //! let clip = Clip::load(&clip_bytes[..], ClipFormat::Wav)?; //! //! // Play the clip //! let player = ClipPlayerBuilder::new(&audio_system) //! .play(&clip)?; //! //! // Let it play for two seconds //! let start_time = std::time::Instant::now(); //! while std::time::Instant::now() - start_time < std::time::Duration::from_secs(2) { //! audio_system.process_frame(); //! std::thread::sleep_ms(100); //! } //! Ok(()) //! } //! ``` mod audio_system; mod clip; mod clip_player; mod error; mod fades; pub mod ext; #[doc(hidden)] pub mod doctest; use fades::*; use riddle_common::*; pub use audio_system::*; pub use clip::*; pub use clip_player::*; pub use error::*; type Result<R> = std::result::Result<R, AudioError>;