Patch cords suggestion


#1

i have a suggestion that could facilitate patching.

when you have an object output that connects to several other object inputs it would be nice if you could:

add a new object and point a patchcord from the new object out to the old object OUT which would then make all the same connections with the new object. i think this is not too intrusive and it would help a lot, when you change objects. (replace does only work in some instances)


#2

sorry, I don't really get what your driving at... what is the old object?, you mean previously selected object before the 'new'?
if so, I think it would be pretty counter intuitive, if you add a new object, but there is some 'special' logic which then auto connects due to what you previously had selected... and this would only work IF the inlets and outlets names were the same.

interesting though, there is something kind of similar in EigenD. (another soft modular env),
what id does is allow you to patch from object to object , which then automatically looks for inlets matching outlet names, and connects all matches (with some fuzzy name matching to help)

BUT...
I don't think this will work too well with Axoloti, as the inlet/outlet naming convention is not too consistent (which is what is causing your replace issue)... also it tends to work well, with 'higher level' objects which have a lot more inputs/outputs.

(EigenD objects have been developed so that this name matching works, i.e. lots of consistency of interfaces between the objects... helped by its solving a slightly different problem space)

one thing, that I think both max and reaktor have, is a shortcut which allows you to connect multiple outputs from a selected input at the same time. though honestly, I use it so rarely I always forget what it is :wink:

I do think there are room for improvements though...
definitely consistent naming would help with the replace,
(issue is, this could easily break patches as the 'network' is defined in the axp file using the inlet/outlet names :frowning: )
also perhaps a duplicate function like max, which creates a duplicate object, with its inlets connected to the same outlets as the object being duplicated. (in conjunction with replace this could be very powerful)


#3

sorry, i was a bit fuzzy in my explanations, i try again with some pictures:

patch does not make any sense, just for illustration. take this:

and add this:

now picture dragging a cord from the cc + to the touch o+ to get this:

would be neat, no? i know i can already do something similar when i first drag a cord into empty space from the o+ but i need more mouse gestures and clicks :slight_smile:


#4

ok, so you want to drag all cables from one outlet to another...
thats should be doable
id say it would be more useful if its just done with a key modifier i.e. shift drag from an outlet, takes all current connects and drags to a new destination. (or perhaps this is what you had in mind anyway)

(not so obvious) tip : if you delete the source object (one with outlet) , you will see a dotted line network of connect all the inputs, then when you connect a new outlet to any of these dotted inlets, the new outlet will be connected to them all. (not easy to describe, but easier to try)

so in your example
delete midi/in/touch - (you will see some dotted lines, between the chart inlets)
create midi/in/cc
connect midiCC to chart_2/+ , magically all the others will be connected too.

EDIT actually I think this might be the same as what your saying about dragging outlet to an empty space... Ive only noticed it on deleting objects, learn something everyday :slight_smile:

personally, I'll admit I'm not a fan of this, I find it pretty unintuitive, Id prefer the shift drag on outlet.
but it does work, IF you are planning on substituting the source, like you are in your example


#5

shift drag would be awesome!


#6

iirc shift clicking in Max lets you direct one out to many ins quickly, whereas on the Nord Modular editor- if you want to move a group of common outs to another out, it's a double click and drag (again , iirc) - so in terms of establishing what's intuitive I guess it makes sense to look at comparable environments and ensure that contra-techniques aren't adopted so lightly

so I take it from the topic it's not possible to hot-swap a module the way it is on the Nord G2 editor (which I so wish was possible for the G1s I have) ? It makes informed decisions about mapping the existing cable i/o


#7

no... when you hit 'live' on the editor, it does 3 things
- generate the C++ code for patch (on your pc)
- compile it (on your pc)
- transfer you patch to axoloti (pc/axoloti)
- run it (axoloti)

so the code is generated for the entire patch, this means that the compiler can optimise across the entire patch code... if it was 'per module' it would only be able to optimise for the one module.
(also theres a lot of complexity, to ensure you would not get audio glitches during that swap, which again is not 'free' in terms of resources)

BUT... the compilation/upload of the patch is generally very quick, and hopefully could be optimised further. so perhaps one day, we could 'hot-swap' the entire patch.
(though would also require some clever code for 'maintaining state' between swap)

certainly an interesting area, but something thats not trivial to change.


#8

A few more words. only to clarify my point, for future reference .. I was specifically meaning swapping in/out a module whilst preserving compatible cabling

Say you had two flavours of filter, with compatible i/o - these would be eminently swappable - so I know the completed patch still needs to be uploaded/compiled, but whilst you are editing, if you wanted to swap without rewiring (as this could be one-to-many, like above) it could be handy to swap in compatible alternatives .. that was the essence of it anyway, just something unique to the G2 editor that i'd longed for as a G1 owner : )


#9

yes, there is a replace option (in the drop down on the object), it will retain any inlets/outlets that are name from the same from the old object to the replacement object.