Speakers

Struct Speakers 

Source
pub struct Speakers(/* private fields */);
Expand description

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§

Source§

impl Speakers

Source

pub fn query() -> Vec<Self>

Query available audio destinations.

Source

pub fn supports<F>(&self) -> bool
where F: Frame<Chan = Ch32>,

Check is speakers are available to use in a specific configuration

Source

pub async fn play<F: Frame<Chan = Ch32>>(&mut self) -> SpeakersSink<'_, F>

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§

Source§

impl Debug for Speakers

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Default for Speakers

Source§

fn default() -> Speakers

Returns the “default value” for a type. Read more
Source§

impl Display for Speakers

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> ToString for T
where T: Display + ?Sized,

Source§

fn to_string(&self) -> String

Converts the given value to a String. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

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

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.