70 lines
1.4 KiB
C
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
|