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