pub struct BatchIstft<T: Float + FftNum> { /* private fields */ }Implementations§
Source§impl<T: Float + FftNum + FromPrimitive + Debug> BatchIstft<T>
impl<T: Float + FftNum + FromPrimitive + Debug> BatchIstft<T>
pub fn new(config: StftConfig<T>) -> Selfwhere
FftPlanner<T>: FftPlannerTrait<T>,
pub fn process(&self, spectrum: &Spectrum<T>) -> Vec<T>
Sourcepub fn process_into(&self, spectrum: &Spectrum<T>, output: &mut Vec<T>)
pub fn process_into(&self, spectrum: &Spectrum<T>, output: &mut Vec<T>)
Process spectrum and write into a pre-allocated output buffer. The output buffer will be resized if needed.
Sourcepub fn process_multichannel(&self, spectra: &[Spectrum<T>]) -> Vec<Vec<T>>
pub fn process_multichannel(&self, spectra: &[Spectrum<T>]) -> Vec<Vec<T>>
Reconstruct multiple channels from their spectra. Returns one Vec per channel.
§Arguments
spectra- Slice of Spectrum, one per channel
§Panics
Panics if spectra is empty.
§Example
use stft_rs::prelude::*;
let config = StftConfigF32::default_4096();
let stft = BatchStftF32::new(config.clone());
let istft = BatchIstftF32::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);
let reconstructed = istft.process_multichannel(&spectra);
assert_eq!(reconstructed.len(), 2); // One channel per spectrumSourcepub fn process_multichannel_interleaved(
&self,
spectra: &[Spectrum<T>],
) -> Vec<T>
pub fn process_multichannel_interleaved( &self, spectra: &[Spectrum<T>], ) -> Vec<T>
Reconstruct multiple channels and interleave them into a single buffer.
Converts separate channels back to interleaved format (e.g., [L,R,L,R,L,R,...] for stereo).
§Arguments
spectra- Slice of Spectrum, one per channel
§Panics
Panics if spectra is empty or if channels have different lengths.
§Example
use stft_rs::prelude::*;
let config = StftConfigF32::default_4096();
let stft = BatchStftF32::new(config.clone());
let istft = BatchIstftF32::new(config);
// Process interleaved stereo
let interleaved = vec![0.0; 88200]; // 2 channels * 44100 samples
let spectra = stft.process_interleaved(&interleaved, 2);
// Reconstruct back to interleaved
let output = istft.process_multichannel_interleaved(&spectra);
// Output length may differ slightly due to padding/framing
assert_eq!(output.len() / 2, 44032); // samples per channel after reconstructionTrait Implementations§
Auto Trait Implementations§
impl<T> Freeze for BatchIstft<T>
impl<T> !RefUnwindSafe for BatchIstft<T>
impl<T> Send for BatchIstft<T>
impl<T> Sync for BatchIstft<T>
impl<T> Unpin for BatchIstft<T>where
T: Unpin,
impl<T> !UnwindSafe for BatchIstft<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