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_LADSPA_H_
|
Chris@9
|
4 #define _DEVUVUZELATOR_LADSPA_H_
|
Chris@9
|
5
|
Chris@9
|
6 #include <ladspa.h>
|
Chris@9
|
7
|
Chris@9
|
8 #include "median.h"
|
Chris@9
|
9
|
Chris@9
|
10 class Devuvuzelator
|
Chris@9
|
11 {
|
Chris@9
|
12 public:
|
Chris@9
|
13 static const LADSPA_Descriptor *getDescriptor(unsigned long index);
|
Chris@9
|
14
|
Chris@9
|
15 private:
|
Chris@9
|
16 Devuvuzelator(int sampleRate);
|
Chris@9
|
17 ~Devuvuzelator();
|
Chris@9
|
18
|
Chris@9
|
19 enum {
|
Chris@9
|
20 InputPort = 0,
|
Chris@9
|
21 OutputPort = 1,
|
Chris@9
|
22 LatencyPort = 2,
|
Chris@9
|
23 FundamentalPort = 3,
|
Chris@9
|
24 BandwidthPort = 4,
|
Chris@9
|
25 HarmonicsPort = 5,
|
Chris@9
|
26 ReductionPort = 6,
|
Chris@9
|
27 PortCount = 7,
|
Chris@9
|
28 };
|
Chris@9
|
29
|
Chris@9
|
30 static const char *const portNames[PortCount];
|
Chris@9
|
31 static const LADSPA_PortDescriptor ports[PortCount];
|
Chris@9
|
32 static const LADSPA_PortRangeHint hints[PortCount];
|
Chris@9
|
33 static const LADSPA_Properties properties;
|
Chris@9
|
34 static const LADSPA_Descriptor ladspaDescriptor;
|
Chris@9
|
35
|
Chris@9
|
36 static LADSPA_Handle instantiate(const LADSPA_Descriptor *, unsigned long);
|
Chris@9
|
37 static void connectPort(LADSPA_Handle, unsigned long, LADSPA_Data *);
|
Chris@9
|
38 static void activate(LADSPA_Handle);
|
Chris@9
|
39 static void run(LADSPA_Handle, unsigned long);
|
Chris@9
|
40 static void deactivate(LADSPA_Handle);
|
Chris@9
|
41 static void cleanup(LADSPA_Handle);
|
Chris@9
|
42
|
Chris@9
|
43 void reset();
|
Chris@9
|
44 void window(float *);
|
Chris@9
|
45 void runImpl(unsigned long);
|
Chris@9
|
46 void processFrame();
|
Chris@9
|
47 void processSpectralFrame();
|
Chris@9
|
48 void updateParameters();
|
Chris@9
|
49
|
Chris@9
|
50 static void fft(unsigned int n, bool inverse,
|
Chris@9
|
51 double *ri, double *ii, double *ro, double *io);
|
Chris@9
|
52
|
Chris@9
|
53 int m_sampleRate;
|
Chris@9
|
54 float *m_input;
|
Chris@9
|
55 float *m_output;
|
Chris@9
|
56
|
Chris@9
|
57 float m_fundamental;
|
Chris@9
|
58 float m_bandwidth;
|
Chris@9
|
59 float m_harmonics;
|
Chris@9
|
60 float m_reduction;
|
Chris@9
|
61
|
Chris@9
|
62 float *m_platency;
|
Chris@9
|
63 float *m_pfundamental;
|
Chris@9
|
64 float *m_pbandwidth;
|
Chris@9
|
65 float *m_pharmonics;
|
Chris@9
|
66 float *m_preduction;
|
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_real;
|
Chris@9
|
77 double *m_imag;
|
Chris@9
|
78 double *m_window;
|
Chris@9
|
79 MedianFilter<double> **m_medians;
|
Chris@9
|
80 };
|
Chris@9
|
81
|
Chris@9
|
82 #endif
|