Chris@9
|
1 /* -*- c-basic-offset: 4 indent-tabs-mode: nil -*- vi:set ts=8 sts=4 sw=4: */
|
Chris@9
|
2
|
Chris@9
|
3 #ifndef _DEVUVUZELATOR_VST_H_
|
Chris@9
|
4 #define _DEVUVUZELATOR_VST_H_
|
Chris@9
|
5
|
Chris@9
|
6 #include "public.sdk/source/vst2.x/audioeffect.h"
|
Chris@9
|
7 #include "median.h"
|
Chris@9
|
8
|
Chris@9
|
9 class Devuvuzelator : public AudioEffect
|
Chris@9
|
10 {
|
Chris@9
|
11 enum {
|
Chris@9
|
12 FundamentalParam = 0,
|
Chris@9
|
13 BandwidthParam = 1,
|
Chris@9
|
14 HarmonicsParam = 2,
|
Chris@9
|
15 ReductionParam = 3,
|
Chris@9
|
16 NumParams = 4
|
Chris@9
|
17 };
|
Chris@9
|
18
|
Chris@9
|
19 public:
|
Chris@9
|
20 Devuvuzelator(audioMasterCallback cb);
|
Chris@9
|
21 ~Devuvuzelator();
|
Chris@9
|
22
|
Chris@9
|
23 virtual void getEffectName(char *n) {
|
Chris@9
|
24 vst_strncpy(n, "Devuvuzelator", kVstMaxEffectNameLen);
|
Chris@9
|
25 }
|
Chris@9
|
26 virtual void getProductString(char *n) {
|
Chris@9
|
27 vst_strncpy(n, "Devuvuzelator", kVstMaxProductStrLen);
|
Chris@9
|
28 }
|
Chris@9
|
29 virtual void getVendorString(char *n) {
|
Chris@9
|
30 vst_strncpy(n, "Queen Mary, University of London", kVstMaxVendorStrLen);
|
Chris@9
|
31 }
|
Chris@9
|
32
|
Chris@9
|
33 virtual void setParameter(VstInt32 index, float value);
|
Chris@9
|
34 virtual float getParameter(VstInt32 index);
|
Chris@9
|
35 virtual void getParameterLabel(VstInt32 index, char* label);
|
Chris@9
|
36 virtual void getParameterDisplay(VstInt32 index, char* text);
|
Chris@9
|
37 virtual void getParameterName(VstInt32 index, char* text);
|
Chris@9
|
38
|
Chris@9
|
39 virtual void setSampleRate (float sampleRate) {
|
Chris@9
|
40 m_sampleRate = sampleRate;
|
Chris@9
|
41 AudioEffect::setSampleRate(sampleRate);
|
Chris@9
|
42 }
|
Chris@9
|
43
|
Chris@9
|
44 virtual void processReplacing (float** inputs, float** outputs, VstInt32 sampleFrames) {
|
Chris@9
|
45 m_input = inputs[0];
|
Chris@9
|
46 m_output = outputs[0];
|
Chris@9
|
47 runImpl(sampleFrames);
|
Chris@9
|
48 }
|
Chris@9
|
49
|
Chris@9
|
50 void reset();
|
Chris@9
|
51 void window(float *);
|
Chris@9
|
52 void runImpl(unsigned long);
|
Chris@9
|
53 void processFrame();
|
Chris@9
|
54 void processSpectralFrame();
|
Chris@9
|
55
|
Chris@9
|
56 static void fft(unsigned int n, bool inverse,
|
Chris@9
|
57 double *ri, double *ii, double *ro, double *io);
|
Chris@9
|
58
|
Chris@9
|
59 float m_sampleRate;
|
Chris@9
|
60 float *m_input;
|
Chris@9
|
61 float *m_output;
|
Chris@9
|
62
|
Chris@9
|
63 float m_fundamental;
|
Chris@9
|
64 float m_bandwidth;
|
Chris@9
|
65 int m_harmonics;
|
Chris@9
|
66 float m_reduction;
|
Chris@9
|
67
|
Chris@9
|
68 const int m_fftsize;
|
Chris@9
|
69 const int m_winsize;
|
Chris@9
|
70 const int m_increment;
|
Chris@9
|
71 const float m_filtersecs;
|
Chris@9
|
72 int m_fill;
|
Chris@9
|
73 int m_read;
|
Chris@9
|
74 float *m_buffer;
|
Chris@9
|
75 float *m_outacc;
|
Chris@9
|
76 double *m_frame;
|
Chris@9
|
77 double *m_spare;
|
Chris@9
|
78 double *m_real;
|
Chris@9
|
79 double *m_imag;
|
Chris@9
|
80 double *m_window;
|
Chris@9
|
81 MedianFilter<double> **m_medians;
|
Chris@9
|
82 };
|
Chris@9
|
83
|
Chris@9
|
84 #endif
|