annotate sv/filter/MultiRealTimeFilter.h @ 229:7d5d51145b81

support stereo in MultiRealTimeFilter and integrate Equalizer filter
author lbajardsilogic
date Wed, 05 Mar 2008 14:08:57 +0000
parents c413e82a4812
children 70b88fbbfb5c
rev   line source
lbajardsilogic@223 1 /* -*- c-basic-offset: 4 indent-tabs-mode: nil -*- vi:set ts=8 sts=4 sw=4: */
lbajardsilogic@223 2
lbajardsilogic@223 3 /* Sound Access
lbajardsilogic@223 4 EASAIER client application.
lbajardsilogic@223 5 Silogic 2007. Laure Bajard.
lbajardsilogic@223 6
lbajardsilogic@223 7 Integration of the filter provided by:
lbajardsilogic@223 8 Dublin Institute of Technology - Audio Research Group 2007
lbajardsilogic@223 9 www.audioresearchgroup.com
lbajardsilogic@223 10 Author: Dan Barry
lbajardsilogic@223 11
lbajardsilogic@223 12 This program is free software; you can redistribute it and/or
lbajardsilogic@223 13 modify it under the terms of the GNU General Public License as
lbajardsilogic@223 14 published by the Free Software Foundation; either version 2 of the
lbajardsilogic@223 15 License, or (at your option) any later version. See the file
lbajardsilogic@223 16 COPYING included with this distribution for more information.
lbajardsilogic@223 17 */
lbajardsilogic@223 18
lbajardsilogic@223 19 #ifndef _MULTI_REAL_TIME_FILTER_H_
lbajardsilogic@223 20 #define _MULTI_REAL_TIME_FILTER_H_
lbajardsilogic@223 21
lbajardsilogic@223 22 #include "Filter.h"
lbajardsilogic@223 23 #include "TimeStretchFilter.h"
lbajardsilogic@223 24 #include "EqualizerFilter.h"
lbajardsilogic@223 25
lbajardsilogic@223 26 class MultiRealTimeFilter : public Filter
lbajardsilogic@223 27 {
lbajardsilogic@223 28 Q_OBJECT
lbajardsilogic@223 29
lbajardsilogic@223 30 public:
lbajardsilogic@223 31 MultiRealTimeFilter();
lbajardsilogic@223 32 virtual ~MultiRealTimeFilter();
lbajardsilogic@223 33
lbajardsilogic@223 34 virtual void putInput(float **input, size_t samples);
lbajardsilogic@223 35 virtual void getOutput(float **output, size_t samples);
lbajardsilogic@223 36
lbajardsilogic@223 37 virtual size_t getRequiredInputSamples(size_t outputSamplesNeeded);
lbajardsilogic@223 38 size_t getRequiredSkipSamples();
lbajardsilogic@223 39
lbajardsilogic@223 40 virtual bool allowMultiple(){return false;}
lbajardsilogic@223 41
lbajardsilogic@223 42 signals:
lbajardsilogic@223 43 void playSpeedChanged(float);
lbajardsilogic@223 44
lbajardsilogic@223 45 public slots :
lbajardsilogic@223 46 void setFilterEnabled(bool b);
lbajardsilogic@223 47 void setFilterEnabled(int b);
lbajardsilogic@223 48
lbajardsilogic@223 49 protected:
lbajardsilogic@223 50
lbajardsilogic@223 51 size_t m_framesize;
lbajardsilogic@223 52 int m_hop;
lbajardsilogic@223 53
lbajardsilogic@223 54 int m_transhold;
lbajardsilogic@223 55
lbajardsilogic@229 56 float *m_inputBufferL;
lbajardsilogic@229 57 float *m_inputBufferR;
lbajardsilogic@223 58
lbajardsilogic@229 59 /* DAN Removed
lbajardsilogic@223 60 float *audioframe;
lbajardsilogic@223 61 float *prev_audioframe;
lbajardsilogic@229 62 float *processedframe;
lbajardsilogic@229 63 */
lbajardsilogic@229 64
lbajardsilogic@223 65 float *window;
lbajardsilogic@229 66
lbajardsilogic@229 67 // DAN Added
lbajardsilogic@229 68 float *L_audioframe; //
lbajardsilogic@229 69 float *R_audioframe; //
lbajardsilogic@229 70 float *pL_audioframe; //
lbajardsilogic@229 71 float *pR_audioframe; //
lbajardsilogic@229 72 float *L_processedframe; //
lbajardsilogic@229 73 float *R_processedframe;
lbajardsilogic@229 74
lbajardsilogic@229 75
lbajardsilogic@229 76 /* DAN Removed
lbajardsilogic@223 77 float *outbuffer;
lbajardsilogic@223 78 float *holdbuffer3;
lbajardsilogic@223 79 float *holdbuffer2;
lbajardsilogic@223 80 float *holdbuffer1;
lbajardsilogic@229 81 */
lbajardsilogic@223 82
lbajardsilogic@229 83 // DAN Added
lbajardsilogic@229 84 float *L_outbuffer;
lbajardsilogic@229 85 float *L_holdbuffer3;
lbajardsilogic@229 86 float *L_holdbuffer2;
lbajardsilogic@229 87 float *L_holdbuffer1;
lbajardsilogic@229 88 float *R_outbuffer;
lbajardsilogic@229 89 float *R_holdbuffer3;
lbajardsilogic@229 90 float *R_holdbuffer2;
lbajardsilogic@229 91 float *R_holdbuffer1;
lbajardsilogic@229 92
lbajardsilogic@229 93
lbajardsilogic@229 94 float *L_phase; ///CURRENT FRAME phases
lbajardsilogic@229 95 float *R_phase; ///CURRENT FRAME phases
lbajardsilogic@229 96 float *pL_phase; ///PREVIOUS FRAME phases
lbajardsilogic@229 97 float *pR_phase; ///PREVIOUS FRAME phases
lbajardsilogic@229 98 float *cL_synthphase;
lbajardsilogic@229 99 float *cR_synthphase;
lbajardsilogic@229 100 float *pL_synthphase;
lbajardsilogic@229 101 float *pR_synthphase;
lbajardsilogic@229 102
lbajardsilogic@229 103 /* DAN Removed
lbajardsilogic@223 104 float *c_phase; ///CURRENT FRAME phases
lbajardsilogic@223 105 float *p_phase; ///PREVIOUS FRAME phases
lbajardsilogic@223 106 float *c_synthphase;
lbajardsilogic@223 107 float *p_synthphase;
lbajardsilogic@223 108 float *synthframe;
lbajardsilogic@229 109 */
lbajardsilogic@229 110
lbajardsilogic@229 111 // DAN Added - Following variables for EQ tool
lbajardsilogic@229 112 int gainband1;
lbajardsilogic@229 113 int gainband2;
lbajardsilogic@229 114 int gainband3;
lbajardsilogic@229 115 int gainband4;
lbajardsilogic@229 116 int gainband5;
lbajardsilogic@229 117
lbajardsilogic@229 118 /*float *band1;
lbajardsilogic@229 119 float *band2;
lbajardsilogic@229 120 float *band3;
lbajardsilogic@229 121 float *band4;
lbajardsilogic@229 122 float *band5;*/
lbajardsilogic@229 123
lbajardsilogic@229 124 // DAN Added - Following variables for graphical plots in EQ tool
lbajardsilogic@229 125 float *bandcurve;
lbajardsilogic@229 126 float *plotbandcurve;
lbajardsilogic@229 127 //float *eqcurve;
lbajardsilogic@229 128 float *plotFFTarray;
lbajardsilogic@223 129
lbajardsilogic@223 130 TimeStretchFilter * m_timeStretchFilter;
lbajardsilogic@223 131 EqualizerFilter * m_equalizerFilter;
lbajardsilogic@223 132
lbajardsilogic@223 133 };
lbajardsilogic@223 134
lbajardsilogic@223 135 #endif