Skip to main content

AudioTrack

Struct AudioTrack 

Source
pub struct AudioTrack {
    clip: AudioClip,
    gain: f64,
    fade_in_secs: f64,
    fade_out_secs: f64,
    play_range: Option<Range<f64>>,
}
Expand description

A sound’s content data: the clip plus how to play it.

Purely substance — clip trim and gain envelope. Everything time-positional (placement, window duration, enable, rate warps — including linear speed changes via with_duration) lives on the cell layer (Unplaced::at, with_duration, with_rate_func, with_enabled), exactly like a visual item’s data versus its AnimNode.

Fields§

§clip: AudioClip§gain: f64§fade_in_secs: f64§fade_out_secs: f64§play_range: Option<Range<f64>>

Implementations§

Source§

impl AudioTrack

Source

pub fn new(clip: AudioClip) -> Self

A track playing the whole clip at unit gain.

Source

pub fn with_gain(self, gain: f64) -> Self

Set the track’s linear gain.

Source

pub fn with_fade_in(self, secs: f64) -> Self

Fade in linearly over the first secs of the track.

Source

pub fn with_fade_out(self, secs: f64) -> Self

Fade out linearly over the last secs of the track.

Source

pub fn with_play_secs(self, range: Range<f64>) -> Self

Play only the clip’s seconds within range — a content trim, unlike the cell layer’s with_duration, which resamples the sound to fit a new window length.

The range is clamped to the clip: a start before the clip pulls to zero, an end past the clip’s duration truncates, and an empty or reversed span collapses to silence. Content-time zero always plays range.start seconds into the clip.

Source

fn source_span(&self) -> (f64, f64)

The clip-second span actually played: play_range clamped to the clip’s extent.

Source

pub(crate) fn play_window_secs(&self) -> f64

The track’s play length (its whole content axis).

Source§

impl AudioTrack

Source

pub(crate) fn sample_at(&self, own: f64) -> [f32; 2]

The stereo sample this track produces at content-time own, or silence when own falls outside the play window.

A pure function of content time — the mixing walk calls it once per output sample. Fades are measured on the same content axis.

Source

pub(crate) fn mix_span_into( &self, a: f64, b: f64, g_lo: usize, g_hi: usize, sample_rate: f64, pcm: &mut [f32], )

Add this track’s samples for global frames [g_lo, g_hi) into pcm (the whole timeline’s interleaved stereo buffer, absolute frame indices), where content time is the affine map t(g) = a + b·(g / sample_rate).

The seal-time bake’s linear fast path: the per-sample math is identical to AudioTrack::sample_at (window, fades and gain all measured on the content axis), arranged as one tight loop over the frames the bake proved audible.

Trait Implementations§

Source§

impl Clone for AudioTrack

Source§

fn clone(&self) -> AudioTrack

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

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

Performs copy-assignment from source. Read more
Source§

impl Debug for AudioTrack

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> 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> ConditionalSend for T
where T: Send,

Source§

impl<T> Discard for T

Source§

fn discard(&self)

Simply returns ()
Source§

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

Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

§

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<T> IntoResult<T> for T

§

fn into_result(self) -> Result<T, RunSystemError>

Converts this type into the system output type.
§

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

§

fn into_sample(self) -> T

§

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

impl<T> TransformedExt for T

Source§

fn transformed<G>(self, transform: G) -> Transformed<Self, G>

Return self wrapped with transform stored exactly as G.
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.
Source§

impl<T> With for T

Source§

fn with(self, f: impl Fn(&mut Self)) -> Self
where Self: Sized,

Mutating a value in place
§

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