pub struct Controllable<S: Sound> { /* private fields */ }
Expand description

Wrap a Sound so that it can be controlled via a Controller even after it has been added to the Manager and/or started playing.

Since new sounds can be added after playing has started, if the inner sound returns Finished it will be converted to Paused by Controllable. Only after the controller has dropped and all sounds have played will Finished be returned;

Implementations§

source§

impl<S> Controllable<S>
where S: Sound,

source

pub fn new(inner: S) -> (Self, Controller<S>)

Wrap inner so it can be controlled.

Trait Implementations§

source§

impl<S> Sound for Controllable<S>
where S: Sound,

source§

fn channel_count(&self) -> u16

Returns the number of channels.
source§

fn sample_rate(&self) -> u32

Returns the number of samples per second for each channel for this sound (e.g. 44,100).
source§

fn next_sample(&mut self) -> Result<NextSample, Error>

Retrieve the next sample or notification if something has changed. The first sample is for the first channel and the second is the for second and so on until channel_count and then wraps back to the first channel. If any NextSample variant besides Sample is returned then the following NextSample::Sample is for the first channel. If a Sound has returned Paused it is expected that the consumer will call next_sample again in the future. If a Sound has returned Finished it is not expected for the consumer to call next_sample again but if called Finished will normally be returned again. After Finished has been returned, channel_count() and sample_rate() may return different values without MetadataChanged being returned. Read more
source§

fn on_start_of_batch(&mut self)

Called whenever a new batch of audio samples is requested by the backend. Read more
source§

fn next_frame(&mut self) -> Result<Vec<i16>, Result<NextSample, Error>>

Returns the next sample for all channels. Read more
source§

fn append_next_frame_to( &mut self, samples: &mut Vec<i16> ) -> Result<(), Result<NextSample, Error>>

Same as next_frame but samples are appended into an existing Vec. Read more
source§

fn into_memory_sound(self) -> Result<MemorySound, Error>
where Self: Sized,

Read the entire sound into memory. MemorySound can be cloned for efficient reuse. See MemorySound::from_sound.
source§

fn loop_from_memory(self) -> Result<MemorySound, Error>
where Self: Sized,

Read the entire sound into memory and loop indefinitely. Read more
source§

fn controllable(self) -> (Controllable<Self>, Controller<Self>)
where Self: Sized,

Allow this sound to be controlled after it has started playing with a Controller. Read more
source§

fn with_async_completion_notifier( self ) -> (AsyncCompletionNotifier<Self>, Receiver<()>)
where Self: Sized,

Get notified via a tokio::sync::oneshot::Receiver when this sound has Finished.
source§

fn with_completion_notifier(self) -> (CompletionNotifier<Self>, Receiver<()>)
where Self: Sized,

Get notified via a std::sync::mpsc::Receiver when this sound has Finished.
source§

fn with_adjustable_volume(self) -> AdjustableVolume<Self>
where Self: Sized,

Allow the volume of the sound to be adjustable with set_volume.
source§

fn with_adjustable_volume_of( self, volume_adjustment: f32 ) -> AdjustableVolume<Self>
where Self: Sized,

Allow the volume of the sound to be adjustable with set_volume and set the initial volume adjustment.
source§

fn with_adjustable_speed(self) -> AdjustableSpeed<Self>
where Self: Sized,

Allow the speed of the sound to be adjustable with set_speed. Read more
source§

fn with_adjustable_speed_of( self, speed_adjustment: f32 ) -> AdjustableSpeed<Self>
where Self: Sized,

Allow the speed of the sound to be adjustable with set_speed and set the initial speed adjustment. Read more
source§

fn pausable(self) -> Pausable<Self>
where Self: Sized,

Allow for the sound to be pausable with set_paused. Starts unpaused.
source§

fn paused(self) -> Pausable<Self>
where Self: Sized,

Allow for the sound to be pausable with set_paused. Starts paused.
source§

fn finish_after(self, duration: Duration) -> FinishAfter<Self>
where Self: Sized,

Play the first duration of the sound, then finish even if samples remain. Read more
source§

impl<S> Wrapper for Controllable<S>
where S: Sound,

§

type Inner = S

The wrapped Sound type
source§

fn inner(&self) -> &S

Get a reference to the wrapped inner Sound.
source§

fn inner_mut(&mut self) -> &mut Self::Inner

Get a mutable reference to the wrapped inner Sound.
source§

fn into_inner(self) -> S

Unwrap and return the previously wrapped Sound.

Auto Trait Implementations§

§

impl<S> RefUnwindSafe for Controllable<S>
where S: RefUnwindSafe,

§

impl<S> Send for Controllable<S>

§

impl<S> !Sync for Controllable<S>

§

impl<S> Unpin for Controllable<S>
where S: Unpin,

§

impl<S> UnwindSafe for Controllable<S>
where S: UnwindSafe,

Blanket Implementations§

source§

impl<S> AddSound for S
where S: Wrapper, <S as Wrapper>::Inner: AddSound,

source§

fn add(&mut self, sound: Box<dyn Sound>)

Add a sound to be played. When or how the sound is played is implementation specific.
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<S> ClearSounds for S
where S: Wrapper, <S as Wrapper>::Inner: ClearSounds,

source§

fn clear(&mut self)

Clear all sounds currently playing or scheduled to play.
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.

§

impl<F, T> IntoSample<T> for F
where T: FromSample<F>,

§

fn into_sample(self) -> T

source§

impl<S> SetPaused for S
where S: Wrapper, <S as Wrapper>::Inner: SetPaused,

source§

fn set_paused(&mut self, paused: bool)

Pause or unpause the sound.
source§

impl<S> SetSpeed for S
where S: Wrapper, <S as Wrapper>::Inner: SetSpeed,

source§

fn set_speed(&mut self, new: f32)

Change the playback speed. Read more
source§

impl<S> SetVolume for S
where S: Wrapper, <S as Wrapper>::Inner: SetVolume,

source§

fn set_volume(&mut self, new: f32)

Change the loudness. Read more
source§

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

§

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>,

§

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.