Skip to content
Snippets Groups Projects
Commit 8c03babb authored by jsiegle's avatar jsiegle
Browse files

Fix issues with saving spikes

parent 61204918
No related branches found
No related tags found
No related merge requests found
...@@ -84,9 +84,7 @@ void ChannelMappingNode::process(AudioSampleBuffer& buffer, ...@@ -84,9 +84,7 @@ void ChannelMappingNode::process(AudioSampleBuffer& buffer,
{ {
// use copy constructor to set the data to refer to // use copy constructor to set the data to refer to
channelBuffer = buffer; //.setDataToReferTo(buffer.getArrayOfChannels(), channelBuffer = buffer;
// buffer.getNumChannels(),
// buffer.getNumSamples());
// copy it back into the buffer according to the channel mapping // copy it back into the buffer according to the channel mapping
buffer.clear(); buffer.clear();
......
...@@ -335,7 +335,7 @@ void SpikeDetector::addSpikeEvent(SpikeObject* s, MidiBuffer& eventBuffer, int p ...@@ -335,7 +335,7 @@ void SpikeDetector::addSpikeEvent(SpikeObject* s, MidiBuffer& eventBuffer, int p
s->eventType = SPIKE_EVENT_CODE; s->eventType = SPIKE_EVENT_CODE;
int numBytes = packSpike(s, spikeBuffer, 256); int numBytes = packSpike(s, spikeBuffer, MAX_SPIKE_BUFFER_LEN);
eventBuffer.addEvent(spikeBuffer, numBytes, peakIndex); eventBuffer.addEvent(spikeBuffer, numBytes, peakIndex);
...@@ -349,10 +349,7 @@ void SpikeDetector::addWaveformToSpikeObject(SpikeObject* s, ...@@ -349,10 +349,7 @@ void SpikeDetector::addWaveformToSpikeObject(SpikeObject* s,
int spikeLength = electrodes[electrodeNumber]->prePeakSamples + int spikeLength = electrodes[electrodeNumber]->prePeakSamples +
+ electrodes[electrodeNumber]->postPeakSamples; + electrodes[electrodeNumber]->postPeakSamples;
//uint8 dataSize = spikeLength*2; s->timestamp = timestamp + peakIndex;
// uint8 data[dataSize];
// uint8* dataptr = data;
s->nSamples = spikeLength; s->nSamples = spikeLength;
...@@ -399,6 +396,19 @@ void SpikeDetector::addWaveformToSpikeObject(SpikeObject* s, ...@@ -399,6 +396,19 @@ void SpikeDetector::addWaveformToSpikeObject(SpikeObject* s,
sampleIndex -= spikeLength; // reset sample index sampleIndex -= spikeLength; // reset sample index
}
void SpikeDetector::handleEvent(int eventType, MidiMessage& event, int sampleNum)
{
if (eventType == TIMESTAMP)
{
const uint8* dataptr = event.getRawData();
memcpy(&timestamp, dataptr + 4, 8); // remember to skip first four bytes
}
} }
void SpikeDetector::process(AudioSampleBuffer& buffer, void SpikeDetector::process(AudioSampleBuffer& buffer,
...@@ -410,6 +420,8 @@ void SpikeDetector::process(AudioSampleBuffer& buffer, ...@@ -410,6 +420,8 @@ void SpikeDetector::process(AudioSampleBuffer& buffer,
Electrode* electrode; Electrode* electrode;
dataBuffer = buffer; dataBuffer = buffer;
checkForEvents(events);
//std::cout << dataBuffer.getMagnitude(0,nSamples) << std::endl; //std::cout << dataBuffer.getMagnitude(0,nSamples) << std::endl;
for (int i = 0; i < electrodes.size(); i++) for (int i = 0; i < electrodes.size(); i++)
......
...@@ -167,6 +167,7 @@ private: ...@@ -167,6 +167,7 @@ private:
}; };
uint8_t* spikeBuffer;///[256]; uint8_t* spikeBuffer;///[256];
uint64_t timestamp;
Array<Electrode*> electrodes; Array<Electrode*> electrodes;
...@@ -175,6 +176,8 @@ private: ...@@ -175,6 +176,8 @@ private:
// int& currentChannel, // int& currentChannel,
// MidiBuffer& eventBuffer); // MidiBuffer& eventBuffer);
void handleEvent(int eventType, MidiMessage& event, int sampleNum);
void addSpikeEvent(SpikeObject* s, MidiBuffer& eventBuffer, int peakIndex); void addSpikeEvent(SpikeObject* s, MidiBuffer& eventBuffer, int peakIndex);
void addWaveformToSpikeObject(SpikeObject* s, void addWaveformToSpikeObject(SpikeObject* s,
int& peakIndex, int& peakIndex,
......
...@@ -540,9 +540,9 @@ void SpikePlot::writeSpike(const SpikeObject& s) ...@@ -540,9 +540,9 @@ void SpikePlot::writeSpike(const SpikeObject& s)
{ {
packSpike(&s, spikeBuffer, 256); packSpike(&s, spikeBuffer, MAX_SPIKE_BUFFER_LEN);
fwrite(spikeBuffer, 1, 256, file); fwrite(spikeBuffer, 1, MAX_SPIKE_BUFFER_LEN, file);
} }
...@@ -565,7 +565,9 @@ String SpikePlot::generateHeader() ...@@ -565,7 +565,9 @@ String SpikePlot::generateHeader()
header += name; header += name;
header += "';\n"; header += "';\n";
header += "header.channelType = 'Electrode';\n"; header += "header.num_channels = ";
header += nChannels;
header += ";\n";
header = header.paddedRight(' ', HEADER_SIZE); header = header.paddedRight(' ', HEADER_SIZE);
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment