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();
|
2022-08-23 00:26:44 +02:00
|
|
|
|
|
|
|
void ProcessFrames(float *buffer, uint32_t size);
|
|
|
|
|
|
|
|
void FilterSample(float *sample);
|
2021-07-27 09:47:15 +02:00
|
|
|
|
|
|
|
uint16_t GetCutoff();
|
2022-08-23 00:26:44 +02:00
|
|
|
|
2021-07-27 09:47:15 +02:00
|
|
|
float GetFeedback();
|
2022-08-23 00:26:44 +02:00
|
|
|
|
2021-07-27 09:47:15 +02:00
|
|
|
float GetLevelDelay();
|
2022-08-23 00:26:44 +02:00
|
|
|
|
2021-07-27 09:47:15 +02:00
|
|
|
preset_t GetPreset();
|
2022-08-23 00:26:44 +02:00
|
|
|
|
2021-07-27 09:47:15 +02:00
|
|
|
void SetCutoff(uint16_t cutoff);
|
2022-08-23 00:26:44 +02:00
|
|
|
|
2021-07-27 09:47:15 +02:00
|
|
|
void SetFeedback(float feedback);
|
2022-08-23 00:26:44 +02:00
|
|
|
|
2021-07-27 09:47:15 +02:00
|
|
|
void SetPreset(preset_t preset);
|
2022-08-23 00:26:44 +02:00
|
|
|
|
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;
|
|
|
|
};
|