[PD] GUI and DSP

Jonathan Wilkes jancsika at yahoo.com
Sat Feb 11 05:09:33 CET 2012

----- Original Message -----
> From: Hans-Christoph Steiner <hans at at.or.at>
> To: Jonathan Wilkes <jancsika at yahoo.com>
> Cc: Ivica Ico Bukvic <ico at vt.edu>; Mathieu Bouchard <matju at artengine.ca>; "pd-list at iem.at List" <pd-list at iem.at>
> Sent: Friday, February 10, 2012 10:48 PM
> Subject: Re: [PD] GUI and DSP
> On Feb 8, 2012, at 6:03 PM, Jonathan Wilkes wrote:
>>  ----- Original Message -----
>>>  From: Ivica Ico Bukvic <ico at vt.edu>
>>>  To: Mathieu Bouchard <matju at artengine.ca>; Jonathan Wilkes 
> <jancsika at yahoo.com>
>>>  Cc: "pd-list at iem.at List" <pd-list at iem.at>
>>>  Sent: Wednesday, February 8, 2012 3:33 PM
>>>  Subject: Re: [PD] GUI and DSP
>>>  Mathieu Bouchard <matju at artengine.ca> wrote:
>>>>  Le 2012-02-08 à 11:55:00, Jonathan Wilkes a écrit :
>>>>>  While technically correct that's misleading because 
> there's a 
>>>  lot of 
>>>>>  stuff happening on the 'pd' side that a reasonable 
> person would
>>>>  assume 
>>>>>  to be handled on the 'pd-gui' side.  Well, more than 
> that-- 
>>>  there's 
>>>>>  stuff happening on the 'pd' side that doesn't need 
> to 
>>>  happen at all,
>>>>  but 
>>>>>  it can use massive amounts of CPU and consequently a reasonable
>>>>  person 
>>>>>  gets dropouts when moving an array that has only 100 points 
> visible
>>>>  and 
>>>>>  erroneously thinks, "Wow, I get dropouts just moving some 
> polygons 
>>>>>  around on the screen? Tk stinks!"
>>>  Or you could simply use pd-l2ork and a move arrays and other complex 
> graphical 
>>>  user interface objects using tags and never worry about that problem 
> again.
>>  But even in pd l2ork, if you have a million element array with 100 elements 
> showing, 
>>  every time you click-drag a point in the array 'pd' recalculates 
> the relationship between 
>>  points/elements for the _entire_ array, right?  At least that's what 
> the code in g_array.c 
>>  looked like it was doing when I last looked at it.
>>  If I understand it correctly, the 'pd-gui' waits for that c code to 
> loop through the entire array before 
>>  it updates-- thus if you swoop the mouse through the entire array it may 
> look like a 
>>  sluggish redrawing on Tk's part when actually it's redrawing just 
> fine once it gets the 
>>  new coords, which takes time (and can cause dropouts).
>>  That's a purposely exaggerated example, as it doesn't make a lot of 
> sense to draw a 
>>  100-point garray that represents a 1000000-element array.  But it makes me 
> wonder 
>>  whether the "strobing" effect you get with a ds-array that has a 
> lot of elements 
>>  happens because of similar heavy processing on the c side of things.
>>  Has anyone tried to make a big polygon with lots of moving parts purely in 
> tcl/tk and 
>>  measured the cpu?  Might help to see Tk's limits separated out from pd.
> I just made a pure Tcl array like thing.  I made two versions, one using the 
> create/delete technique that Pd uses, and another that uses the 
> "coords" canvas command to update an existing line.  They both seem to 
> use about 45% of my CPU on Mac OS X 10.6.8 running Tcl/Tk/Carbon 8.5.10.  Using 
> Tcl/Tk/Cocoa 8.5.8 uses about the same, maybe a little less.  Since the Tcl/Tk 
> canvas is on the main CPU, and not the GPU, its not going to be particularly 
> fast at such things.

Ah, nice!

For me the create-delete method uses more CPU but both are pretty intensive.

Any Qt devs out there?  Or gtk'ers?  Maybe a JUCEr?  Would those toolkits be able 
to utilize the GPU?  Those would be nice to compare, too.


> .hc
> ----------------------------------------------------------------------------
> "[W]e have invented the technology to eliminate scarcity, but we are 
> deliberately throwing it away to benefit those who profit from scarcity."  
>       -John Gilmore

More information about the Pd-list mailing list