The Open Master Hearing Aid (openMHA)
openMHA
Open community platform for hearing aid algorithm research
|
Typedefs | |
typedef void * | mha_fft_t |
Handle for an FFT object. More... | |
Functions | |
mha_fft_t | mha_fft_new (unsigned int n) |
Create a new FFT handle. More... | |
void | mha_fft_free (mha_fft_t h) |
Destroy an FFT handle. More... | |
void | mha_fft_wave2spec (mha_fft_t h, const mha_wave_t *in, mha_spec_t *out) |
Tranform waveform segment into spectrum. More... | |
void | mha_fft_wave2spec (mha_fft_t h, const mha_wave_t *in, mha_spec_t *out, bool swaps) |
Tranform waveform segment into spectrum. More... | |
void | mha_fft_spec2wave (mha_fft_t h, const mha_spec_t *in, mha_wave_t *out) |
Tranform spectrum into waveform segment. More... | |
void | mha_fft_spec2wave (mha_fft_t h, const mha_spec_t *in, mha_wave_t *out, unsigned int offset) |
Tranform spectrum into waveform segment. More... | |
void | mha_fft_forward (mha_fft_t h, mha_spec_t *sIn, mha_spec_t *sOut) |
Complex to complex FFT (forward). More... | |
void | mha_fft_backward (mha_fft_t h, mha_spec_t *sIn, mha_spec_t *sOut) |
Complex to complex FFT (backward). More... | |
void | mha_fft_forward_scale (mha_fft_t h, mha_spec_t *sIn, mha_spec_t *sOut) |
Complex to complex FFT (forward). More... | |
void | mha_fft_backward_scale (mha_fft_t h, mha_spec_t *sIn, mha_spec_t *sOut) |
Complex to complex FFT (backward). More... | |
void | mha_fft_wave2spec_scale (mha_fft_t h, const mha_wave_t *in, mha_spec_t *out) |
Tranform waveform segment into spectrum. More... | |
void | mha_fft_spec2wave_scale (mha_fft_t h, const mha_spec_t *in, mha_wave_t *out) |
Tranform spectrum into waveform segment. More... | |
typedef void* mha_fft_t |
Handle for an FFT object.
This FFT object is used by the functions mha_fft_wave2spec and mha_fft_spec2wave. The FFT back-end is the FFTW library. The back-end is completely hidden, including external header files or linking external libraries is not required.
mha_fft_t mha_fft_new | ( | unsigned int | n | ) |
Create a new FFT handle.
n | FFT length. |
Create a new FFT handle.
n | FFT length |
FFT | object |
void mha_fft_free | ( | mha_fft_t | h | ) |
Destroy an FFT handle.
h | Handle to be destroyed. |
Destroy an FFT handle.
h | FFT object to be removed |
void mha_fft_wave2spec | ( | mha_fft_t | h, |
const mha_wave_t * | in, | ||
mha_spec_t * | out | ||
) |
Tranform waveform segment into spectrum.
h | FFT handle. |
in | Input waveform segment. |
out | Output spectrum. |
Tranform waveform segment into spectrum.
h | FFT object handle |
in | pointer to input waveform signal |
out | pointer to output spectrum signal (has to be allocated) |
void mha_fft_wave2spec | ( | mha_fft_t | h, |
const mha_wave_t * | in, | ||
mha_spec_t * | out, | ||
bool | swaps | ||
) |
Tranform waveform segment into spectrum.
Like normal wave2spec, but swaps wave buffer halves before transforming if the swaps parameter is true.
Warning: These openMHA FFTs adopt a nonstandard scaling scheme in which the forward transform scales by 1/N and the backward does not scale. We would recommend using the '_scale' methods instead.
h | FFT handle. |
in | Input waveform segment. |
out | Output spectrum. |
swaps | Function swaps the first and second half of the waveform buffer before the FFT transform when this parameter is set to true. |
void mha_fft_spec2wave | ( | mha_fft_t | h, |
const mha_spec_t * | in, | ||
mha_wave_t * | out | ||
) |
Tranform spectrum into waveform segment.
Warning: These openMHA FFTs adopt a nonstandard scaling scheme in which the forward transform scales by 1/N and the backward does not scale. We would recommend using the '_scale' methods instead.
h | FFT handle. |
in | Input spectrum. |
out | Output waveform segment. |
Tranform spectrum into waveform segment.
h | FFT object handle |
in | pointer to input spectrum |
out | pointer to output waveform signal (has to be allocated) |
void mha_fft_spec2wave | ( | mha_fft_t | h, |
const mha_spec_t * | in, | ||
mha_wave_t * | out, | ||
unsigned int | offset | ||
) |
Tranform spectrum into waveform segment.
out may have fewer number of frames than needed for a complete iFFT. Only as many frames are written into out as fit, starting with offset offset of the complete iFFT.
Warning: These openMHA FFTs adopt a nonstandard scaling scheme in which the forward transform scales by 1/N and the backward does not scale. We would recommend using the '_scale' methods instead.
h | FFT handle. |
in | Input spectrum. |
out | Output waveform segment. |
offset | Offset into iFFT wave buffer |
Tranform spectrum into waveform segment.
Only part of the iFFT is tranferred into the out buffer.
Out may have fewer number of freames than needed for a complete iFFT. Only as many frames are written into out as fit, starting with offset offset of the complete iFFT.
h | FFT object handle |
in | pointer to input spectrum |
out | pointer to output waveform signal (has to be allocated) |
offset | Offset into complete iFFT buffer. |
void mha_fft_forward | ( | mha_fft_t | h, |
mha_spec_t * | sIn, | ||
mha_spec_t * | sOut | ||
) |
Complex to complex FFT (forward).
sIn and sOut need to have nfft bins (please note that mha_spec_t typically has nfft/2+1 bins for half-complex representation).
Warning: These openMHA FFTs adopt a nonstandard scaling scheme in which the forward transform scales by 1/N and the backward does not scale. We would recommend using the '_scale' methods instead.
h | FFT handle. |
sIn | Input spectrum. |
sOut | Output spectrum. |
void mha_fft_backward | ( | mha_fft_t | h, |
mha_spec_t * | sIn, | ||
mha_spec_t * | sOut | ||
) |
Complex to complex FFT (backward).
sIn and sOut need to have nfft bins (please note that mha_spec_t typically has nfft/2+1 bins for half-complex representation).
Warning: These openMHA FFTs adopt a nonstandard scaling scheme in which the forward transform scales by 1/N and the backward does not scale. We would recommend using the '_scale' methods instead.
h | FFT handle. |
sIn | Input spectrum. |
sOut | Output spectrum. |
void mha_fft_forward_scale | ( | mha_fft_t | h, |
mha_spec_t * | sIn, | ||
mha_spec_t * | sOut | ||
) |
Complex to complex FFT (forward).
sIn and sOut need to have nfft bins (please note that mha_spec_t typically has nfft/2+1 bins for half-complex representation).
The _scale methods use standard DFT scaling: There is no scaling in the forward transformation, and 1/N scaling for the backward.
h | FFT handle. |
sIn | Input spectrum. |
sOut | Output spectrum. |
void mha_fft_backward_scale | ( | mha_fft_t | h, |
mha_spec_t * | sIn, | ||
mha_spec_t * | sOut | ||
) |
Complex to complex FFT (backward).
sIn and sOut need to have nfft bins (please note that mha_spec_t typically has nfft/2+1 bins for half-complex representation).
The _scale methods use standard DFT scaling: There is no scaling in the forward transformation, and 1/N scaling for the backward.
h | FFT handle. |
sIn | Input spectrum. |
sOut | Output spectrum. |
void mha_fft_wave2spec_scale | ( | mha_fft_t | h, |
const mha_wave_t * | in, | ||
mha_spec_t * | out | ||
) |
Tranform waveform segment into spectrum.
The _scale methods use standard DFT scaling: There is no scaling in the forward transformation, and 1/N scaling for the backward.
h | FFT handle. |
in | Input waveform segment. |
out | Output spectrum. |
void mha_fft_spec2wave_scale | ( | mha_fft_t | h, |
const mha_spec_t * | in, | ||
mha_wave_t * | out | ||
) |
Tranform spectrum into waveform segment.
The _scale methods use standard DFT scaling: There is no scaling in the forward transformation, and 1/N scaling for the backward.
h | FFT handle. |
in | Input spectrum. |
out | Output waveform segment. |