plugdata-team / plugdata

Pure Data as a plugin, with a new GUI
https://plugdata.org
GNU General Public License v3.0
1.5k stars 66 forks source link

Intelligent patching #72

Closed ludnny closed 2 years ago

ludnny commented 2 years ago

Hi,

This is not something very urgent before a v1.0, but it could hugely improve the patching experience.

timothyschoen commented 2 years ago

I'd like to add this soon, it would greatly improve the patching experience. I was thinking about doing it the Max/MSP way where you shift-drag an object over a connection to place it inbetween, but I think adding both methods would be best.

I don't understand what you mean by Edit / Paste Replace though? Do you mean that pasting while having objects selected would replace those objects, like with copy/pasting text?

Those videos show some cool ideas, I'd like to implement a lot of those eventually. I don't think they will all make it before v1.0, but I'll try to get the most useful ones.

ludnny commented 2 years ago

I'd like to add this soon,

Oh great :)

About Edit / Paste Replace. This is a feature in Pure Data. It's super convenient to replace an object or an abstraction while keeping the links.

36 Unfortunately, it doesn't have a keyboard shortcut, so you have to go to the menu with the mouse, which defeat the purpose... Ctl+Shift+V for Paste Replace would be super useful.

ludnny commented 2 years ago

In the same kind of fast patching ideas, there is this prototype of keyboard only patching by @HenriAugusto :

https://github.com/pure-data/pure-data/pull/869 83077201-4e9c1800-a04d-11ea-8824-830d39106eda

timothyschoen commented 2 years ago
HenriAugusto commented 2 years ago

In the same kind of fast patching ideas, there is this prototype of keyboard only patching by @HenriAugusto :

[pure-data/pure-data#869]

Hi!

I'm glad the prototype catched your eye! I definitely need to get back on this one day. I didn't touch it since the pandemic.

Still, if you don't mind a random crash once in a while you can compile from the last commit. To this day I didn't find anyone who actually tested it!

timothyschoen commented 2 years ago

Great design, I'm planning to add some of this to PlugData soon. It's really good for accessibility!

JoshuaACNewman commented 2 years ago

Ironically, one of my students who's very interested has cerebral palsy and works much better with a mouse than a keyboard. We might wind up building a macro pad for her that could be a broadly useful creative tool, but chords are particularly difficult, like for switching Edit on and off.

But dragging solutions like above could make things much faster for her.

timothyschoen commented 2 years ago

https://user-images.githubusercontent.com/44585538/177019621-f4f77063-eca0-41f8-9f50-9582c447d706.mov

This (with shift-drag) and more intelligent patching is coming soon!

timothyschoen commented 2 years ago

https://user-images.githubusercontent.com/44585538/177020673-7c6de408-77fa-4680-9f27-a71df131d52f.mov

Also works like this with shift down

timothyschoen commented 2 years ago

https://user-images.githubusercontent.com/44585538/177045475-3dbf4eef-0728-46ef-b946-10957a0e344f.mov

Dragging over toggles, radioboxes and bangs!

ludnny commented 2 years ago

Dragging over toggles, radioboxes and bangs!

Amazing! Thank you!

timothyschoen commented 2 years ago

https://user-images.githubusercontent.com/44585538/177046511-939a95e7-69ee-4705-88c7-107fa4a09a05.mov

Another one with holding shift down.

I was wondering if we should use shift for the drag-toggle behaviour? Might prevent the user from accidentally toggling things, but I'm unsure. So far, shift is used for every intelligent patching option, which makes it pretty easy to memorise and use.

ludnny commented 2 years ago

I was wondering if we should use shift for the drag-toggle behaviour? Might prevent the user from accidentally toggling things, but I'm unsure. So far, shift is used for every intelligent patching option, which makes it pretty easy to memorise and use.

I don't think it's necessary to use Shift to prevent accident toggling. I don't remember having problems with Ableton Live (you can test multi-toggling with MaxMidiEffects/Arp)

timothyschoen commented 2 years ago

https://user-images.githubusercontent.com/44585538/177056392-bb87fa08-c273-4d93-968f-44e3e3b9e997.mov

If there's only one or zero objects selected, holding down shift will trigger this behaviour. If there are multiple objects selected, it will create multiple connections at once instead. I feel like this is pretty intuitive, let me know if you disagree.

This is the last one I'm adding before v1.0, after that I'll open a new ticket so we can discuss more options. I'd like to make sure these options work perfectly first though.