pub struct BeatThis<M: Model> { /* private fields */ }Expand description
High-level beat tracker composing the full pipeline.
Owns the mel spectrogram model, the beat prediction model, and the peak picker. Generic over the model type, so it works with any backend (ort, rten, tract).
Implementations§
Source§impl<M: Model> BeatThis<M>
impl<M: Model> BeatThis<M>
Sourcepub fn new<R: Runtime<Model = M>>(
runtime: &R,
mel_model_path: &Path,
beat_model_path: &Path,
) -> Result<Self>
pub fn new<R: Runtime<Model = M>>( runtime: &R, mel_model_path: &Path, beat_model_path: &Path, ) -> Result<Self>
Create a new beat tracker by loading both ONNX models via the given runtime.
runtime: anyRuntime(e.g.OrtRuntime::default())mel_model_path: path to the mel spectrogram ONNX modelbeat_model_path: path to the beat tracking ONNX model
Sourcepub fn from_models(mel_model: M, beat_model: M) -> Self
pub fn from_models(mel_model: M, beat_model: M) -> Self
Create a beat tracker from pre-built models.
Use this when you need separate runtimes for the mel and beat models (e.g. one with profiling enabled).
Sourcepub fn beat_model_mut(&mut self) -> &mut M
pub fn beat_model_mut(&mut self) -> &mut M
Get a mutable reference to the beat prediction model.
Useful for runtime-specific operations like ending ORT profiling.
Sourcepub fn analyze_audio(
&mut self,
samples: &[f32],
sample_rate: u32,
) -> Result<BeatAnalysis>
pub fn analyze_audio( &mut self, samples: &[f32], sample_rate: u32, ) -> Result<BeatAnalysis>
Run the full pipeline on raw audio samples.
The samples are resampled to 22050 Hz if sample_rate differs.
Input should be mono f32 PCM.
Sourcepub fn analyze_audio_timed(
&mut self,
samples: &[f32],
sample_rate: u32,
) -> Result<TimedAnalysis>
pub fn analyze_audio_timed( &mut self, samples: &[f32], sample_rate: u32, ) -> Result<TimedAnalysis>
Run the full pipeline on raw audio samples, returning per-stage timing.
Sourcepub fn analyze_file(&mut self, path: &Path) -> Result<BeatAnalysis>
pub fn analyze_file(&mut self, path: &Path) -> Result<BeatAnalysis>
Run the full pipeline on an audio file.
Loads the file, resamples to 22050 Hz mono, computes mel spectrogram, runs beat prediction, and decodes into beat/downbeat timestamps.
Auto Trait Implementations§
impl<M> Freeze for BeatThis<M>where
M: Freeze,
impl<M> RefUnwindSafe for BeatThis<M>where
M: RefUnwindSafe,
impl<M> Send for BeatThis<M>where
M: Send,
impl<M> Sync for BeatThis<M>where
M: Sync,
impl<M> Unpin for BeatThis<M>where
M: Unpin,
impl<M> UnsafeUnpin for BeatThis<M>where
M: UnsafeUnpin,
impl<M> UnwindSafe for BeatThis<M>where
M: UnwindSafe,
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
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
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 moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
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