AudioMix

Struct AudioMix 

Source
#[non_exhaustive]
pub struct AudioMix { /* private fields */ }
Expand description

Represents an audio source.

Audio is defined by layers, each subsequent layer applies to the computed result of the previous layer.

Implementations§

Source§

impl AudioMix

Source

pub fn new() -> AudioMix

New empty.

Source

pub fn with_delay(self, duration: Duration) -> AudioMix

Plays silence for the duration before starting layers mix.

Source

pub fn with_total_duration(self, duration: Duration) -> AudioMix

Set the total duration.

If not set audio plays until all audio and mix layers end. If set audio plays for the duration, if layers end before the duration plays silent at the end, if layers exceed the duration they are clipped.

Note that the duration must account for the initial delay, the initial silence is included in the the total duration.

Source

pub fn with_audio(self, audio: &AudioTrack) -> AudioMix

Add layer that plays the cached audio.

The audio samples are adapted to the output format and each sample added to the under layers result.

Source

pub fn with_audio_clip( self, audio: &AudioTrack, skip: Duration, take: Duration, ) -> AudioMix

Add layer that clips and plays the cached audio.

This is similar to with_audio, but only the range skip..skip + take is played.

Source

pub fn with_mix(self, mix: impl Into<AudioMix>) -> AudioMix

Add layer that plays another mix.

The inner mix is sampled as computed audio, that is, samples are computed first and added to the under layers result.

Source

pub fn with_mix_clip( self, mix: impl Into<AudioMix>, skip: Duration, take: Duration, ) -> AudioMix

Add layer that clips and plays another mix.

This is similar to with_mix, but only the range skip..skip + take is played.

Source

pub fn with_sine_wave(self, frequency: f32, duration: Duration) -> AudioMix

Add layer that generates a sine wave sound.

The generated sound samples are added to the under layers result.

Source

pub fn with_volume_linear( self, start: Duration, duration: Duration, start_volume: Factor, end_volume: Factor, ) -> AudioMix

Add effect layer that applies a linear volume transition.

When the playback is in range the computed sample of under layers is multiplied by the linear interpolation between start_volume and end_volume.

Note that outside the volume range is not affected, before and after.

Source

pub fn with_fade_in(self, transition_duration: Duration) -> AudioMix

Add an effect layer that fades in from the start over a transition duration.

A linear volume transition at the start raises the volume of under layers from zero to normal over the transition_duration.

Source

pub fn with_fade_out( self, start: Duration, transition_duration: Duration, ) -> AudioMix

Add an effect layer that fades out the audio after start.

A linear volume transition lowers the volume of under layers after start to zero over transition_duration, the volume remains zeroed until audio end.

Note that this does not affect the total duration, you must also call with_total_duration to fade out and stop.

Trait Implementations§

Source§

impl Clone for AudioMix

Source§

fn clone(&self) -> AudioMix

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for AudioMix

Source§

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

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

impl Default for AudioMix

Source§

fn default() -> AudioMix

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

impl<'de> Deserialize<'de> for AudioMix

Source§

fn deserialize<__D>( __deserializer: __D, ) -> Result<AudioMix, <__D as Deserializer<'de>>::Error>
where __D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
Source§

impl From<&AudioTrack> for AudioMix

Source§

fn from(audio: &AudioTrack) -> AudioMix

Converts to this type from the input type.
Source§

impl From<AudioTrack> for AudioMix

Source§

fn from(audio: AudioTrack) -> AudioMix

Converts to this type from the input type.
Source§

impl IntoVar<AudioMix> for AudioMix

Source§

impl IntoVar<AudioMix> for AudioTrack

Source§

impl PartialEq for AudioMix

Source§

fn eq(&self, other: &AudioMix) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl Serialize for AudioMix

Source§

fn serialize<__S>( &self, __serializer: __S, ) -> Result<<__S as Serializer>::Ok, <__S as Serializer>::Error>
where __S: Serializer,

Serialize this value into the given Serde serializer. Read more
Source§

impl IntoValue<AudioMix> for AudioMix

Source§

impl IntoValue<AudioMix> for AudioTrack

Source§

impl StructuralPartialEq for AudioMix

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
§

impl<T> AnyEq for T
where T: Any + PartialEq,

§

fn equals(&self, other: &(dyn Any + 'static)) -> bool

§

fn as_any(&self) -> &(dyn Any + 'static)

Source§

impl<T> AnyVarValue for T
where T: Debug + PartialEq + Clone + Any + Send + Sync,

Source§

fn clone_boxed(&self) -> BoxAnyVarValue

Clone the value.
Source§

fn eq_any(&self, other: &(dyn AnyVarValue + 'static)) -> bool

Gets if self and other are equal.
Source§

fn type_name(&self) -> &'static str

Value type name. Read more
Source§

fn try_swap(&mut self, other: &mut (dyn AnyVarValue + 'static)) -> bool

Swap value with other if both are of the same type.
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> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
§

impl<T> Downcast for T
where T: Any,

§

fn into_any(self: Box<T>) -> Box<dyn Any>

Convert Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>. Box<dyn Any> can then be further downcast into Box<ConcreteType> where ConcreteType implements Trait.
§

fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>

Convert Rc<Trait> (where Trait: Downcast) to Rc<Any>. Rc<Any> can then be further downcast into Rc<ConcreteType> where ConcreteType implements Trait.
§

fn as_any(&self) -> &(dyn Any + 'static)

Convert &Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot generate &Any’s vtable from &Trait’s.
§

fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)

Convert &mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot generate &mut Any’s vtable from &mut Trait’s.
§

impl<T> DowncastSync for T
where T: Any + Send + Sync,

§

fn into_any_arc(self: Arc<T>) -> Arc<dyn Any + Send + Sync>

Convert Arc<Trait> (where Trait: Downcast) to Arc<Any>. Arc<Any> can then be further downcast into Arc<ConcreteType> where ConcreteType implements Trait.
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

§

impl<S> FromSample<S> for S

§

fn from_sample_(s: S) -> S

Source§

impl<T> FsChangeNote for T
where T: Debug + Any + Send + Sync,

Source§

fn as_any(&self) -> &(dyn Any + 'static)

Access any.
§

impl<T> Instrument for T

§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided [Span], returning an Instrumented wrapper. Read more
§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
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> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts self into a Left variant of Either<Self, Self> if into_left is true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts self into a Left variant of Either<Self, Self> if into_left(&self) returns true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
§

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

§

fn into_sample(self) -> T

Source§

impl<T> IntoVar<T> for T
where T: VarValue,

Source§

fn into_var(self) -> Var<T>

§

impl<T> NoneValue for T
where T: Default,

§

type NoneType = T

§

fn null_value() -> T

The none-equivalent value.
§

impl<T> Pointable for T

§

const ALIGN: usize

The alignment of pointer.
§

type Init = T

The type for initializers.
§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
Source§

impl<R, P> ReadPrimitive<R> for P
where R: Read + ReadEndian<P>, P: Default,

Source§

fn read_from_little_endian(read: &mut R) -> Result<Self, Error>

Read this value from the supplied reader. Same as ReadEndian::read_from_little_endian().
Source§

fn read_from_big_endian(read: &mut R) -> Result<Self, Error>

Read this value from the supplied reader. Same as ReadEndian::read_from_big_endian().
Source§

fn read_from_native_endian(read: &mut R) -> Result<Self, Error>

Read this value from the supplied reader. Same as ReadEndian::read_from_native_endian().
Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
§

impl<T, U> ToSample<U> for T
where U: FromSample<T>,

§

fn to_sample_(self) -> U

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.
§

impl<T> WithSubscriber for T

§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a [WithDispatch] wrapper. Read more
§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a [WithDispatch] wrapper. Read more
Source§

impl<T> ConfigValue for T

Source§

impl<T> DeserializeOwned for T
where T: for<'de> Deserialize<'de>,

§

impl<S, T> Duplex<S> for T
where T: FromSample<S> + ToSample<S>,

Source§

impl<T> IntoValue<T> for T
where T: VarValue,

Source§

impl<T> IpcValue for T
where T: Serialize + for<'d> Deserialize<'d> + Send + 'static,

Source§

impl<T> StateValue for T
where T: Any + Send + Sync,

Source§

impl<T> VarValue for T