pub struct BatchStft<T: Float + FftNum> { /* private fields */ }Implementations§
Source§impl<T: Float + FftNum + FromPrimitive + Debug> BatchStft<T>
impl<T: Float + FftNum + FromPrimitive + Debug> BatchStft<T>
pub fn new(config: StftConfig<T>) -> Selfwhere
FftPlanner<T>: FftPlannerTrait<T>,
pub fn process(&self, signal: &[T]) -> Spectrum<T>
pub fn process_padded(&self, signal: &[T], pad_mode: PadMode) -> Spectrum<T>
Sourcepub fn process_into(&self, signal: &[T], spectrum: &mut Spectrum<T>) -> bool
pub fn process_into(&self, signal: &[T], spectrum: &mut Spectrum<T>) -> bool
Process signal and write into a pre-allocated Spectrum. The spectrum must have the correct dimensions (num_frames x freq_bins). Returns true if successful, false if dimensions don’t match.
Sourcepub fn process_padded_into(
&self,
signal: &[T],
pad_mode: PadMode,
spectrum: &mut Spectrum<T>,
) -> bool
pub fn process_padded_into( &self, signal: &[T], pad_mode: PadMode, spectrum: &mut Spectrum<T>, ) -> bool
Process signal with padding and write into a pre-allocated Spectrum.
Sourcepub fn process_multichannel(&self, channels: &[Vec<T>]) -> Vec<Spectrum<T>>
pub fn process_multichannel(&self, channels: &[Vec<T>]) -> Vec<Spectrum<T>>
Process multiple channels independently. Returns one Spectrum per channel.
§Arguments
channels- Slice of audio channels, each as a separate Vec
§Panics
Panics if channels is empty or if channels have different lengths.
§Example
use stft_rs::prelude::*;
let config = StftConfigF32::default_4096();
let stft = BatchStftF32::new(config);
let left = vec![0.0; 44100];
let right = vec![0.0; 44100];
let channels = vec![left, right];
let spectra = stft.process_multichannel(&channels);
assert_eq!(spectra.len(), 2); // One spectrum per channelSourcepub fn process_interleaved(
&self,
data: &[T],
num_channels: usize,
) -> Vec<Spectrum<T>>
pub fn process_interleaved( &self, data: &[T], num_channels: usize, ) -> Vec<Spectrum<T>>
Process interleaved multi-channel audio.
Converts interleaved format (e.g., [L,R,L,R,L,R,...] for stereo)
into separate Spectrum for each channel.
§Arguments
data- Interleaved audio datanum_channels- Number of channels
§Panics
Panics if num_channels is 0 or if data.len() is not divisible by num_channels.
§Example
use stft_rs::prelude::*;
let config = StftConfigF32::default_4096();
let stft = BatchStftF32::new(config);
// Stereo interleaved: L,R,L,R,L,R,...
let interleaved = vec![0.0; 88200]; // 2 channels * 44100 samples
let spectra = stft.process_interleaved(&interleaved, 2);
assert_eq!(spectra.len(), 2); // One spectrum per channelTrait Implementations§
Auto Trait Implementations§
impl<T> Freeze for BatchStft<T>
impl<T> !RefUnwindSafe for BatchStft<T>
impl<T> Send for BatchStft<T>
impl<T> Sync for BatchStft<T>
impl<T> Unpin for BatchStft<T>where
T: Unpin,
impl<T> !UnwindSafe for BatchStft<T>
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
Mutably borrows from an owned value. Read more