view 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
line wrap: on
line source
/* -*- c-basic-offset: 4 indent-tabs-mode: nil -*-  vi:set ts=8 sts=4 sw=4: */

/*	Sound Access	
		EASAIER client application.	
		Silogic 2007. Laure Bajard. 
	
	Integration of the filter provided by:
	Dublin Institute of Technology - Audio Research Group 2007
	www.audioresearchgroup.com
	Author: Dan Barry

	This program is free software; you can redistribute it and/or    
	modify it under the terms of the GNU General Public License as    
	published by the Free Software Foundation; either version 2 of the    
	License, or (at your option) any later version.  See the file    
	COPYING included with this distribution for more information.
*/

#ifndef _MULTI_REAL_TIME_FILTER_H_
#define _MULTI_REAL_TIME_FILTER_H_

#include "Filter.h"
#include "TimeStretchFilter.h"
#include "EqualizerFilter.h"

class MultiRealTimeFilter : public Filter
{
	Q_OBJECT

public:
	MultiRealTimeFilter();
	virtual ~MultiRealTimeFilter();

	virtual void putInput(float **input, size_t samples);
	virtual void getOutput(float **output, size_t samples);

	virtual size_t getRequiredInputSamples(size_t outputSamplesNeeded);
	size_t getRequiredSkipSamples();

	virtual bool allowMultiple(){return false;}

signals: 
	void playSpeedChanged(float);

public slots :
	void setFilterEnabled(bool b);
	void setFilterEnabled(int b);

protected:

	size_t	m_framesize;
	int		m_hop;

	int		m_transhold;

	float *m_inputBufferL;
	float *m_inputBufferR;

	/* DAN Removed
	float *audioframe;
	float *prev_audioframe;
	float *processedframe;
	*/ 
	
	float *window;
	
	// DAN Added
	float *L_audioframe;		//
	float *R_audioframe;		//
	float *pL_audioframe;		//
	float *pR_audioframe;		//
	float *L_processedframe;	//
	float *R_processedframe;
	
	
	/* DAN Removed
	float *outbuffer;
	float *holdbuffer3;
	float *holdbuffer2;
	float *holdbuffer1;
	*/

	// DAN Added
	float *L_outbuffer;
	float *L_holdbuffer3;
	float *L_holdbuffer2;
	float *L_holdbuffer1;
	float *R_outbuffer;
	float *R_holdbuffer3;
	float *R_holdbuffer2;
	float *R_holdbuffer1;

	
	float *L_phase;		///CURRENT FRAME phases
	float *R_phase;		///CURRENT FRAME phases
	float *pL_phase;		///PREVIOUS FRAME phases
	float *pR_phase;		///PREVIOUS FRAME phases
	float *cL_synthphase;
	float *cR_synthphase;
	float *pL_synthphase;
	float *pR_synthphase;
	
	/* DAN Removed
	float *c_phase;		///CURRENT FRAME phases
	float *p_phase;		///PREVIOUS FRAME phases
	float *c_synthphase;
	float *p_synthphase;
	float *synthframe;
	*/

	// DAN Added - Following variables for EQ tool
	int gainband1;
	int gainband2;
	int gainband3;
	int gainband4;
	int gainband5;

	/*float *band1;
	float *band2;
	float *band3;
	float *band4;
	float *band5;*/

	// DAN Added - Following variables for graphical plots in EQ tool
	float *bandcurve;
	float *plotbandcurve;
	//float *eqcurve;
	float *plotFFTarray; 

	TimeStretchFilter * m_timeStretchFilter;
	EqualizerFilter *	m_equalizerFilter;

};

#endif