[PD] locality with new [field] object (Jonathan Wilkes)

Jonathan Wilkes jancsika at yahoo.com
Sat Sep 5 07:31:47 CEST 2015


On 09/03/2015 08:11 AM, jamal crawford wrote:
> oh nice :) im looking forward to this

Here's a rudimentary screencast:
http://pdblog.nfshost.com/fielddemo.webm

I start with a little abstraction named "b.pd".  It just polls an [osc~] 
which is scaled and offset by some amount to compute
a value for the [field radius].  In a toplevel patch, setting the 
[field] does nothing.

However, when I create the struct with the "canvas a b" definition, it 
tells Pd to load up the contents of "b.pd" into memory.  And when I 
create the scalar "foo", I also get a canvas "b.pd" associated with that 
scalar.

Now when I set the [field radius] in that abstraction, it updates the 
"radius" field for that scalar.  The "radius" field also happens to be 
used as a parameter to [draw circle].  That means when the "radius" 
changes it animates the circle's radius.

As I make copies of the scalar you can see why this interface is so 
powerful-- each scalar has its own [osc~] controlling the animation at a 
frequency independent of the others.  You can also get each one to 
[throw~] a signal to a bus for sound, but I didn't do audio with this 
screencast.

None of this is particularly efficient.  But conceptually it's much 
easier to deal with than juggling gpointers.  Also, once you start 
sending a lot of animation data to the gui, sys_queugui filters out 
redundant messages.

-Jonathan

> cheers
> On Wed, Sep 2, 2015, at 10:20 PM, Jonathan Wilkes wrote:
>> Sorry, I didn't clarify that these are brand new changes I made in my 
>> port of the GUI away from tcl/tk to nw.js.  I developed them as a 
>> diversion from the otherwise mind-numbing task of measuring fonts, 
>> fixing scrollbars, etc.
>> I'll try to post a screencast later.
>> -Jonathan
>> On Wednesday, September 2, 2015 2:29 PM, jamal crawford 
>> <threen52 at ml1.net> wrote:
>> hey list, Jonathan.
>>
>>     You start with a struct:[struct foo float x float y canvas a b]
>>     Then create a scalar from this struct.
>>     The scalar will have an "x" value, a "y" value, and a canvas "a"
>>     which gets filled with the contents of an abstraction "b.pd" that
>>     is somewhere in Pd's search path.
>>     Now here's the neat thing-- inside the newly instantiated "b.pd"
>>     you can do this:
>>     [loadbang]|[field x]|[print x]
>>
>>     imagine you have a drawing instruction like this:[draw rect 0 0 20 20]
>>     When you create the scalar you get a little black box on a canvas.
>>     With a canvas field like I described, you can right-click the scalar and choose "Open" to show a canvas window.
>>
>> while trying to create [struct foo float x float y canvas a b], i 
>> get: canvas: no such type, using pd 0.46.6
>> what am I missing?
>> ~/.jc

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.puredata.info/pipermail/pd-list/attachments/20150905/1523a56e/attachment.html>


More information about the Pd-list mailing list