lbajardsilogic@223: /* -*- c-basic-offset: 4 indent-tabs-mode: nil -*- vi:set ts=8 sts=4 sw=4: */ lbajardsilogic@223: lbajardsilogic@223: /* Sound Access lbajardsilogic@223: EASAIER client application. lbajardsilogic@223: Silogic 2007. Laure Bajard. lbajardsilogic@223: lbajardsilogic@223: Integration of the filter provided by: lbajardsilogic@223: Dublin Institute of Technology - Audio Research Group 2007 lbajardsilogic@223: www.audioresearchgroup.com lbajardsilogic@223: Author: Dan Barry lbajardsilogic@223: lbajardsilogic@223: This program is free software; you can redistribute it and/or lbajardsilogic@223: modify it under the terms of the GNU General Public License as lbajardsilogic@223: published by the Free Software Foundation; either version 2 of the lbajardsilogic@223: License, or (at your option) any later version. See the file lbajardsilogic@223: COPYING included with this distribution for more information. lbajardsilogic@223: */ lbajardsilogic@223: lbajardsilogic@223: #ifndef _MULTI_REAL_TIME_FILTER_H_ lbajardsilogic@223: #define _MULTI_REAL_TIME_FILTER_H_ lbajardsilogic@223: lbajardsilogic@223: #include "Filter.h" lbajardsilogic@223: #include "TimeStretchFilter.h" lbajardsilogic@223: #include "EqualizerFilter.h" lbajardsilogic@223: lbajardsilogic@223: class MultiRealTimeFilter : public Filter lbajardsilogic@223: { lbajardsilogic@223: Q_OBJECT lbajardsilogic@223: lbajardsilogic@223: public: lbajardsilogic@223: MultiRealTimeFilter(); lbajardsilogic@223: virtual ~MultiRealTimeFilter(); lbajardsilogic@223: lbajardsilogic@223: virtual void putInput(float **input, size_t samples); lbajardsilogic@223: virtual void getOutput(float **output, size_t samples); lbajardsilogic@223: lbajardsilogic@223: virtual size_t getRequiredInputSamples(size_t outputSamplesNeeded); lbajardsilogic@223: size_t getRequiredSkipSamples(); lbajardsilogic@223: lbajardsilogic@223: virtual bool allowMultiple(){return false;} lbajardsilogic@223: lbajardsilogic@223: signals: lbajardsilogic@223: void playSpeedChanged(float); lbajardsilogic@223: lbajardsilogic@223: public slots : lbajardsilogic@223: void setFilterEnabled(bool b); lbajardsilogic@223: void setFilterEnabled(int b); lbajardsilogic@223: lbajardsilogic@223: protected: lbajardsilogic@223: lbajardsilogic@223: size_t m_framesize; lbajardsilogic@223: int m_hop; lbajardsilogic@223: lbajardsilogic@223: int m_transhold; lbajardsilogic@223: lbajardsilogic@229: float *m_inputBufferL; lbajardsilogic@229: float *m_inputBufferR; lbajardsilogic@223: lbajardsilogic@229: /* DAN Removed lbajardsilogic@223: float *audioframe; lbajardsilogic@223: float *prev_audioframe; lbajardsilogic@229: float *processedframe; lbajardsilogic@229: */ lbajardsilogic@229: lbajardsilogic@223: float *window; lbajardsilogic@229: lbajardsilogic@229: // DAN Added lbajardsilogic@229: float *L_audioframe; // lbajardsilogic@229: float *R_audioframe; // lbajardsilogic@229: float *pL_audioframe; // lbajardsilogic@229: float *pR_audioframe; // lbajardsilogic@229: float *L_processedframe; // lbajardsilogic@229: float *R_processedframe; lbajardsilogic@229: lbajardsilogic@229: lbajardsilogic@229: /* DAN Removed lbajardsilogic@223: float *outbuffer; lbajardsilogic@223: float *holdbuffer3; lbajardsilogic@223: float *holdbuffer2; lbajardsilogic@223: float *holdbuffer1; lbajardsilogic@229: */ lbajardsilogic@223: lbajardsilogic@229: // DAN Added lbajardsilogic@229: float *L_outbuffer; lbajardsilogic@229: float *L_holdbuffer3; lbajardsilogic@229: float *L_holdbuffer2; lbajardsilogic@229: float *L_holdbuffer1; lbajardsilogic@229: float *R_outbuffer; lbajardsilogic@229: float *R_holdbuffer3; lbajardsilogic@229: float *R_holdbuffer2; lbajardsilogic@229: float *R_holdbuffer1; lbajardsilogic@229: lbajardsilogic@229: lbajardsilogic@229: float *L_phase; ///CURRENT FRAME phases lbajardsilogic@229: float *R_phase; ///CURRENT FRAME phases lbajardsilogic@229: float *pL_phase; ///PREVIOUS FRAME phases lbajardsilogic@229: float *pR_phase; ///PREVIOUS FRAME phases lbajardsilogic@229: float *cL_synthphase; lbajardsilogic@229: float *cR_synthphase; lbajardsilogic@229: float *pL_synthphase; lbajardsilogic@229: float *pR_synthphase; lbajardsilogic@229: lbajardsilogic@229: /* DAN Removed lbajardsilogic@223: float *c_phase; ///CURRENT FRAME phases lbajardsilogic@223: float *p_phase; ///PREVIOUS FRAME phases lbajardsilogic@223: float *c_synthphase; lbajardsilogic@223: float *p_synthphase; lbajardsilogic@223: float *synthframe; lbajardsilogic@229: */ lbajardsilogic@229: lbajardsilogic@229: // DAN Added - Following variables for EQ tool lbajardsilogic@232: /*int gainband1; lbajardsilogic@229: int gainband2; lbajardsilogic@229: int gainband3; lbajardsilogic@229: int gainband4; lbajardsilogic@232: int gainband5;*/ lbajardsilogic@229: lbajardsilogic@229: /*float *band1; lbajardsilogic@229: float *band2; lbajardsilogic@229: float *band3; lbajardsilogic@229: float *band4; lbajardsilogic@229: float *band5;*/ lbajardsilogic@229: lbajardsilogic@229: // DAN Added - Following variables for graphical plots in EQ tool lbajardsilogic@232: //float *bandcurve; lbajardsilogic@232: //float *plotbandcurve; lbajardsilogic@229: //float *eqcurve; lbajardsilogic@232: //float *plotFFTarray; lbajardsilogic@223: lbajardsilogic@223: TimeStretchFilter * m_timeStretchFilter; lbajardsilogic@223: EqualizerFilter * m_equalizerFilter; lbajardsilogic@223: lbajardsilogic@232: QMutex *m_mutex; lbajardsilogic@232: lbajardsilogic@223: }; lbajardsilogic@223: lbajardsilogic@223: #endif