diff --git a/Source/Processors/GenericProcessor/GenericProcessor.cpp b/Source/Processors/GenericProcessor/GenericProcessor.cpp
index 9b4ee4a2f329f0bee8b14cc053042b1f69edc60a..8b08e4e6491a5fea5fbce56e9a4b1022b66d4a65 100755
--- a/Source/Processors/GenericProcessor/GenericProcessor.cpp
+++ b/Source/Processors/GenericProcessor/GenericProcessor.cpp
@@ -727,19 +727,20 @@ void GenericProcessor::addEvent(MidiBuffer& eventBuffer,
                                 uint8 numBytes,
                                 uint8* eventData)
 {
-    uint8* data = new uint8[5+numBytes];
+    uint8* data = new uint8[6+numBytes];
 
     data[0] = type;    // event type
     data[1] = nodeId;  // processor ID automatically added
     data[2] = eventId; // event ID (1 = on, 0 = off, usually)
     data[3] = eventChannel; // event channel
     data[4] = 1; // saving flag
-    memcpy(data + 5, eventData, numBytes);
+    data[5] = (uint8) channels[0]->sourceNodeId;  // source node ID (for nSamples)
+    memcpy(data + 6, eventData, numBytes);
 
     //std::cout << "Node id: " << data[1] << std::endl;
 
     eventBuffer.addEvent(data, 		// raw data
-                         5 + numBytes, // total bytes
+                         6 + numBytes, // total bytes
                          sampleNum);     // sample index
 
     //if (type == TTL)
diff --git a/Source/Processors/LfpDisplayNode/LfpDisplayNode.cpp b/Source/Processors/LfpDisplayNode/LfpDisplayNode.cpp
index 06b4acd31ecb3888f9349810b877c594e885289c..747fa6e05e38b4ab756d7fb9532bfb3c13bc6827 100755
--- a/Source/Processors/LfpDisplayNode/LfpDisplayNode.cpp
+++ b/Source/Processors/LfpDisplayNode/LfpDisplayNode.cpp
@@ -155,28 +155,30 @@ void LfpDisplayNode::handleEvent(int eventType, MidiMessage& event, int sampleNu
     {
         const uint8* dataptr = event.getRawData();
 
-        int eventSourceNode = *(dataptr+1);
+        int eventNodeId = *(dataptr+1);
         int eventId = *(dataptr+2);
         int eventChannel = *(dataptr+3);
         int eventTime = event.getTimeStamp();
 
-        int nSamples = numSamples.at(eventSourceNode);
+        int eventSourceNodeId = *(dataptr+5);
+
+        int nSamples = numSamples.at(eventSourceNodeId);
 
         int samplesToFill = nSamples - eventTime;
 
         //	std::cout << "Received event from " << eventSourceNode << ", channel "
         //	          << eventChannel << ", with ID " << eventId << ", copying to "
-         //             << channelForEventSource[eventSourceNode] << std::endl;
+         //            << channelForEventSource[eventSourceNode] << std::endl;
         ////
-        int bufferIndex = (displayBufferIndex[channelForEventSource[eventSourceNode]] + eventTime) % displayBuffer->getNumSamples();
+        int bufferIndex = (displayBufferIndex[channelForEventSource[eventSourceNodeId]] + eventTime) % displayBuffer->getNumSamples();
 
         if (eventId == 1)
         {
-            ttlState[eventSourceNode] |= (1L << eventChannel);
+            ttlState[eventSourceNodeId] |= (1L << eventChannel);
         }
         else
         {
-            ttlState[eventSourceNode] &= ~(1L << eventChannel);
+            ttlState[eventSourceNodeId] &= ~(1L << eventChannel);
         }
 
         if (samplesToFill + bufferIndex < displayBuffer->getNumSamples())
@@ -184,11 +186,11 @@ void LfpDisplayNode::handleEvent(int eventType, MidiMessage& event, int sampleNu
 
             //std::cout << bufferIndex << " " << samplesToFill << " " << ttlState[eventSourceNode] << std::endl;
 
-            displayBuffer->copyFrom(channelForEventSource[eventSourceNode],  // destChannel
+            displayBuffer->copyFrom(channelForEventSource[eventSourceNodeId],  // destChannel
                                     bufferIndex,		// destStartSample
                                     arrayOfOnes, 		// source
                                     samplesToFill, 		// numSamples
-                                    float(ttlState[eventSourceNode]));   // gain
+                                    float(ttlState[eventSourceNodeId]));   // gain
         }
         else
         {
@@ -200,19 +202,19 @@ void LfpDisplayNode::handleEvent(int eventType, MidiMessage& event, int sampleNu
 
             //std::cout << bufferIndex << " " << block1Size << " " << ttlState << std::endl;
 
-            displayBuffer->copyFrom(channelForEventSource[eventSourceNode],  // destChannel
+            displayBuffer->copyFrom(channelForEventSource[eventSourceNodeId],  // destChannel
                                     bufferIndex,		// destStartSample
                                     arrayOfOnes, 		// source
                                     block1Size, 		// numSamples
-                                    float(ttlState[eventSourceNode]));   // gain
+                                    float(ttlState[eventSourceNodeId]));   // gain
 
             //std::cout << 0 << " " << block2Size << " " << ttlState << std::endl;
 
-            displayBuffer->copyFrom(channelForEventSource[eventSourceNode],  // destChannel
+            displayBuffer->copyFrom(channelForEventSource[eventSourceNodeId],  // destChannel
                                     0,		                        // destStartSample
                                     arrayOfOnes, 		// source
                                     block2Size, 		// numSamples
-                                    float(ttlState[eventSourceNode]));   // gain
+                                    float(ttlState[eventSourceNodeId]));   // gain
 
 
         }
diff --git a/Source/Processors/PhaseDetector/PhaseDetector.cpp b/Source/Processors/PhaseDetector/PhaseDetector.cpp
index b8673fd45fb7d2c1c2aca843af7f2fecec1cb933..e5b9397c97cafe55e325f75adb7546802a481243 100644
--- a/Source/Processors/PhaseDetector/PhaseDetector.cpp
+++ b/Source/Processors/PhaseDetector/PhaseDetector.cpp
@@ -182,8 +182,7 @@ void PhaseDetector::process(AudioSampleBuffer& buffer,
             module.inputChan >= 0 &&
             module.inputChan < buffer.getNumChannels())
         {
-
-            for (int i = 0; i < getNumSamples(channels[module.inputChan]->sourceNodeId); i++)
+            for (int i = 0; i < getNumSamples(module.inputChan); i++)
             {
                 const float sample = *buffer.getReadPointer(module.inputChan, i);