fix off-by-one error
authorrekado <rekado@elephly.net>
Mon, 29 Jul 2013 14:03:12 +0000 (22:03 +0800)
committerrekado <rekado@elephly.net>
Mon, 29 Jul 2013 14:03:12 +0000 (22:03 +0800)
src/mdaPianoVoice.cpp

index 2b70c3e..08a3aa4 100644 (file)
@@ -192,7 +192,9 @@ void mdaPianoVoice::render(uint32_t from, uint32_t to) {
     frac += delta;  // integer-based linear interpolation
     pos += frac >> 16;
     frac &= 0xFFFF;  // why AND it with all ones?
-    if(pos > end) pos -= loop; // jump back to loop sample
+    if (pos >= end) {
+      pos -= loop; // jump to loop point in sample
+    }
 
 #ifdef PIANO
     i = samples[sample_index].buffer[pos];