diff --git a/src/effect_platervbstereo.cpp b/src/effect_platervbstereo.cpp
index be0e8ad..dd8c9ec 100644
--- a/src/effect_platervbstereo.cpp
+++ b/src/effect_platervbstereo.cpp
@@ -155,7 +155,7 @@ AudioEffectPlateReverb::AudioEffectPlateReverb(float32_t samplerate)
 
 // #define sat16(n, rshift) signed_saturate_rshift((n), 16, (rshift))
 
-void AudioEffectPlateReverb::doReverb(uint16_t len, int16_t *inblockL, int16_t *inblockR, int16_t *outblockL, int16_t *outblockR)
+void AudioEffectPlateReverb::doReverb(uint16_t len, int16_t inblock[][2], int16_t outblock[][2])
 {
     int i;
     float32_t input, acc, temp1, temp2;
@@ -193,47 +193,16 @@ void AudioEffectPlateReverb::doReverb(uint16_t len, int16_t *inblockL, int16_t *
 
             cleanup_done = true;
         }
-        if (!inblockL)
-		memset(inblockL,0,len);
-        if (!inblockR)
-		memset(inblockR,0,len);
+        if (!inblock && outblock)
+		memset(outblock,0,len*sizeof(int16_t)*2);
 
         return;
     }
     cleanup_done = false;
 
-    if(!outblockL)
-    {
-      printf("Cannot allocate memory for outblockL - stopping!");
-      while(1);
-    }
-    if(!outblockR)
-    {
-      printf("Cannot allocate memory for outblockR - stopping!");
-      while(1);
-    }
-
-    if (!inblockL)
-      memset(inblockL,0,len);
-    if (!inblockR)
-      memset(inblockR,0,len);
-
-    input_blockL=(float32_t*)malloc(sizeof(float32_t)*len);
-    if(!input_blockL)
-    {
-      printf("Cannot allocate memory for input_blockL - stopping!");
-      while(1);
-    }
-    input_blockR=(float32_t*)malloc(sizeof(float32_t)*len);
-    if(!input_blockR)
-    {
-      printf("Cannot allocate memory for input_blockR - stopping!");
-      while(1);
-    }
-
     // convert data to float32
-    arm_q15_to_float((q15_t *)inblockL, input_blockL, len);
-    arm_q15_to_float((q15_t *)inblockR, input_blockR, len);
+    //arm_q15_to_float((q15_t *)inblockL, input_blockL, len);
+    //arm_q15_to_float((q15_t *)inblockR, input_blockR, len);
 
     rv_time = rv_time_k;
 
@@ -270,7 +239,7 @@ void AudioEffectPlateReverb::doReverb(uint16_t len, int16_t *inblockL, int16_t *
         y += (int64_t)y1 * idx;
         lfo2_out_cos = (int32_t) (y >> (32-8)); // 16bit output   
 
-	input = input_blockL[i] * input_attn;
+	input = (float32_t(inblock[i][0])/32768.0f) * input_attn;
         // chained input allpasses, channel L
         acc = in_allp1_bufL[in_allp1_idxL]  + input * in_allp_k;  
         in_allp1_bufL[in_allp1_idxL] = input - in_allp_k * acc;
@@ -292,8 +261,7 @@ void AudioEffectPlateReverb::doReverb(uint16_t len, int16_t *inblockL, int16_t *
         in_allp_out_L = acc;
         if (++in_allp4_idxL >= sizeof(in_allp4_bufL)/sizeof(float32_t)) in_allp4_idxL = 0;
 
-        input = input_blockR[i] * input_attn;
-
+        input = (float32_t(inblock[i][1])/32768.0f) * input_attn;
         // chained input allpasses, channel R
         acc = in_allp1_bufR[in_allp1_idxR]  + input * in_allp_k;  
         in_allp1_bufR[in_allp1_idxR] = input - in_allp_k * acc;
@@ -439,7 +407,7 @@ void AudioEffectPlateReverb::doReverb(uint16_t len, int16_t *inblockL, int16_t *
         temp1 = acc - master_lowpass_l;
         master_lowpass_l += temp1 * master_lowpass_f;
 
-        outblockL[i] =(int16_t)(master_lowpass_l * 32767.0f); //sat16(output * 30, 0);
+        outblock[i][0]=(int16_t)(master_lowpass_l * 32767.0f); //sat16(output * 30, 0);
 
         // Channel R
         #ifdef TAP1_MODULATED
@@ -482,12 +450,6 @@ void AudioEffectPlateReverb::doReverb(uint16_t len, int16_t *inblockL, int16_t *
         // Master lowpass filter
         temp1 = acc - master_lowpass_r;
         master_lowpass_r += temp1 * master_lowpass_f;
-        outblockR[i] =(int16_t)(master_lowpass_r * 32767.0f);
-		
+        outblock[i][1]=(int16_t)(master_lowpass_r * 32767.0f);
     }
-
-    if(input_blockL)
-      free(input_blockL);
-    if(input_blockR)
-      free(input_blockR);
 }
diff --git a/src/effect_platervbstereo.h b/src/effect_platervbstereo.h
index 21f751b..18a6fb8 100644
--- a/src/effect_platervbstereo.h
+++ b/src/effect_platervbstereo.h
@@ -65,11 +65,17 @@ template<typename T>
 inline static T max(const T& a, const T& b) {
   return a > b ? a : b;
 }
-*/
 
-inline long my_map(long x, long in_min, long in_max, long out_min, long out_max) {
+inline long maplong(long x, long in_min, long in_max, long out_min, long out_max) {
   return (x - in_min) * (out_max - out_min) / (in_max - in_min) + out_min;
 }
+*/
+
+inline float32_t mapfloat(float32_t val, float32_t in_min, float32_t in_max, float32_t out_min, float32_t out_max)
+{
+  return (val - in_min) * (out_max - out_min) / (in_max - in_min) + out_min;
+}
+
 
 /***
  * Loop delay modulation: comment/uncomment to switch sin/cos 
@@ -83,13 +89,13 @@ class AudioEffectPlateReverb
 {
 public:
     AudioEffectPlateReverb(float32_t samplerate);
-    void doReverb(uint16_t len, int16_t *inblockL, int16_t *inblockR, int16_t *outblockL, int16_t *outblockR);
+    void doReverb(uint16_t len, int16_t inblock[][2], int16_t outblock[][2]);
 
     void size(float n)
     {
         n = constrain(n, 0.0f, 1.0f);
-        n = my_map(n, 0.0f, 1.0f, 0.2f, rv_time_k_max);
-        float32_t attn = my_map(n, 0.0f, rv_time_k_max, 0.5f, 0.25f);
+        n = mapfloat(n, 0.0f, 1.0f, 0.2f, rv_time_k_max);
+        float32_t attn = mapfloat(n, 0.0f, rv_time_k_max, 0.5f, 0.25f);
         //__disable_irq();
         rv_time_k = n;
         input_attn = attn;
@@ -116,14 +122,14 @@ public:
     void lowpass(float n)
     {
         n = constrain(n, 0.0f, 1.0f);
-        n = my_map(n*n*n, 0.0f, 1.0f, 0.05f, 1.0f);
+        n = mapfloat(n*n*n, 0.0f, 1.0f, 0.05f, 1.0f);
         master_lowpass_f = n;
     }
     
     void diffusion(float n)
     {
         n = constrain(n, 0.0f, 1.0f);
-        n = my_map(n, 0.0f, 1.0f, 0.005f, 0.65f);
+        n = mapfloat(n, 0.0f, 1.0f, 0.005f, 0.65f);
         //__disable_irq();
         in_allp_k = n;
         loop_allp_k = n;
@@ -136,8 +142,6 @@ public:
     void tgl_bypass(void) {bypass ^=1;}
 private:
     bool bypass = false;
-    float32_t* input_blockL;
-    float32_t* input_blockR;
     float32_t input_attn;
 
     float32_t in_allp_k;            // input allpass coeff 
diff --git a/src/minidexed.cpp b/src/minidexed.cpp
index 64285b1..6fbc90a 100644
--- a/src/minidexed.cpp
+++ b/src/minidexed.cpp
@@ -109,13 +109,14 @@ CMiniDexed::CMiniDexed (CConfig *pConfig, CInterruptSystem *pInterrupt,
 	}
 #endif
 
-	// Create reverb object
+	// BEGIN setup reverb
 	reverb = new AudioEffectPlateReverb(pConfig->GetSampleRate());
-	reverb->size(0.3);
+	reverb->size(0.7);
 	reverb->hidamp(0.8);
 	reverb->lodamp(0.5);
 	reverb->lowpass(0.3);
 	reverb->diffusion(0.2);
+	// END setup reverb
 };
 
 bool CMiniDexed::Initialize (void)
@@ -592,17 +593,18 @@ void CMiniDexed::ProcessSound (void)
 			}
 		}
 
-		// Test adding reverb
+		// BEGIN adding reverb
 		int16_t ReverbBuffer[nFrames][2];
-		reverb->doReverb(nFrames,&SampleBuffer[0][0],&SampleBuffer[0][1],&ReverbBuffer[0][0],&ReverbBuffer[0][1]);
+
+		reverb->doReverb(nFrames,SampleBuffer,ReverbBuffer);
 		for (unsigned i = 0; i < nFrames; i++)
                 {
-			SampleBuffer[i][0] += ReverbBuffer[0][0];
-                        SampleBuffer[i][1] += ReverbBuffer[0][1];
+			SampleBuffer[i][0] = ReverbBuffer[i][0];
+                        SampleBuffer[i][1] = ReverbBuffer[i][1];
 		}
+		// END adding reverb
 
-		if (   m_pSoundDevice->Write (SampleBuffer, sizeof SampleBuffer)
-		    != (int) sizeof SampleBuffer)
+		if (m_pSoundDevice->Write (SampleBuffer, sizeof SampleBuffer) != (int) sizeof SampleBuffer)
 		{
 			LOGERR ("Sound data dropped");
 		}
diff --git a/src/minidexed.ini b/src/minidexed.ini
index cd2123a..f2f1c6a 100644
--- a/src/minidexed.ini
+++ b/src/minidexed.ini
@@ -29,5 +29,5 @@ EncoderPinData=6
 EncoderPinSwitch=26
 
 # Debug
-MIDIDumpEnabled=0
-ProfileEnabled=0
+MIDIDumpEnabled=1
+ProfileEnabled=1