BogaudioModules

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

commit c3508f753f85b137d81754fa827cf7bcef3da093
parent 0543232bc6919838340b5c93e4888e27fc7d9625
Author: Matt Demanett <matt@demanett.net>
Date:   Mon, 28 Sep 2020 22:37:22 -0400

Analyzers: fix frequency axis labelling in some odd caes; add 75% frequency ranges on ANALYZER-XL and RANALYZER.

Diffstat:
Msrc/analyzer_base.cpp | 40++++++++++++++--------------------------
1 file changed, 14 insertions(+), 26 deletions(-)

diff --git a/src/analyzer_base.cpp b/src/analyzer_base.cpp @@ -338,7 +338,9 @@ void AnalyzerBaseWidget::addFrequencyRangeContextMenu(Menu* menu) { mi->addItem(OptionMenuItem("Lower 10%", [m]() { return m->_range == -0.9f; }, [m]() { m->_range = -0.9f; })); mi->addItem(OptionMenuItem("Lower 25%", [m]() { return m->_range == -0.75f; }, [m]() { m->_range = -0.75f; })); mi->addItem(OptionMenuItem("Lower 50%", [m]() { return m->_range == -0.5f; }, [m]() { m->_range = -0.5f; })); + mi->addItem(OptionMenuItem("Lower 75%", [m]() { return m->_range == -0.25f; }, [m]() { m->_range = -0.25f; })); mi->addItem(OptionMenuItem("Full", [m]() { return m->_range == 0.0f; }, [m]() { m->_range = 0.0f; })); + mi->addItem(OptionMenuItem("Upper 75%", [m]() { return m->_range == 0.25f; }, [m]() { m->_range = 0.25f; })); mi->addItem(OptionMenuItem("Upper 50%", [m]() { return m->_range == 0.5f; }, [m]() { m->_range = 0.5f; })); mi->addItem(OptionMenuItem("Upper 25%", [m]() { return m->_range == 0.75f; }, [m]() { m->_range = 0.75f; })); OptionsMenuItem::addToMenu(mi, menu); @@ -682,11 +684,11 @@ void AnalyzerDisplay::drawXAxis(const DrawArgs& args, float strokeWidth, Frequen } } - if (rangeMinHz > 10000.0f) { - hz = 200000.0f; - float lastX = 0.0f; - while (hz < rangeMaxHz) { - if (rangeMinHz <= hz) { + auto extraLabels = [&](float increment) { + if (rangeMinHz > increment) { + float hz = 2.0f * increment; + float lastX = 0.0f; + while (hz < 10.0f * increment) { float x = (hz - rangeMinHz) / (rangeMaxHz - rangeMinHz); x = powf(x, _xAxisLogFactor); if (x > lastX + 0.1f && x < 1.0f) { @@ -697,29 +699,15 @@ void AnalyzerDisplay::drawXAxis(const DrawArgs& args, float strokeWidth, Frequen snprintf(s, sLen, "%dk", (int)(hz / 1000.0f)); drawText(args, s, _insetLeft + x - 7, _size.y - 2); } + hz += increment; } - hz += 100000.0f; + return true; } - } - else if (rangeMinHz > 1000.0f) { - hz = 20000.0f; - float lastX = 0.0f; - while (hz < 80000.0f) { - if (rangeMinHz <= hz) { - float x = (hz - rangeMinHz) / (rangeMaxHz - rangeMinHz); - x = powf(x, _xAxisLogFactor); - if (x > lastX + 0.1f && x < 1.0f) { - lastX = x; - x *= _graphSize.x; - const int sLen = 32; - char s[sLen]; - snprintf(s, sLen, "%dk", (int)(hz / 1000.0f)); - drawText(args, s, _insetLeft + x - 7, _size.y - 2); - } - } - hz += 10000.0f; - } - } + return false; + }; + extraLabels(100000.0f) || + extraLabels(10000.0f) || + extraLabels(1000.0f); break; }