[PD] external with more than 6 inlets possible?
Claude Heiland-Allen
claude at mathr.co.uk
Wed Mar 16 14:42:32 CET 2016
On 16/03/16 13:37, Claude Heiland-Allen wrote:
> 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++;
> }
oops, this is wrong, I think
maybe *output[osc]++ = *left[osc]++ + *right[osc]++; would work in the
inner loop in fact, I'm just not sure of the order of the C operations
here...
>
> 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
More information about the Pd-list
mailing list