Skip to content

Commit 58b1d6b

Browse files
committed
Merge remote-tracking branch 'upstream/master' into mastermerge
2 parents 192b653 + a23cc9d commit 58b1d6b

6 files changed

Lines changed: 29 additions & 17 deletions

File tree

Source/Plugins/BasicSpikeDisplay/SpikeDetector/SpikeDetector.cpp

Lines changed: 17 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,8 @@
2929
SpikeDetector::SpikeDetector()
3030
: GenericProcessor("Spike Detector"),
3131
overflowBuffer(2,100), dataBuffer(nullptr),
32-
overflowBufferSize(100), currentElectrode(-1)
32+
overflowBufferSize(100), currentElectrode(-1),
33+
uniqueID(0)
3334
{
3435
//// the standard form:
3536
electrodeTypes.add("single electrode");
@@ -97,7 +98,7 @@ void SpikeDetector::updateSettings()
9798

9899
}
99100

100-
bool SpikeDetector::addElectrode(int nChans)
101+
bool SpikeDetector::addElectrode(int nChans, int electrodeID)
101102
{
102103

103104
std::cout << "Adding electrode with " << nChans << " channels." << std::endl;
@@ -143,9 +144,9 @@ bool SpikeDetector::addElectrode(int nChans)
143144
newElectrode->numChannels = nChans;
144145
newElectrode->prePeakSamples = 8;
145146
newElectrode->postPeakSamples = 32;
146-
newElectrode->thresholds = new double[nChans];
147-
newElectrode->isActive = new bool[nChans];
148-
newElectrode->channels = new int[nChans];
147+
newElectrode->thresholds.malloc(nChans);
148+
newElectrode->isActive.malloc(nChans);
149+
newElectrode->channels.malloc(nChans);
149150
newElectrode->isMonitored = false;
150151

151152
for (int i = 0; i < nChans; i++)
@@ -155,6 +156,13 @@ bool SpikeDetector::addElectrode(int nChans)
155156
*(newElectrode->isActive+i) = true;
156157
}
157158

159+
if (electrodeID > 0) {
160+
newElectrode->electrodeID = electrodeID;
161+
uniqueID = std::max(uniqueID, electrodeID);
162+
} else {
163+
newElectrode->electrodeID = ++uniqueID;
164+
}
165+
158166
newElectrode->sourceNodeId = channels[*newElectrode->channels]->sourceNodeId;
159167

160168
resetElectrode(newElectrode);
@@ -505,7 +513,7 @@ void SpikeDetector::process(AudioSampleBuffer& buffer,
505513
newSpike.source = i;
506514
newSpike.nChannels = electrode->numChannels;
507515
newSpike.sortedId = 0;
508-
newSpike.electrodeID = 0;
516+
newSpike.electrodeID = electrode->electrodeID;
509517
newSpike.channel = 0;
510518
newSpike.samplingFrequencyHz = sampleRateForElectrode;
511519

@@ -676,6 +684,7 @@ void SpikeDetector::saveCustomParametersToXml(XmlElement* parentElement)
676684
electrodeNode->setAttribute("numChannels", electrodes[i]->numChannels);
677685
electrodeNode->setAttribute("prePeakSamples", electrodes[i]->prePeakSamples);
678686
electrodeNode->setAttribute("postPeakSamples", electrodes[i]->postPeakSamples);
687+
electrodeNode->setAttribute("electrodeID", electrodes[i]->electrodeID);
679688

680689
for (int j = 0; j < electrodes[i]->numChannels; j++)
681690
{
@@ -712,8 +721,9 @@ void SpikeDetector::loadCustomParametersFromXml()
712721
std::cout << "ELECTRODE>>>" << std::endl;
713722

714723
int channelsPerElectrode = xmlNode->getIntAttribute("numChannels");
724+
int electrodeID = xmlNode->getIntAttribute("electrodeID");
715725

716-
sde->addElectrode(channelsPerElectrode);
726+
sde->addElectrode(channelsPerElectrode, electrodeID);
717727

718728
setElectrodeName(electrodeIndex+1, xmlNode->getStringAttribute("name"));
719729
sde->refreshElectrodeList();

Source/Plugins/BasicSpikeDisplay/SpikeDetector/SpikeDetector.h

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -38,11 +38,12 @@ struct SimpleElectrode
3838
int prePeakSamples, postPeakSamples;
3939
int lastBufferIndex;
4040
bool isMonitored;
41+
int electrodeID;
4142
int sourceNodeId;
4243

43-
int* channels;
44-
double* thresholds;
45-
bool* isActive;
44+
HeapBlock<int> channels;
45+
HeapBlock<double> thresholds;
46+
HeapBlock<bool> isActive;
4647

4748
};
4849

@@ -102,7 +103,7 @@ class SpikeDetector : public GenericProcessor
102103
// CREATE AND DELETE ELECTRODES //
103104

104105
/** Adds an electrode with n channels to be processed. */
105-
bool addElectrode(int nChans);
106+
bool addElectrode(int nChans, int electrodeID = 0);
106107

107108
/** Removes an electrode with a given index. */
108109
bool removeElectrode(int index);
@@ -179,6 +180,7 @@ class SpikeDetector : public GenericProcessor
179180
int64 timestamp;
180181

181182
Array<SimpleElectrode*> electrodes;
183+
int uniqueID;
182184

183185
// void createSpikeEvent(int& peakIndex,
184186
// int& electrodeNumber,

Source/Plugins/BasicSpikeDisplay/SpikeDetector/SpikeDetectorEditor.cpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -433,11 +433,11 @@ void SpikeDetectorEditor::refreshElectrodeList()
433433
}
434434
}
435435

436-
bool SpikeDetectorEditor::addElectrode(int nChans)
436+
bool SpikeDetectorEditor::addElectrode(int nChans, int electrodeID)
437437
{
438438
SpikeDetector* processor = (SpikeDetector*) getProcessor();
439439

440-
if (processor->addElectrode(nChans))
440+
if (processor->addElectrode(nChans, electrodeID))
441441
{
442442
refreshElectrodeList();
443443
return true;
@@ -544,7 +544,7 @@ void SpikeDetectorEditor::comboBoxChanged(ComboBox* comboBox)
544544

545545
void SpikeDetectorEditor::checkSettings()
546546
{
547-
electrodeList->setSelectedItemIndex(0);
547+
electrodeList->setSelectedId(0);
548548
drawElectrodeButtons(0);
549549

550550
CoreServices::updateSignalChain(this);

Source/Plugins/BasicSpikeDisplay/SpikeDetector/SpikeDetectorEditor.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,7 @@ class SpikeDetectorEditor : public GenericEditor,
6060

6161
void channelChanged(int chan);
6262

63-
bool addElectrode(int nChans);
63+
bool addElectrode(int nChans, int electrodeID = 0);
6464
void removeElectrode(int index);
6565

6666
void checkSettings();

Source/Plugins/LfpDisplayNode/LfpDisplayNode.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ LfpDisplayNode::LfpDisplayNode()
3333
//std::cout << " LFPDisplayNodeConstructor" << std::endl;
3434
displayBuffer = new AudioSampleBuffer(8, 100);
3535

36-
arrayOfOnes = new float[5000];
36+
arrayOfOnes.malloc(5000);
3737

3838
for (int n = 0; n < 5000; n++)
3939
{

Source/Plugins/LfpDisplayNode/LfpDisplayNode.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -97,7 +97,7 @@ class LfpDisplayNode : public GenericProcessor
9797

9898
int64 bufferTimestamp;
9999
std::map<int, int> ttlState;
100-
float* arrayOfOnes;
100+
HeapBlock<float> arrayOfOnes;
101101
int totalSamples;
102102

103103
bool resizeBuffer();

0 commit comments

Comments
 (0)