Intelligent patching: Improve or replace the 1:N and N:1 multi-connect options
Disclaimer: This is all IMHO, of course, we're talking about workflow here, which is something completely up to taste and habits, so please bear with me. In general Ico's intelligent patching (IP) works extremely well and lets you do complex patches with a speed which will make vanilla users turn green with envy. :)
However, the more complex modes (what I call 1:N and N:1 multi-connect, items 4 and 4' in the attached patch) are hard to understand IMHO, it's not easy to see when you'd want to use them, and in any case it's often really hard to predict what the result will be. At least that's my experience; whenever I try using this mode, I invariably end up with something totally unexpected. ;-) Maybe that's just my ham-fistedness, but in contrast I feel perfectly at ease with the 1:1 multi-connect (item 1 in the patch, where the user has exactly two objects selected). In my experience, the students tend to avoid the 4/4' mode as well, I've actually never seen them using it. @ico, do your students actually use this mode?
What I think would be much more useful, and which I already frequently wished I had available, would be some kind of "bipartite" N:M single-connect mode. The idea of that is that I have n+m selected objects (n,m>1), say A1..An, B1..Bn, arranged in two rows or columns. Then I'd like to connect one outlet O from, say, Ai to some inlet I of Bj, and have IP do the corresponding O->I connection for all (existing) pairs Ak,B[k+(j-i)] where k runs from 1 to n.
For the sake of a more concrete example, let's say I have this: (I use two rows here for illustration, but the As and Bs might as well be arranged into two columns instead):
[A1] [A2] [A3] [A4] [B1] [B2] [B3] [B4]
And I'd like to turn it into this:
[A1] [A2] [A3] [A4] | | | | [B1] [B2] [B3] [B4]
Then I'd just select all of the As and the Bs, connect the desired outlet of A1 with the desired inlet of B1 and be done with it.
I can't tell you how often I need this. Of course I could start out with
[A1] - [B1] and then just duplicate that as often as needed, but then I usually get it wrong on first attempt and have to redo the connections later anyway, so I'd much prefer to use IP there.
For the sake of an even more concrete example that I actually did with the students this semester, have a look at this patch: intervals.pd. Note the two "ladders" of bangs/numbers/arithmetic under the columns "arithmetic" and "geometric", it's exactly like the situation above, albeit in columns and with three columns each. Screenie:
Now take this patch where the "ladder" connections have been removed, and show me how to redo them quickly with IP: intervals-unconnected.pd None of the current modes will handle this conveniently.
With the mode sketched out above, this would be easy as pie (select the bangs and the numbers, connect the topmost bang to the topmost number and apply IP once, then do the same again for connecting the arithmetic tower starting with the
[100( message to the numbers).
@ico @jwilkes Would you be ok if I try to implement the alternative IP mode sketched out above, do you think that it would be a useful replacement for the 4/4' modes? If not, then I might just add another fifth IP mode instead (maybe requiring a special shift key), but I feel that this would be stretching it.
As an aside, we should also add a help patch for IP allowing the user to practice intelligent patching. It's a real time-saver which we should brag about. :) I can take care of the help patch after I implemented the above.