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

45 lines
740 B
C
Raw Normal View History

2021-07-27 09:47:15 +02:00
#pragma once
#include <cstdint>
class Crossfeed {
public:
2022-09-23 04:15:43 +02:00
struct Preset {
uint16_t cutoff;
uint16_t feedback;
};
2021-07-27 09:47:15 +02:00
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();
2022-09-23 04:15:43 +02:00
struct Preset 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);
2022-09-23 04:15:43 +02:00
void SetPreset(struct Preset preset);
2022-09-23 04:15:43 +02:00
void SetSamplingRate(uint32_t samplingRate);
2021-07-27 09:47:15 +02:00
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;
2022-09-23 04:15:43 +02:00
struct Preset preset;
2021-07-27 09:47:15 +02:00
};