diff --git a/Source/Processors/GenericProcessor/GenericProcessor.cpp b/Source/Processors/GenericProcessor/GenericProcessor.cpp
index c6348e85b90be5c7d6b2cd796e59604e0e6276af..d630af9250b2fc1ffa4d3b33790208cfc134850d 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 936e5fa4ab435ca60b803d20935ce419292e1dd1..cda34d6384fd0cb94e830b5c83ef12412a2181b6 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 c968242f96f7d01a91fa54d17847bf7333878dfc..44d48163b229eeb3c2531db7125d1261347a23b3 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 108c04b558d3bac2ac18aa70a3a72d6908f3f779..dd133b6dd85bc74a842f2ca27945ce57c6be34e6 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);
             }