BogaudioModules

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

commit 04d2087a9c3acea15469a769eee445247de44436
parent f73f703f66f3e3943339b6ce81d0692fb498d8e8
Author: Matt Demanett <matt@demanett.net>
Date:   Mon, 23 Apr 2018 23:57:05 -0400

Oscillators: fix max frequency; fine control to +/-1 semitone.

Diffstat:
Msrc/Additator.cpp | 4++--
Msrc/FMOp.cpp | 4++--
Msrc/VCO.cpp | 4++--
Msrc/XCO.cpp | 4++--
4 files changed, 8 insertions(+), 8 deletions(-)

diff --git a/src/Additator.cpp b/src/Additator.cpp @@ -10,7 +10,7 @@ void Additator::onReset() { void Additator::onSampleRateChange() { float sampleRate = engineGetSampleRate(); _oscillator.setSampleRate(sampleRate); - _maxFrequency = 0.47f * sampleRate; + _maxFrequency = 0.475f * sampleRate; _steps = modulationSteps; _phase = PHASE_RESET; _widthSL.setParams(sampleRate, slewLimitTime);; @@ -119,7 +119,7 @@ void Additator::step() { } float frequency = params[FREQUENCY_PARAM].value; - frequency += params[FINE_PARAM].value; + frequency += params[FINE_PARAM].value / 12.0f;; if (inputs[PITCH_INPUT].active) { frequency += clamp(inputs[PITCH_INPUT].value, -5.0f, 5.0f); } diff --git a/src/FMOp.cpp b/src/FMOp.cpp @@ -15,7 +15,7 @@ void FMOp::onSampleRateChange() { _phasor.setSampleRate(sampleRate); _sineTable.setSampleRate(sampleRate); _decimator.setParams(sampleRate, oversample); - _maxFrequency = 0.47f * sampleRate; + _maxFrequency = 0.475f * sampleRate; _feedbackSL.setParams(sampleRate, slewLimitTime); _depthSL.setParams(sampleRate, slewLimitTime); _levelSL.setParams(sampleRate, slewLimitTime); @@ -55,7 +55,7 @@ void FMOp::step() { ratio += 1.0f; } float frequency = pitchIn; - frequency += params[FINE_PARAM].value; + frequency += params[FINE_PARAM].value / 12.0f; frequency = cvToFrequency(frequency); frequency *= ratio; frequency = clamp(frequency, -_maxFrequency, _maxFrequency); diff --git a/src/VCO.cpp b/src/VCO.cpp @@ -30,7 +30,7 @@ void VCO::step() { _modulationStep = 0; _baseVOct = params[FREQUENCY_PARAM].value; - _baseVOct += params[FINE_PARAM].value; + _baseVOct += params[FINE_PARAM].value / 12.0f; if (inputs[PITCH_INPUT].active) { _baseVOct += clamp(inputs[PITCH_INPUT].value, -5.0f, 5.0f); } @@ -144,7 +144,7 @@ void VCO::setSampleRate(float sampleRate) { } void VCO::setFrequency(float frequency) { - if (_frequency != frequency && frequency < 0.47f * _phasor._sampleRate) { + if (_frequency != frequency && frequency < 0.475f * _phasor._sampleRate) { _frequency = frequency; _phasor.setFrequency(_frequency / (float)oversample); _square.setFrequency(_frequency); diff --git a/src/XCO.cpp b/src/XCO.cpp @@ -31,7 +31,7 @@ void XCO::step() { _modulationStep = 0; _baseVOct = params[FREQUENCY_PARAM].value; - _baseVOct += params[FINE_PARAM].value; + _baseVOct += params[FINE_PARAM].value / 12.0f;; if (inputs[PITCH_INPUT].active) { _baseVOct += clamp(inputs[PITCH_INPUT].value, -5.0f, 5.0f); } @@ -241,7 +241,7 @@ void XCO::setSampleRate(float sampleRate) { } void XCO::setFrequency(float frequency) { - if (_frequency != frequency && frequency < 0.47f * _phasor._sampleRate) { + if (_frequency != frequency && frequency < 0.475f * _phasor._sampleRate) { _frequency = frequency; _phasor.setFrequency(_frequency / (float)oversample); _square.setFrequency(_frequency);