Mercurial > hg > easaier-soundaccess
annotate sv/filter/MultiRealTimeFilter.h @ 223:c413e82a4812
reorganise RealTimeFilter for Equalizer integration
author | lbajardsilogic |
---|---|
date | Mon, 11 Feb 2008 15:17:54 +0000 |
parents | |
children | 7d5d51145b81 |
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@223 | 56 float *m_inputBuffer; |
lbajardsilogic@223 | 57 |
lbajardsilogic@223 | 58 float *audioframe; |
lbajardsilogic@223 | 59 float *prev_audioframe; |
lbajardsilogic@223 | 60 float *window; |
lbajardsilogic@223 | 61 float *processedframe; |
lbajardsilogic@223 | 62 float *outbuffer; |
lbajardsilogic@223 | 63 float *holdbuffer3; |
lbajardsilogic@223 | 64 float *holdbuffer2; |
lbajardsilogic@223 | 65 float *holdbuffer1; |
lbajardsilogic@223 | 66 |
lbajardsilogic@223 | 67 float *c_phase; ///CURRENT FRAME phases |
lbajardsilogic@223 | 68 float *p_phase; ///PREVIOUS FRAME phases |
lbajardsilogic@223 | 69 float *c_synthphase; |
lbajardsilogic@223 | 70 float *p_synthphase; |
lbajardsilogic@223 | 71 float *synthframe; |
lbajardsilogic@223 | 72 |
lbajardsilogic@223 | 73 TimeStretchFilter * m_timeStretchFilter; |
lbajardsilogic@223 | 74 EqualizerFilter * m_equalizerFilter; |
lbajardsilogic@223 | 75 |
lbajardsilogic@223 | 76 }; |
lbajardsilogic@223 | 77 |
lbajardsilogic@223 | 78 #endif |