14#include "Utility/dsp.h"
32template <
int num_harmonics = 16>
50 newamplitude_[
i] = 0.f;
53 newamplitude_[0] = 1.f;
70 *
static_cast<float>(first_harmonic_index_ +
i);
75 amplitude_[
i] = newamplitude_[
i] * (1.0f -
f * 2.0f);
84 const float two_x = 2.0f *
sinf(phase_ * TWOPI_F);
86 if(first_harmonic_index_ == 1)
93 const float k = first_harmonic_index_;
119 recalc_ = cmp(
freq, frequency_) || recalc_;
129 recalc_ = cmp(
idx, first_harmonic_index_) || recalc_;
130 first_harmonic_index_ =
idx;
140 recalc_ = cmp(newamplitude_[
i],
amplitudes[
i]) || recalc_;
155 recalc_ = cmp(amplitude_[
idx],
amp) || recalc_;
161 bool cmp(
float a,
float b) {
return fabsf(
a -
b) > .000001f; }
166 float amplitude_[num_harmonics];
167 float newamplitude_[num_harmonics];
170 int first_harmonic_index_;
Definition delayline.h:29
Harmonic Oscillator Module based on Chebyshev polynomials.
Definition harmonic_osc.h:34
float Process()
Definition harmonic_osc.h:62
void Init(float sample_rate)
Definition harmonic_osc.h:42
void SetFreq(float freq)
Definition harmonic_osc.h:113
void SetAmplitudes(const float *amplitudes)
Definition harmonic_osc.h:136
void SetFirstHarmIdx(int idx)
Definition harmonic_osc.h:126
void SetSingleAmp(const float amp, int idx)
Definition harmonic_osc.h:149
FIR Filter implementation, generic and ARM CMSIS DSP based.
Definition adenv.h:16