-
Notifications
You must be signed in to change notification settings - Fork 6
/
Mixer.cpp
33 lines (27 loc) · 634 Bytes
/
Mixer.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
#include "Mixer.h"
void Mixer::executeMix(const IQSampleVector &mix_in,
IQSampleVector &mix_out)
{
for (auto &col : mix_in)
{
std::complex<float> v;
v = NumericOscilator();
v = v * col;
mix_out.insert(mix_out.end(), v);
}
}
void Mixer::setup(float SampleRate, float MixerFrequency){
Mixer::SampleRate = SampleRate;
Mixer::MixerFrequency = MixerFrequency;
Steps = 0;
}
std::complex<float> Mixer::NumericOscilator()
{
std::complex<float> v;
double angle = Steps * MixerFrequency * (2 * M_PI / SampleRate);
if (++Steps >= SampleRate)
Steps = 0;
v.real(cos(angle));
v.imag(sin(angle));
return v;
}