wip: filter constructors
This commit is contained in:
@@ -1,10 +1,16 @@
|
||||
#include "BandPassFilter.h"
|
||||
|
||||
BandPassFilter::BandPassFilter(/* args */) {
|
||||
BandPassFilter::BandPassFilter(/* args */) {}
|
||||
|
||||
BandPassFilter::BandPassFilter(Filter* filter) {
|
||||
m_freq = filter->GetFreq();
|
||||
m_q = filter->GetRes();
|
||||
m_order = filter->GetPeakGain();
|
||||
}
|
||||
|
||||
BandPassFilter::~BandPassFilter() {
|
||||
}
|
||||
BandPassFilter::BandPassFilter(float freq, float res, float q) {}
|
||||
|
||||
BandPassFilter::~BandPassFilter() {}
|
||||
|
||||
void BandPassFilter::calculate_coefficients() {
|
||||
Filter::Normals base = calculate_normals();
|
||||
|
||||
@@ -1,11 +1,9 @@
|
||||
#include "Filter.h"
|
||||
#include "Settings.h"
|
||||
|
||||
Filter::Filter(/* args */) {
|
||||
}
|
||||
Filter::Filter(/* args */) {}
|
||||
|
||||
Filter::~Filter() {
|
||||
}
|
||||
Filter::~Filter() {}
|
||||
|
||||
Filter::Normals Filter::calculate_normals() {
|
||||
Filter::Normals res;
|
||||
@@ -15,11 +13,9 @@ Filter::Normals Filter::calculate_normals() {
|
||||
return res;
|
||||
}
|
||||
|
||||
void Filter::Trigger() {
|
||||
}
|
||||
void Filter::Trigger() {}
|
||||
|
||||
void Filter::Release() {
|
||||
}
|
||||
void Filter::Release() {}
|
||||
|
||||
float Filter::Process(float in) {
|
||||
float out = in * m_a0 + m_z1;
|
||||
@@ -29,8 +25,9 @@ float Filter::Process(float in) {
|
||||
}
|
||||
|
||||
void Filter::Process(std::vector<float>& samples) {
|
||||
// todo: that will not work for ADSR-controlled filter. So, let's calculate all the possible frequency values into array/dictionary
|
||||
// then just lookup for each sample
|
||||
// todo: that will not work for ADSR-controlled filter. So, let's calculate
|
||||
// all the possible frequency values into array/dictionary then just lookup
|
||||
// for each sample
|
||||
calculate_coefficients();
|
||||
for (std::size_t i = 0; i < samples.size(); i++) {
|
||||
samples[i] = Process(samples[i]);
|
||||
|
||||
@@ -1,10 +1,16 @@
|
||||
#include "HighPassFilter.h"
|
||||
|
||||
HighPassFilter::HighPassFilter(/* args */) {
|
||||
HighPassFilter::HighPassFilter(/* args */) {}
|
||||
|
||||
HighPassFilter::HighPassFilter(Filter* filter) {
|
||||
m_freq = filter->GetFreq();
|
||||
m_q = filter->GetRes();
|
||||
m_order = filter->GetPeakGain();
|
||||
}
|
||||
|
||||
HighPassFilter::~HighPassFilter() {
|
||||
}
|
||||
HighPassFilter::HighPassFilter(float freq, float res, float q) {}
|
||||
|
||||
HighPassFilter::~HighPassFilter() {}
|
||||
|
||||
void HighPassFilter::calculate_coefficients() {
|
||||
Filter::Normals base = calculate_normals();
|
||||
|
||||
@@ -1,16 +1,27 @@
|
||||
#include "LowPassFilter.h"
|
||||
#include "Settings.h"
|
||||
|
||||
LowPassFilter::LowPassFilter(/* args */) {
|
||||
//todo: defaults
|
||||
LowPassFilter::LowPassFilter() {
|
||||
// todo: defaults
|
||||
m_freq = 200.f / SAMPLE_RATE;
|
||||
m_q = 0.707;
|
||||
m_q = 0.707f;
|
||||
m_order = 0;
|
||||
}
|
||||
|
||||
LowPassFilter::~LowPassFilter() {
|
||||
LowPassFilter::LowPassFilter(float freq, float res, float q) {
|
||||
m_freq = freq / SAMPLE_RATE;
|
||||
m_q = res;
|
||||
m_order = q;
|
||||
}
|
||||
|
||||
LowPassFilter::LowPassFilter(Filter* filter) {
|
||||
m_freq = filter->GetFreq();
|
||||
m_q = filter->GetRes();
|
||||
m_order = filter->GetPeakGain();
|
||||
}
|
||||
|
||||
LowPassFilter::~LowPassFilter() {}
|
||||
|
||||
void LowPassFilter::calculate_coefficients() {
|
||||
Filter::Normals base = calculate_normals();
|
||||
m_norm = 1 / (1 + base.K / m_q + base.K * base.K);
|
||||
|
||||
Reference in New Issue
Block a user