[PD] external with more than 6 inlets possible?

Claude Heiland-Allen claude at mathr.co.uk
Wed Mar 16 14:37:41 CET 2016


On 16/03/16 13:25, i go bananas wrote:
> pd using the same address for inlets and outlets as an
> optimisation?

Yes, Pd recycles signal vectors so your output vector could be the same 
as the input vector, which means this code is unsafe because it could 
trash the inputs:

   // loop through the 4 oscillators, adding the left to right:
   for (int osc = 0; osc < 4; osc++)
   {
     int n = (int)(w[14]);
     while (n--) *output[osc]++ = *left[osc]++ + *right[osc]++;
   }

The easiest fix would be to reverse the order of the loops:

   int n = (int)(w[14]);
   while (n--)
   {
     for (int osc = 0; osc < 4; osc++)
       *output[osc] = *left[osc] + *right[osc];
     output++;
     left++;
     right++;
   }

Your alternative method of changing the iolet creation orders is not a 
fix, it might "work" for one particular patch but another patch could 
break it again.


Claude
-- 
http://mathr.co.uk



More information about the Pd-list mailing list