[PD] how can I clear [vd~]

Ingo Scherzinger ingo at miamiwave.com
Tue Feb 1 20:56:39 CET 2011


I actually went the easy way and doubled the [delwrite~]. After adding the
delay time to the [switch~] "off" message it worked just fine.

This is because I have delay times of 20 - 50 ms for doubling notes. Since
note events are not happening any faster then that it is working.
Indeed, using higher delay times would still result in clicks. So Mathieu's
fix for [delwrite~] is the only "real" solution for this. I'm going to check
it out when I get some spare time.

I hope this fix will be added to pd vanilla's / pd-extended's releases!!!

Thanks for spending the time, Mathieu!

Ingo

> -----Ursprüngliche Nachricht-----
> Von: Mathieu Bouchard [mailto:matju at artengine.ca]
> Gesendet: Dienstag, 1. Februar 2011 04:07
> An: Ingo Scherzinger
> Cc: pd-list at iem.at
> Betreff: Re: AW: [PD] how can I clear [vd~]
> 
> On Tue, 1 Feb 2011, Ingo Scherzinger wrote:
> 
> > Yes, you are right, Mathieu!
> > It's the [delwrite~]! I am already toggling between two [vd~] objects. I
> > guess if I'd add a second [delwrite~] to keep the other one "cleard"
> with no
> > signal being fed into it while the other one is active it would work.
> > Thank you for the idea!
> 
> Well, if you switch off and on and off and on real quick, then your
> double-delwrite~ trick doesn't work anymore. I suppose that it would be
> better to actually add the clear method :
> 
> Index: d_delay.c
> ===================================================================
> --- d_delay.c	(révision 14844)
> +++ d_delay.c	(copie de travail)
> @@ -5,6 +5,7 @@
>   /*  send~, delread~, throw~, catch~ */
> 
>   #include "m_pd.h"
> +#include <string.h>
>   extern int ugen_getsortno(void);
> 
>   #define DEFDELVS 64             /* LATER get this from canvas at DSP
> time */
> @@ -129,6 +130,11 @@
>           (x->x_cspace.c_n + XTRASAMPS) * sizeof(t_sample));
>   }
> 
> +static void sigdelwrite_clear(t_sigdelwrite *x) {
> +    int n = XTRASAMPS + x->x_cspace.c_n;
> +    memset(x->x_cspace.c_vec, 0, n * sizeof(t_sample));
> +}
> +
>   static void sigdelwrite_setup(void)
>   {
>       sigdelwrite_class = class_new(gensym("delwrite~"),
> @@ -137,6 +143,8 @@
>       CLASS_MAINSIGNALIN(sigdelwrite_class, t_sigdelwrite, x_f);
>       class_addmethod(sigdelwrite_class, (t_method)sigdelwrite_dsp,
>           gensym("dsp"), 0);
> +    class_addmethod(sigdelwrite_class, (t_method)sigdelwrite_clear,
> +        gensym("clear"), 0);
>   }
> 
>   /* ----------------------------- delread~ -----------------------------
> */
> 
>   _______________________________________________________________________
> | Mathieu Bouchard ---- tél: +1.514.383.3801 ---- Villeray, Montréal, QC




More information about the Pd-list mailing list