commit 7274a10e2599a090a81dd08bbab5774e320cdb7f
parent c939ab495b3ef8c47567273d45f7d28c695f756b
Author: Matt Demanett <matt@demanett.net>
Date: Wed, 14 Apr 2021 19:42:56 -0400
RANALYZER: fix analysis trace.
Diffstat:
2 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/README-prerelease.md b/README-prerelease.md
@@ -1061,13 +1061,13 @@ By default, will produce a one-shot test signal, emitted at SEND, upon receipt o
A window function is optionally applied to the signals as they are converted to the frequency domain; this cleans up noise that otherwise shows up in the signal plots as an artifact of the conversion. It also slightly distorts the displayed signals. The default "taper" window minimizes the distortion; Hamming and Kaiser windows are also available. The window can be selected or disabled on the context menu. The window is not applied to the test signal before it is emitted at SEND.
-The test signal is a swept sine wave (or "chirp", see <a href="#chirp">CHIRP</a>), with an exponential (if the EXP toggle is on) or linear sweep. The start and end frequencies for sine sweep are set by the FREQ1 and FREQ2 knobs, each with a range in hertz from 1 to a bit less than the Nyquist rate (half the sampling rate); if FREQ1 is less than FREQ2 the sweep is upwards in frequency, downwards otherwise.
+The test signal is a swept sine wave (or "chirp", see also <a href="#chirp">CHIRP</a>), with an exponential (if the EXP toggle is on) or linear sweep. The start and end frequencies for sine sweep are set by the FREQ1 and FREQ2 knobs, each with a range in hertz from 1 to a bit less than the Nyquist rate (half the sampling rate); if FREQ1 is less than FREQ2 the sweep is upwards in frequency, downwards otherwise.
Patching an input to TEST overrides the swept sine generator; the TEST input is used as the test signal.
If the LOOP toggle is enabled, the module continuously outputs, collects and displays the test, response and analysis signals. Regardless of whether the collection cycle is triggered or looped, a pulse is emitted at the TRIG output when the cycle begins, and at the EOC output when it ends.
-The R. DELAY (response delay) control allows sample-accurate alignment of the test and response signals for analysis. When SEND is patched directly to the module to be analyzed, and that module's output is patched directly back to RETURN, and the analyzed module does not impose an internal sample delay, then the returned signal will be received by RANALYZER two samples later, relative to the test sample RANALYZER emits. More complicated patches between SEND and RETURN, or modules under test which have internal sample delays, can increase this, in which case R. DELAY may be set to whatever this actual sample delay is. In practice, getting this right will likely not be very important.
+The R. DELAY (response delay) control allows sample-accurate alignment of the test and response signals for analysis. When SEND is patched directly to the module to be analyzed, and that module's output is patched directly back to RETURN, and the analyzed module does not impose an internal sample delay, then the returned signal will be received by RANALYZER two samples later, relative to the test sample RANALYZER emits. More complicated patches between SEND and RETURN, or modules under test which have internal sample delays, can increase this, in which case R. DELAY may be set to whatever this actual sample delay is. In practice, getting this exactly right will likely not be very important.
The context-menu option "Trigger on load", if enabled, will auto-trigger the test cycle when the module loads or when the patch loads. This has no effect if LOOP is enabled when the patch loads.
diff --git a/src/Ranalyzer.cpp b/src/Ranalyzer.cpp
@@ -277,7 +277,7 @@ struct AnalysisBinsReader : AnalyzerDisplay::BinsReader {
float at(int i) override {
float test = AnalyzerDisplay::binValueToDb(_testBins[i]);
float response = AnalyzerDisplay::binValueToDb(_responseBins[i]);
- return AnalyzerDisplay::dbToBinValue(response = test);
+ return AnalyzerDisplay::dbToBinValue(response - test);
}
static std::unique_ptr<BinsReader> factory(AnalyzerCore& core) {