BogaudioModules

BogaudioModules for VCV Rack
Log | Files | Refs | README | LICENSE

commit 4dec33c89ed943519c5336f21981ff705e94852b
parent 038095c16ffd02d01fda141aaa2e36aee98421cb
Author: Matt Demanett <matt@demanett.net>
Date:   Sun, 18 Mar 2018 17:36:44 -0400

More experiments.

Diffstat:
Msrc/Test.cpp | 37+++++++++++++++++++++++++++++++++++++
Msrc/Test.hpp | 27+++++++++++++++++++++------
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)