shithub: soundpipe

Download patch

ref: 53600d328aef5ee49ce7559152d3cc1aae009228
parent: 9e1c37442af95a9f6040b0c1bbb697d92b332408
author: Paul Batchelor <thisispaulbatchelor@gmail.com>
date: Sat Oct 31 09:46:08 EDT 2020

oscmorph fixes

--- a/modules/oscmorph.c
+++ b/modules/oscmorph.c
@@ -4,7 +4,7 @@
 #include <math.h>
 #include "soundpipe.h"
 
-#define MAXLEN 0x1000000L
+#define MAXLEN    0x1000000L
 #define PHASEMASK 0x0FFFFFFL
 
 int sp_oscmorph_create(sp_oscmorph **p)
@@ -49,7 +49,7 @@
 
     /* set up constants */
 
-    tmp = MAXLEN / 2;
+    tmp = MAXLEN / ft[0]->size;
 
     osc->nlb = 0;
     while (tmp >>= 1) osc->nlb++;
@@ -57,7 +57,6 @@
     osc->mask = (1 << osc->nlb) - 1;
     osc->inlb = 1.0 / (1 << osc->nlb);
     osc->maxlens = 1.0 * MAXLEN / sp->sr;
-
     return SP_OK;
 }
 
@@ -95,20 +94,17 @@
         ft2 = osc->tbl[index + 1]->tbl;
     }
 
-    osc->inc = (int32_t)floor(cps * osc->maxlens);
+    osc->inc = (int32_t)lrintf(cps * osc->maxlens);
 
     fract = (phs & osc->mask) * osc->inlb;
 
     pos = phs >> osc->nlb;
 
-    v1 = (1 - wtfrac) *
-        *(ft1 + pos) +
-        wtfrac *
-        *(ft2 + pos);
+    v1 = (1 - wtfrac) * ft1[pos] + wtfrac * ft2[pos];
     v2 = (1 - wtfrac) *
-        *(ft1 + ((pos + 1) % ftp1->size))+
+        ft1[(pos + 1) % ftp1->size] +
         wtfrac *
-        *(ft2 + ((pos + 1) % ftp1->size));
+        ft2[(pos + 1) % ftp1->size];
 
     *out = (v1 + (v2 - v1) * fract) * amp;