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@223: float *m_inputBuffer; lbajardsilogic@223: lbajardsilogic@223: float *audioframe; lbajardsilogic@223: float *prev_audioframe; lbajardsilogic@223: float *window; lbajardsilogic@223: float *processedframe; lbajardsilogic@223: float *outbuffer; lbajardsilogic@223: float *holdbuffer3; lbajardsilogic@223: float *holdbuffer2; lbajardsilogic@223: float *holdbuffer1; lbajardsilogic@223: 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@223: lbajardsilogic@223: TimeStretchFilter * m_timeStretchFilter; lbajardsilogic@223: EqualizerFilter * m_equalizerFilter; lbajardsilogic@223: lbajardsilogic@223: }; lbajardsilogic@223: lbajardsilogic@223: #endif