home changes contents help options

Ideas for Improving Pd's GUI

The a ground up rewrite of Pd's GUI is underway, you can track the progress here: PdGuiRewrite. (Please note that there are small differences across platforms which can be found or added to the GUIPlatformDifferences wiki page.)

General

"Find" enhancement

Custom Object Contextual Menus

Display

Comments with line breaks

Or, making a comment block a full-powered text block. What sense is it in making 5 diferent text strings for a list with 5 items, that is anyway supposed to look like one object?

Edit Mode

Snap-to-Grid

Especially useful for placing GUI objects, but also helpful for keeping patches tidy and clean: snap objects to grid while editing. Kind of "Edit->Tidy up" on the fly.

Ideally, it would be resizable and togglable via a preference, or even better, via Pd messages.

Possibly combine this with "magnetic edges", which lets (GUI) objects snap to each other when close.

From Vade: It might also be useful to have a very subtle background grid drawn on the canvas at certain intervals to help patch organization. Quartz Composer has this, as does Max 5.

Avoid Disconnections with Route, Trigger, Select

Changing a [trigger bang float]? to a [trigger bang anything float]? will make previous connections connect to the wrong outlet. It would be nice if old connections could be preserved even on such recreate-edits.

More Ways to Create Connections

Objects Z-axis Ordering

As in vector graphics software, the following commands would be essential for serious patching: send to back, bring to front, move one layer back/forward, etc.

Inlets and Outlets

Inlets and outlets could be improved in many ways:

Size of objects automatically set + horizontal stretching

If you have an object with more than 4 outputs you'll need to make some garbage text or something in order to work with it. since it is quite logical that when the user needs outputs they should be acessible, an elegant solution would be to assign a minimal value to the gap between outputs. if the standard space of the object isn't big enough, the object will make itself bigger automatically. Although the stretching possibility in max is quite useful as well.

Connections

Displaying Status Info

Object Numbering

See: Objects should have optional visible numbers to assist dynamic patching. These could also help with the keyboard shortcuts discussed above - e.g. "22o0-5>27i0-5" would connect object 22's outlets 0,1,2,3,4,5 to object 27's inlets 0,1,2,3,4,5, or "14-25o0>50-59i4" would connect outlet 0 of objects 14 through 25 to inlet 4 of objects 50 through 59. Perhaps this syntax is awful :); any implementation that can accomplish what's described would be wonderful, though.

New style preferences


Colours based on data type --CpILL?, Mon, 05 Nov 2007 18:58:59 +0100

I was thinking that the connectors and inlets/outlets could be colored to show what data type they are. i.e. blue for float, red for bang etc. There is no visual representation of that information at the moment and I think it would help to ease the learning curve. Perhaps the colours could changed in the preferences or turned on/off.

What also might be good, and inspired from web pages, it the ability to increase the font size or better a sort of zoom in or out. Perhaps subpatched could have their own zoom level remembered?

send-architecture shortcut

All objects based on "invisible cords" (sends- and receive-based objects) could have a shortcut to its counterparts, like in max. By right-clicking on these objects, a list with their counterparts is shown, and selecting any element in that list takes us to the relevant patch window. (check Max for how it exactly works)

Solution to disastrously slow visualization of graphic arrays --jleben, Thu, 10 Apr 2008 12:32:13 +0200

Current problems because of slow drawing of graphic arrays: - Writing large amount of data into a graphic array causes fault of audio engine sync at the moment when the graphic array is being redrawn. - Moving a graphic array with big amount of data around a pd patch is hard/unusable.

I found out that it is possible to make visualization of graphic arrays much faster and usable: - by implementing a better visualization algorithm: drawing a vertical line for each column of pixels, the line ranges from minimum to maximum value of data window "covered" by the screen's column of pixels - instead of a line segment for each array data -> This results in much less Tk line segments being drawn. - by drawing the array data onto a separate Tk canvas

Solution to disastrously slow visualization of graphic arrays -

...

I have already made Pd externals that implement these two ideas, but I think this should be solved at the Pd core level. I would do it if someone introduced me into the depths of how (where in the code) pd's native graphic arrays are drawn.