From 9ead477419032ef47ae65dcc38610c0b5829261a Mon Sep 17 00:00:00 2001 From: Aaron Cuevas Lopez <aacuelo@teleco.upv.es> Date: Thu, 16 Apr 2015 00:48:35 +0200 Subject: [PATCH] Fix event duplication when recording --- Source/Processors/GenericProcessor/GenericProcessor.cpp | 2 +- Source/Processors/GenericProcessor/GenericProcessor.h | 3 +++ Source/Processors/RecordNode/RecordEngine.h | 2 -- Source/Processors/RecordNode/RecordNode.cpp | 2 +- 4 files changed, 5 insertions(+), 4 deletions(-) diff --git a/Source/Processors/GenericProcessor/GenericProcessor.cpp b/Source/Processors/GenericProcessor/GenericProcessor.cpp index c6348e85b..d630af925 100755 --- a/Source/Processors/GenericProcessor/GenericProcessor.cpp +++ b/Source/Processors/GenericProcessor/GenericProcessor.cpp @@ -705,7 +705,7 @@ int GenericProcessor::processEventBuffer(MidiBuffer& events) else { - if (*dataptr == TTL && // a TTL event + if (isWritableEvent(*dataptr) && // a TTL event getNodeId() < 900 && // not handled by a specialized processor (e.g. AudioNode)) *(dataptr+4) > 0) // that's flagged for saving { diff --git a/Source/Processors/GenericProcessor/GenericProcessor.h b/Source/Processors/GenericProcessor/GenericProcessor.h index 936e5fa4a..cda34d638 100755 --- a/Source/Processors/GenericProcessor/GenericProcessor.h +++ b/Source/Processors/GenericProcessor/GenericProcessor.h @@ -28,6 +28,9 @@ enum ChannelType {HEADSTAGE_CHANNEL = 0, AUX_CHANNEL = 1, ADC_CHANNEL = 2, EVENT ELECTRODE_CHANNEL = 4, MESSAGE_CHANNEL = 5 }; +//defines which events are writable to files +#define isWritableEvent(ev) (((int)(ev) == GenericProcessor::TTL) || ((int)(ev) == GenericProcessor::MESSAGE) || ((int)(ev) == GenericProcessor::BINARY_MSG)) + #include "../../../JuceLibraryCode/JuceHeader.h" #include "../Editors/GenericEditor.h" #include "../Parameter/Parameter.h" diff --git a/Source/Processors/RecordNode/RecordEngine.h b/Source/Processors/RecordNode/RecordEngine.h index c968242f9..44d48163b 100644 --- a/Source/Processors/RecordNode/RecordEngine.h +++ b/Source/Processors/RecordNode/RecordEngine.h @@ -41,8 +41,6 @@ #define strParameter(i,v) if ((parameter.id == i) && (parameter.type == EngineParameter::STR)) \ v = parameter.strParam.value -#define isWritableEvent(ev) (ev == GenericProcessor::TTL) || (ev == GenericProcessor::MESSAGE) || (ev == GenericProcessor::BINARY_MSG) - struct SpikeRecordInfo { String name; diff --git a/Source/Processors/RecordNode/RecordNode.cpp b/Source/Processors/RecordNode/RecordNode.cpp index 108c04b55..dd133b6dd 100755 --- a/Source/Processors/RecordNode/RecordNode.cpp +++ b/Source/Processors/RecordNode/RecordNode.cpp @@ -421,7 +421,7 @@ void RecordNode::handleEvent(int eventType, MidiMessage& event, int samplePositi { if (isWritableEvent(eventType)) { - if (event.getRawData()+4 > 0) // saving flag > 0 (i.e., event has not already been processed) + if (*(event.getRawData()+4) > 0) // saving flag > 0 (i.e., event has not already been processed) { EVERY_ENGINE->writeEvent(eventType, event, samplePosition); } -- GitLab