Struct wavy::Speakers[][src]

pub struct Speakers(_);

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]

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

impl Debug for Speakers[src]

impl Default for Speakers[src]

impl Display for Speakers[src]

Auto Trait Implementations

Blanket Implementations

impl<T> Any for T where
    T: 'static + ?Sized
[src]

impl<T> Borrow<T> for T where
    T: ?Sized
[src]

impl<T> BorrowMut<T> for T where
    T: ?Sized
[src]

impl<T> From<T> for T[src]

impl<T, U> Into<U> for T where
    U: From<T>, 
[src]

impl<T> ToString for T where
    T: Display + ?Sized
[src]

impl<T, U> TryFrom<U> for T where
    U: Into<T>, 
[src]

type Error = Infallible

The type returned in the event of a conversion error.

impl<T, U> TryInto<U> for T where
    U: TryFrom<T>, 
[src]

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.