annotate devuvuzelator-ladspa.h @ 18:192333077923

* Add LADSPA header
author Chris Cannam
date Fri, 18 Jun 2010 11:17:06 +0100
parents a1539d4e3b08
children
rev   line source
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