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
impl Speakers
Sourcepub fn supports<F>(&self) -> bool
pub fn supports<F>(&self) -> bool
Check is speakers are available to use in a specific configuration
Sourcepub async fn play<F: Frame<Chan = Ch32>>(&mut self) -> SpeakersSink<'_, F>
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§
Auto Trait Implementations§
impl Freeze for Speakers
impl RefUnwindSafe for Speakers
impl !Send for Speakers
impl !Sync for Speakers
impl Unpin for Speakers
impl UnwindSafe for Speakers
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more