pub struct LoopBuffer { /* private fields */ }Expand description
A stereo buffer played on a seamless loop — a music stem.
Implementations§
Source§impl LoopBuffer
impl LoopBuffer
Sourcepub fn from_doc(doc: &SoundDoc) -> Self
pub fn from_doc(doc: &SoundDoc) -> Self
Render doc once at the doc’s own sample_rate and loop it. If
the buffer will play through an AdaptiveMusic/engine running at a
different rate, use from_doc_at — a rate
mismatch plays back silently detuned. (For a click-free loop, author
the doc with a loop playback so its tail meets its head, or trim it
with from_stereo.)
Sourcepub fn from_doc_at(doc: &SoundDoc, sample_rate: u32) -> Self
pub fn from_doc_at(doc: &SoundDoc, sample_rate: u32) -> Self
from_doc rendered at an explicit sample_rate —
the safe constructor when the playback rate is the engine’s, not the
doc’s.
Sourcepub fn from_stereo(left: Vec<f32>, right: Vec<f32>) -> Self
pub fn from_stereo(left: Vec<f32>, right: Vec<f32>) -> Self
Loop pre-rendered stereo samples — trim them to a musical bar length for a seamless loop. Channels of unequal length are truncated to the shorter one: indexing past the short channel would panic on the audio thread.
Sourcepub fn from_doc_len(doc: &SoundDoc, frames: usize) -> Self
pub fn from_doc_len(doc: &SoundDoc, frames: usize) -> Self
Render doc and loop it at exactly frames samples — truncated or
zero-padded to that length. Use it to force a set of stems onto one shared
loop grid so their layered cross-fades stay sample-aligned (never drift
phase). See AdaptiveMusic::add_stem_set.
Sourcepub fn from_doc_len_at(doc: &SoundDoc, frames: usize, sample_rate: u32) -> Self
pub fn from_doc_len_at(doc: &SoundDoc, frames: usize, sample_rate: u32) -> Self
from_doc_len rendered at an explicit
sample_rate (see from_doc_at).
Trait Implementations§
Source§impl AudioSource for LoopBuffer
impl AudioSource for LoopBuffer
Source§fn fill(&mut self, out: &mut [f32]) -> usize
fn fill(&mut self, out: &mut [f32]) -> usize
out with the next block of interleaved-stereo audio.Source§fn reset(&mut self)
fn reset(&mut self)
AdaptiveMusic::reset
calls this on each layer.