Chris@9: /* -*- c-basic-offset: 4 indent-tabs-mode: nil -*- vi:set ts=8 sts=4 sw=4: */ Chris@9: Chris@9: #ifndef _DEVUVUZELATOR_VST_H_ Chris@9: #define _DEVUVUZELATOR_VST_H_ Chris@9: Chris@9: #include "public.sdk/source/vst2.x/audioeffect.h" Chris@9: #include "median.h" Chris@9: Chris@9: class Devuvuzelator : public AudioEffect Chris@9: { Chris@9: enum { Chris@9: FundamentalParam = 0, Chris@9: BandwidthParam = 1, Chris@9: HarmonicsParam = 2, Chris@9: ReductionParam = 3, Chris@9: NumParams = 4 Chris@9: }; Chris@9: Chris@9: public: Chris@9: Devuvuzelator(audioMasterCallback cb); Chris@9: ~Devuvuzelator(); Chris@9: Chris@9: virtual void getEffectName(char *n) { Chris@9: vst_strncpy(n, "Devuvuzelator", kVstMaxEffectNameLen); Chris@9: } Chris@9: virtual void getProductString(char *n) { Chris@9: vst_strncpy(n, "Devuvuzelator", kVstMaxProductStrLen); Chris@9: } Chris@9: virtual void getVendorString(char *n) { Chris@9: vst_strncpy(n, "Queen Mary, University of London", kVstMaxVendorStrLen); Chris@9: } Chris@9: Chris@9: virtual void setParameter(VstInt32 index, float value); Chris@9: virtual float getParameter(VstInt32 index); Chris@9: virtual void getParameterLabel(VstInt32 index, char* label); Chris@9: virtual void getParameterDisplay(VstInt32 index, char* text); Chris@9: virtual void getParameterName(VstInt32 index, char* text); Chris@9: Chris@9: virtual void setSampleRate (float sampleRate) { Chris@9: m_sampleRate = sampleRate; Chris@9: AudioEffect::setSampleRate(sampleRate); Chris@9: } Chris@9: Chris@9: virtual void processReplacing (float** inputs, float** outputs, VstInt32 sampleFrames) { Chris@9: m_input = inputs[0]; Chris@9: m_output = outputs[0]; Chris@9: runImpl(sampleFrames); Chris@9: } 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: Chris@9: static void fft(unsigned int n, bool inverse, Chris@9: double *ri, double *ii, double *ro, double *io); Chris@9: Chris@9: float 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: int m_harmonics; Chris@9: float m_reduction; 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_frame; Chris@9: double *m_spare; 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