cog/Frameworks/OpenMPT.old/OpenMPT/sounddsp/EQ.h

70 lines
1.4 KiB
C++

/*
* EQ.h
* ----
* Purpose: Mixing code for equalizer.
* Notes : Ugh... This should really be removed at some point.
* Authors: Olivier Lapicque
* OpenMPT Devs
* The OpenMPT source code is released under the BSD license. Read LICENSE for more details.
*/
#pragma once
#include "BuildSettings.h"
#include "../soundlib/Mixer.h" // For MIXBUFFERSIZE
OPENMPT_NAMESPACE_BEGIN
#ifndef NO_EQ
#define MAX_EQ_BANDS 6
typedef struct _EQBANDSTRUCT
{
float32 a0;
float32 a1;
float32 a2;
float32 b1;
float32 b2;
float32 x1;
float32 x2;
float32 y1;
float32 y2;
float32 Gain;
float32 CenterFrequency;
bool bEnable;
} EQBANDSTRUCT;
class CEQ
{
private:
EQBANDSTRUCT gEQ[MAX_EQ_BANDS*2];
public:
CEQ();
public:
void Initialize(bool bReset, DWORD MixingFreq);
void ProcessStereo(int *pbuffer, float *MixFloatBuffer, UINT nCount);
void ProcessMono(int *pbuffer, float *MixFloatBuffer, UINT nCount);
void SetEQGains(const UINT *pGains, UINT nGains, const UINT *pFreqs, bool bReset, DWORD MixingFreq);
};
class CQuadEQ
{
private:
CEQ front;
CEQ rear;
float EQTempFloatBuffer[MIXBUFFERSIZE * 2];
public:
void Initialize(bool bReset, DWORD MixingFreq);
void Process(int *frontBuffer, int *rearBuffer, UINT nCount, UINT nChannels);
void SetEQGains(const UINT *pGains, UINT nGains, const UINT *pFreqs, bool bReset, DWORD MixingFreq);
};
#endif // !NO_EQ
OPENMPT_NAMESPACE_END