Hi Miller,
sorry, I didn't manage yesterday, but here we go:
On 19.05.2025 11:06, Miller Puckette via Pd-dev wrote:
To Pd dev -
I commented on one Pr but this seems like a more general question: in PRs https://github.com/pure-data/pure-data/pull/2049 and https://github.com/pure-data/pure-data/pull/2058 there are "channels" methods to set the number of channels for delwrite~, tabread~ and tabread4~ - why isn't the desired number of channels for these simply inferred from the input signal?
(In the case of delwrite~ perhaps this is because delread~ objects might get sorted before it's clear how many channels delwrite~ will see in its input.
That's exactly the reason. As I point in the PR description, we face the same issue with [send~], that's why it also has a [channels( message, although one could naively think the object could just take the channel count from its input signal.
[delwrite~] -> [delread~] is basically the same as [send~] -> [receive~]
But I don't think this should be a problem with the table readers).
Obviously, [tabread~] and friends don't even have an input signal from which they could take the channel count. The only indication is the number of tables provided as creation arguments. "set" only overwrites the list of array names, but shouldn't actually change the number of channels, that's why we need a separate "channels" message for that.
For example, I would typically provide a list of tables as creation arguments and then use "channels" to select the first N tables/channels at runtime.
And anyway, why set by a message and not in a creation argument? As far as I can determine we're far from being able to make patches with run-time-determined numbers of channels - and I'd rather avoid doing that unless there's great demand since it will greatly complicate things.
That's absolutely not true! Patches with run-time-determined channel counts work just fine, I do it all the time!
Also, then why do objects like [send~], [catch~], etc. have a "channels" method? ;-) After all, they already take the number of channels as a creation argument. The reason, of course, is to change the number of channels at runtime. In fact, the *only* mc object I'm aware of that only supports a fixed channel count is [sig~].
Finally, I'm pretty sure it was you who came up with the "channels" message in the first place :)
Cheers,
Christof
pd-dev@lists.iem.at - the Pd developers' mailinglist https://lists.iem.at/hyperkitty/list/pd-dev@lists.iem.at/message/43IBETTMNQA...