Mercurial > hg > devuvuzelator
diff devuvuzelator-vst.h @ 9:a1539d4e3b08
* Tidy code, start doc
author | Chris Cannam |
---|---|
date | Sat, 12 Jun 2010 13:08:33 +0100 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/devuvuzelator-vst.h Sat Jun 12 13:08:33 2010 +0100 @@ -0,0 +1,84 @@ +/* -*- c-basic-offset: 4 indent-tabs-mode: nil -*- vi:set ts=8 sts=4 sw=4: */ + +#ifndef _DEVUVUZELATOR_VST_H_ +#define _DEVUVUZELATOR_VST_H_ + +#include "public.sdk/source/vst2.x/audioeffect.h" +#include "median.h" + +class Devuvuzelator : public AudioEffect +{ + enum { + FundamentalParam = 0, + BandwidthParam = 1, + HarmonicsParam = 2, + ReductionParam = 3, + NumParams = 4 + }; + +public: + Devuvuzelator(audioMasterCallback cb); + ~Devuvuzelator(); + + virtual void getEffectName(char *n) { + vst_strncpy(n, "Devuvuzelator", kVstMaxEffectNameLen); + } + virtual void getProductString(char *n) { + vst_strncpy(n, "Devuvuzelator", kVstMaxProductStrLen); + } + virtual void getVendorString(char *n) { + vst_strncpy(n, "Queen Mary, University of London", kVstMaxVendorStrLen); + } + + virtual void setParameter(VstInt32 index, float value); + virtual float getParameter(VstInt32 index); + virtual void getParameterLabel(VstInt32 index, char* label); + virtual void getParameterDisplay(VstInt32 index, char* text); + virtual void getParameterName(VstInt32 index, char* text); + + virtual void setSampleRate (float sampleRate) { + m_sampleRate = sampleRate; + AudioEffect::setSampleRate(sampleRate); + } + + virtual void processReplacing (float** inputs, float** outputs, VstInt32 sampleFrames) { + m_input = inputs[0]; + m_output = outputs[0]; + runImpl(sampleFrames); + } + + void reset(); + void window(float *); + void runImpl(unsigned long); + void processFrame(); + void processSpectralFrame(); + + static void fft(unsigned int n, bool inverse, + double *ri, double *ii, double *ro, double *io); + + float m_sampleRate; + float *m_input; + float *m_output; + + float m_fundamental; + float m_bandwidth; + int m_harmonics; + float m_reduction; + + const int m_fftsize; + const int m_winsize; + const int m_increment; + const float m_filtersecs; + int m_fill; + int m_read; + float *m_buffer; + float *m_outacc; + double *m_frame; + double *m_spare; + double *m_real; + double *m_imag; + double *m_window; + MedianFilter<double> **m_medians; +}; + +#endif