ViPERFX_RE/src/cpp/viper/utils/Crossfeed.h

46 lines
718 B
C
Raw Normal View History

2021-07-27 09:47:15 +02:00
#pragma once
#include <cstdint>
typedef struct {
uint16_t cutoff;
uint16_t feedback;
} preset_t;
class Crossfeed {
public:
Crossfeed();
void Reset();
void ProcessFrames(float *buffer, uint32_t size);
void FilterSample(float *sample);
2021-07-27 09:47:15 +02:00
uint16_t GetCutoff();
2021-07-27 09:47:15 +02:00
float GetFeedback();
2021-07-27 09:47:15 +02:00
float GetLevelDelay();
2021-07-27 09:47:15 +02:00
preset_t GetPreset();
2021-07-27 09:47:15 +02:00
void SetCutoff(uint16_t cutoff);
2021-07-27 09:47:15 +02:00
void SetFeedback(float feedback);
2021-07-27 09:47:15 +02:00
void SetPreset(preset_t preset);
2021-07-27 09:47:15 +02:00
void SetSamplingRate(uint32_t samplerate);
uint32_t samplerate;
float a0_lo, b1_lo;
float a0_hi, b1_hi, a1_hi;
float gain;
struct {
float asis[2], lo[2], hi[2];
} lfs;
preset_t preset;
};