#pragma once
// base class
#include "VAOnePoleFilterEx.h"
// abstract base class for RackAFX filters
class CVADiodeLadderFilter
{
public:
// RackAFX Plug-In API Member Methods:
// The followung 5 methods must be impelemented for a meaningful Plug-In
//
// 1. One Time Initialization
CVADiodeLadderFilter();
// 2. One Time Destruction
virtual ~CVADiodeLadderFilter(void);
// 3. The Prepare For Play Function is called just before audio streams
bool prepareForPlay(float fs);
// Add your code here: ----------------------------------------------------------- //
CVAOnePoleFilterEx m_LPF1;
CVAOnePoleFilterEx m_LPF2;
CVAOnePoleFilterEx m_LPF3;
CVAOnePoleFilterEx m_LPF4;
double m_dGAMMA; // Gamma see App Note
// our feedback S values (global)
double m_dSG1;
double m_dSG2;
double m_dSG3;
double m_dSG4;
void reset()
{
m_LPF1.reset(); m_LPF2.reset();
m_LPF3.reset(); m_LPF4.reset();
m_LPF1.setFeedback(0.0); m_LPF2.setFeedback(0.0);
m_LPF3.setFeedback(0.0); m_LPF4.setFeedback(0.0);
}
// recalc the coeffs
void updateFilter();
// do the filter
double doFilter(double xn);
float m_nSampleRate;
double m_dFc;
double m_dK;
double m_dSaturation;
UINT m_NonLinearProcessing;
enum{OFF,ON};
UINT m_uNLPType;
enum{NORM,REG};
};
#pragma once
// base class
#include "VAOnePoleFilterEx.h"
// abstract base class for RackAFX filters
class CVADiodeLadderFilter
{
public:
// RackAFX Plug-In API Member Methods:
// The followung 5 methods must be impelemented for a meaningful Plug-In
//
// 1. One Time Initialization
CVADiodeLadderFilter();
// 2. One Time Destruction
virtual ~CVADiodeLadderFilter(void);
// 3. The Prepare For Play Function is called just before audio streams
bool prepareForPlay(float fs);
// Add your code here: ----------------------------------------------------------- //
CVAOnePoleFilterEx m_LPF1;
CVAOnePoleFilterEx m_LPF2;
CVAOnePoleFilterEx m_LPF3;
CVAOnePoleFilterEx m_LPF4;
double m_dGAMMA; // Gamma see App Note
// our feedback S values (global)
double m_dSG1;
double m_dSG2;
double m_dSG3;
double m_dSG4;
void reset()
{
m_LPF1.reset(); m_LPF2.reset();
m_LPF3.reset(); m_LPF4.reset();
m_LPF1.setFeedback(0.0); m_LPF2.setFeedback(0.0);
m_LPF3.setFeedback(0.0); m_LPF4.setFeedback(0.0);
}
// recalc the coeffs
void updateFilter();
// do the filter
double doFilter(double xn);
float m_nSampleRate;
double m_dFc;
double m_dK;
double m_dSaturation;
UINT m_NonLinearProcessing;
enum{OFF,ON};
UINT m_uNLPType;
enum{NORM,REG};
};