On Thu, 23 Dec 2010, Roman Haefeli wrote:

As Dietrich already pointed out, for some reason it stops working as
expected when using a blocksize < 64. I don't why this is and I suspect
it to be a bug.

I tried to fix it by introducing a x_yourmom property in [vline~] that holds the value of clock_getlogicaltime to see whether it was the same, and fudge the clock values according to how many times the same time has been used. But it's a little bit off and this isn't the place where the problem ought to be fixed.

And the way it is now, it only works if you send a triplet to [vline~], so, I inserted a messagebox in your test patch, that is «$1 0 10».

Index: d_ctl.c
===================================================================
--- d_ctl.c     (révision 14667)
+++ d_ctl.c     (copie de travail)
@@ -249,6 +249,8 @@
     t_float x_inlet1;
     t_float x_inlet2;
     t_vseg *x_list;
+    double x_yourmom; // because blocksize messes up logicaltime
+    int x_fudge;
 } t_vline;

 static t_int *vline_tilde_perform(t_int *w)
@@ -260,7 +262,10 @@
     double inc = x->x_inc;
     double msecpersamp = x->x_msecpersamp;
     double samppermsec = x->x_samppermsec;
-    double timenow = clock_gettimesince(x->x_referencetime) - n * msecpersamp;
+    double timenow = clock_gettimesince(x->x_referencetime) - n*msecpersamp;
+    if (clock_getlogicaltime() == x->x_yourmom) x->x_fudge++; else 
x->x_fudge=0;
+    x->x_yourmom = clock_getlogicaltime();
+    timenow += x->x_fudge*n*msecpersamp;
     t_vseg *s = x->x_list;
     for (i = 0; i < n; i++)
     {
@@ -395,6 +400,8 @@
     x->x_list = 0;
     x->x_samppermsec = 0;
     x->x_targettime = 1e20;
+    x->x_yourmom = -1;
+    x->x_fudge = 0;
     return (x);
 }

 _______________________________________________________________________
| Mathieu Bouchard ---- tél: +1.514.383.3801 ---- Villeray, Montréal, QC
_______________________________________________
[email protected] mailing list
UNSUBSCRIBE and account-management -> 
http://lists.puredata.info/listinfo/pd-list

Reply via email to