diff --git a/Source/Processors/Channel/Channel.cpp b/Source/Processors/Channel/Channel.cpp
index 843cc340c7f5977d0bf913ddbec95e68d5f7e97a..b66b9d32f0e47788014a59c6c9a75028b37bfeed 100644
--- a/Source/Processors/Channel/Channel.cpp
+++ b/Source/Processors/Channel/Channel.cpp
@@ -24,7 +24,7 @@
 #include "Channel.h"
 
 
-Channel::Channel(GenericProcessor* p, int n, ChannelType t) : index(n), processor(p), type(t), nodeIndex(0)
+Channel::Channel(GenericProcessor* p, int n, ChannelType t) : index(n), processor(p), type(t), nodeIndex(0), mappedIndex(n)
 {
     reset();
 }
@@ -54,6 +54,7 @@ Channel::Channel(const Channel& ch)
 {
     index = ch.index;
     nodeIndex = ch.nodeIndex;
+	mappedIndex = ch.mappedIndex;
     nodeId = ch.nodeId;
     processor = ch.processor;
     sampleRate = ch.sampleRate;
diff --git a/Source/Processors/Channel/Channel.h b/Source/Processors/Channel/Channel.h
index da60b7105b2a4481b7d8f361c3b173e1e861b575..af53777607ddace822aa8a1ca8780e7e851a35ec 100644
--- a/Source/Processors/Channel/Channel.h
+++ b/Source/Processors/Channel/Channel.h
@@ -111,6 +111,9 @@ public:
     /** Channel index within the source processor relative to channel type */
     int index;
 
+	/** Channel index which can be altered by the processor, useful with remappers*/
+	int mappedIndex;
+
     /** The ID of the channel's processor.*/
     int nodeId;
 
diff --git a/Source/Processors/ChannelMappingNode/ChannelMappingNode.cpp b/Source/Processors/ChannelMappingNode/ChannelMappingNode.cpp
index 78f82c8c9030f28db4ef99d5fbdef26621fe78c8..1cdbfd053de57a13748648b2ec2b494eaf65c53b 100644
--- a/Source/Processors/ChannelMappingNode/ChannelMappingNode.cpp
+++ b/Source/Processors/ChannelMappingNode/ChannelMappingNode.cpp
@@ -80,6 +80,7 @@ void ChannelMappingNode::updateSettings()
 	    {
 	        if (enabledChannelArray[channelArray[i]])
 	        {
+				oldChannels[channelArray[i]]->mappedIndex = settings.numOutputs;
 	            channels.add(oldChannels[channelArray[i]]);
 				oldChannels.set(channelArray[i],nullptr,false);
 	            settings.numOutputs++;
diff --git a/Source/Processors/GenericProcessor/GenericProcessor.cpp b/Source/Processors/GenericProcessor/GenericProcessor.cpp
index 4b37e74f7574e055ce356036e120fb73bc4ef8f6..08191048b8de2d80f29bf2985b771c3f8bd78930 100755
--- a/Source/Processors/GenericProcessor/GenericProcessor.cpp
+++ b/Source/Processors/GenericProcessor/GenericProcessor.cpp
@@ -333,6 +333,7 @@ void GenericProcessor::update()
             Channel* ch = new Channel(*sourceChan);
             ch->setProcessor(this);
             ch->nodeIndex = i;
+			ch->mappedIndex = i;
 
             if (i < recordStatus.size())
             {
diff --git a/Source/Processors/RecordNode/OriginalRecording.cpp b/Source/Processors/RecordNode/OriginalRecording.cpp
index 4ea3446e527f30ee2d63ddd8e76338053c8dae5b..e463d93f854e2996659d2a19a717f74be0d294b8 100644
--- a/Source/Processors/RecordNode/OriginalRecording.cpp
+++ b/Source/Processors/RecordNode/OriginalRecording.cpp
@@ -253,7 +253,10 @@ String OriginalRecording::getFileName(Channel* ch)
 
     filename += ch->nodeId;
     filename += "_";
-    filename += ch->name;
+	if (renameFiles)
+		filename += renamedPrefix + String(ch->mappedIndex + 1);
+	else
+		filename += ch->name;
 
     if (experimentNumber > 1)
     {
@@ -698,6 +701,8 @@ void OriginalRecording::writeXml()
 void OriginalRecording::setParameter(EngineParameter& parameter)
 {
     boolParameter(0, separateFiles);
+	boolParameter(1, renameFiles);
+	strParameter(2, renamedPrefix);
 }
 
 RecordEngineManager* OriginalRecording::getEngineManager()
@@ -706,5 +711,9 @@ RecordEngineManager* OriginalRecording::getEngineManager()
     EngineParameter* param;
     param = new EngineParameter(EngineParameter::BOOL,0,"Separate Files",false);
     man->addParameter(param);
+	param = new EngineParameter(EngineParameter::BOOL, 1, "Rename files based on channel order", false);
+	man->addParameter(param);
+	param = new EngineParameter(EngineParameter::STR, 2, "Renamed files prefix", "CH");
+	man->addParameter(param);
     return man;
 }
\ No newline at end of file
diff --git a/Source/Processors/RecordNode/OriginalRecording.h b/Source/Processors/RecordNode/OriginalRecording.h
index 5a1447167d4f763e3c84f46c46120ff30607e49c..2048f1b02637a708b89f1520aeebf4733745dd1e 100644
--- a/Source/Processors/RecordNode/OriginalRecording.h
+++ b/Source/Processors/RecordNode/OriginalRecording.h
@@ -82,6 +82,9 @@ private:
     int recordingNumber;
     int experimentNumber;
 
+	bool renameFiles;
+	String renamedPrefix;
+
     /** Holds data that has been converted from float to int16 before
         saving.
     */