[epiano] fix: pick different sample for different velocity
authorrekado <rekado@elephly.net>
Sun, 28 Jul 2013 04:01:02 +0000 (12:01 +0800)
committerrekado <rekado@elephly.net>
Sun, 28 Jul 2013 04:01:02 +0000 (12:01 +0800)
src/mdaPianoVoice.cpp

index 9e46e6b..4551c6b 100644 (file)
@@ -77,10 +77,6 @@ void mdaPianoVoice::on(unsigned char key, unsigned char velocity) {
 
     k = 0;
     while(key > (kgrp[k].high + s)) k += SAMPLES_PER_NOTE; // find keygroup
-#ifdef EPIANO
-    if(velocity > 48) k++; // mid velocity sample
-    if(velocity > 80) k++; // high velocity sample
-#endif
     sample_index = k; // store sample index
 
     l += (float)(key - kgrp[k].root); // pitch
@@ -94,6 +90,11 @@ void mdaPianoVoice::on(unsigned char key, unsigned char velocity) {
     frac = 0;
     pos = 0;
 
+#ifdef EPIANO
+    if(velocity > 48) sample_index++; // mid velocity sample
+    if(velocity > 80) sample_index++; // high velocity sample
+#endif
+
 #ifdef PIANO
     end = samples[sample_index].size;
 #elif defined EPIANO