Struct wavy::Speakers [−][src]
Play audio samples through a speaker.
440 HZ Sine Wave Example
note: This example depends on twang = "0.5"
to synthesize the sine
wave.
use fon::{stereo::Stereo32, Sink}; use pasts::{exec, wait}; use twang::{Fc, Signal, Synth}; use wavy::{Speakers, SpeakersSink}; /// An event handled by the event loop. enum Event<'a> { /// Speaker is ready to play more audio. Play(SpeakersSink<'a, Stereo32>), } /// Shared state between tasks on the thread. struct State { /// A streaming synthesizer using Twang. synth: Synth<()>, } impl State { /// Event loop. Return false to stop program. fn event(&mut self, event: Event<'_>) { match event { Event::Play(mut speakers) => speakers.stream(&mut self.synth), } } } /// Program start. fn main() { fn sine(_: &mut (), fc: Fc) -> Signal { fc.freq(440.0).sine().gain(0.7) } let mut state = State { synth: Synth::new((), sine) }; let mut speakers = Speakers::default(); exec!(state.event(wait! { Event::Play(speakers.play().await), })); }
Implementations
impl Speakers
[src]
pub fn query() -> Vec<Self>
[src]
Query available audio destinations.
pub fn supports<F>(&self) -> bool where
F: Frame<Chan = Ch32>,
[src]
F: Frame<Chan = Ch32>,
Check is speakers are available to use in a specific configuration
pub async fn play<F: Frame<Chan = Ch32>>(&mut self) -> SpeakersSink<'_, F>
[src]
Play audio through speakers. Returns an audio sink, which consumes an audio stream of played samples. If you don't write to the sink, it will keep playing whatever was last streamed into it.
Trait Implementations
Auto Trait Implementations
impl RefUnwindSafe for Speakers
[src]
impl !Send for Speakers
[src]
impl !Sync for Speakers
[src]
impl Unpin for Speakers
[src]
impl UnwindSafe for Speakers
[src]
Blanket Implementations
impl<T> Any for T where
T: 'static + ?Sized,
[src]
T: 'static + ?Sized,
impl<T> Borrow<T> for T where
T: ?Sized,
[src]
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized,
[src]
T: ?Sized,
pub fn borrow_mut(&mut self) -> &mut T
[src]
impl<T> From<T> for T
[src]
impl<T, U> Into<U> for T where
U: From<T>,
[src]
U: From<T>,
impl<T> ToString for T where
T: Display + ?Sized,
[src]
T: Display + ?Sized,
impl<T, U> TryFrom<U> for T where
U: Into<T>,
[src]
U: Into<T>,
type Error = Infallible
The type returned in the event of a conversion error.
pub fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>
[src]
impl<T, U> TryInto<U> for T where
U: TryFrom<T>,
[src]
U: TryFrom<T>,