commit 4dec33c89ed943519c5336f21981ff705e94852b
parent 038095c16ffd02d01fda141aaa2e36aee98421cb
Author: Matt Demanett <matt@demanett.net>
Date: Sun, 18 Mar 2018 17:36:44 -0400
More experiments.
Diffstat:
2 files changed, 58 insertions(+), 6 deletions(-)
diff --git a/src/Test.cpp b/src/Test.cpp
@@ -117,6 +117,36 @@ void Test::step() {
}
outputs[OUT2_OUTPUT].value = s * 5.0;
+#elif OVERSAMPLED_BL
+ int quality = params[PARAM2_PARAM].value * 100;
+ const int maxOversample = 16;
+ int oversample = params[PARAM3_PARAM].value * maxOversample;
+
+ _saw1.setSampleRate(engineGetSampleRate());
+ _saw1.setFrequency(oscillatorPitch());
+ _saw1.setQuality(quality);
+ outputs[OUT_OUTPUT].value = _saw1.next();
+
+ _saw2.setSampleRate(engineGetSampleRate());
+ _saw2.setQuality(quality);
+ if (oversample < 1) {
+ _saw2.setFrequency(oscillatorPitch());
+ outputs[OUT2_OUTPUT].value = _saw2.next();
+ }
+ else {
+ _saw2.setFrequency(oscillatorPitch() / (float)oversample);
+ _lpf.setParams(
+ engineGetSampleRate(),
+ engineGetSampleRate() / 4.0f,
+ 0.03
+ );
+ float s = 0.0f;
+ for (int i = 0; i < oversample; ++i) {
+ s = _lpf.next(_saw2.next());
+ }
+ outputs[OUT2_OUTPUT].value = s;
+ }
+
#elif FM
float baseHz = oscillatorPitch();
float ratio = ratio2();
@@ -127,6 +157,13 @@ void Test::step() {
_carrier.setFrequency(baseHz + hz);
outputs[OUT_OUTPUT].value = _carrier.next() * 5.0f;
+ // _modulator2.setSampleRate(engineGetSampleRate());
+ // _modulator2.setFrequency(baseHz * ratio2());
+ // float hz2 = _modulator2.next() * index3() * ratio * baseHz;
+ // _carrier2.setSampleRate(engineGetSampleRate());
+ // _carrier2.setFrequency(std::max(baseHz + hz2, 0.0f));
+ // outputs[OUT2_OUTPUT].value = _carrier2.next() * 5.0f;
+
#elif PM
_carrier.setSampleRate(engineGetSampleRate());
_carrier.setFrequency(oscillatorPitch());
diff --git a/src/Test.hpp b/src/Test.hpp
@@ -6,15 +6,16 @@ extern Model* modelTest;
// #define LPF 1
// #define LPFNOISE 1
-#define SINE 1
+// #define SINE 1
// #define SQUARE 1
// #define SAW 1
// #define SATSAW 1
// #define TRIANGLE 1
// #define SINEBANK 1
// #define OVERSAMPLING 1
+// #define OVERSAMPLED_BL 1
// #define FM 1
-// #define PM 1
+#define PM 1
// #define FEEDBACK_PM 1
// #define EG 1
// #define TABLES 1
@@ -42,6 +43,9 @@ extern Model* modelTest;
#include "dsp/decimator.hpp" // rack
#include "dsp/filter.hpp"
#define OVERSAMPLEN 16
+#elif OVERSAMPLED_BL
+#include "dsp/oscillator.hpp"
+#include "dsp/filter.hpp"
#elif FM
#include "dsp/oscillator.hpp"
#elif PM
@@ -109,13 +113,18 @@ struct Test : Module {
SineBankOscillator _sineBank;
#elif OVERSAMPLING
SawOscillator _saw1;
- rack::Decimator<OVERSAMPLEN, OVERSAMPLEN> _rackDecimator;
SawOscillator _saw2;
LowPassFilter _lpf;
LowPassFilter _lpf2;
+#elif OVERSAMPLED_BL
+ BandLimitedSawOscillator _saw1;
+ BandLimitedSawOscillator _saw2;
+ LowPassFilter _lpf;
#elif FM
SineTableOscillator _modulator;
SineTableOscillator _carrier;
+ // SineTableOscillator _modulator2;
+ // SineTableOscillator _carrier2;
#elif PM
SineTableOscillator _modulator;
SineTableOscillator _carrier;
@@ -145,9 +154,9 @@ struct Test : Module {
#elif SAW
, _saw(44100.0, 1000.0, 5.0)
, _saw2(44100.0, 1000.0, 5.0, 8)
- #elif SATSAW
- , _saw(44100.0, 1000.0, 5.0)
- , _saw2(44100.0, 1000.0, 5.0, 8)
+#elif SATSAW
+ , _saw(44100.0, 1000.0, 5.0)
+ , _saw2(44100.0, 1000.0, 5.0, 8)
#elif TRIANGLE
, _triangle(44100.0, 1000.0, 5.0)
#elif SINEBANK
@@ -157,9 +166,15 @@ struct Test : Module {
, _saw2(44100.0, 1000.0, 1.0)
, _lpf(44100.0, 1000.0, 1.0)
, _lpf2(44100.0, 1000.0, 1.0)
+#elif OVERSAMPLED_BL
+ , _saw1(44100.0, 1000.0, 5.0)
+ , _saw2(44100.0, 1000.0, 5.0)
+ , _lpf(44100.0, 1000.0, 1.0)
#elif FM
, _modulator(44100.0, 1000.0, 1.0)
, _carrier(44100.0, 1000.0, 1.0)
+ // , _modulator2(44100.0, 1000.0, 1.0)
+ // , _carrier2(44100.0, 1000.0, 1.0)
#elif PM
, _modulator(44100.0, 1000.0, 1.0)
, _carrier(44100.0, 1000.0)