Chris@9: /* -*- c-basic-offset: 4 indent-tabs-mode: nil -*- vi:set ts=8 sts=4 sw=4: */ Chris@9: Chris@9: #ifndef _DEVUVUZELATOR_LADSPA_H_ Chris@9: #define _DEVUVUZELATOR_LADSPA_H_ Chris@9: Chris@9: #include Chris@9: Chris@9: #include "median.h" Chris@9: Chris@9: class Devuvuzelator Chris@9: { Chris@9: public: Chris@9: static const LADSPA_Descriptor *getDescriptor(unsigned long index); Chris@9: Chris@9: private: Chris@9: Devuvuzelator(int sampleRate); Chris@9: ~Devuvuzelator(); Chris@9: Chris@9: enum { Chris@9: InputPort = 0, Chris@9: OutputPort = 1, Chris@9: LatencyPort = 2, Chris@9: FundamentalPort = 3, Chris@9: BandwidthPort = 4, Chris@9: HarmonicsPort = 5, Chris@9: ReductionPort = 6, Chris@9: PortCount = 7, Chris@9: }; Chris@9: Chris@9: static const char *const portNames[PortCount]; Chris@9: static const LADSPA_PortDescriptor ports[PortCount]; Chris@9: static const LADSPA_PortRangeHint hints[PortCount]; Chris@9: static const LADSPA_Properties properties; Chris@9: static const LADSPA_Descriptor ladspaDescriptor; Chris@9: Chris@9: static LADSPA_Handle instantiate(const LADSPA_Descriptor *, unsigned long); Chris@9: static void connectPort(LADSPA_Handle, unsigned long, LADSPA_Data *); Chris@9: static void activate(LADSPA_Handle); Chris@9: static void run(LADSPA_Handle, unsigned long); Chris@9: static void deactivate(LADSPA_Handle); Chris@9: static void cleanup(LADSPA_Handle); Chris@9: Chris@9: void reset(); Chris@9: void window(float *); Chris@9: void runImpl(unsigned long); Chris@9: void processFrame(); Chris@9: void processSpectralFrame(); Chris@9: void updateParameters(); Chris@9: Chris@9: static void fft(unsigned int n, bool inverse, Chris@9: double *ri, double *ii, double *ro, double *io); Chris@9: Chris@9: int m_sampleRate; Chris@9: float *m_input; Chris@9: float *m_output; Chris@9: Chris@9: float m_fundamental; Chris@9: float m_bandwidth; Chris@9: float m_harmonics; Chris@9: float m_reduction; Chris@9: Chris@9: float *m_platency; Chris@9: float *m_pfundamental; Chris@9: float *m_pbandwidth; Chris@9: float *m_pharmonics; Chris@9: float *m_preduction; Chris@9: Chris@9: const int m_fftsize; Chris@9: const int m_winsize; Chris@9: const int m_increment; Chris@9: const float m_filtersecs; Chris@9: int m_fill; Chris@9: int m_read; Chris@9: float *m_buffer; Chris@9: float *m_outacc; Chris@9: double *m_real; Chris@9: double *m_imag; Chris@9: double *m_window; Chris@9: MedianFilter **m_medians; Chris@9: }; Chris@9: Chris@9: #endif