
/*
  File: include/sq2_audiosys/Interface_Equalizer.h
  Description: Interface to the Sonique 2 audio equalizer plugin
  Part of the Mantis project
  (c) 2002 Lycos Inc.

  This file is distributed for the sole purpose of allowing you to write
  software to interface with Sonique 2 and other Mantis programs. It is
  not to be modified or used for any other purpose without written
  authorization.

  If you redistribute this file, it must be in the original package
  complete with all other files provided, including the usage agreement.

  Do not remove this notice.
*/

#ifndef _INTERFACE_EQUALIZER_H_
#define _INTERFACE_EQUALIZER_H_

#include "mgeneric.h"

class EQData
{
public:
	double Frequency, Bandwidth, Gain;
};

class MSoniqueEqualizerChangeCallback : public MGeneric
{
public:
	virtual void		__stdcall EQChangeCallback()							= 0;
};

class MSoniqueEqualizer : public MGeneric
{
public:
	virtual int32		__stdcall GetNumBands() const							= 0;
	virtual MRESULT		__stdcall SetNumBands(int32 lNumBands)					= 0;
	virtual MRESULT		__stdcall GetEQData( Array<EQData>& aData ) const		= 0;
	virtual MRESULT		__stdcall SetEQData( const Array<EQData>& aData )		= 0;
	virtual MRESULT		__stdcall GetBandGain( int32 nBand, double& lfGain ) const	= 0;
	virtual MRESULT		__stdcall SetBandGain( int32 nBand, double lfGain )		= 0;
	virtual MRESULT		__stdcall Reset( )										= 0;
	virtual MRESULT		__stdcall RegisterChangeCallback( MSoniqueEqualizerChangeCallback* pCallback, bool bAdd) = 0;
};

#endif//_INTERFACE_EQUALIZER_H_
