[PD-dev] Proposal for an alternative file format (WAS: pure-data-Feature Requests-3531000)
Rich E
reakinator at gmail.com
Sat Jun 2 20:40:47 CEST 2012
Arg, this thread should die, was reposted at the same time. :=) I'll move
this message there.
On Sat, Jun 2, 2012 at 2:37 PM, Rich E <reakinator at gmail.com> wrote:
>
> (This was on the sourceforge feature requests, I'm taking the liberty to
> move it directly to pd-dev)
>
>
>> Initial Comment:
>> Hi all !
>>
>> With several people from *libpd* and other *pd* offsprings, we have been
>> thinking that it would be great to have an alternative format for pd files
>> (see:
>> http://noisepages.com/groups/pd-everywhere/forum/topic/javascript-json-apis/
>> ).
>> Problem is that the current format is very tedious to parse ; it is very
>> messy (as seen in the complexity of the documentation) ; and last but not
>> least, it doesn't separate the actual graph data from the GUI data (X, Y,
>> canvases, ...). Overall, this is not good for interoperability between
>> different pd/non-pd systems.
>>
>> 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
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.puredata.info/pipermail/pd-dev/attachments/20120602/a6c20124/attachment-0001.htm>
More information about the Pd-dev
mailing list