1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/blumia-PineappleSynth

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
Filter.h 1.2 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
Gary Wang Отправлено 16.08.2016 10:50 baa2b31
#pragma once
#include <cmath>
class Filter {
public:
enum FilterMode {
FILTER_MODE_LOWPASS = 0,
FILTER_MODE_HIGHPASS,
FILTER_MODE_BANDPASS,
kNumFilterModes
};
Filter() :
cutoff(0.99),
resonance(0.01),
cutoffMod(0.0),
mode(FILTER_MODE_LOWPASS),
buf0(0.0),
buf1(0.0),
buf2(0.0),
buf3(0.0)
{
calculateFeedbackAmount();
};
double process(double inputValue);
inline void setCutoff(double newCutoff) { cutoff = newCutoff; calculateFeedbackAmount(); };
inline void setCutoffMod(double newCutoffMod) {
cutoffMod = newCutoffMod;
calculateFeedbackAmount();
}
inline void setResonance(double newResonance) { resonance = newResonance; calculateFeedbackAmount(); };
inline void setFilterMode(FilterMode newMode) { mode = newMode; }
void reset() {
buf0 = buf1 = buf2 = buf3 = 0.0;
}
private:
double cutoff;
double cutoffMod;
double resonance;
FilterMode mode;
double feedbackAmount;
inline void calculateFeedbackAmount() {
feedbackAmount = resonance + resonance / (1.0 - getCalculatedCutoff());
}
inline double getCalculatedCutoff() const {
return fmax(fmin(cutoff + cutoffMod, 0.99), 0.01);
};
double buf0;
double buf1;
double buf2;
double buf3;
};

Опубликовать ( 0 )

Вы можете оставить комментарий после Вход в систему

1
https://api.gitlife.ru/oschina-mirror/blumia-PineappleSynth.git
git@api.gitlife.ru:oschina-mirror/blumia-PineappleSynth.git
oschina-mirror
blumia-PineappleSynth
blumia-PineappleSynth
master