Struct pvoc::PhaseVocoder
[−]
[src]
pub struct PhaseVocoder { /* fields omitted */ }
A phase vocoder.
Roughly translated from http://blogs.zynaptiq.com/bernsee/pitch-shifting-using-the-ft/
Methods
impl PhaseVocoder
[src]
fn new(
channels: usize,
sample_rate: f64,
frame_size: usize,
time_res: usize
) -> PhaseVocoder
channels: usize,
sample_rate: f64,
frame_size: usize,
time_res: usize
) -> PhaseVocoder
Constructs a new phase vocoder.
channels
is the number of channels of audio.
sample_rate
is the sample rate.
frame_size
is the fourier transform size. This should be a power of 2 for optimal
performance. Will be rounded to a multiple of time_res
.
time_res
is the number of frames to overlap.
fn num_channels(&self) -> usize
fn num_bins(&self) -> usize
fn time_res(&self) -> usize
fn sample_rate(&self) -> f64
fn process<S, F>(
&mut self,
input: &[&[S]],
output: &mut [&mut [S]],
processor: F
) -> usize where
S: Float + ToPrimitive + FromPrimitive,
F: FnMut(usize, usize, &[Vec<Bin>], &mut [Vec<Bin>]),
&mut self,
input: &[&[S]],
output: &mut [&mut [S]],
processor: F
) -> usize where
S: Float + ToPrimitive + FromPrimitive,
F: FnMut(usize, usize, &[Vec<Bin>], &mut [Vec<Bin>]),
Reads samples from input
, processes the samples, then resynthesizes as many samples as
possible into output
. Returns the number of samples written to output
.
processor
is a function to manipulate the spectrum before it is resynthesized. Its
arguments are respectively num_channels
, num_bins
, analysis_output
and
synthesis_input
.
Samples are expected to be normalized to the range [-1, 1].