diff --git a/README.md b/README.md
index 6276bbb..ab33096 100644
--- a/README.md
+++ b/README.md
@@ -1,4 +1,4 @@
-# SickoCV v2.6.4
+# SickoCV v2.6.5
 VCV Rack plugin modules
 
 ![SickoCV modules 2 6 4](https://github.com/sickozell/SickoCV/assets/80784296/7c6a6fbb-0e2c-4349-902c-6a8946ffbd91)
diff --git a/changelog.md b/changelog.md
index 96ce403..d06b58b 100644
--- a/changelog.md
+++ b/changelog.md
@@ -1,7 +1,11 @@
+### 2.6.5 (2024-01-28)
+- sickoLooper1/sickoLooperX: fixed a bug when reverse overdubbing.  
+- sickoSampler/sickoSampler2: Allowed poly cable sources.
+
 ### 2.6.4 (2024-01-27)
 - added sickoLooper1 and sickoLooperX modules.  
 - sickoLooper3, sickoLooper5: added missing 'OVERDUB after REC' setting in preset storing.  
-Fixed a bug that doesn't restore 'Internal Clock Always ON' on startup.  
+fixed a bug that doesn't restore 'Internal Clock Always ON' on startup.  
 
 ### 2.6.3 (2024-01-13)
 - sickoLooper: Allowed poly cable sources.  
diff --git a/extra/crossCompiler.md b/extra/crossCompiler.md
index 29e2d44..4d4d487 100644
--- a/extra/crossCompiler.md
+++ b/extra/crossCompiler.md
@@ -1,11 +1,11 @@
-git tag v2.6.4-beta2 -m "create v2.6.4-beta2"  
+git tag v2.6.5-beta1 -m "create v2.6.5-beta1"  
 git push origin --tags  
 
 delete local tag  
-git tag -d v2.6.4-beta
+git tag -d v2.6.5-beta
 
 delete remote
-git push --delete origin v2.6.4-beta
+git push --delete origin v2.6.5-beta
 
 
 ### How to build a VCVRack plugin with Github Action
diff --git a/plugin.json b/plugin.json
index 881c448..74aecc8 100644
--- a/plugin.json
+++ b/plugin.json
@@ -1,7 +1,7 @@
 {
   "slug": "SickoCV",
   "name": "SickoCV",
-  "version": "2.6.4",
+  "version": "2.6.5",
   "license": "GPL-3.0-or-later",
   "brand": "Sickozell",
   "author": "Sickozell",
diff --git a/src/SickoLooper1.cpp b/src/SickoLooper1.cpp
index fba16af..5497002 100644
--- a/src/SickoLooper1.cpp
+++ b/src/SickoLooper1.cpp
@@ -3737,6 +3737,7 @@ struct SickoLooper1 : Module {
 					trackBuffer[LEFT][samplePos] += inputValue[LEFT] * recFadeValue;
 					trackBuffer[RIGHT][samplePos] += inputValue[RIGHT] * recFadeValue;
 
+					/*
 					if (samplePos > 0) {
 						trackBuffer[LEFT][samplePos-1] = (trackBuffer[LEFT][samplePos-2] + trackBuffer[LEFT][samplePos]) / 2;
 						trackBuffer[RIGHT][samplePos-1] = (trackBuffer[RIGHT][samplePos-2] + trackBuffer[RIGHT][samplePos]) / 2;
@@ -3746,6 +3747,20 @@ struct SickoLooper1 : Module {
 						samplePos += sampleCoeff;
 					else
 						samplePos -= sampleCoeff;
+					*/
+					if (playingDirection == FORWARD) {
+						if (samplePos != 0) {
+							trackBuffer[LEFT][samplePos-1] = (trackBuffer[LEFT][samplePos-2] + trackBuffer[LEFT][samplePos]) / 2;
+							trackBuffer[RIGHT][samplePos-1] = (trackBuffer[RIGHT][samplePos-2] + trackBuffer[RIGHT][samplePos]) / 2;
+						}
+						samplePos += sampleCoeff;
+					} else {
+						if (samplePos != 0) {
+							trackBuffer[LEFT][samplePos+1] = (trackBuffer[LEFT][samplePos+2] + trackBuffer[LEFT][samplePos]) / 2;
+							trackBuffer[RIGHT][samplePos+1] = (trackBuffer[RIGHT][samplePos+2] + trackBuffer[RIGHT][samplePos]) / 2;
+						}
+						samplePos -= sampleCoeff;
+					}
 				}
 
 			break;
@@ -3758,7 +3773,7 @@ struct SickoLooper1 : Module {
 				if (xFadeValue < 0) {
 					extraPlaying = false;
 				} else {
-					if (extraPlayPos < trackBuffer[LEFT].size()) {
+					if (extraPlayPos >= 0 && extraPlayPos < trackBuffer[LEFT].size()) {
 						currentOutput[LEFT] *= 1-xFadeValue;
 						currentOutput[RIGHT] *= 1-xFadeValue;
 						
@@ -3871,6 +3886,7 @@ struct SickoLooper1 : Module {
 					trackBuffer[RIGHT][extraRecPos] += inputValue[RIGHT] * recFadeValue;
 				//}
 
+				/*
 				if (samplePos > 0) {
 					trackBuffer[LEFT][extraRecPos-1] = (trackBuffer[LEFT][extraRecPos-2] + trackBuffer[LEFT][extraRecPos]) / 2;
 					trackBuffer[RIGHT][extraRecPos-1] = (trackBuffer[RIGHT][extraRecPos-2] + trackBuffer[RIGHT][extraRecPos]) / 2;
@@ -3880,6 +3896,18 @@ struct SickoLooper1 : Module {
 					extraRecPos += sampleCoeff;
 				else
 					extraRecPos -= sampleCoeff;
+				*/
+				if (extraRecDirection == FORWARD) {
+					if (samplePos > 0) {
+						trackBuffer[LEFT][extraRecPos-1] = (trackBuffer[LEFT][extraRecPos-2] + trackBuffer[LEFT][extraRecPos]) / 2;
+						trackBuffer[RIGHT][extraRecPos-1] = (trackBuffer[RIGHT][extraRecPos-2] + trackBuffer[RIGHT][extraRecPos]) / 2;
+					}
+					extraRecPos += sampleCoeff;
+				} else {
+					trackBuffer[LEFT][extraRecPos+1] = (trackBuffer[LEFT][extraRecPos+2] + trackBuffer[LEFT][extraRecPos]) / 2;
+					trackBuffer[RIGHT][extraRecPos+1] = (trackBuffer[RIGHT][extraRecPos+2] + trackBuffer[RIGHT][extraRecPos]) / 2;
+					extraRecPos -= sampleCoeff;
+				}
 			}
 		}
 		
diff --git a/src/SickoLooper1Exp.cpp b/src/SickoLooper1Exp.cpp
index c642a62..337715d 100644
--- a/src/SickoLooper1Exp.cpp
+++ b/src/SickoLooper1Exp.cpp
@@ -2908,6 +2908,7 @@ struct SickoLooper1Exp : Module {
 					trackBuffer[LEFT][samplePos] += inputValue[LEFT] * recFadeValue;
 					trackBuffer[RIGHT][samplePos] += inputValue[RIGHT] * recFadeValue;
 
+					/*
 					if (samplePos > 0) {
 						trackBuffer[LEFT][samplePos-1] = (trackBuffer[LEFT][samplePos-2] + trackBuffer[LEFT][samplePos]) / 2;
 						trackBuffer[RIGHT][samplePos-1] = (trackBuffer[RIGHT][samplePos-2] + trackBuffer[RIGHT][samplePos]) / 2;
@@ -2917,6 +2918,20 @@ struct SickoLooper1Exp : Module {
 						samplePos += sampleCoeff;
 					else
 						samplePos -= sampleCoeff;
+					*/
+					if (playingDirection == FORWARD) {
+						if (samplePos != 0) {
+							trackBuffer[LEFT][samplePos-1] = (trackBuffer[LEFT][samplePos-2] + trackBuffer[LEFT][samplePos]) / 2;
+							trackBuffer[RIGHT][samplePos-1] = (trackBuffer[RIGHT][samplePos-2] + trackBuffer[RIGHT][samplePos]) / 2;
+						}
+						samplePos += sampleCoeff;
+					} else {
+						if (samplePos != 0) {
+							trackBuffer[LEFT][samplePos+1] = (trackBuffer[LEFT][samplePos+2] + trackBuffer[LEFT][samplePos]) / 2;
+							trackBuffer[RIGHT][samplePos+1] = (trackBuffer[RIGHT][samplePos+2] + trackBuffer[RIGHT][samplePos]) / 2;
+						}
+						samplePos -= sampleCoeff;
+					}
 				}
 
 			break;
@@ -2929,7 +2944,7 @@ struct SickoLooper1Exp : Module {
 				if (xFadeValue < 0) {
 					extraPlaying = false;
 				} else {
-					if (extraPlayPos < trackBuffer[LEFT].size()) {
+					if (extraPlayPos >= 0 && extraPlayPos < trackBuffer[LEFT].size()) {
 						currentOutput[LEFT] *= 1-xFadeValue;
 						currentOutput[RIGHT] *= 1-xFadeValue;
 						
@@ -3040,7 +3055,7 @@ struct SickoLooper1Exp : Module {
 					trackBuffer[LEFT][extraRecPos] += inputValue[LEFT] * recFadeValue;
 					trackBuffer[RIGHT][extraRecPos] += inputValue[RIGHT] * recFadeValue;
 				//}
-
+				/*
 				if (samplePos > 0) {
 					trackBuffer[LEFT][extraRecPos-1] = (trackBuffer[LEFT][extraRecPos-2] + trackBuffer[LEFT][extraRecPos]) / 2;
 					trackBuffer[RIGHT][extraRecPos-1] = (trackBuffer[RIGHT][extraRecPos-2] + trackBuffer[RIGHT][extraRecPos]) / 2;
@@ -3050,6 +3065,18 @@ struct SickoLooper1Exp : Module {
 					extraRecPos += sampleCoeff;
 				else
 					extraRecPos -= sampleCoeff;
+				*/
+				if (extraRecDirection == FORWARD) {
+					if (samplePos > 0) {
+						trackBuffer[LEFT][extraRecPos-1] = (trackBuffer[LEFT][extraRecPos-2] + trackBuffer[LEFT][extraRecPos]) / 2;
+						trackBuffer[RIGHT][extraRecPos-1] = (trackBuffer[RIGHT][extraRecPos-2] + trackBuffer[RIGHT][extraRecPos]) / 2;
+					}
+					extraRecPos += sampleCoeff;
+				} else {
+					trackBuffer[LEFT][extraRecPos+1] = (trackBuffer[LEFT][extraRecPos+2] + trackBuffer[LEFT][extraRecPos]) / 2;
+					trackBuffer[RIGHT][extraRecPos+1] = (trackBuffer[RIGHT][extraRecPos+2] + trackBuffer[RIGHT][extraRecPos]) / 2;
+					extraRecPos -= sampleCoeff;
+				}
 			}
 		}
 		
diff --git a/src/SickoSampler.cpp b/src/SickoSampler.cpp
index 2d0c56b..1433840 100644
--- a/src/SickoSampler.cpp
+++ b/src/SickoSampler.cpp
@@ -3493,8 +3493,10 @@ struct SickoSampler : Module {
 						recFadeValue = 1;
 					}
 
-					currRecValue[LEFT] = inputs[IN_INPUT].getVoltage() * params[GAIN_PARAM].getValue() * recFadeValue;
-					currRecValue[RIGHT] = inputs[IN_INPUT+1].getVoltage() * params[GAIN_PARAM].getValue() * recFadeValue;
+					//currRecValue[LEFT] = inputs[IN_INPUT].getVoltage() * params[GAIN_PARAM].getValue() * recFadeValue;
+					//currRecValue[RIGHT] = inputs[IN_INPUT+1].getVoltage() * params[GAIN_PARAM].getValue() * recFadeValue;
+					currRecValue[LEFT] = inputs[IN_INPUT].getVoltageSum() * params[GAIN_PARAM].getValue() * recFadeValue;
+					currRecValue[RIGHT] = inputs[IN_INPUT+1].getVoltageSum() * params[GAIN_PARAM].getValue() * recFadeValue;
 					prevRecValue[LEFT] = currRecValue[LEFT];
 					prevRecValue[RIGHT] = currRecValue[RIGHT];
 
@@ -4362,9 +4364,11 @@ struct SickoSampler : Module {
 				if (monitorFade) {
 					switch (polyOuts) {
 						case MONOPHONIC:										// monophonic CABLES
-							sumOutput += inputs[IN_INPUT].getVoltage() * params[GAIN_PARAM].getValue() * (1-monitorFadeValue) * masterLevel[0];
+							//sumOutput += inputs[IN_INPUT].getVoltage() * params[GAIN_PARAM].getValue() * (1-monitorFadeValue) * masterLevel[0];
+							sumOutput += inputs[IN_INPUT].getVoltageSum() * params[GAIN_PARAM].getValue() * (1-monitorFadeValue) * masterLevel[0];
 							if (channels == 2)
-								sumOutputR += inputs[IN_INPUT+1].getVoltage() * params[GAIN_PARAM].getValue() * (1-monitorFadeValue) * masterLevel[0];
+								//sumOutputR += inputs[IN_INPUT+1].getVoltage() * params[GAIN_PARAM].getValue() * (1-monitorFadeValue) * masterLevel[0];
+								sumOutputR += inputs[IN_INPUT+1].getVoltageSum() * params[GAIN_PARAM].getValue() * (1-monitorFadeValue) * masterLevel[0];
 							
 							// *** HARD CLIP ***
 							if (limiter) {
@@ -4406,8 +4410,10 @@ struct SickoSampler : Module {
 						break;
 
 						case POLYPHONIC:
-							currentOutput = outputs[OUT_OUTPUT].getVoltage(recOutChan) + (inputs[IN_INPUT].getVoltage() * params[GAIN_PARAM].getValue() * (1-monitorFadeValue) * masterLevel[0]);
-							currentOutputR = outputs[OUT_OUTPUT+1].getVoltage(recOutChan) + (inputs[IN_INPUT+1].getVoltage() * params[GAIN_PARAM].getValue() * (1-monitorFadeValue) * masterLevel[0]);
+							//currentOutput = outputs[OUT_OUTPUT].getVoltage(recOutChan) + (inputs[IN_INPUT].getVoltage() * params[GAIN_PARAM].getValue() * (1-monitorFadeValue) * masterLevel[0]);
+							//currentOutputR = outputs[OUT_OUTPUT+1].getVoltage(recOutChan) + (inputs[IN_INPUT+1].getVoltage() * params[GAIN_PARAM].getValue() * (1-monitorFadeValue) * masterLevel[0]);
+							currentOutput = outputs[OUT_OUTPUT].getVoltage(recOutChan) + (inputs[IN_INPUT].getVoltageSum() * params[GAIN_PARAM].getValue() * (1-monitorFadeValue) * masterLevel[0]);
+							currentOutputR = outputs[OUT_OUTPUT+1].getVoltage(recOutChan) + (inputs[IN_INPUT+1].getVoltageSum() * params[GAIN_PARAM].getValue() * (1-monitorFadeValue) * masterLevel[0]);
 							
 							// *** HARD CLIP ***
 							if (limiter) {
@@ -4455,9 +4461,11 @@ struct SickoSampler : Module {
 				if (recordingState == 1) {
 					switch (polyOuts) {
 						case MONOPHONIC:										// monophonic CABLES
-							sumOutput += inputs[IN_INPUT].getVoltage() * params[GAIN_PARAM].getValue() * monitorFadeValue * masterLevel[0] * recFadeValue;
+							//sumOutput += inputs[IN_INPUT].getVoltage() * params[GAIN_PARAM].getValue() * monitorFadeValue * masterLevel[0] * recFadeValue;
+							sumOutput += inputs[IN_INPUT].getVoltageSum() * params[GAIN_PARAM].getValue() * monitorFadeValue * masterLevel[0] * recFadeValue;
 							if (channels == 2)
-								sumOutputR += inputs[IN_INPUT+1].getVoltage() * params[GAIN_PARAM].getValue() * monitorFadeValue * masterLevel[0] * recFadeValue;
+								//sumOutputR += inputs[IN_INPUT+1].getVoltage() * params[GAIN_PARAM].getValue() * monitorFadeValue * masterLevel[0] * recFadeValue;
+								sumOutputR += inputs[IN_INPUT+1].getVoltageSum() * params[GAIN_PARAM].getValue() * monitorFadeValue * masterLevel[0] * recFadeValue;
 							
 							// *** HARD CLIP ***
 							if (limiter) {
@@ -4517,8 +4525,10 @@ struct SickoSampler : Module {
 						break;
 
 						case POLYPHONIC:
-							currentOutput = outputs[OUT_OUTPUT].getVoltage(recOutChan) + (inputs[IN_INPUT].getVoltage() * params[GAIN_PARAM].getValue() * monitorFadeValue * masterLevel[0] * recFadeValue);
-							currentOutputR = outputs[OUT_OUTPUT+1].getVoltage(recOutChan) + (inputs[IN_INPUT+1].getVoltage() * params[GAIN_PARAM].getValue() * monitorFadeValue * masterLevel[0] * recFadeValue);
+							//currentOutput = outputs[OUT_OUTPUT].getVoltage(recOutChan) + (inputs[IN_INPUT].getVoltage() * params[GAIN_PARAM].getValue() * monitorFadeValue * masterLevel[0] * recFadeValue);
+							//currentOutputR = outputs[OUT_OUTPUT+1].getVoltage(recOutChan) + (inputs[IN_INPUT+1].getVoltage() * params[GAIN_PARAM].getValue() * monitorFadeValue * masterLevel[0] * recFadeValue);
+							currentOutput = outputs[OUT_OUTPUT].getVoltage(recOutChan) + (inputs[IN_INPUT].getVoltageSum() * params[GAIN_PARAM].getValue() * monitorFadeValue * masterLevel[0] * recFadeValue);
+							currentOutputR = outputs[OUT_OUTPUT+1].getVoltage(recOutChan) + (inputs[IN_INPUT+1].getVoltageSum() * params[GAIN_PARAM].getValue() * monitorFadeValue * masterLevel[0] * recFadeValue);
 							
 							// *** HARD CLIP ***
 							if (limiter) {
@@ -4581,9 +4591,11 @@ struct SickoSampler : Module {
 				} else if (monitorFade && params[RECFADE_PARAM].getValue() <= 0) {
 					switch (polyOuts) {
 						case MONOPHONIC:										// monophonic CABLES
-							sumOutput += inputs[IN_INPUT].getVoltage() * params[GAIN_PARAM].getValue() * (1-monitorFadeValue) * masterLevel[0];
+							//sumOutput += inputs[IN_INPUT].getVoltage() * params[GAIN_PARAM].getValue() * (1-monitorFadeValue) * masterLevel[0];
+							sumOutput += inputs[IN_INPUT].getVoltageSum() * params[GAIN_PARAM].getValue() * (1-monitorFadeValue) * masterLevel[0];
 							if (channels == 2)
-								sumOutputR += inputs[IN_INPUT+1].getVoltage() * params[GAIN_PARAM].getValue() * (1-monitorFadeValue) * masterLevel[0];
+								//sumOutputR += inputs[IN_INPUT+1].getVoltage() * params[GAIN_PARAM].getValue() * (1-monitorFadeValue) * masterLevel[0];
+								sumOutputR += inputs[IN_INPUT+1].getVoltageSum() * params[GAIN_PARAM].getValue() * (1-monitorFadeValue) * masterLevel[0];
 							
 							// *** HARD CLIP ***
 							if (limiter) {
@@ -4643,8 +4655,10 @@ struct SickoSampler : Module {
 						break;
 
 						case POLYPHONIC:
-							currentOutput = outputs[OUT_OUTPUT].getVoltage(recOutChan) + (inputs[IN_INPUT].getVoltage() * params[GAIN_PARAM].getValue() * (1-monitorFadeValue) * masterLevel[0]);
-							currentOutputR = outputs[OUT_OUTPUT+1].getVoltage(recOutChan) + (inputs[IN_INPUT+1].getVoltage() * params[GAIN_PARAM].getValue() * (1-monitorFadeValue) * masterLevel[0]);
+							//currentOutput = outputs[OUT_OUTPUT].getVoltage(recOutChan) + (inputs[IN_INPUT].getVoltage() * params[GAIN_PARAM].getValue() * (1-monitorFadeValue) * masterLevel[0]);
+							//currentOutputR = outputs[OUT_OUTPUT+1].getVoltage(recOutChan) + (inputs[IN_INPUT+1].getVoltage() * params[GAIN_PARAM].getValue() * (1-monitorFadeValue) * masterLevel[0]);
+							currentOutput = outputs[OUT_OUTPUT].getVoltage(recOutChan) + (inputs[IN_INPUT].getVoltageSum() * params[GAIN_PARAM].getValue() * (1-monitorFadeValue) * masterLevel[0]);
+							currentOutputR = outputs[OUT_OUTPUT+1].getVoltage(recOutChan) + (inputs[IN_INPUT+1].getVoltageSum() * params[GAIN_PARAM].getValue() * (1-monitorFadeValue) * masterLevel[0]);
 							
 							// *** HARD CLIP ***
 							if (limiter) {
@@ -4708,9 +4722,11 @@ struct SickoSampler : Module {
 			case 2:								// *** ALWAYS MONITORING ***
 				switch (polyOuts) {
 					case MONOPHONIC:										// monophonic CABLES
-						sumOutput += inputs[IN_INPUT].getVoltage() * params[GAIN_PARAM].getValue() * monitorFadeValue * masterLevel[0];
+						//sumOutput += inputs[IN_INPUT].getVoltage() * params[GAIN_PARAM].getValue() * monitorFadeValue * masterLevel[0];
+						sumOutput += inputs[IN_INPUT].getVoltageSum() * params[GAIN_PARAM].getValue() * monitorFadeValue * masterLevel[0];
 						if (channels == 2)
-							sumOutputR += inputs[IN_INPUT+1].getVoltage() * params[GAIN_PARAM].getValue() * monitorFadeValue * masterLevel[0];
+							//sumOutputR += inputs[IN_INPUT+1].getVoltage() * params[GAIN_PARAM].getValue() * monitorFadeValue * masterLevel[0];
+							sumOutputR += inputs[IN_INPUT+1].getVoltageSum() * params[GAIN_PARAM].getValue() * monitorFadeValue * masterLevel[0];
 						
 						// *** HARD CLIP ***
 						if (limiter) {
@@ -4770,8 +4786,10 @@ struct SickoSampler : Module {
 					break;
 
 					case POLYPHONIC:
-						currentOutput = outputs[OUT_OUTPUT].getVoltage(recOutChan) + (inputs[IN_INPUT].getVoltage() * params[GAIN_PARAM].getValue() * monitorFadeValue * masterLevel[0]);
-						currentOutputR = outputs[OUT_OUTPUT+1].getVoltage(recOutChan) + (inputs[IN_INPUT+1].getVoltage() * params[GAIN_PARAM].getValue() * monitorFadeValue * masterLevel[0]);
+						//currentOutput = outputs[OUT_OUTPUT].getVoltage(recOutChan) + (inputs[IN_INPUT].getVoltage() * params[GAIN_PARAM].getValue() * monitorFadeValue * masterLevel[0]);
+						//currentOutputR = outputs[OUT_OUTPUT+1].getVoltage(recOutChan) + (inputs[IN_INPUT+1].getVoltage() * params[GAIN_PARAM].getValue() * monitorFadeValue * masterLevel[0]);
+						currentOutput = outputs[OUT_OUTPUT].getVoltage(recOutChan) + (inputs[IN_INPUT].getVoltageSum() * params[GAIN_PARAM].getValue() * monitorFadeValue * masterLevel[0]);
+						currentOutputR = outputs[OUT_OUTPUT+1].getVoltage(recOutChan) + (inputs[IN_INPUT+1].getVoltageSum() * params[GAIN_PARAM].getValue() * monitorFadeValue * masterLevel[0]);
 						
 						// *** HARD CLIP ***
 						if (limiter) {
diff --git a/src/SickoSampler2.cpp b/src/SickoSampler2.cpp
index 608637d..0a5ea27 100644
--- a/src/SickoSampler2.cpp
+++ b/src/SickoSampler2.cpp
@@ -2748,8 +2748,10 @@ struct SickoSampler2 : Module {
 						recFadeValue = 1;
 					}
 
-					currRecValue[LEFT] = inputs[IN_INPUT].getVoltage() * params[GAIN_PARAM].getValue() * recFadeValue;
-					currRecValue[RIGHT] = inputs[IN_INPUT+1].getVoltage() * params[GAIN_PARAM].getValue() * recFadeValue;
+					//currRecValue[LEFT] = inputs[IN_INPUT].getVoltage() * params[GAIN_PARAM].getValue() * recFadeValue;
+					//currRecValue[RIGHT] = inputs[IN_INPUT+1].getVoltage() * params[GAIN_PARAM].getValue() * recFadeValue;
+					currRecValue[LEFT] = inputs[IN_INPUT].getVoltageSum() * params[GAIN_PARAM].getValue() * recFadeValue;
+					currRecValue[RIGHT] = inputs[IN_INPUT+1].getVoltageSum() * params[GAIN_PARAM].getValue() * recFadeValue;
 					prevRecValue[LEFT] = currRecValue[LEFT];
 					prevRecValue[RIGHT] = currRecValue[RIGHT];
 
@@ -2925,9 +2927,11 @@ struct SickoSampler2 : Module {
 				if (monitorFade) {
 					switch (polyOuts) {
 						case MONOPHONIC:										// monophonic CABLES
-							sumOutput += inputs[IN_INPUT].getVoltage() * params[GAIN_PARAM].getValue() * (1-monitorFadeValue) * masterLevel[0];
+							//sumOutput += inputs[IN_INPUT].getVoltage() * params[GAIN_PARAM].getValue() * (1-monitorFadeValue) * masterLevel[0];
+							sumOutput += inputs[IN_INPUT].getVoltageSum() * params[GAIN_PARAM].getValue() * (1-monitorFadeValue) * masterLevel[0];
 							if (channels == 2)
-								sumOutputR += inputs[IN_INPUT+1].getVoltage() * params[GAIN_PARAM].getValue() * (1-monitorFadeValue) * masterLevel[0];
+								//sumOutputR += inputs[IN_INPUT+1].getVoltage() * params[GAIN_PARAM].getValue() * (1-monitorFadeValue) * masterLevel[0];
+								sumOutputR += inputs[IN_INPUT+1].getVoltageSum() * params[GAIN_PARAM].getValue() * (1-monitorFadeValue) * masterLevel[0];
 							
 							// *** HARD CLIP ***
 
@@ -2957,8 +2961,10 @@ struct SickoSampler2 : Module {
 						break;
 
 						case POLYPHONIC:
-							currentOutput = outputs[OUT_OUTPUT].getVoltage(recOutChan) + (inputs[IN_INPUT].getVoltage() * params[GAIN_PARAM].getValue() * (1-monitorFadeValue) * masterLevel[0]);
-							currentOutputR = outputs[OUT_OUTPUT+1].getVoltage(recOutChan) + (inputs[IN_INPUT+1].getVoltage() * params[GAIN_PARAM].getValue() * (1-monitorFadeValue) * masterLevel[0]);
+							//currentOutput = outputs[OUT_OUTPUT].getVoltage(recOutChan) + (inputs[IN_INPUT].getVoltage() * params[GAIN_PARAM].getValue() * (1-monitorFadeValue) * masterLevel[0]);
+							//currentOutputR = outputs[OUT_OUTPUT+1].getVoltage(recOutChan) + (inputs[IN_INPUT+1].getVoltage() * params[GAIN_PARAM].getValue() * (1-monitorFadeValue) * masterLevel[0]);
+							currentOutput = outputs[OUT_OUTPUT].getVoltage(recOutChan) + (inputs[IN_INPUT].getVoltageSum() * params[GAIN_PARAM].getValue() * (1-monitorFadeValue) * masterLevel[0]);
+							currentOutputR = outputs[OUT_OUTPUT+1].getVoltage(recOutChan) + (inputs[IN_INPUT+1].getVoltageSum() * params[GAIN_PARAM].getValue() * (1-monitorFadeValue) * masterLevel[0]);
 							
 							// *** HARD CLIP ***
 
@@ -2993,9 +2999,11 @@ struct SickoSampler2 : Module {
 			case 1:								// *** ALWAYS MONITORING ***
 				switch (polyOuts) {
 					case MONOPHONIC:										// monophonic CABLES
-						sumOutput += inputs[IN_INPUT].getVoltage() * params[GAIN_PARAM].getValue() * monitorFadeValue * masterLevel[0];
+						//sumOutput += inputs[IN_INPUT].getVoltage() * params[GAIN_PARAM].getValue() * monitorFadeValue * masterLevel[0];
+						sumOutput += inputs[IN_INPUT].getVoltageSum() * params[GAIN_PARAM].getValue() * monitorFadeValue * masterLevel[0];
 						if (channels == 2)
-							sumOutputR += inputs[IN_INPUT+1].getVoltage() * params[GAIN_PARAM].getValue() * monitorFadeValue * masterLevel[0];
+							//sumOutputR += inputs[IN_INPUT+1].getVoltage() * params[GAIN_PARAM].getValue() * monitorFadeValue * masterLevel[0];
+							sumOutputR += inputs[IN_INPUT+1].getVoltageSum() * params[GAIN_PARAM].getValue() * monitorFadeValue * masterLevel[0];
 						
 						// *** HARD CLIP ***
 						if (sumOutput > 10)
@@ -3024,8 +3032,10 @@ struct SickoSampler2 : Module {
 					break;
 
 					case POLYPHONIC:
-						currentOutput = outputs[OUT_OUTPUT].getVoltage(recOutChan) + (inputs[IN_INPUT].getVoltage() * params[GAIN_PARAM].getValue() * monitorFadeValue * masterLevel[0]);
-						currentOutputR = outputs[OUT_OUTPUT+1].getVoltage(recOutChan) + (inputs[IN_INPUT+1].getVoltage() * params[GAIN_PARAM].getValue() * monitorFadeValue * masterLevel[0]);
+						//currentOutput = outputs[OUT_OUTPUT].getVoltage(recOutChan) + (inputs[IN_INPUT].getVoltage() * params[GAIN_PARAM].getValue() * monitorFadeValue * masterLevel[0]);
+						//currentOutputR = outputs[OUT_OUTPUT+1].getVoltage(recOutChan) + (inputs[IN_INPUT+1].getVoltage() * params[GAIN_PARAM].getValue() * monitorFadeValue * masterLevel[0]);
+						currentOutput = outputs[OUT_OUTPUT].getVoltage(recOutChan) + (inputs[IN_INPUT].getVoltageSum() * params[GAIN_PARAM].getValue() * monitorFadeValue * masterLevel[0]);
+						currentOutputR = outputs[OUT_OUTPUT+1].getVoltage(recOutChan) + (inputs[IN_INPUT+1].getVoltageSum() * params[GAIN_PARAM].getValue() * monitorFadeValue * masterLevel[0]);
 						
 						// *** HARD CLIP ***
 						if (currentOutput > 10)