diff options
| author | s-ol <s-ol@users.noreply.github.com> | 2018-07-11 12:33:45 +0000 |
|---|---|---|
| committer | s-ol <s-ol@users.noreply.github.com> | 2018-07-11 13:20:18 +0000 |
| commit | 82b514e1e3e2312c90a87c1bfceba7957cc7ea9c (patch) | |
| tree | f24501418cbb4ce39560b804f8cfe65b9f2fd31e /src | |
| parent | Update README.md (diff) | |
| download | vcvmods-82b514e1e3e2312c90a87c1bfceba7957cc7ea9c.tar.gz vcvmods-82b514e1e3e2312c90a87c1bfceba7957cc7ea9c.zip | |
align VCO v/oct formula with Fundamental-VCO
Close #5
Diffstat (limited to 'src')
| -rw-r--r-- | src/CircleVCO.cpp | 7 |
1 files changed, 3 insertions, 4 deletions
diff --git a/src/CircleVCO.cpp b/src/CircleVCO.cpp index bb96bea..a13cfef 100644 --- a/src/CircleVCO.cpp +++ b/src/CircleVCO.cpp @@ -30,9 +30,8 @@ void CircleVCO::step() { float deltaTime = 1.0f / engineGetSampleRate(); float pitch = params[PITCH_PARAM].value; - pitch += inputs[PITCH_INPUT].value; - pitch = clamp(pitch, -4.0f, 4.0f); - float freq = 200.0f * (pow(2.0f, pitch) - powf(2.0f, -4.0f)); + pitch += 12.0f * inputs[PITCH_INPUT].value; + float freq = 261.626f * powf(2.0f, pitch / 12.0f); phase += freq * deltaTime; while (phase >= 1.0f) @@ -61,7 +60,7 @@ CircleVCOWidget::CircleVCOWidget(CircleVCO *module) : ModuleWidget(module) { Vec center = Vec(box.size.x, 0).minus(p.box.size).div(2); Vec kcenter = Vec(box.size.x, 0).minus(k.box.size).div(2); - addParam(ParamWidget::create<RoundSmallBlackKnob>(kcenter.plus(Vec(0, 90)), module, CircleVCO::PITCH_PARAM, 0.0, 1.0, 0.0)); + addParam(ParamWidget::create<RoundSmallBlackKnob>(kcenter.plus(Vec(0, 90)), module, CircleVCO::PITCH_PARAM, -54.0f, 54.0f, 0.0f)); addInput(Port::create<PJ301MPort>(center.plus(Vec(0, 144)), Port::INPUT, module, CircleVCO::PITCH_INPUT)); |
