[PD-dev] [ pure-data-Feature Requests-3531000 ] Proposal for an alternative file format

Rich E reakinator at gmail.com
Sat Jun 2 20:42:04 CEST 2012


(from Sébastien:)

> We were thinking that a simple JSON file would save a lot of trouble :
> - it has a nested structure, which allows for much clearer, even
> human-readable format. ex :
> [
>    {"class": "obj", "id": 0, "type": "osc~", "args": [440]},
>    {"class": "obj", "id": 1, "type": "dac~"},
>    {"class": "connect", "from": [0, 0], "to": [1, 0]},
>    {"class": "connect", "from": [0, 0], "to": [1, 1]}
> ]
>
> - it allows putting custom attributes (for a GUI for example) :
> [
>    {"class": "obj", "id": 0, "type": "osc~", "args": [440],
>        "myGui": {"x": 123, "y": 78}
>    }
> ]
>
>
Strict json has a dictionary as it's outermost object.  Most parsers will
accept an array as you have done, but not all (Obj-C's TouchJSON as an
example).  An alternative way to organize the patch and adhere to strict
json would be to have id's on the outside, such as:

{
"canvas" :
{
"id" : 1,
"name" : "example"
"x" : 95,
"y" : 190,
"width" : 809,
"height" : 538
"elements" :
{
"obj" : {"id" : 0, "type": "osc~", "args": [440]},
"obj" : {"id" : 1, "type": "dac~"},
"connect" : {"from": [0, 0], "to": [1, 0]},
"connect" : {"from": [0, 0], "to": [1, 1]}
}
"canvas" : { ... }
"array" : { ... }
}
}

About the optional GUI, my opinion is that pd is firstly a graphical data
flow language existing of canvases and objects with specific location.  To
make the dimensions optional means interoperability with pd will be
optional, probably not so good.  If you need extra info, I think that's ok,
but at a minimum the information in existing pd patches should be
represented.

You could also pull the GUI locations into a separate object:

{
"canvas" :
{
"id" : 0,
"name" : "example"
"elements" :
{
"obj" : {"id" : 0, "type": "osc~", "args": [440]},
"obj" : {"id" : 1, "type": "dac~"},
"connect" : {"from": [0, 0], "to": [1, 0]},
"connect" : {"from": [0, 0], "to": [1, 1]}
}
"layout" :
{
"0" : { "pos": [123, 78] },
"1" : { "pos": [123, 100] }
}
}
"layout" :
{
"0" : { "pos": [95, 190], "size" : [809, 538] }
}
}

Don't know if it's better or worse, just throwing it out there.  One side
effect is that the id's here are both in string and int format.



>
> ----------------------------------------------------------------------
>
> Comment By: Andras Muranyi (muranyia)
> Date: 2012-06-01 14:00
>
> Message:
> @reakin: when mentioning two files for one patch i was referring to the
> (nice and convenient) idea of separating logic from presentation by
> breaking out GUI info into a CSS-like file - which means having two files
> per patch (not so convenient and nice).
>
>
Ah, understood.  I also think this would be a bit overcomplicated.  If it's
separated, I think the GUI info could just be under a different object in
the json of one file.

Cheers,
Rich

On Sat, Jun 2, 2012 at 2:01 PM, yvan volochine <yvan.pd at gmail.com> wrote:

> On 06/02/2012 07:50 PM, s p wrote:
>
>> So, ... moving the discussion here from sourceforge's tracker :
>>
>>  @Sébastien will you write a .json ->  .pd converter too?
>>>
>>
>> Rich, notice the double arrow ".json<->  .pd" ;)
>>
>>  the proposal is for a new, easier to read / parse, format for existing
>>>
>> patches. This facilities writing/reading patches in other languages (such
>> as javascript, C / C++ / Obj-C / Java, etc.), since you wouldn't need to
>> write the text file in a cryptic form.
>>
>
> I am certainly not a pd-veteran but I think this is a *very good* idea.
>
> y
>
> --
> http://yvanvolochine.com
> http://vimeo.com/yv
> http://soundcloud.com/**yvanvolochine<http://soundcloud.com/yvanvolochine>
>
> ______________________________**_________________
> Pd-dev mailing list
> Pd-dev at iem.at
> http://lists.puredata.info/**listinfo/pd-dev<http://lists.puredata.info/listinfo/pd-dev>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.puredata.info/pipermail/pd-dev/attachments/20120602/70bd437d/attachment.htm>


More information about the Pd-dev mailing list