AuLib  1.0beta
Public Member Functions | Protected Member Functions | Protected Attributes | List of all members
AuLib::Stft Class Reference

#include <AuLib/Stft.h>

Inheritance diagram for AuLib::Stft:
Inheritance graph
[legend]
Collaboration diagram for AuLib::Stft:
Collaboration graph
[legend]

Public Member Functions

 Stft (const FuncTable &win, bool dir, uint32_t decim=def_decim, bool repr=fft::rectang, uint32_t vframes=def_vframes, double sr=def_sr)
 
const double * process (const double *sig, uint32_t vframes=def_vframes)
 
const Stftprocess (const AudioBase &obj)
 
const Stftoperator() (const AudioBase &obj)
 
bool repr () const
 
bool framecount () const
 
virtual const std::vector< std::complex< double > > & spectrum ()
 
const std::complex< double > & bin (uint32_t n)
 
virtual const AudioBaseoperator*= (double scal)
 
virtual const AudioBaseoperator*= (const double *sig)
 
virtual const AudioBaseoperator*= (const Stft &obj)
 
virtual const AudioBaseoperator+= (double num)
 
virtual const AudioBaseoperator+= (const double *sig)
 
virtual const AudioBaseoperator+= (const Stft &obj)
 
- Public Member Functions inherited from AuLib::AudioBase
 AudioBase (uint32_t nchnls=def_nchnls, uint32_t vframes=def_vframes, double sr=def_sr)
 
virtual const AudioBaseoperator*= (const AudioBase &obj)
 
virtual const AudioBaseoperator+= (const AudioBase &obj)
 
double & operator[] (uint32_t ndx)
 
const double & operator[] (uint32_t ndx) const
 
iterator begin ()
 
iterator end ()
 
const_iterator cbegin () const
 
const_iterator cend () const
 
const AudioBaseset (const AudioBase &obj)
 
const AudioBaseset (const double *sig)
 
const double * set (double v)
 
double set (double v, uint32_t p)
 
 operator const std::vector< double > & () const
 
 operator const double * () const
 
const double * vector () const
 
double vector (uint32_t frndx, uint32_t chn) const
 
uint32_t vframes (uint32_t frames)
 
uint32_t resize_exact (uint32_t frames)
 
uint32_t vframes () const
 
uint32_t vsamps () const
 
uint32_t nchnls () const
 
uint32_t sr () const
 
uint32_t error () const
 
virtual const char * error_message () const
 

Protected Member Functions

virtual const double * transform (const double *sig, uint32_t vframes)
 

Protected Attributes

const std::complex< double > m_z
 
uint32_t m_N
 
uint32_t m_H
 
uint32_t m_D
 
bool m_dir
 
bool m_repr
 
uint64_t m_framecount
 
const FuncTablem_win
 
std::vector< std::vector< double > > m_framebufs
 
std::vector< uint32_t > m_pos
 
std::vector< std::complex< double > > m_cdata
 
- Protected Attributes inherited from AuLib::AudioBase
uint32_t m_nchnls
 
uint32_t m_vframes
 
std::vector< double > m_vector
 
double m_sr
 
uint32_t m_error
 

Additional Inherited Members

- Public Types inherited from AuLib::AudioBase
typedef std::vector< double >::iterator iterator
 
typedef std::vector< double >::const_iterator const_iterator
 

Detailed Description

Stft implements a streaming Short-time Fourier Transform overlapped windows are taken from the input (forward mode) and analysis frames in either rectangular or polar formats are produced in the output (N/2 bins, first bin containing both DC and Nyq points) containing the non-negative spectrum.
On inverse mode, spectral data is read from the input and transformed back to the output, using an overlap-add algorithm.

Constructor & Destructor Documentation

◆ Stft()

AuLib::Stft::Stft ( const FuncTable win,
bool  dir,
uint32_t  decim = def_decim,
bool  repr = fft::rectang,
uint32_t  vframes = def_vframes,
double  sr = def_sr 
)
inline

Stft constructor

win - analysis window
decim - decimation
dir - transform direction, forward or inverse
repr - data format, fft::polar or fft::rectang
vframes - vector size
sr - sampling rate

Member Function Documentation

◆ bin()

const std::complex<double>& AuLib::Stft::bin ( uint32_t  n)
inline

return bin data as a complex<double> ref (only meaningful in forward transforms)

◆ framecount()

bool AuLib::Stft::framecount ( ) const
inline

return analysis frame count

◆ operator()()

const Stft& AuLib::Stft::operator() ( const AudioBase obj)
inline

operator (a) convenience method

◆ operator*=() [1/3]

virtual const AudioBase& AuLib::Stft::operator*= ( double  scal)
inlinevirtual

Scale the spectral data vector

Reimplemented from AuLib::AudioBase.

Reimplemented in AuLib::Pvoc.

◆ operator*=() [2/3]

virtual const AudioBase& AuLib::Stft::operator*= ( const double *  sig)
inlinevirtual

Multiply the data vector by a spectral vector

Reimplemented from AuLib::AudioBase.

Reimplemented in AuLib::Pvoc.

◆ operator*=() [3/3]

virtual const AudioBase& AuLib::Stft::operator*= ( const Stft obj)
inlinevirtual

Multiply the data vector by the vector from obj

◆ operator+=() [1/3]

virtual const AudioBase& AuLib::Stft::operator+= ( double  num)
inlinevirtual

Add a double to the spectral data (non-op for polar repr)

Reimplemented from AuLib::AudioBase.

Reimplemented in AuLib::Pvoc.

◆ operator+=() [2/3]

virtual const AudioBase& AuLib::Stft::operator+= ( const double *  sig)
inlinevirtual

Add a vector sig to the data vector (non-op for polar repr)

Reimplemented from AuLib::AudioBase.

Reimplemented in AuLib::Pvoc.

◆ operator+=() [3/3]

virtual const AudioBase& AuLib::Stft::operator+= ( const Stft obj)
inlinevirtual

Add a vector sig from obj to the data vector (non-op for polar repr)

Reimplemented in AuLib::Pvoc.

◆ process() [1/2]

const double* AuLib::Stft::process ( const double *  sig,
uint32_t  vframes = def_vframes 
)
inline

transform an signal sig, vframes is the (time-domain) processing vector size and it is required to be >= analysis hopsize, otherwise no processing takes place.

◆ process() [2/2]

const Stft& AuLib::Stft::process ( const AudioBase obj)
inline

transform a signal in obj

◆ repr()

bool AuLib::Stft::repr ( ) const
inline

return data format (fft::polar or fft::rectang)

◆ spectrum()

virtual const std::vector<std::complex<double> >& AuLib::Stft::spectrum ( )
inlinevirtual

spectrum as a complex<double> vector ref (only meaningful in forward transforms)

Reimplemented in AuLib::Pvoc.

◆ transform()

const double * AuLib::Stft::transform ( const double *  sig,
uint32_t  vframes 
)
protectedvirtual

STFT transform

Member Data Documentation

◆ m_cdata

std::vector<std::complex<double> > AuLib::Stft::m_cdata
protected

◆ m_D

uint32_t AuLib::Stft::m_D
protected

◆ m_dir

bool AuLib::Stft::m_dir
protected

◆ m_framebufs

std::vector<std::vector<double> > AuLib::Stft::m_framebufs
protected

◆ m_framecount

uint64_t AuLib::Stft::m_framecount
protected

◆ m_H

uint32_t AuLib::Stft::m_H
protected

◆ m_N

uint32_t AuLib::Stft::m_N
protected

◆ m_pos

std::vector<uint32_t> AuLib::Stft::m_pos
protected

◆ m_repr

bool AuLib::Stft::m_repr
protected

◆ m_win

const FuncTable& AuLib::Stft::m_win
protected

◆ m_z

const std::complex<double> AuLib::Stft::m_z
protected

The documentation for this class was generated from the following files: