From 3101180897b624fbb5eab8a3b0682aaa12a8db39 Mon Sep 17 00:00:00 2001 From: Ethan Blackwood <ethanbblackwood@gmail.com> Date: Sun, 4 Nov 2018 01:03:23 -0500 Subject: [PATCH 1/3] Add hilbert transformer files --- PC_front.png | Bin 10807 -> 0 bytes PhaseCalculator_flow.pdf | Bin 161201 -> 0 bytes PhaseCalculator_flow.xml | 1 - README.md | 11 +- Source/ARModeler.h | 38 ++- Source/HTransformers.cpp | 155 +++++++++ Source/HTransformers.h | 78 +++++ Source/PhaseCalculator.cpp | 568 +++++++++++++++++++++---------- Source/PhaseCalculator.h | 161 +++++---- Source/PhaseCalculatorCanvas.cpp | 28 +- Source/PhaseCalculatorCanvas.h | 3 - Source/PhaseCalculatorEditor.cpp | 347 +++++++------------ Source/PhaseCalculatorEditor.h | 70 ++-- ht_pc.png | Bin 0 -> 11915 bytes ht_pc_menu1.png | Bin 0 -> 18437 bytes ht_pc_menu2.png | Bin 0 -> 13800 bytes 16 files changed, 925 insertions(+), 535 deletions(-) delete mode 100644 PC_front.png delete mode 100644 PhaseCalculator_flow.pdf delete mode 100644 PhaseCalculator_flow.xml create mode 100644 Source/HTransformers.cpp create mode 100644 Source/HTransformers.h create mode 100644 ht_pc.png create mode 100644 ht_pc_menu1.png create mode 100644 ht_pc_menu2.png diff --git a/PC_front.png b/PC_front.png deleted file mode 100644 index 50f3d2652c355b5125783a57f066a48bc2a6e04c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10807 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 diff --git a/PhaseCalculator_flow.pdf b/PhaseCalculator_flow.pdf deleted file mode 100644 index 9ed3d50cce423fa6ab49216f0fa96bdd4af08243..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 161201 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�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 Y1O>YX27i6#00azl>miUx%R>kM2JnuChX4Qo diff --git a/PhaseCalculator_flow.xml b/PhaseCalculator_flow.xml deleted file mode 100644 index 07c26eb..0000000 --- a/PhaseCalculator_flow.xml +++ /dev/null @@ -1 +0,0 @@ -<mxfile userAgent="Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.181 Safari/537.36" version="8.6.8" editor="www.draw.io" type="device"><diagram name="Page-1" id="90fc9ea5-aef4-fcdc-7f95-ef9970270fa7">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</diagram></mxfile> \ No newline at end of file diff --git a/README.md b/README.md index de60705..88cf760 100644 --- a/README.md +++ b/README.md @@ -6,7 +6,8 @@ The closed-loop system incorporating this plugin is described in the following a Blackwood, E., Lo, M., Widge, A. S. (2018). Continuous phase estimation for phase-locked neural stimulation using an autoregressive model for signal prediction. 40th International Conference of the IEEE Engineering in Medicine and Biology Society, in press. -<img src="PC_front.png" width="328" /> <img src="PC_vis.png" width="350" /> +<img src="ht_pc.png" width="200" /><img src="ht_pc_menu1.png" width="200"/><img src="ht_pc_menu2.png" width="200"/> +<img src="PC_vis.png" width="350" /> ## Installation @@ -14,9 +15,9 @@ Blackwood, E., Lo, M., Widge, A. S. (2018). Continuous phase estimation for phas ### Step 1: Decide which version to use. -* You are on the `master` branch, which uses the Fourier-transform-based [Hilbert transform](https://en.wikipedia.org/wiki/Hilbert_transform) over a sliding window to estimate the analytic signal (from which we derive the phase). We have been testing variants of this algorithm in our lab since mid-2016, and it is now fairly polished, but is somewhat less computationally efficient than the newer version. +* You are on the `hilbert-transformer` branch, which uses a [Hilbert transformer](https://www.intechopen.com/books/matlab-a-fundamental-tool-for-scientific-computing-and-engineering-applications-volume-1/digital-fir-hilbert-transformers-fundamentals-and-efficient-design-methods) FIR filter instead - actually one of several, depending on the frequency band you are filtering to. This is more efficient than the original (published) algorithm since it doesn't require as much AR model-based prediction nor calculating an FFT on each step. However, it's not as well-tested. -* If you want, you can switch to the `hilbert-transformer` branch, which uses a [Hilbert transformer](https://www.intechopen.com/books/matlab-a-fundamental-tool-for-scientific-computing-and-engineering-applications-volume-1/digital-fir-hilbert-transformers-fundamentals-and-efficient-design-methods) FIR filter instead - actually one of several, depending on the frequency band you are filtering to. This is more efficient since it doesn't require as much AR model-based prediction nor calculating an FFT on each step. However, it's not as well-tested. +* If you want, you can switch to the `master` branch, which uses the Fourier-transform-based [Hilbert transform](https://en.wikipedia.org/wiki/Hilbert_transform) over a sliding window to estimate the analytic signal (from which we derive the phase). We have been testing variants of this algorithm in our lab since mid-2016, and it is now fairly polished, but is somewhat less computationally efficient than the newer version. * Alternatively, you can use the `tnel-development` (old algorithm) or `hilbert-transformer` (new algorithm) branch of [tne-lab/plugin-GUI](https://github.com/tne-lab/plugin-GUI/tree/tnel-development), which is a fork of the Open Ephys GUI source code with this plugin and some other useful ones already built in. Then you don't even need this repository or the rest of the instructions! (If you're on Linux though, you'll still have to install FFTW as described below.) Beware though, these are development branches and will be more unstable than `open-ephys/plugin-GUI/master`. @@ -55,9 +56,9 @@ Blackwood, E., Lo, M., Widge, A. S. (2018). Continuous phase estimation for phas * ***Important!*** Since the phase estimation algorithm is somewhat processor-intensive, by default all input channels are disabled. To enable the channels you would like to estimate the phase (or other component) of, select them in the "PARAM" section of the drawer. If "PH+MAG" is selcected as the output, this will also create the additional magnitude outputs for each selected input. -* Use "Low cut" and "High cut" to select the desired frequency passband. (Inputs should be unfiltered; the Phase Calculator uses its own bandpass filter.) +* In the "freq range" dropdown menu, choose a range of frequencies that includes the band you want to filter to. This determines which of the pre-designed Hilbert transformer filters is used internally (since if we tried to use one filter for all frequencies, it would end up with terrible performance everywhere). Note that the delta band is just too low to get a reasonably accurate phase estimate, even when downsampling to 500 Hz as this plugin does (before interpolating the output). -* The "Buffer length," "Past," and "Future" settings control the size and contents of the "Hilbert buffer" that is passed through the Hilbert transform to get the analytic (complex) signal for each channel. The "Past" length is the number of received samples to include on each iteration, including the current "processing buffer" (buffer of new data, whose size can be changed in the Audio Settings). The "Future" length is the number of samples of band-limited signal predicted using an autoregressive model to include. (See Blackwood, Lo & Widge, 2018 (once published) for more explanation of the algorithm.) The defaults are reasonable for a 4-8 Hz passband with a short processing buffer size. A longer buffer length generally increases the estimation accuracy at the cost of greater processing time. Also, one should optimally center the last (current) processing buffer of "past" data within the Hilbert buffer by setting "Future" to half of "Buffer Length" minus half of the processing buffer size. This ensures the maximal accuracy of the region of the Hilbert output corresponding to the current buffer. +* Use "Low cut" and "High cut" to select the desired frequency passband. (Inputs should be unfiltered; the Phase Calculator uses its own bandpass filter internally.) Changing the frequency range will automatically set a default high and low cut, but they can be changed to filter to any band within the range. * "AR Refresh" and "Order" control the autoregressive model used to predict the "future" portion of the Hilbert buffer. AR parameters are estimated using Burg's method. The default settings seem to work well, but other settings (particularly lower orders) may also work well. diff --git a/Source/ARModeler.h b/Source/ARModeler.h index a82e520..357c3c1 100644 --- a/Source/ARModeler.h +++ b/Source/ARModeler.h @@ -24,14 +24,9 @@ class ARModeler { public: - ARModeler() : arOrder(1), inputLength(2) + ARModeler(int order = 1, int length = 2, int strideIn = 1, bool* success = nullptr) { - reallocateStorage(); - } - - ARModeler(int order, int length, bool* success = nullptr) : ARModeler() - { - bool s = setParams(order, length); + bool s = setParams(order, length, strideIn); if (success != nullptr) { *success = s; @@ -41,15 +36,18 @@ class ARModeler { ~ARModeler() { } // returns true if successful. - bool setParams(int order, int length) + bool setParams(int order, int length, int strideIn) { - if (order < 1 || order >= length) + int newStridedLength = calcStridedLength(length, strideIn); + if (order < 1 || newStridedLength < order + 1) { jassertfalse; return false; } arOrder = order; inputLength = length; + stride = strideIn; + stridedLength = newStridedLength; reallocateStorage(); return true; } @@ -76,12 +74,12 @@ class ARModeler { double sn = 0.0; double sd = 0.0; int j; - int jj = inputLength - n; + int jj = stridedLength - n; for (j = 0; j < jj; j++) { - t1 = inputseries[j + n] + pef[j]; - t2 = inputseries[j] + per[j]; + t1 = inputseries[stride * (j + n)] + pef[j]; + t2 = inputseries[stride * j] + per[j]; sn -= 2.0 * t1 * t2; sd += (t1 * t1) + (t2 * t2); } @@ -99,8 +97,8 @@ class ARModeler { for (j = 0; j < jj; j++) { - per[j] = per[j] + t1 * pef[j] + t1 * inputseries[j + n]; - pef[j] = pef[j + 1] + t1 * per[j + 1] + t1 * inputseries[j + 1]; + per[j] = per[j] + t1 * pef[j] + t1 * inputseries[stride * (j + n)]; + pef[j] = pef[j + 1] + t1 * per[j + 1] + t1 * inputseries[stride * (j + 1)]; } } } @@ -116,13 +114,21 @@ class ARModeler { void resetPredictionError() { j_per.clearQuick(); - j_per.insertMultiple(0, 0, inputLength); + j_per.insertMultiple(0, 0, stridedLength); j_pef.clearQuick(); - j_pef.insertMultiple(0, 0, inputLength); + j_pef.insertMultiple(0, 0, stridedLength); + } + + static int calcStridedLength(int inputLength, int stride) + { + jassert(stride > 0); + return (inputLength + (stride - 1)) / stride; } int arOrder; int inputLength; + int stridedLength; + int stride; Array<double> j_per; Array<double> j_pef; Array<double> j_h; diff --git a/Source/HTransformers.cpp b/Source/HTransformers.cpp new file mode 100644 index 0000000..457ed7d --- /dev/null +++ b/Source/HTransformers.cpp @@ -0,0 +1,155 @@ +/* +------------------------------------------------------------------ + +This file is part of a plugin for the Open Ephys GUI +Copyright (C) 2018 Translational NeuroEngineering Lab + +------------------------------------------------------------------ + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see <http://www.gnu.org/licenses/>. + +*/ + +#include "HTransformers.h" + +namespace Hilbert +{ + namespace + { + const Array<float> HIGH_GAM_VALID({ 60, 200 }); + const Array<float> HIGH_GAM_DEFAULT({ 70, 150 }); + const Array<float> HIGH_GAM_EXTREMA({ 81.6443, 123.1104, 169.3574 }); + const int HIGH_GAM_DELAY = 3; + // from Matlab: firls(6, [60 200]/250, [1 1], 'hilbert') + const double HIGH_GAM_TRANSFORMER[HIGH_GAM_DELAY] = { + -0.10383410506573287, + 0.0040553935691102303, + -0.59258484603659545 + }; + + const Array<float> MID_GAM_VALID({ 40, 90 }); + const Array<float> MID_GAM_DEFAULT({ 40, 90 }); + const Array<float> MID_GAM_EXTREMA({ 64.4559 }); + const int MID_GAM_DELAY = 2; + // from Matlab: firls(4, [35 90]/250, [1 1], 'hilbert') + const double MID_GAM_TRANSFORMER[MID_GAM_DELAY] = { + -0.487176162115735, + -0.069437334858668653 + }; + + const Array<float> LOW_GAM_VALID({ 30, 55 }); + const Array<float> LOW_GAM_DEFAULT({ 30, 55 }); + const Array<float> LOW_GAM_EXTREMA({ 43.3609 }); + const int LOW_GAM_DELAY = 2; + // from Matlab: firls(4, [30 55]/250, [1 1], 'hilbert') + const double LOW_GAM_TRANSFORMER[LOW_GAM_DELAY] = { + -1.5933788446351915, + 1.7241339075391682 + }; + + const Array<float> BETA_VALID({ 10, 40 }); + const Array<float> BETA_DEFAULT({ 12, 30 }); + const Array<float> BETA_EXTREMA({ 21.5848 }); + const int BETA_DELAY = 9; + // from Matlab: firpm(18, [12 30 40 240]/250, [1 1 0.7 0.7], 'hilbert') + const double BETA_TRANSFORMER[BETA_DELAY] = { + -0.099949575596234311, + -0.020761484963254036, + -0.080803573080958854, + -0.027365064225587619, + -0.11114477443975329, + -0.025834076852645271, + -0.16664116044989324, + -0.015661948619847599, + -0.45268524264113719 + }; + + const Array<float> ALPHA_THETA_VALID({ 4, 18 }); + const Array<float> ALPHA_THETA_DEFAULT({ 4, 8 }); + const Array<float> ALPHA_THETA_EXTREMA({ /* none */ }); + const int ALPHA_THETA_DELAY = 9; + // from Matlab: firpm(18, [4 246]/250, [1 1], 'hilbert') + const double ALPHA_THETA_TRANSFORMER[ALPHA_THETA_DELAY] = { + -0.28757250783614413, + 0.000027647225074994485, + -0.094611325643268351, + -0.00025887439499763831, + -0.129436276914844, + -0.0001608427426424053, + -0.21315096860055227, + -0.00055322197399797961, + -0.63685698210351149 + }; + + const String C_GAMMA{ L"\u03b3" }; + const String C_BETA{ L"\u03b2" }; + const String C_ALPHA_THETA{ L"\u03b1/\u03b8" }; + } + + String validBandToString(const Array<float>& band) + { + jassert(band.size() == 2); + return " (" + String(band[0]) + "-" + String(band[1]) + " Hz)"; + } + + // exported constants + + extern const std::map<int, String> BAND_NAME = { + { HIGH_GAM, "Hi " + C_GAMMA + validBandToString(HIGH_GAM_VALID) }, + { MID_GAM, "Mid " + C_GAMMA + validBandToString(MID_GAM_VALID) }, + { LOW_GAM, "Lo " + C_GAMMA + validBandToString(LOW_GAM_VALID) }, + { BETA, C_BETA + validBandToString(BETA_VALID) }, + { ALPHA_THETA, C_ALPHA_THETA + validBandToString(ALPHA_THETA_VALID) } + }; + + extern const std::map<int, Array<float>> VALID_BAND = { + { HIGH_GAM, HIGH_GAM_VALID }, + { MID_GAM, MID_GAM_VALID }, + { LOW_GAM, LOW_GAM_VALID }, + { BETA, BETA_VALID }, + { ALPHA_THETA, ALPHA_THETA_VALID } + }; + + extern const std::map<int, Array<float>> DEFAULT_BAND = { + { HIGH_GAM, HIGH_GAM_DEFAULT }, + { MID_GAM, MID_GAM_DEFAULT }, + { LOW_GAM, LOW_GAM_DEFAULT }, + { BETA, BETA_DEFAULT }, + { ALPHA_THETA, ALPHA_THETA_DEFAULT } + }; + + extern const std::map<int, Array<float>> EXTREMA = { + { HIGH_GAM, HIGH_GAM_EXTREMA }, + { MID_GAM, MID_GAM_EXTREMA }, + { LOW_GAM, LOW_GAM_EXTREMA }, + { BETA, BETA_EXTREMA }, + { ALPHA_THETA, ALPHA_THETA_EXTREMA } + }; + + extern const std::map<int, int> DELAY = { + { HIGH_GAM, HIGH_GAM_DELAY }, + { MID_GAM, MID_GAM_DELAY }, + { LOW_GAM, LOW_GAM_DELAY }, + { BETA, BETA_DELAY }, + { ALPHA_THETA, ALPHA_THETA_DELAY } + }; + + extern const std::map<int, const double*> TRANSFORMER = { + { HIGH_GAM, HIGH_GAM_TRANSFORMER }, + { MID_GAM, MID_GAM_TRANSFORMER }, + { LOW_GAM, LOW_GAM_TRANSFORMER }, + { BETA, BETA_TRANSFORMER }, + { ALPHA_THETA, ALPHA_THETA_TRANSFORMER } + }; +} \ No newline at end of file diff --git a/Source/HTransformers.h b/Source/HTransformers.h new file mode 100644 index 0000000..11e84f2 --- /dev/null +++ b/Source/HTransformers.h @@ -0,0 +1,78 @@ +/* +------------------------------------------------------------------ + +This file is part of a plugin for the Open Ephys GUI +Copyright (C) 2018 Translational NeuroEngineering Lab + +------------------------------------------------------------------ + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see <http://www.gnu.org/licenses/>. + +*/ + +#ifndef H_TRANSFORMERS_H_INCLUDED +#define H_TRANSFORMERS_H_INCLUDED + +#include <map> + +#include "../../../JuceLibraryCode/JuceHeader.h" + +/* + +Defines the Hilbert transformers appropriate to use for each frequency band. +(The actual coeficcients and other values are in the corresponding cpp file.) +- BAND_NAME: display name for each frequency band. +- VALID_BAND: range of frequencies appropriate to use with each transformer +- DEFAULT_BAND: band filled in by default when selecting each transformer +- EXTREMA: locations of local extrema of the magnitude response within VALID_BAND (if any). +- used to find the maximum and minimum response given a band of interest. +- DELAY: group delay of the transformer = # of samples to predict + also, the number of unique nonzero coefficients. +- TRANSFORMER: first DELAY coefficients for each filter. + the remaining DELAY+1 are 0, followed by the leading coefficients + again, negated and in reverse order. +*/ + +enum Band +{ + ALPHA_THETA = 0, + BETA, + LOW_GAM, + MID_GAM, + HIGH_GAM, + NUM_BANDS +}; + +namespace Hilbert +{ + const int FS = 500; + + extern const std::map<int, String> BAND_NAME; + + // each is a pair (lower limit, upper limit) + extern const std::map<int, Array<float>> VALID_BAND; + + // each is a pair (low cut, high cut) + extern const std::map<int, Array<float>> DEFAULT_BAND; + + extern const std::map<int, Array<float>> EXTREMA; + + // samples of group delay (= order of filter / 2) + extern const std::map<int, int> DELAY; + + // contain the first delay[band] coefficients; the rest are redundant and can be inferred + extern const std::map<int, const double*> TRANSFORMER; +} + +#endif // H_TRANSFORMERS_H_INCLUDED \ No newline at end of file diff --git a/Source/PhaseCalculator.cpp b/Source/PhaseCalculator.cpp index 37b68e8..b5f781f 100644 --- a/Source/PhaseCalculator.cpp +++ b/Source/PhaseCalculator.cpp @@ -21,6 +21,9 @@ along with this program. If not, see <http://www.gnu.org/licenses/>. */ +#include <cfloat> // DBL_MAX +#include <cmath> // sqrt + #include "PhaseCalculator.h" #include "PhaseCalculatorEditor.h" @@ -30,12 +33,6 @@ PhaseCalculator::PhaseCalculator() : GenericProcessor ("Phase Calculator") , Thread ("AR Modeler") , calcInterval (50) - , lowCut (4.0) - , highCut (8.0) - , minNyquist (FLT_MAX) - , hilbertLength (16384) - , predictionLength (8132) // = hilbertLength / 2 - (half of 120-sample buffer) - , haveSentWarning (false) , outputMode (PH) , visEventChannel (-1) , visContinuousChannel (-1) @@ -45,6 +42,7 @@ PhaseCalculator::PhaseCalculator() { setProcessorType(PROCESSOR_TYPE_FILTER); setAROrder(20); + setBand(ALPHA_THETA, true); } PhaseCalculator::~PhaseCalculator() {} @@ -98,18 +96,6 @@ void PhaseCalculator::setParameter(int parameterIndex, float newValue) int numInputs = getNumInputs(); switch (parameterIndex) { - case HILBERT_LENGTH: - setHilbertLength(static_cast<int>(newValue)); - break; - - case PAST_LENGTH: - setPredLength(hilbertLength - static_cast<int>(newValue)); - break; - - case PRED_LENGTH: - setPredLength(static_cast<int>(newValue)); - break; - case RECALC_INTERVAL: calcInterval = static_cast<int>(newValue); break; @@ -118,6 +104,10 @@ void PhaseCalculator::setParameter(int parameterIndex, float newValue) setAROrder(static_cast<int>(newValue)); break; + case BAND: + setBand(static_cast<Band>(static_cast<int>(newValue))); + break; + case LOWCUT: setLowCut(newValue); break; @@ -175,38 +165,18 @@ void PhaseCalculator::process(AudioSampleBuffer& buffer) { int chan = activeInputs[activeChan]; int nSamples = getNumSamples(chan); - if (nSamples == 0) + if (nSamples == 0) // nothing to do { continue; } - // Filter the data. - float* wpIn = buffer.getWritePointer(chan); - filters[activeChan]->process(nSamples, &wpIn); + // filter the data + float* const wpIn = buffer.getWritePointer(chan); + filters[chan]->process(nSamples, &wpIn); - // If there are more samples than we have room to process, process the most recent samples and output zero - // for the rest (this is an error that should be noticed and fixed). - int hilbertPastLength = hilbertLength - predictionLength; + // shift old data and copy new data into historyBuffer (as much as can fit) int historyStartIndex = jmax(nSamples - historyLength, 0); - int outputStartIndex = jmax(nSamples - hilbertPastLength, 0); - - jassert(outputStartIndex >= historyStartIndex); // since historyLength >= hilbertPastLength - int nSamplesToEnqueue = nSamples - historyStartIndex; - int nSamplesToProcess = nSamples - outputStartIndex; - - if (outputStartIndex != 0) - { - // clear the extra samples and send a warning message - buffer.clear(chan, 0, outputStartIndex); - if (!haveSentWarning) - { - CoreServices::sendStatusMessage("WARNING: Phase Calculator buffer is shorter than the sample buffer!"); - haveSentWarning = true; - } - } - - // shift old data and copy new data into historyBuffer int nOldSamples = historyLength - nSamplesToEnqueue; const double* rpBuffer = historyBuffer.getReadPointer(activeChan, nSamplesToEnqueue); @@ -220,14 +190,14 @@ void PhaseCalculator::process(AudioSampleBuffer& buffer) // shift old data for (int i = 0; i < nOldSamples; ++i) { - *wpBuffer++ = *rpBuffer++; + *(wpBuffer++) = *(rpBuffer++); } // copy new data - wpIn += historyStartIndex; + const float* rpIn = wpIn + historyStartIndex; for (int i = 0; i < nSamplesToEnqueue; ++i) { - *wpBuffer++ = *wpIn++; + *(wpBuffer++) = *(rpIn++); } } @@ -237,22 +207,15 @@ void PhaseCalculator::process(AudioSampleBuffer& buffer) bufferFreeSpace.set(activeChan, newBufferFreeSpace); if (newBufferFreeSpace == 0) { - // now that dataToProcess for this channel is full, + // now that the historyBuffer for this channel is full, // let the thread start calculating the AR model. chanState.set(activeChan, FULL_NO_AR); } } // calc phase and write out (only if AR model has been calculated) - if (chanState[activeChan] == FULL_AR) { - - // copy data to dataToProcess - if (hilbertPastLength > 0) - { - rpBuffer = historyBuffer.getReadPointer(activeChan, historyLength - hilbertPastLength); - hilbertBuffer[activeChan]->copyFrom(rpBuffer, hilbertPastLength); - } - + if (chanState[activeChan] == FULL_AR) + { // read current AR parameters safely Array<double> localParams; localParams.resize(arOrder); @@ -266,22 +229,57 @@ void PhaseCalculator::process(AudioSampleBuffer& buffer) pLocalParam[i] = rpParam[i]; } } - - // use AR(20) model to predict upcoming data and append to dataToProcess - // get beyond end of history buffer indirectly to avoid juce assertion failure - rpBuffer = historyBuffer.getReadPointer(activeChan, historyLength - 1) + 1; - double* wpHilbert = hilbertBuffer[activeChan]->getRealPointer(hilbertPastLength); + // use AR model to fill predSamps (which is downsampled) based on past data. + int htDelay = Hilbert::DELAY.at(band); + int stride = sampleRateMultiple[chan]; - arPredict(rpBuffer, wpHilbert, predictionLength, pLocalParam, arOrder); + rpBuffer = historyBuffer.getReadPointer(activeChan, historyLength - dsOffset[chan]); + double* pPredSamps = predSamps.getRawDataPointer(); + arPredict(rpBuffer, pPredSamps, pLocalParam, htDelay + 1, stride, arOrder); - // Hilbert-transform hilbertBuffer - forwardPlan[activeChan]->execute(); - hilbertManip(hilbertBuffer[activeChan]); - backwardPlan[activeChan]->execute(); + // identify indices of current buffer to execute HT + htInds.clearQuick(); + for (int i = stride - dsOffset[chan]; i < nSamples; i += stride) + { + htInds.add(i); + } + + int htOutputSamps = htInds.size() + 1; + if (htOutput.size() < htOutputSamps) + { + htOutput.resize(htOutputSamps); + } + + // execute tranformer on current buffer + int kOut = -htDelay; + for (int kIn = 0; kIn < htInds.size(); ++kIn, ++kOut) + { + double samp = htFilterSamp(wpIn[htInds[kIn]], band, *htState[activeChan]); + if (kOut >= 0) + { + double rc = wpIn[htInds[kOut]]; + double ic = htScaleFactor * samp; + htOutput.set(kOut, std::complex<double>(rc, ic)); + } + } - // calculate phase and write out to buffer - auto rpHilbert = hilbertBuffer[activeChan]->getComplexPointer(hilbertPastLength - nSamplesToProcess); + // copy state to transform prediction without changing the end-of-buffer state + htTempState = *htState[activeChan]; + + // execute transformer on prediction + for (int i = 0; i <= htDelay; ++i, ++kOut) + { + double samp = htFilterSamp(predSamps[i], band, htTempState); + if (kOut >= 0) + { + double rc = i == htDelay ? predSamps[0] : wpIn[htInds[kOut]]; + double ic = htScaleFactor * samp; + htOutput.set(kOut, std::complex<double>(rc, ic)); + } + } + + // output with upsampling (interpolation) float* wpOut = buffer.getWritePointer(chan); float* wpOut2; if (outputMode == PH_AND_MAG) @@ -292,39 +290,94 @@ void PhaseCalculator::process(AudioSampleBuffer& buffer) wpOut2 = buffer.getWritePointer(outChan2); } - for (int i = 0; i < nSamplesToProcess; ++i) + kOut = 0; + std::complex<double> prevCS = lastComputedSample[activeChan]; + std::complex<double> nextCS = htOutput[kOut]; + double prevPhase, nextPhase, phaseSpan, thisPhase; + double prevMag, nextMag, magSpan, thisMag; + bool needPhase = outputMode != MAG; + bool needMag = outputMode != PH; + + if (needPhase) { + prevPhase = std::arg(prevCS); + nextPhase = std::arg(nextCS); + phaseSpan = circDist(nextPhase, prevPhase, Dsp::doublePi); + } + if (needMag) + { + prevMag = std::abs(prevCS); + nextMag = std::abs(nextCS); + magSpan = nextMag - prevMag; + } + int subSample = dsOffset[chan] % stride; + + for (int i = 0; i < nSamples; ++i, subSample = (subSample + 1) % stride) + { + if (subSample == 0) + { + // update interpolation frame + prevCS = nextCS; + nextCS = htOutput[++kOut]; + + if (needPhase) + { + prevPhase = nextPhase; + nextPhase = std::arg(nextCS); + phaseSpan = circDist(nextPhase, prevPhase, Dsp::doublePi); + } + if (needMag) + { + prevMag = nextMag; + nextMag = std::abs(nextCS); + magSpan = nextMag - prevMag; + } + } + + if (needPhase) + { + thisPhase = prevPhase + phaseSpan * subSample / stride; + thisPhase = circDist(thisPhase, 0, Dsp::doublePi); + } + if (needMag) + { + thisMag = prevMag + magSpan * subSample / stride; + } + switch (outputMode) { case MAG: - wpOut[i + outputStartIndex] = static_cast<float>(std::abs(rpHilbert[i])); + wpOut[i] = static_cast<float>(thisMag); break; - + case PH_AND_MAG: - wpOut2[i + outputStartIndex] = static_cast<float>(std::abs(rpHilbert[i])); + wpOut2[i] = static_cast<float>(thisMag); // fall through case PH: // output in degrees - wpOut[i + outputStartIndex] = static_cast<float>(std::arg(rpHilbert[i]) * (180.0 / Dsp::doublePi)); + wpOut[i] = static_cast<float>(thisPhase * (180.0 / Dsp::doublePi)); break; - + case IM: - wpOut[i + outputStartIndex] = static_cast<float>(std::imag(rpHilbert[i])); + wpOut[i] = static_cast<float>(thisMag * std::sin(thisPhase)); break; } } + lastComputedSample.set(activeChan, prevCS); + dsOffset.set(chan, ((dsOffset[chan] + nSamples - 1) % stride) + 1); // unwrapping / smoothing if (outputMode == PH || outputMode == PH_AND_MAG) { unwrapBuffer(wpOut, nSamples, activeChan); smoothBuffer(wpOut, nSamples, activeChan); + lastPhase.set(activeChan, wpOut[nSamples - 1]); } } else // fifo not full or AR model not ready { // just output zeros - buffer.clear(chan, outputStartIndex, nSamplesToProcess); + buffer.clear(chan, 0, nSamples); } // if this is the monitored channel for events, check whether we can add a new phase @@ -332,9 +385,6 @@ void PhaseCalculator::process(AudioSampleBuffer& buffer) { calcVisPhases(getTimestamp(chan) + getNumSamples(chan)); } - - // keep track of last sample - lastSample.set(activeChan, buffer.getSample(chan, nSamples - 1)); } } @@ -360,8 +410,6 @@ bool PhaseCalculator::disable() signalThreadShouldExit(); - haveSentWarning = false; - // reset states of active inputs Array<int> activeInputs = getActiveInputs(); int nActiveInputs = activeInputs.size(); @@ -369,8 +417,11 @@ bool PhaseCalculator::disable() { bufferFreeSpace.set(activeChan, historyLength); chanState.set(activeChan, NOT_FULL); - lastSample.set(activeChan, 0); - filters[activeChan]->reset(); + FloatVectorOperations::clear(htState[activeChan]->begin(), htState[activeChan]->size()); + lastPhase.set(activeChan, 0); + lastComputedSample.set(activeChan, 0); + dsOffset.set(activeChan, sampleRateMultiple[activeChan]); + filters[activeInputs[activeChan]]->reset(); } // clear timestamp and phase queues @@ -397,7 +448,8 @@ void PhaseCalculator::run() Array<double> paramsTemp; paramsTemp.resize(arOrder); - int numActiveChans = getActiveInputs().size(); + Array<int> activeInputs = getActiveInputs(); + int numActiveChans = activeInputs.size(); uint32 startTime, endTime; while (!threadShouldExit()) @@ -423,7 +475,7 @@ void PhaseCalculator::run() // end critical section // calculate parameters - arModeler.fitModel(data, paramsTemp); + arModelers[activeInputs[activeChan]]->fitModel(data, paramsTemp); // write params safely { @@ -450,10 +502,44 @@ void PhaseCalculator::run() void PhaseCalculator::updateSettings() { - // handle changed sample rates - updateMinNyquist(); + // update arrays that store one entry per input + int numInputs = getNumInputs(); + int prevNumInputs = filters.size(); + int numInputsChange = numInputs - prevNumInputs; + + if (numInputsChange > 0) + { + // (temporary, until validateSampleRate call): + sampleRateMultiple.insertMultiple(-1, 1, numInputsChange); + dsOffset.insertMultiple(-1, 0, numInputsChange); + + // add new objects at new indices + for (int i = prevNumInputs; i < numInputs; i++) + { + filters.add(new BandpassFilter()); + // (temporary, until validateSampleRate call) + arModelers.add(new ARModeler()); + } + } + else if (numInputsChange < 0) + { + // delete unneeded entries + sampleRateMultiple.removeLast(-numInputsChange); + dsOffset.removeLast(-numInputsChange); + filters.removeLast(-numInputsChange); + arModelers.removeLast(-numInputsChange); + } + + // set filter parameters (sample rates may have changed) setFilterParameters(); + // check whether active channels can be processed + Array<int> activeInputs = getActiveInputs(); + for (int chan : activeInputs) + { + validateSampleRate(chan); + } + // create new data channels if necessary updateSubProcessorMap(); updateExtraChannels(); @@ -550,6 +636,14 @@ void PhaseCalculator::loadCustomChannelParametersFromXml(XmlElement* channelElem } } +double PhaseCalculator::circDist(double x, double ref, double cutoff) +{ + const double TWO_PI = 2 * Dsp::doublePi; + double xMod = std::fmod(x - ref, TWO_PI); + double xPos = (xMod < 0 ? xMod + TWO_PI : xMod); + return (xPos > cutoff ? xPos - TWO_PI : xPos); +} + // ------------ PRIVATE METHODS --------------- void PhaseCalculator::handleEvent(const EventChannel* eventInfo, @@ -573,66 +667,91 @@ void PhaseCalculator::handleEvent(const EventChannel* eventInfo, } } -void PhaseCalculator::setHilbertLength(int newHilbertLength) +void PhaseCalculator::setAROrder(int newOrder) { - if (newHilbertLength == hilbertLength) { return; } - - float predLengthRatio = static_cast<float>(predictionLength) / hilbertLength; - hilbertLength = newHilbertLength; - - static_cast<PhaseCalculatorEditor*>(getEditor())->refreshHilbertLength(); + if (newOrder == arOrder) { return; } - // update dependent variables - int newPredLength = static_cast<int>(roundf(predLengthRatio * hilbertLength)); - setPredLength(newPredLength); + arOrder = newOrder; + updateHistoryLength(); // update dependent per-channel objects - for (int i = 0; i < numActiveChansAllocated; i++) + int numInputs = getNumInputs(); + for (int chan = 0; chan < numInputs; ++chan) { - // processing buffers - hilbertBuffer[i]->resize(hilbertLength); + bool s = arModelers[chan]->setParams(arOrder, historyLength, sampleRateMultiple[chan]); + jassert(s); + } - // FFT plans - forwardPlan.set(i, new FFTWPlan(hilbertLength, hilbertBuffer[i], FFTW_MEASURE)); - backwardPlan.set(i, new FFTWPlan(hilbertLength, hilbertBuffer[i], FFTW_BACKWARD, FFTW_MEASURE)); + for (int i = 0; i < numActiveChansAllocated; i++) + { + arParams[i]->resize(arOrder); } } -void PhaseCalculator::setPredLength(int newPredLength) +void PhaseCalculator::setBand(Band newBand, bool force) { - if (newPredLength == predictionLength) { return; } + if (!force && newBand == band) { return; } + if (newBand < 0 || newBand >= NUM_BANDS) + { + jassertfalse; + return; + } + + band = newBand; - predictionLength = newPredLength; - static_cast<PhaseCalculatorEditor*>(getEditor())->refreshPredLength(); + // set low and high cut to the defaults for this band, making sure to notify the editor + resetCutsToDefaults(); + + // resize htState for each active channel, htTempState, and predSamps + int delay = Hilbert::DELAY.at(band); + for (int i = 0; i < numActiveChansAllocated; ++i) + { + htState[i]->resize(delay * 2 + 1); + } + htTempState.resize(delay * 2 + 1); + predSamps.resize(delay + 1); } -void PhaseCalculator::setAROrder(int newOrder) +void PhaseCalculator::resetCutsToDefaults() { - if (newOrder == arOrder) { return; } - - arOrder = newOrder; - updateHistoryLength(); - bool s = arModeler.setParams(arOrder, historyLength); - jassert(s); + auto& defaultBand = Hilbert::DEFAULT_BAND.at(band); + lowCut = defaultBand[0]; + highCut = defaultBand[1]; - // update dependent per-channel objects - for (int i = 0; i < numActiveChansAllocated; i++) + updateScaleFactor(); + setFilterParameters(); + + auto editor = static_cast<PhaseCalculatorEditor*>(getEditor()); + if (editor) { - arParams[i]->resize(arOrder); + editor->refreshLowCut(); + editor->refreshHighCut(); } } void PhaseCalculator::setLowCut(float newLowCut) { if (newLowCut == lowCut) { return; } + + auto editor = static_cast<PhaseCalculatorEditor*>(getEditor()); + const Array<float>& validBand = Hilbert::VALID_BAND.at(band); + if (newLowCut < validBand[0] || newLowCut >= validBand[1]) + { + // invalid; don't set parameter and reset editor + editor->refreshLowCut(); + CoreServices::sendStatusMessage("Low cut outside valid band of selected filter."); + return; + } + lowCut = newLowCut; if (lowCut >= highCut) { // push highCut up - highCut = lowCut + PASSBAND_EPS; - static_cast<PhaseCalculatorEditor*>(getEditor())->refreshHighCut(); + highCut = jmin(lowCut + PASSBAND_EPS, validBand[1]); + editor->refreshHighCut(); } + updateScaleFactor(); setFilterParameters(); } @@ -640,13 +759,25 @@ void PhaseCalculator::setHighCut(float newHighCut) { if (newHighCut == highCut) { return; } + auto editor = static_cast<PhaseCalculatorEditor*>(getEditor()); + const Array<float>& validBand = Hilbert::VALID_BAND.at(band); + + if (newHighCut <= validBand[0] || newHighCut > validBand[1]) + { + // invalid; don't set parameter and reset editor + editor->refreshHighCut(); + CoreServices::sendStatusMessage("High cut outside valid band of selected filter."); + return; + } + highCut = newHighCut; if (highCut <= lowCut) { // push lowCut down - lowCut = highCut - PASSBAND_EPS; - static_cast<PhaseCalculatorEditor*>(getEditor())->refreshLowCut(); + lowCut = jmax(highCut - PASSBAND_EPS, validBand[0]); + editor->refreshLowCut(); } + updateScaleFactor(); setFilterParameters(); } @@ -654,9 +785,8 @@ void PhaseCalculator::setVisContChan(int newChan) { if (newChan >= 0) { - Array<int> activeInputs = getActiveInputs(); - int visActiveChan = activeInputs.indexOf(newChan); - jassert(visActiveChan >= 0 && visActiveChan < filters.size()); + jassert(newChan < filters.size()); + jassert(getActiveInputs().indexOf(newChan) != -1); // disable event receival temporarily so we can flush the buffer int tempVisEventChan = visEventChannel; @@ -669,7 +799,7 @@ void PhaseCalculator::setVisContChan(int newChan) } // update filter settings - visReverseFilter.setParams(filters[visActiveChan]->getParams()); + visReverseFilter.setParams(filters[newChan]->getParams()); visEventChannel = tempVisEventChan; } visContinuousChannel = newChan; @@ -684,13 +814,19 @@ void PhaseCalculator::setVisContChan(int newChan) void PhaseCalculator::updateHistoryLength() { - jassert(VIS_HILBERT_LENGTH >= (1 << MAX_HILB_LEN_POW)); - int newHistoryLength = juce::jmax( - VIS_HILBERT_LENGTH, // must have enough samples for current and delayed Hilbert transforms - arOrder + 1); // must be longer than arOrder to train the AR model + Array<int> activeInputs = getActiveInputs(); + + // minimum - must have enough samples to do a Hilbert transform on past values for visualization + int newHistoryLength = VIS_HILBERT_LENGTH; + for (int chan : activeInputs) + { + newHistoryLength = jmax(newHistoryLength, + arOrder * sampleRateMultiple[chan] + 1, // minimum to train AR model + Hilbert::FS * sampleRateMultiple[chan]); // use @ least 1 second to train model + } if (newHistoryLength == historyLength) { return; } - + historyLength = newHistoryLength; // update things that depend on historyLength @@ -701,54 +837,34 @@ void PhaseCalculator::updateHistoryLength() bufferFreeSpace.set(i, historyLength); } - bool s = arModeler.setParams(arOrder, historyLength); - jassert(s); -} - -void PhaseCalculator::updateMinNyquist() -{ - float currMinNyquist = FLT_MAX; - - auto ed = static_cast<PhaseCalculatorEditor*>(getEditor()); - int nInputs = getNumInputs(); - Array<int> activeInputs = getActiveInputs(); for (int chan : activeInputs) { - float sampleRate = getDataChannel(chan)->getSampleRate(); - currMinNyquist = jmin(currMinNyquist, sampleRate / 2); + bool success = arModelers[chan]->setParams(arOrder, historyLength, sampleRateMultiple[chan]); + jassert(success); } +} - minNyquist = currMinNyquist; - if (highCut > minNyquist) - { - // push down highCut to make it valid - CoreServices::sendStatusMessage("Lowering Phase Calculator upper passband limit to the Nyquist frequency (" + - String(minNyquist) + " Hz)"); - setHighCut(minNyquist); - ed->refreshHighCut(); - } +void PhaseCalculator::updateScaleFactor() +{ + htScaleFactor = getScaleFactor(band, lowCut, highCut); } void PhaseCalculator::setFilterParameters() { - Array<int> activeInputs = getActiveInputs(); - int nActiveInputs = activeInputs.size(); - + int numInputs = getNumInputs(); + jassert(filters.size() == numInputs); double currLowCut = lowCut, currHighCut = highCut; jassert(currLowCut >= 0 && currLowCut < currHighCut); - for (int activeChan = 0; activeChan < nActiveInputs; ++activeChan) + for (int chan = 0; chan < numInputs; ++chan) { - jassert(activeChan < filters.size()); - int chan = activeInputs[activeChan]; - Dsp::Params params; params[0] = getDataChannel(chan)->getSampleRate(); // sample rate params[1] = 2; // order params[2] = (currHighCut + currLowCut) / 2; // center frequency params[3] = currHighCut - currLowCut; // bandwidth - filters[activeChan]->setParams(params); + filters[chan]->setParams(params); } } @@ -761,24 +877,51 @@ void PhaseCalculator::addActiveChannel() // simple arrays bufferFreeSpace.add(historyLength); chanState.add(NOT_FULL); - lastSample.add(0); + lastPhase.add(0); + lastComputedSample.add(0); // owned arrays - hilbertBuffer.add(new FFTWArray(hilbertLength)); - forwardPlan.add(new FFTWPlan(hilbertLength, hilbertBuffer.getLast(), FFTW_MEASURE)); - backwardPlan.add(new FFTWPlan(hilbertLength, hilbertBuffer.getLast(), FFTW_BACKWARD, FFTW_MEASURE)); historyLock.add(new CriticalSection()); arParamLock.add(new CriticalSection()); arParams.add(new Array<double>()); arParams.getLast()->resize(arOrder); - filters.add(new BandpassFilter()); + htState.add(new Array<double>()); + htState.getLast()->resize(Hilbert::DELAY.at(band) * 2 + 1); +} + +bool PhaseCalculator::validateSampleRate(int chan) +{ + auto e = getEditor(); + bool p, r, a; + e->getChannelSelectionState(chan, &p, &r, &a); + if (!p) { return false; } + + // test whether sample rate is a multiple of HT_FS + float fsMult = getDataChannel(chan)->getSampleRate() / Hilbert::FS; + float fsMultRound = std::round(fsMult); + if (std::abs(fsMult - fsMultRound) < FLT_EPSILON) + { + // leave selected + int fsMultInt = static_cast<int>(fsMultRound); + sampleRateMultiple.set(chan, fsMultInt); + dsOffset.set(chan, fsMultInt); + bool s = arModelers[chan]->setParams(arOrder, historyLength, fsMultInt); + jassert(s); + return true; + } + + // deselect and send warning + deselectChannel(chan); + CoreServices::sendStatusMessage("Channel " + String(chan + 1) + " was deselected because" + + " its sample rate is not a multiple of " + String(Hilbert::FS)); + return false; } void PhaseCalculator::unwrapBuffer(float* wp, int nSamples, int activeChan) { for (int startInd = 0; startInd < nSamples - 1; startInd++) { - float diff = wp[startInd] - (startInd == 0 ? lastSample[activeChan] : wp[startInd - 1]); + float diff = wp[startInd] - (startInd == 0 ? lastPhase[activeChan] : wp[startInd - 1]); if (abs(diff) > 180) { // search forward for a jump in the opposite direction @@ -824,20 +967,20 @@ void PhaseCalculator::unwrapBuffer(float* wp, int nSamples, int activeChan) void PhaseCalculator::smoothBuffer(float* wp, int nSamples, int activeChan) { int actualGL = jmin(GLITCH_LIMIT, nSamples - 1); - float diff = wp[0] - lastSample[activeChan]; + float diff = wp[0] - lastPhase[activeChan]; if (diff < 0 && diff > -180) { // identify whether signal exceeds last sample of the previous buffer within glitchLimit samples. int endIndex = -1; for (int i = 1; i <= actualGL; i++) { - if (wp[i] > lastSample[activeChan]) + if (wp[i] > lastPhase[activeChan]) { endIndex = i; break; } // corner case where signal wraps before it exceeds lastSample - else if (wp[i] - wp[i - 1] < -180 && (wp[i] + 360) > lastSample[activeChan]) + else if (wp[i] - wp[i - 1] < -180 && (wp[i] + 360) > lastPhase[activeChan]) { wp[i] += 360; endIndex = i; @@ -848,10 +991,10 @@ void PhaseCalculator::smoothBuffer(float* wp, int nSamples, int activeChan) if (endIndex != -1) { // interpolate points from buffer start to endIndex - float slope = (wp[endIndex] - lastSample[activeChan]) / (endIndex + 1); + float slope = (wp[endIndex] - lastPhase[activeChan]) / (endIndex + 1); for (int i = 0; i < endIndex; i++) { - wp[i] = lastSample[activeChan] + (i + 1) * slope; + wp[i] = lastPhase[activeChan] + (i + 1) * slope; } } } @@ -878,7 +1021,7 @@ void PhaseCalculator::updateSubProcessorMap() uint16 subProcessorIdx = chanInfo->getSubProcessorIdx(); int procFullId = static_cast<int>(getProcessorFullId(sourceNodeId, subProcessorIdx)); foundFullIds.add(procFullId); - + if (subProcessorMap.contains(procFullId)) { maxUsedIdx = jmax(maxUsedIdx, subProcessorMap[subProcessorIdx]); @@ -1040,16 +1183,18 @@ void PhaseCalculator::calcVisPhases(juce::int64 sdbEndTs) } } -void PhaseCalculator::arPredict(const double* readEnd, double* writeStart, int writeNum, const double* params, int order) +void PhaseCalculator::arPredict(const double* lastSample, double* prediction, + const double* params, int samps, int stride, int order) { - for (int s = 0; s < writeNum; ++s) + for (int s = 0; s < samps; ++s) { // s = index to write output - writeStart[s] = 0; + prediction[s] = 0; for (int ind = s - 1; ind > s - 1 - order; --ind) { // ind = index of previous output to read - writeStart[s] -= params[s - 1 - ind] * (ind < 0 ? readEnd[ind] : writeStart[ind]); + prediction[s] -= params[s - 1 - ind] * + (ind < 0 ? lastSample[(ind + 1) * stride] : prediction[ind]); } } } @@ -1071,7 +1216,7 @@ void PhaseCalculator::hilbertManip(FFTWArray* fftData) // normalize and double positive frequencies FloatVectorOperations::multiply(reinterpret_cast<double*>(wp + 1), 2.0 / n, numPosNegFreqDoubles); - + if (hasNyquist) { // normalize but don't double Nyquist frequency @@ -1081,3 +1226,72 @@ void PhaseCalculator::hilbertManip(FFTWArray* fftData) // set negative frequencies to 0 FloatVectorOperations::clear(reinterpret_cast<double*>(wp + firstNegFreq), numPosNegFreqDoubles); } + +double PhaseCalculator::getScaleFactor(Band band, double lowCut, double highCut) +{ + double maxResponse = -DBL_MAX; + double minResponse = DBL_MAX; + + Array<double> testFreqs({ lowCut, highCut }); + // also look at any magnitude response extrema that fall within the selected band + for (double freq : Hilbert::EXTREMA.at(band)) + { + if (freq > lowCut && freq < highCut) + { + testFreqs.add(freq); + } + } + + // at each frequency, calculate the filter response + int nCoefs = Hilbert::DELAY.at(band); + for (double freq : testFreqs) + { + double normFreq = freq * Dsp::doublePi / (Hilbert::FS / 2); + std::complex<double> response = 0; + + auto* transf = Hilbert::TRANSFORMER.at(band); + for (int kCoef = 0; kCoef < nCoefs; ++kCoef) + { + double coef = transf[kCoef]; + + // near component + response += coef * std::polar(1.0, -(kCoef * normFreq)); + + // mirrored component + // there is no term for -nCoefs because that coefficient is 0. + response -= coef * std::polar(1.0, -((2 * nCoefs - kCoef) * normFreq)); + } + + double absResponse = std::abs(response); + maxResponse = jmax(maxResponse, absResponse); + minResponse = jmin(minResponse, absResponse); + } + + // scale factor is reciprocal of geometric mean of max and min + return 1 / std::sqrt(minResponse * maxResponse); +} + +double PhaseCalculator::htFilterSamp(double input, Band band, Array<double>& state) +{ + double* state_p = state.getRawDataPointer(); + + // initialize new state entry + int nCoefs = Hilbert::DELAY.at(band); + int order = nCoefs * 2; + jassert(order == state.size() - 1); + state_p[order] = 0; + + // incorporate new input + auto& transf = Hilbert::TRANSFORMER.at(band); + for (int kCoef = 0; kCoef < nCoefs; ++kCoef) + { + double val = input * transf[kCoef]; + state_p[kCoef] += val; // near component + state_p[order - kCoef] -= val; // mirrored component + } + + // output and shift state + double sampOut = state_p[0]; + memmove(state_p, state_p + 1, order * sizeof(double)); + return sampOut; +} diff --git a/Source/PhaseCalculator.h b/Source/PhaseCalculator.h index 3768ab9..c1a747d 100644 --- a/Source/PhaseCalculator.h +++ b/Source/PhaseCalculator.h @@ -45,17 +45,18 @@ accuracy of phase-locked stimulation in real time. #include <ProcessorHeaders.h> #include <DspLib/Dsp.h> // Filtering #include <queue> -#include "FFTWWrapper.h" // Fourier transform -#include "ARModeler.h" // Autoregressive modeling +#include <array> + +#include "FFTWWrapper.h" // Fourier transform +#include "ARModeler.h" // Autoregressive modeling +#include "HTransformers.h" // Hilbert transformers & frequency bands // parameter indices enum Param { - HILBERT_LENGTH, - PAST_LENGTH, - PRED_LENGTH, RECALC_INTERVAL, AR_ORDER, + BAND, LOWCUT, HIGHCUT, OUTPUT_MODE, @@ -82,6 +83,26 @@ enum OutputMode { PH = 1, MAG, PH_AND_MAG, IM }; class PhaseCalculator : public GenericProcessor, public Thread { friend class PhaseCalculatorEditor; + + // ------- constants ------------ + + // default passband width if pushing lowCut down or highCut up to fix invalid range, + // and also the minimum for lowCut. + // (meant to be larger than actual minimum floating-point eps) + static const float PASSBAND_EPS; + + // priority of the AR model calculating thread (0 = lowest, 10 = highest) + static const int AR_PRIORITY = 3; + + // "glitch limit" (how long of a segment is allowed to be unwrapped or smoothed, in samples) + static const int GLITCH_LIMIT = 200; + + // process length for real-time visualization ground truth hilbert transform + // based on evaluation of phase error compared to offline processing + static const int VIS_HILBERT_LENGTH = 65536; + static const int VIS_TS_MIN_DELAY = 40000; + static const int VIS_TS_MAX_DELAY = 48000; + public: PhaseCalculator(); @@ -124,6 +145,13 @@ class PhaseCalculator : public GenericProcessor, public Thread // for visualizer continuous channel void saveCustomChannelParametersToXml(XmlElement* channelElement, int channelNumber, InfoObjectCommon::InfoObjectType channelType) override; void loadCustomChannelParametersFromXml(XmlElement* channelElement, InfoObjectCommon::InfoObjectType channelType) override; + + /* + * Circular distance between angles x and ref (in radians). The "cutoff" is the maximum + * possible positive output; greater differences will be wrapped to negative angles. + * For interpolation, and also RosePlot visualization. + */ + static double circDist(double x, double ref, double cutoff = 2 * Dsp::doublePi); private: @@ -133,15 +161,15 @@ class PhaseCalculator : public GenericProcessor, public Thread void handleEvent(const EventChannel* eventInfo, const MidiMessage& event, int samplePosition = 0) override; - // Sets hilbertLength (which in turn influences predLength and historyLength) - void setHilbertLength(int newHilbertLength); - - // Sets predLength (which in turn influences historyLength) - void setPredLength(int newPredLength); - // Sets arOrder (which in turn influences historyLength and the arModeler) void setAROrder(int newOrder); + // Sets frequency band (which resets lowCut and highCut to defaults for this band) + void setBand(Band newBand, bool force = false); + + // Resets lowCut and highCut to defaults for the current band + void resetCutsToDefaults(); + // Sets lowCut (which in turn influences highCut) void setLowCut(float newLowCut); @@ -155,12 +183,17 @@ class PhaseCalculator : public GenericProcessor, public Thread // VIS_HILBERT_LENGTH, hilbertLength, predictionLength, and arOrder). void updateHistoryLength(); - // Update minimum Nyquist frequency of active channels based on sample rates - void updateMinNyquist(); + // Update the htScaleFactor depending on the lowCut and highCut of the filter. + void updateScaleFactor(); // Update the filters of active channels. From FilterNode code. void setFilterParameters(); + // If given input channel has an incompatible sample rate, deselect it (and send a warning). + // Otherwise, save the downsampling multiplier and initialize downsampling phase. + // Returns the new selection state of the channel. + bool validateSampleRate(int chan); + // Allocate memory for a new active input channel void addActiveChannel(); @@ -195,13 +228,17 @@ class PhaseCalculator : public GenericProcessor, public Thread /* * arPredict: use autoregressive model of order to predict future data. + * + * lastSample points to the most recent sample of past data that will be used to + * compute phase, and there must be at least stride * (order - 1) samples + * preceding it in order to do the AR prediction. + * * Input params is an array of coefficients of an AR model of length 'order'. - * Writes writeNum future data values starting at location writeStart. - * *** assumes there are at least 'order' existing data points *before* readEnd - * to use to calculate first 'order' data points. readEnd can equal writeStart. + * + * Writes samps future data values to prediction. */ - static void arPredict(const double* readEnd, double* writeStart, int writeNum, - const double* params, int order); + static void arPredict(const double* lastSample, double* prediction, + const double* params, int samps, int stride, int order); /* * hilbertManip: Hilbert transforms data in the frequency domain (including normalization by length of data). @@ -209,15 +246,17 @@ class PhaseCalculator : public GenericProcessor, public Thread */ static void hilbertManip(FFTWArray* fftData); - // ---- customizable parameters ------ + // Get the htScaleFactor for the given band's Hilbert transformer, + // over the range from lowCut and highCut. This is the reciprocal of the geometric + // mean (i.e. mean in decibels) of the maximum and minimum magnitude responses over the range. + static double getScaleFactor(Band band, double lowCut, double highCut); - // number of samples to pass through the Hilbert transform in the main calculation - int hilbertLength; + // Execute the hilbert transformer on one sample and update the state. + static double htFilterSamp(double input, Band band, Array<double>& state); - // number of future values to predict (0 <= predictionLength <= hilbertLength - AR_ORDER) - int predictionLength; + // ---- customizable parameters ------ - // size of historyBuffer ( = max(VIS_HILBERT_LENGTH, hilbertLength - predictionLength)) + // size of historyBuffer ( >= VIS_HILBERT_LENGTH and long enough to train AR model effectively) int historyLength; // time to wait between AR model recalculations in ms @@ -228,6 +267,9 @@ class PhaseCalculator : public GenericProcessor, public Thread OutputMode outputMode; + // frequency band (determines which Hilbert transformer to use) + Band band; + // filter passband float highCut; float lowCut; @@ -242,9 +284,8 @@ class PhaseCalculator : public GenericProcessor, public Thread int numActiveChansAllocated = 0; - // Storage area for filtered data to be read by the main thread to fill hilbertBuffer, - // by the side thread to calculate AR model parameters, and by the visualization event - // handler to calculate acccurate phases at past event times. + // Storage area for filtered data to be used by the side thread to calculate AR model parameters + // and by the visualization event handler to calculate acccurate phases at past event times. AudioBuffer<double> historyBuffer; // Keep track of how much of the historyBuffer is empty (per channel) @@ -253,38 +294,49 @@ class PhaseCalculator : public GenericProcessor, public Thread // Keeps track of each channel's state (see enum definition above) Array<ChannelState> chanState; - // Buffers for FFTW processing - OwnedArray<FFTWArray> hilbertBuffer; - - // Plans for the FFTW Fourier Transform library - OwnedArray<FFTWPlan> forwardPlan; // FFT - OwnedArray<FFTWPlan> backwardPlan; // IFFT - // mutexes for sharedDataBuffer arrays, which are used in the side thread to calculate AR parameters. // since the side thread only READS sharedDataBuffer, only needs to be locked in the main thread when it's WRITTEN to. OwnedArray<CriticalSection> historyLock; // for autoregressive parameter calculation - ARModeler arModeler; + OwnedArray<ARModeler> arModelers; - // keeps track of each channel's last output sample, to be used for smoothing. - Array<float> lastSample; + // for active input channels, equals the sample rate divided by HT_FS + Array<int> sampleRateMultiple; // AR model parameters OwnedArray<Array<double>> arParams; OwnedArray<CriticalSection> arParamLock; - // so that the warning message only gets sent once per run - bool haveSentWarning; + // storage area for predicted samples (to compensate for group delay) + Array<double> predSamps; + + // state of each hilbert transformer (persistent and temporary) + OwnedArray<Array<double>> htState; + Array<double> htTempState; + + // store indices of current buffer to feed into transformer + Array<int> htInds; + + // store output of hilbert transformer + Array<std::complex<double>> htOutput; + + // approximate multiplier for the imaginary component output of the HT (depends on filter band) + double htScaleFactor; + + // keep track of each active channel's last non-interpolated ("computed") transformer output + // and the number of samples by which this sample precedes the start of the next buffer + // (ranges from 1 to sampleRateMultiple). + Array<std::complex<double>> lastComputedSample; + Array<int> dsOffset; + + // keep track of last phase output, for glitch correction + Array<float> lastPhase; // maps full source subprocessor IDs of incoming streams to indices of // corresponding subprocessors created here. HashMap<int, uint16> subProcessorMap; - // for filtering - min Nyquist frequency over active channels - // (upper limit for highCut) - float minNyquist; - // delayed analysis for visualization FFTWArray visHilbertBuffer; FFTWPlan visForwardPlan, visBackwardPlan; @@ -316,29 +368,6 @@ class PhaseCalculator : public GenericProcessor, public Thread OwnedArray<BandpassFilter> filters; BandpassFilter visReverseFilter; - // -------static------------ - - // default passband width if pushing lowCut down or highCut up to fix invalid range, - // and also the minimum for lowCut. - // (meant to be larger than actual minimum floating-point eps) - static const float PASSBAND_EPS; - - // priority of the AR model calculating thread (0 = lowest, 10 = highest) - static const int AR_PRIORITY = 3; - - // "glitch limit" (how long of a segment is allowed to be unwrapped or smoothed, in samples) - static const int GLITCH_LIMIT = 200; - - // process length limits (powers of 2) - static const int MIN_HILB_LEN_POW = 9; - static const int MAX_HILB_LEN_POW = 16; - - // process length for real-time visualization ground truth hilbert transform - // based on evaluation of phase error compared to offline processing - static const int VIS_HILBERT_LENGTH = 65536; - static const int VIS_TS_MIN_DELAY = 40000; - static const int VIS_TS_MAX_DELAY = 48000; - JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR(PhaseCalculator); }; diff --git a/Source/PhaseCalculatorCanvas.cpp b/Source/PhaseCalculatorCanvas.cpp index 62bf18c..042e5fd 100644 --- a/Source/PhaseCalculatorCanvas.cpp +++ b/Source/PhaseCalculatorCanvas.cpp @@ -491,7 +491,7 @@ void RosePlot::setReference(double newReference) void RosePlot::addAngle(double newAngle) { - newAngle = circDist(newAngle, 0.0); + newAngle = PhaseCalculator::circDist(newAngle, 0.0); angleData->insert(newAngle); rSum += std::exp(std::complex<double>(0, newAngle)); repaint(); @@ -517,12 +517,8 @@ double RosePlot::getCircMean(bool usingReference) } double reference = usingReference ? referenceAngle : 0.0; - double meanRad = circDist(std::arg(rSum), reference); - // change range to [-90, 270), for ease of use - if (meanRad >= 3 * PI / 2) - { - meanRad -= 2 * PI; - } + // use range of (-90, 270] for ease of use + double meanRad = PhaseCalculator::circDist(std::arg(rSum), reference, 3 * PI / 2); return meanRad * 180 / PI; } @@ -545,12 +541,12 @@ void RosePlot::labelTextChanged(Label* labelThatHasChanged) double doubleInput; double currReferenceDeg = referenceAngle * 180.0 / PI; bool valid = PhaseCalculatorEditor::updateControl(labelThatHasChanged, - -DBL_MAX, DBL_MAX, currReferenceDeg, &doubleInput); + -DBL_MAX, DBL_MAX, currReferenceDeg, doubleInput); if (valid) { // convert to radians - double newReference = circDist(doubleInput * PI / 180.0, 0.0); + double newReference = PhaseCalculator::circDist(doubleInput * PI / 180.0, 0.0); labelThatHasChanged->setText(String(newReference * 180.0 / PI), dontSendNotification); setReference(newReference); canvas->updateStatLabels(); @@ -570,8 +566,10 @@ RosePlot::circularBinComparator::circularBinComparator(int numBinsIn, double ref bool RosePlot::circularBinComparator::operator() (const double& lhs, const double& rhs) const { - int lhsBin = static_cast<int>(std::floor(circDist(lhs, referenceAngle) * numBins / (2 * PI))); - int rhsBin = static_cast<int>(std::floor(circDist(rhs, referenceAngle) * numBins / (2 * PI))); + double lhsDist = PhaseCalculator::circDist(lhs, referenceAngle); + double rhsDist = PhaseCalculator::circDist(rhs, referenceAngle); + int lhsBin = static_cast<int>(std::floor(lhsDist * numBins / (2 * PI))); + int rhsBin = static_cast<int>(std::floor(rhsDist * numBins / (2 * PI))); return lhsBin < rhsBin; } @@ -602,12 +600,6 @@ void RosePlot::reorganizeAngleData() angleData.swapWith(newAngleData); } -double RosePlot::circDist(double x, double ref) -{ - double xMod = std::fmod(x - ref, 2 * PI); - return (xMod < 0 ? xMod + 2 * PI : xMod); -} - void RosePlot::updateAngles() { float step = 2 * PI_F / numBins; @@ -615,7 +607,7 @@ void RosePlot::updateAngles() for (int i = 0; i < numBins; ++i) { binMidpoints.set(i, step * (i + 0.5)); - float firstAngle = static_cast<float>(circDist(PI / 2, step * (i + 1))); + float firstAngle = static_cast<float>(PhaseCalculator::circDist(PI / 2, step * (i + 1))); segmentAngles.set(i, { firstAngle, firstAngle + step }); } } \ No newline at end of file diff --git a/Source/PhaseCalculatorCanvas.h b/Source/PhaseCalculatorCanvas.h index cb99c98..b6a78c6 100644 --- a/Source/PhaseCalculatorCanvas.h +++ b/Source/PhaseCalculatorCanvas.h @@ -89,9 +89,6 @@ class RosePlot AngleDataMultiset(int numBins, double referenceAngle, AngleDataMultiset* dataSource); }; - // circular distance in radians (return value is in [0, 2*pi)) - static double circDist(double x, double ref); - // make binMidpoints and segmentAngles reflect current numBins void updateAngles(); diff --git a/Source/PhaseCalculatorEditor.cpp b/Source/PhaseCalculatorEditor.cpp index 2ac4ec7..f3621be 100644 --- a/Source/PhaseCalculatorEditor.cpp +++ b/Source/PhaseCalculatorEditor.cpp @@ -22,129 +22,90 @@ along with this program. If not, see <http://www.gnu.org/licenses/>. #include "PhaseCalculatorEditor.h" #include "PhaseCalculatorCanvas.h" +#include "HTransformers.h" #include <climits> // INT_MAX -#include <string> // stoi, stof, stod +#include <cfloat> // FLT_MAX +#include <cmath> // abs PhaseCalculatorEditor::PhaseCalculatorEditor(PhaseCalculator* parentNode, bool useDefaultParameterEditors) - : VisualizerEditor (parentNode, 325, useDefaultParameterEditors) + : VisualizerEditor (parentNode, 220, useDefaultParameterEditors) , extraChanManager (parentNode) , prevExtraChans (0) { tabText = "Event Phase Plot"; - int filterWidth = 80; + int filterWidth = 120; PhaseCalculator* processor = static_cast<PhaseCalculator*>(parentNode); - lowCutLabel = new Label("lowCutL", "Low cut"); - lowCutLabel->setBounds(10, 30, 80, 20); - lowCutLabel->setFont(Font("Small Text", 12, Font::plain)); + bandLabel = new Label("bandL", "Freq range:"); + bandLabel->setBounds(5, 25, 100, 20); + bandLabel->setFont({ "Small Text", 12, Font::plain }); + bandLabel->setColour(Label::textColourId, Colours::darkgrey); + addAndMakeVisible(bandLabel); + + bandBox = new ComboBox("bandB"); + for (int b = 0; b < NUM_BANDS; ++b) + { + bandBox->addItem(Hilbert::BAND_NAME.at(b), b + 1); + } + bandBox->setSelectedId(processor->band + 1); + bandBox->setTooltip(FREQ_RANGE_TOOLTIP); + bandBox->setBounds(7, 42, 110, 20); + bandBox->addListener(this); + addAndMakeVisible(bandBox); + + lowCutLabel = new Label("lowCutL", "Low:"); + lowCutLabel->setBounds(5, 70, 50, 20); + lowCutLabel->setFont({ "Small Text", 12, Font::plain }); lowCutLabel->setColour(Label::textColourId, Colours::darkgrey); addAndMakeVisible(lowCutLabel); lowCutEditable = new Label("lowCutE"); lowCutEditable->setEditable(true); lowCutEditable->addListener(this); - lowCutEditable->setBounds(15, 47, 60, 18); + lowCutEditable->setBounds(50, 70, 35, 18); lowCutEditable->setText(String(processor->lowCut), dontSendNotification); lowCutEditable->setColour(Label::backgroundColourId, Colours::grey); lowCutEditable->setColour(Label::textColourId, Colours::white); addAndMakeVisible(lowCutEditable); - highCutLabel = new Label("highCutL", "High cut"); - highCutLabel->setBounds(10, 70, 80, 20); - highCutLabel->setFont(Font("Small Text", 12, Font::plain)); + lowCutUnit = new Label("lowCutU", "Hz"); + lowCutUnit->setBounds(85, 70, 25, 18); + lowCutUnit->setFont({ "Small Text", 12, Font::plain }); + lowCutUnit->setColour(Label::textColourId, Colours::darkgrey); + addAndMakeVisible(lowCutUnit); + + highCutLabel = new Label("highCutL", "High:"); + highCutLabel->setBounds(5, 100, 50, 20); + highCutLabel->setFont({ "Small Text", 12, Font::plain }); highCutLabel->setColour(Label::textColourId, Colours::darkgrey); addAndMakeVisible(highCutLabel); highCutEditable = new Label("highCutE"); highCutEditable->setEditable(true); highCutEditable->addListener(this); - highCutEditable->setBounds(15, 87, 60, 18); + highCutEditable->setBounds(50, 100, 35, 18); highCutEditable->setText(String(processor->highCut), dontSendNotification); highCutEditable->setColour(Label::backgroundColourId, Colours::grey); highCutEditable->setColour(Label::textColourId, Colours::white); addAndMakeVisible(highCutEditable); - hilbertLengthLabel = new Label("hilbertLength", "Buffer length:"); - hilbertLengthLabel->setBounds(filterWidth + 8, 25, 180, 20); - hilbertLengthLabel->setFont(Font("Small Text", 12, Font::plain)); - hilbertLengthLabel->setColour(Label::textColourId, Colours::darkgrey); - addAndMakeVisible(hilbertLengthLabel); - - hilbertLengthBox = new ComboBox("Buffer size"); - hilbertLengthBox->setEditableText(true); - for (int pow = PhaseCalculator::MIN_HILB_LEN_POW; pow <= PhaseCalculator::MAX_HILB_LEN_POW; ++pow) - { - hilbertLengthBox->addItem(String(1 << pow), pow); - } - hilbertLengthBox->setText(String(processor->hilbertLength), dontSendNotification); - hilbertLengthBox->setTooltip(HILB_LENGTH_TOOLTIP); - hilbertLengthBox->setBounds(filterWidth + 10, 45, 80, 20); - hilbertLengthBox->addListener(this); - addAndMakeVisible(hilbertLengthBox); - - hilbertLengthUnitLabel = new Label("hilbertLengthUnit", "Samp."); - hilbertLengthUnitLabel->setBounds(filterWidth + 90, 45, 40, 20); - hilbertLengthUnitLabel->setFont(Font("Small Text", 12, Font::plain)); - hilbertLengthUnitLabel->setColour(Label::textColourId, Colours::darkgrey); - addAndMakeVisible(hilbertLengthUnitLabel); - - pastLengthLabel = new Label("pastLengthL", "Past:"); - pastLengthLabel->setBounds(filterWidth + 8, 85, 60, 15); - pastLengthLabel->setFont(Font("Small Text", 12, Font::plain)); - pastLengthLabel->setColour(Label::backgroundColourId, Colour(230, 168, 0)); - pastLengthLabel->setColour(Label::textColourId, Colours::darkgrey); - addAndMakeVisible(pastLengthLabel); - - predLengthLabel = new Label("predLengthL", "Future:"); - predLengthLabel->setBounds(filterWidth + 70, 85, 60, 15); - predLengthLabel->setFont(Font("Small Text", 12, Font::plain)); - predLengthLabel->setColour(Label::backgroundColourId, Colour(102, 140, 255)); - predLengthLabel->setColour(Label::textColourId, Colours::darkgrey); - addAndMakeVisible(predLengthLabel); - - pastLengthEditable = new Label("pastLengthE"); - pastLengthEditable->setEditable(true); - pastLengthEditable->addListener(this); - pastLengthEditable->setText(String(processor->hilbertLength - processor->predictionLength), dontSendNotification); - pastLengthEditable->setBounds(filterWidth + 8, 102, 60, 18); - pastLengthEditable->setColour(Label::backgroundColourId, Colours::grey); - pastLengthEditable->setColour(Label::textColourId, Colours::white); - addAndMakeVisible(pastLengthEditable); - - predLengthEditable = new Label("predLengthE"); - predLengthEditable->setEditable(true); - predLengthEditable->addListener(this); - predLengthEditable->setText(String(processor->predictionLength), dontSendNotification); - predLengthEditable->setBounds(filterWidth + 70, 102, 60, 18); - predLengthEditable->setColour(Label::backgroundColourId, Colours::grey); - predLengthEditable->setColour(Label::textColourId, Colours::white); - addAndMakeVisible(predLengthEditable); - - predLengthSlider = new Slider("predLength"); - predLengthSlider->setLookAndFeel(&v3LookAndFeel); - predLengthSlider->setSliderStyle(Slider::LinearBar); - predLengthSlider->setTextBoxStyle(Slider::NoTextBox, false, 40, 20); - predLengthSlider->setScrollWheelEnabled(false); - predLengthSlider->setBounds(filterWidth + 8, 70, 122, 10); - predLengthSlider->setColour(Slider::thumbColourId, Colour(255, 187, 0)); - predLengthSlider->setColour(Slider::backgroundColourId, Colour(51, 102, 255)); - predLengthSlider->setTooltip(PRED_LENGTH_TOOLTIP); - predLengthSlider->addListener(this); - predLengthSlider->setRange(0, processor->hilbertLength, 1); - predLengthSlider->setValue(processor->hilbertLength - processor->predictionLength, dontSendNotification); - addAndMakeVisible(predLengthSlider); + highCutUnit = new Label("highCutU", "Hz"); + highCutUnit->setBounds(85, 100, 25, 18); + highCutUnit->setFont({ "Small Text", 12, Font::plain }); + highCutUnit->setColour(Label::textColourId, Colours::darkgrey); + addAndMakeVisible(highCutUnit); recalcIntervalLabel = new Label("recalcL", "AR Refresh:"); - recalcIntervalLabel->setBounds(filterWidth + 140, 25, 100, 20); - recalcIntervalLabel->setFont(Font("Small Text", 12, Font::plain)); + recalcIntervalLabel->setBounds(filterWidth, 25, 100, 20); + recalcIntervalLabel->setFont({ "Small Text", 12, Font::plain }); recalcIntervalLabel->setColour(Label::textColourId, Colours::darkgrey); addAndMakeVisible(recalcIntervalLabel); recalcIntervalEditable = new Label("recalcE"); recalcIntervalEditable->setEditable(true); recalcIntervalEditable->addListener(this); - recalcIntervalEditable->setBounds(filterWidth + 145, 44, 55, 18); + recalcIntervalEditable->setBounds(filterWidth + 5, 44, 55, 18); recalcIntervalEditable->setColour(Label::backgroundColourId, Colours::grey); recalcIntervalEditable->setColour(Label::textColourId, Colours::white); recalcIntervalEditable->setText(String(processor->calcInterval), dontSendNotification); @@ -152,21 +113,21 @@ PhaseCalculatorEditor::PhaseCalculatorEditor(PhaseCalculator* parentNode, bool u addAndMakeVisible(recalcIntervalEditable); recalcIntervalUnit = new Label("recalcU", "ms"); - recalcIntervalUnit->setBounds(filterWidth + 200, 47, 25, 15); - recalcIntervalUnit->setFont(Font("Small Text", 12, Font::plain)); + recalcIntervalUnit->setBounds(filterWidth + 60, 47, 25, 15); + recalcIntervalUnit->setFont({ "Small Text", 12, Font::plain }); recalcIntervalUnit->setColour(Label::textColourId, Colours::darkgrey); addAndMakeVisible(recalcIntervalUnit); arOrderLabel = new Label("arOrderL", "Order:"); - arOrderLabel->setBounds(filterWidth + 140, 65, 60, 20); - arOrderLabel->setFont(Font("Small Text", 12, Font::plain)); + arOrderLabel->setBounds(filterWidth, 65, 60, 20); + arOrderLabel->setFont({ "Small Text", 12, Font::plain }); arOrderLabel->setColour(Label::textColourId, Colours::darkgrey); addAndMakeVisible(arOrderLabel); arOrderEditable = new Label("arOrderE"); arOrderEditable->setEditable(true); arOrderEditable->addListener(this); - arOrderEditable->setBounds(filterWidth + 195, 66, 25, 18); + arOrderEditable->setBounds(filterWidth + 55, 66, 25, 18); arOrderEditable->setColour(Label::backgroundColourId, Colours::grey); arOrderEditable->setColour(Label::textColourId, Colours::white); arOrderEditable->setText(String(processor->arOrder), sendNotificationAsync); @@ -174,8 +135,8 @@ PhaseCalculatorEditor::PhaseCalculatorEditor(PhaseCalculator* parentNode, bool u addAndMakeVisible(arOrderEditable); outputModeLabel = new Label("outputModeL", "Output:"); - outputModeLabel->setBounds(filterWidth + 140, 87, 70, 20); - outputModeLabel->setFont(Font("Small Text", 12, Font::plain)); + outputModeLabel->setBounds(filterWidth, 87, 70, 20); + outputModeLabel->setFont({ "Small Text", 12, Font::plain }); outputModeLabel->setColour(Label::textColourId, Colours::darkgrey); addAndMakeVisible(outputModeLabel); @@ -186,7 +147,7 @@ PhaseCalculatorEditor::PhaseCalculatorEditor(PhaseCalculator* parentNode, bool u outputModeBox->addItem("IMAG", IM); outputModeBox->setSelectedId(processor->outputMode); outputModeBox->setTooltip(OUTPUT_MODE_TOOLTIP); - outputModeBox->setBounds(filterWidth + 145, 105, 76, 19); + outputModeBox->setBounds(filterWidth + 5, 105, 76, 19); outputModeBox->addListener(this); addAndMakeVisible(outputModeBox); @@ -200,21 +161,9 @@ void PhaseCalculatorEditor::comboBoxChanged(ComboBox* comboBoxThatHasChanged) { PhaseCalculator* processor = static_cast<PhaseCalculator*>(getProcessor()); - if (comboBoxThatHasChanged == hilbertLengthBox) + if (comboBoxThatHasChanged == bandBox) { - int newId = hilbertLengthBox->getSelectedId(); - int newHilbertLength; - if (newId) // one of the items in the list is selected - { - newHilbertLength = (1 << newId); - } - else if (!updateControl(comboBoxThatHasChanged, 1 << PhaseCalculator::MIN_HILB_LEN_POW, - 1 << PhaseCalculator::MAX_HILB_LEN_POW, processor->hilbertLength, &newHilbertLength)) - { - return; - } - - processor->setParameter(HILBERT_LENGTH, static_cast<float>(newHilbertLength)); + processor->setParameter(BAND, static_cast<float>(bandBox->getSelectedId() - 1)); } else if (comboBoxThatHasChanged == outputModeBox) { @@ -226,34 +175,10 @@ void PhaseCalculatorEditor::labelTextChanged(Label* labelThatHasChanged) { PhaseCalculator* processor = static_cast<PhaseCalculator*>(getProcessor()); - int sliderMax = static_cast<int>(predLengthSlider->getMaximum()); - - if (labelThatHasChanged == pastLengthEditable) - { - int intInput; - bool valid = updateControl(labelThatHasChanged, 0, processor->hilbertLength, - processor->hilbertLength - processor->predictionLength, &intInput); - - if (valid) - { - processor->setParameter(PAST_LENGTH, static_cast<float>(intInput)); - } - } - else if (labelThatHasChanged == predLengthEditable) + if (labelThatHasChanged == recalcIntervalEditable) { int intInput; - bool valid = updateControl(labelThatHasChanged, 0, processor->hilbertLength, - processor->predictionLength, &intInput); - - if (valid) - { - processor->setParameter(PRED_LENGTH, static_cast<float>(intInput)); - } - } - else if (labelThatHasChanged == recalcIntervalEditable) - { - int intInput; - bool valid = updateControl(labelThatHasChanged, 0, INT_MAX, processor->calcInterval, &intInput); + bool valid = updateControl(labelThatHasChanged, 0, INT_MAX, processor->calcInterval, intInput); if (valid) { @@ -263,7 +188,7 @@ void PhaseCalculatorEditor::labelTextChanged(Label* labelThatHasChanged) else if (labelThatHasChanged == arOrderEditable) { int intInput; - bool valid = updateControl(labelThatHasChanged, 1, INT_MAX, processor->arOrder, &intInput); + bool valid = updateControl(labelThatHasChanged, 1, INT_MAX, processor->arOrder, intInput); if (valid) { @@ -273,8 +198,7 @@ void PhaseCalculatorEditor::labelTextChanged(Label* labelThatHasChanged) else if (labelThatHasChanged == lowCutEditable) { float floatInput; - bool valid = updateControl(labelThatHasChanged, PhaseCalculator::PASSBAND_EPS, - processor->minNyquist - PhaseCalculator::PASSBAND_EPS, processor->lowCut, &floatInput); + bool valid = updateControl(labelThatHasChanged, 0.0f, FLT_MAX, processor->lowCut, floatInput); if (valid) { @@ -284,35 +208,31 @@ void PhaseCalculatorEditor::labelTextChanged(Label* labelThatHasChanged) else if (labelThatHasChanged == highCutEditable) { float floatInput; - bool valid = updateControl(labelThatHasChanged, 2 * PhaseCalculator::PASSBAND_EPS, - processor->minNyquist, processor->highCut, &floatInput); - - if (valid) + bool valid = updateControl(labelThatHasChanged, 0.0f, FLT_MAX, processor->highCut, floatInput); + + if (valid) { processor->setParameter(HIGHCUT, floatInput); } } } -void PhaseCalculatorEditor::sliderEvent(Slider* slider) -{ - if (slider == predLengthSlider) - { - int newVal = static_cast<int>(slider->getValue()); - int maxVal = static_cast<int>(slider->getMaximum()); - getProcessor()->setParameter(PRED_LENGTH, static_cast<float>(maxVal - newVal)); - } -} - void PhaseCalculatorEditor::channelChanged(int chan, bool newState) { - auto pc = static_cast<PhaseCalculator*>(getProcessor()); + auto pc = static_cast<PhaseCalculator*>(getProcessor()); if (chan < pc->getNumInputs()) { Array<int> activeInputs = pc->getActiveInputs(); - if (newState && activeInputs.size() > pc->numActiveChansAllocated) - { - pc->addActiveChannel(); + if (newState) + { + // check whether sample rate is compatible (and if not, disable channel) + if (!pc->validateSampleRate(chan)) { return; } + + // ensure space allocated for per-active-channel arrays + if (activeInputs.size() > pc->numActiveChansAllocated) + { + pc->addActiveChannel(); + } } if (pc->outputMode == PH_AND_MAG) @@ -331,21 +251,14 @@ void PhaseCalculatorEditor::channelChanged(int chan, bool newState) } else { - // Can just do a partial update - pc->updateMinNyquist(); // minNyquist may have changed depending on active chans - pc->setFilterParameters(); // need to update in case the passband has changed - updateVisualizer(); // update the available continuous channels for visualizer + updateVisualizer(); // update the available continuous channels for visualizer } } } void PhaseCalculatorEditor::startAcquisition() { - GenericEditor::startAcquisition(); - hilbertLengthBox->setEnabled(false); - predLengthSlider->setEnabled(false); - pastLengthEditable->setEnabled(false); - predLengthEditable->setEnabled(false); + bandBox->setEnabled(false); lowCutEditable->setEnabled(false); highCutEditable->setEnabled(false); arOrderEditable->setEnabled(false); @@ -355,11 +268,7 @@ void PhaseCalculatorEditor::startAcquisition() void PhaseCalculatorEditor::stopAcquisition() { - GenericEditor::stopAcquisition(); - hilbertLengthBox->setEnabled(true); - predLengthSlider->setEnabled(true); - pastLengthEditable->setEnabled(true); - predLengthEditable->setEnabled(true); + bandBox->setEnabled(true); lowCutEditable->setEnabled(true); highCutEditable->setEnabled(true); arOrderEditable->setEnabled(true); @@ -433,15 +342,17 @@ void PhaseCalculatorEditor::saveCustomParameters(XmlElement* xml) xml->setAttribute("Type", "PhaseCalculatorEditor"); PhaseCalculator* processor = (PhaseCalculator*)(getProcessor()); - + XmlElement* paramValues = xml->createNewChildElement("VALUES"); - paramValues->setAttribute("hilbertLength", processor->hilbertLength); - paramValues->setAttribute("predLength", processor->predictionLength); paramValues->setAttribute("calcInterval", processor->calcInterval); paramValues->setAttribute("arOrder", processor->arOrder); paramValues->setAttribute("lowCut", processor->lowCut); paramValues->setAttribute("highCut", processor->highCut); paramValues->setAttribute("outputMode", processor->outputMode); + + const Array<float>& validBand = Hilbert::VALID_BAND.at(processor->band); + paramValues->setAttribute("rangeMin", validBand[0]); + paramValues->setAttribute("rangeMax", validBand[1]); } void PhaseCalculatorEditor::loadCustomParameters(XmlElement* xml) @@ -451,12 +362,9 @@ void PhaseCalculatorEditor::loadCustomParameters(XmlElement* xml) forEachXmlChildElementWithTagName(*xml, xmlNode, "VALUES") { // some parameters have two fallbacks for backwards compatability - hilbertLengthBox->setText(xmlNode->getStringAttribute("hilbertLength", - xmlNode->getStringAttribute("processLength", hilbertLengthBox->getText())), sendNotificationSync); - predLengthEditable->setText(xmlNode->getStringAttribute("predLength", - xmlNode->getStringAttribute("numFuture", predLengthEditable->getText())), sendNotificationSync); recalcIntervalEditable->setText(xmlNode->getStringAttribute("calcInterval", recalcIntervalEditable->getText()), sendNotificationSync); arOrderEditable->setText(xmlNode->getStringAttribute("arOrder", arOrderEditable->getText()), sendNotificationSync); + bandBox->setSelectedId(selectBandFromSavedParams(xmlNode) + 1, sendNotificationSync); lowCutEditable->setText(xmlNode->getStringAttribute("lowCut", lowCutEditable->getText()), sendNotificationSync); highCutEditable->setText(xmlNode->getStringAttribute("highCut", highCutEditable->getText()), sendNotificationSync); outputModeBox->setSelectedId(xmlNode->getIntAttribute("outputMode", outputModeBox->getSelectedId()), sendNotificationSync); @@ -475,34 +383,6 @@ void PhaseCalculatorEditor::refreshHighCut() highCutEditable->setText(String(p->highCut), dontSendNotification); } -void PhaseCalculatorEditor::refreshPredLength() -{ - auto p = static_cast<PhaseCalculator*>(getProcessor()); - int newPredLength = p->predictionLength; - - jassert(predLengthSlider->getMinimum() == 0); - int maximum = static_cast<int>(predLengthSlider->getMaximum()); - jassert(newPredLength >= 0 && newPredLength <= maximum); - - predLengthSlider->setValue(maximum - newPredLength, dontSendNotification); - pastLengthEditable->setText(String(maximum - newPredLength), dontSendNotification); - predLengthEditable->setText(String(newPredLength), dontSendNotification); -} - -void PhaseCalculatorEditor::refreshHilbertLength() -{ - auto p = static_cast<PhaseCalculator*>(getProcessor()); - int newHilbertLength = p->hilbertLength; - - hilbertLengthBox->setText(String(newHilbertLength), dontSendNotification); - predLengthSlider->setRange(0, newHilbertLength, 1); - - // if possible, maintain prediction length while making past + pred = hilbertLength - int sliderVal = static_cast<int>(predLengthSlider->getValue()); - pastLengthEditable->setText(String(sliderVal), dontSendNotification); - predLengthEditable->setText(String(newHilbertLength - sliderVal), dontSendNotification); -} - void PhaseCalculatorEditor::refreshVisContinuousChan() { auto p = static_cast<PhaseCalculator*>(getProcessor()); @@ -515,24 +395,61 @@ void PhaseCalculatorEditor::refreshVisContinuousChan() // static utilities -template<> -int PhaseCalculatorEditor::fromString<int>(const char* in) +int PhaseCalculatorEditor::selectBandFromSavedParams(const XmlElement* xmlNode) { - return std::stoi(in); -} + if (xmlNode->hasAttribute("rangeMin") && xmlNode->hasAttribute("rangeMax")) + { + // I don't trust JUCE's string parsing functionality (doesn't indicate failure, etc...) + float rangeMin, rangeMax; + if (readNumber(xmlNode->getStringAttribute("rangeMin"), rangeMin) && + readNumber(xmlNode->getStringAttribute("rangeMax"), rangeMax)) + { + // try to find a matching band. + for (auto keyVal : Hilbert::VALID_BAND) + { + int b = keyVal.first; + const Array<float>& validRange = keyVal.second; -template<> -float PhaseCalculatorEditor::fromString<float>(const char* in) -{ - return std::stof(in); -} + if (validRange[0] == rangeMin && validRange[1] == rangeMax) + { + return b; + } + } + } + } -template<> -double PhaseCalculatorEditor::fromString<double>(const char* in) -{ - return std::stod(in); -} + // no match, or rangeMin and rangeMax were invalid + // try to find a good fit for lowCut and highCut + if (xmlNode->hasAttribute("lowCut") && xmlNode->hasAttribute("highCut")) + { + float lowCut, highCut; + if (readNumber(xmlNode->getStringAttribute("lowCut"), lowCut) && lowCut >= 0 && + readNumber(xmlNode->getStringAttribute("highCut"), highCut) && highCut > lowCut) + { + float midCut = (lowCut + highCut) / 2; + int bestBand = 0; + float bestBandDist = FLT_MAX; + + for (auto keyVal : Hilbert::VALID_BAND) + { + int b = keyVal.first; + const Array<float>& validRange = keyVal.second; + + float midBand = (validRange[0] + validRange[1]) / 2; + float midDist = std::abs(midBand - midCut); + if (validRange[0] <= lowCut && validRange[1] >= highCut && midDist < bestBandDist) + { + bestBand = b; + bestBandDist = midDist; + } + } + return bestBand; + } + } + // just fallback to first band + return 0; +} // -------- ExtraChanManager --------- diff --git a/Source/PhaseCalculatorEditor.h b/Source/PhaseCalculatorEditor.h index 5cc749b..f9d658d 100644 --- a/Source/PhaseCalculatorEditor.h +++ b/Source/PhaseCalculatorEditor.h @@ -24,6 +24,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>. #ifndef PHASE_CALCULATOR_EDITOR_H_INCLUDED #define PHASE_CALCULATOR_EDITOR_H_INCLUDED +#include <sstream> // string parsing #include <VisualizerEditorHeaders.h> #include "PhaseCalculator.h" @@ -44,9 +45,6 @@ class PhaseCalculatorEditor // implements Label::Listener void labelTextChanged(Label* labelThatHasChanged) override; - // overrides GenericEditor - void sliderEvent(Slider* slider) override; - // update display based on current channel void channelChanged(int chan, bool newState) override; @@ -64,16 +62,30 @@ class PhaseCalculatorEditor // display updaters - do not trigger listeners. void refreshLowCut(); void refreshHighCut(); - void refreshPredLength(); - void refreshHilbertLength(); void refreshVisContinuousChan(); private: - // Utilities for parsing entered values + /* + * Select a frequency band when loading based on the saved information. + * Don't want to use the index in case bands are added/removed in the future (and it's less readable). + * Instead, try to match the min and max valid frequencies of the range. If that fails (or if + * the rangeMin and rangeMax attributes don't exist), find the band that encompasses lowCut and highCut + * and puts them closest to the center. Finally, if all else fails, just return the first band. + */ + static int selectBandFromSavedParams(const XmlElement* xmlNode); + /* + * Tries to read a number of type out from input. Returns false if unsuccessful. + * Otherwise, returns true and writes the result to *out. + */ template<typename T> - static T fromString(const char* in); + static bool readNumber(const String& input, T& out) + { + std::istringstream istream(input.toStdString()); + istream >> out; + return !istream.fail(); + } /* * Return whether the control contained a valid input between min and max, inclusive. @@ -83,26 +95,19 @@ class PhaseCalculatorEditor * In header to make sure specializations not used in PhaseCalculatorEditor.cpp * are still available to other translation units. */ - template<typename Ctrl, typename T> static bool updateControl(Ctrl* c, const T min, const T max, - const T defaultValue, T* out) + const T defaultValue, T& out) { - T parsedVal; - try + if (readNumber(c->getText(), out)) { - parsedVal = fromString<T>(c->getText().toRawUTF8()); + out = jmax(min, jmin(max, out)); + c->setText(String(out), dontSendNotification); + return true; } - catch (const std::logic_error&) - { - c->setText(String(defaultValue), dontSendNotification); - return false; - } - - *out = jmax(min, jmin(max, parsedVal)); - c->setText(String(*out), dontSendNotification); - return true; + c->setText(String(defaultValue), dontSendNotification); + return false; } // keep track of the record status of each "extra" channel @@ -131,21 +136,16 @@ class PhaseCalculatorEditor int prevExtraChans; ExtraChanManager extraChanManager; + ScopedPointer<Label> bandLabel; + ScopedPointer<ComboBox> bandBox; + ScopedPointer<Label> lowCutLabel; ScopedPointer<Label> lowCutEditable; + ScopedPointer<Label> lowCutUnit; + ScopedPointer<Label> highCutLabel; ScopedPointer<Label> highCutEditable; - - ScopedPointer<Label> hilbertLengthLabel; - ScopedPointer<Label> hilbertLengthUnitLabel; - ScopedPointer<ComboBox> hilbertLengthBox; - - LookAndFeel_V3 v3LookAndFeel; - ScopedPointer<Slider> predLengthSlider; - ScopedPointer<Label> pastLengthLabel; - ScopedPointer<Label> pastLengthEditable; - ScopedPointer<Label> predLengthLabel; - ScopedPointer<Label> predLengthEditable; + ScopedPointer<Label> highCutUnit; ScopedPointer<Label> recalcIntervalLabel; ScopedPointer<Label> recalcIntervalEditable; @@ -158,7 +158,9 @@ class PhaseCalculatorEditor ScopedPointer<ComboBox> outputModeBox; // constants - + const String FREQ_RANGE_TOOLTIP = "Each option corresponds internally to a Hilbert transformer " + + String("that is optimized for this frequency range. After selecting a range, you can adjust ") + + "'low' and 'high' to filter to any passband within this range."; const String HILB_LENGTH_TOOLTIP = "Change the total amount of data used to calculate the phase (powers of 2 are best)"; const String PRED_LENGTH_TOOLTIP = "Select how much past vs. predicted data to use when calculating the phase"; const String RECALC_INTERVAL_TOOLTIP = "Time to wait between calls to update the autoregressive models"; @@ -170,4 +172,4 @@ class PhaseCalculatorEditor JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR(PhaseCalculatorEditor); }; -#endif // PHASE_CALCULATOR_EDITOR_H_INCLUDED \ No newline at end of file +#endif // PHASE_CALCULATOR_EDITOR_H_INCLUDED diff --git a/ht_pc.png b/ht_pc.png new file mode 100644 index 0000000000000000000000000000000000000000..97108436f5d8b54f08a7d9d239208e8082ee3818 GIT binary patch literal 11915 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 Q1NjXl1vU8+S(Cv31$l%%DgXcg literal 0 HcmV?d00001 diff --git a/ht_pc_menu1.png b/ht_pc_menu1.png new file mode 100644 index 0000000000000000000000000000000000000000..eb79f8064e4e7b99763e06acfae3767bda61fe7a GIT binary patch literal 18437 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 bIp6(1+;=ed_4ag~00000NkvXXu0mjfHo`f0 literal 0 HcmV?d00001 diff --git a/ht_pc_menu2.png b/ht_pc_menu2.png new file mode 100644 index 0000000000000000000000000000000000000000..4b481363c5c32f5fd2666d924110b93380e98fe2 GIT binary patch literal 13800 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 UP6s-`+gVQ(WL0HKq+ovk2fFt|82|tP literal 0 HcmV?d00001 From 7af8d49e46789f861df7aac422682a18705b6ab8 Mon Sep 17 00:00:00 2001 From: Ethan Blackwood <ethanbblackwood@gmail.com> Date: Thu, 24 Jan 2019 09:18:00 -0600 Subject: [PATCH 2/3] Restore canvas settings even when it's not open --- Source/PhaseCalculatorEditor.cpp | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/Source/PhaseCalculatorEditor.cpp b/Source/PhaseCalculatorEditor.cpp index f3621be..9bffe20 100644 --- a/Source/PhaseCalculatorEditor.cpp +++ b/Source/PhaseCalculatorEditor.cpp @@ -35,7 +35,8 @@ PhaseCalculatorEditor::PhaseCalculatorEditor(PhaseCalculator* parentNode, bool u tabText = "Event Phase Plot"; int filterWidth = 120; - PhaseCalculator* processor = static_cast<PhaseCalculator*>(parentNode); + // make the canvas now, so that restoring its parameters always works. + canvas = new PhaseCalculatorCanvas(parentNode); bandLabel = new Label("bandL", "Freq range:"); bandLabel->setBounds(5, 25, 100, 20); @@ -48,7 +49,7 @@ PhaseCalculatorEditor::PhaseCalculatorEditor(PhaseCalculator* parentNode, bool u { bandBox->addItem(Hilbert::BAND_NAME.at(b), b + 1); } - bandBox->setSelectedId(processor->band + 1); + bandBox->setSelectedId(parentNode->band + 1); bandBox->setTooltip(FREQ_RANGE_TOOLTIP); bandBox->setBounds(7, 42, 110, 20); bandBox->addListener(this); @@ -64,7 +65,7 @@ PhaseCalculatorEditor::PhaseCalculatorEditor(PhaseCalculator* parentNode, bool u lowCutEditable->setEditable(true); lowCutEditable->addListener(this); lowCutEditable->setBounds(50, 70, 35, 18); - lowCutEditable->setText(String(processor->lowCut), dontSendNotification); + lowCutEditable->setText(String(parentNode->lowCut), dontSendNotification); lowCutEditable->setColour(Label::backgroundColourId, Colours::grey); lowCutEditable->setColour(Label::textColourId, Colours::white); addAndMakeVisible(lowCutEditable); @@ -85,7 +86,7 @@ PhaseCalculatorEditor::PhaseCalculatorEditor(PhaseCalculator* parentNode, bool u highCutEditable->setEditable(true); highCutEditable->addListener(this); highCutEditable->setBounds(50, 100, 35, 18); - highCutEditable->setText(String(processor->highCut), dontSendNotification); + highCutEditable->setText(String(parentNode->highCut), dontSendNotification); highCutEditable->setColour(Label::backgroundColourId, Colours::grey); highCutEditable->setColour(Label::textColourId, Colours::white); addAndMakeVisible(highCutEditable); @@ -108,7 +109,7 @@ PhaseCalculatorEditor::PhaseCalculatorEditor(PhaseCalculator* parentNode, bool u recalcIntervalEditable->setBounds(filterWidth + 5, 44, 55, 18); recalcIntervalEditable->setColour(Label::backgroundColourId, Colours::grey); recalcIntervalEditable->setColour(Label::textColourId, Colours::white); - recalcIntervalEditable->setText(String(processor->calcInterval), dontSendNotification); + recalcIntervalEditable->setText(String(parentNode->calcInterval), dontSendNotification); recalcIntervalEditable->setTooltip(RECALC_INTERVAL_TOOLTIP); addAndMakeVisible(recalcIntervalEditable); @@ -130,7 +131,7 @@ PhaseCalculatorEditor::PhaseCalculatorEditor(PhaseCalculator* parentNode, bool u arOrderEditable->setBounds(filterWidth + 55, 66, 25, 18); arOrderEditable->setColour(Label::backgroundColourId, Colours::grey); arOrderEditable->setColour(Label::textColourId, Colours::white); - arOrderEditable->setText(String(processor->arOrder), sendNotificationAsync); + arOrderEditable->setText(String(parentNode->arOrder), sendNotificationAsync); arOrderEditable->setTooltip(AR_ORDER_TOOLTIP); addAndMakeVisible(arOrderEditable); @@ -145,7 +146,7 @@ PhaseCalculatorEditor::PhaseCalculatorEditor(PhaseCalculator* parentNode, bool u outputModeBox->addItem("MAG", MAG); outputModeBox->addItem("PH+MAG", PH_AND_MAG); outputModeBox->addItem("IMAG", IM); - outputModeBox->setSelectedId(processor->outputMode); + outputModeBox->setSelectedId(parentNode->outputMode); outputModeBox->setTooltip(OUTPUT_MODE_TOOLTIP); outputModeBox->setBounds(filterWidth + 5, 105, 76, 19); outputModeBox->addListener(this); @@ -278,7 +279,6 @@ void PhaseCalculatorEditor::stopAcquisition() Visualizer* PhaseCalculatorEditor::createNewCanvas() { - canvas = new PhaseCalculatorCanvas(static_cast<PhaseCalculator*>(getProcessor())); return canvas; } From edc22742f1be78f4f92fe282909404f1a60e9e64 Mon Sep 17 00:00:00 2001 From: Ethan Blackwood <ethanbblackwood@gmail.com> Date: Thu, 24 Jan 2019 10:39:38 -0600 Subject: [PATCH 3/3] Add DOI badge and update reference --- README.md | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 88cf760..3312140 100644 --- a/README.md +++ b/README.md @@ -1,10 +1,12 @@ -# Phase Calculator Plugin +# Phase Calculator Plugin [](https://zenodo.org/badge/latestdoi/134900173) A plugin for the [Open Ephys GUI](https://github.com/open-ephys/plugin-GUI) to estimate the phase of inputs within a specified passband in real time. Its primary purpose is to enable closed-loop stimulation, typically in combination with the [Crossing Detector](https://github.com/tne-lab/crossing-detector) and either the Pulse Pal or an external stimulation system that receives ZeroMQ events (for example, the LabVIEW implementation [here](https://github.com/tne-lab/closed-loop-stim)). It can also output the magnitude or imaginary component of the band-limited analytic signal instead of the phase. (The "PH+MAG" mode outputs both phase and magnitude, in separate channels.) Finally, the visualization tab or window can receive TTL events and display the delayed but precise phase of a specified input at the event onset samples in a rose plot. This allows real-time monitoring of stimulation accuracy. -The closed-loop system incorporating this plugin is described in the following article, which should be cited in future publications: +The following article describes the algorithm used by the previous version of this plugin and the closed-loop stimulation pipeline as a whole: -Blackwood, E., Lo, M., Widge, A. S. (2018). Continuous phase estimation for phase-locked neural stimulation using an autoregressive model for signal prediction. 40th International Conference of the IEEE Engineering in Medicine and Biology Society, in press. +Blackwood, E., Lo, M., Widge, A. S. (2018). Continuous phase estimation for phase-locked neural stimulation using an autoregressive model for signal prediction. 40th International Conference of the IEEE Engineering in Medicine and Biology Society (EMBC), Honolulu, HI, 4736-4739. + +If you are just using the plugin in your project, you can cite this version of the code using the DOI listed in the header of this file. <img src="ht_pc.png" width="200" /><img src="ht_pc_menu1.png" width="200"/><img src="ht_pc_menu2.png" width="200"/> <img src="PC_vis.png" width="350" />