Hey all
Sometimes when I load certain patches containing data structures, all
data structures in all patches of an instance of Pd are redrawn. This
is barely noticeable with one single patch, but if many patches are
loaded with each using many scalars, the whole redrawing process
becomes unbearable. In larger netpd sessions, the process can take a
few dozen seconds, depending on number of loaded instruments and
probably other factors (maybe CPU speed, but none of the cores is fully
loaded during the redrawing process). During the process, GUI elements
like slider handles or number boxes are not updated and all DS based
GUIs are not usable either. [cnv] labels are not affected (why?). The
redrawing seems to cause drop outs in DSP processing. I got reports
that glitches are more pronounced on Windows (or on slower computers?).
I tried to figure out what exact conditions trigger such a redraw in
the hope that they can be avoided. I found that the order objects of a
data structure template are created matters. If [drawsymbol] was
created before [struct], loading such a patch triggers the redraw.
After changing the creation order, loading the patch doesn't trigger
the redraw. This video illustrates it:
https://netpd.org/~roman/tmp/ds-redrawing-everything.webm
Apparently, there are other conditions that trigger a redraw. I tried
to make sure that all [struct] objects are created last in one of my
patches, but loading the patch still triggers the redraw.
What are the conditions that lead to a redraw? Why are all data
structures redrawn and not only the ones using scalars from the changed
template? If order matters, why aren't the patches saved with the
correct order? Why is the process so slow if it is apparently not CPU-
bound? Is it because of the "chattiness" between GUI and core?
Here another video showing how redrawing affects iemguis:
https://netpd.org/~roman/tmp/ds-redrawing-affects-iemguis.webm
Roman
hi list,
releasing artnetlib:
---------readme-----------
turn your Pd patch into an Art-Net controller.
Art-Net is an Ethernet protocol based on the TCP/IP protocol suite. Its
purpose is to allow
transfer of large amounts of DMX512 data over a wide area using standard
networking
technology.
https://en.wikipedia.org/wiki/Art-Nethttps://www.artisticlicence.com/WebSiteMaster/User%20Guides/art-net.pdf
artnetlib is a Pd library with 5 objects:
- [artnetfromarray]
 - polls a Pd array and convert the values to a list of DMX 1 byte ints
- [artnetsend]
 - format a Pd list of ints with an _ArtDMX_ header where you specify
"physical" and "universe".
- [artnetudp]
 - send the _ArtDMX_ package to a specified ip
 - sends _ArtPoll_ and receive _ArtPollReply_ (used to discover the
presence of other Controllers, Nodes and Media Servers.)
 - receive data from other Art-Net compatible devices
- [artnetroute]
 - routes received _ArtDMX_ packages according to its "physical" and
"universe".
- [artnettoarray]
 - convert _ArtDMX_ packages to a Pd list.
--------------------
repository: https://github.com/Lucarda/pd-artnetlib
bug reports: https://github.com/Lucarda/pd-artnetlib/issues
happy lighting!!!
:)
Lucarda
--
Mensaje telepatico asistido por maquinas.
_______________________________________________
Pd-announce mailing list
Pd-announce(a)lists.iem.at
https://lists.puredata.info/listinfo/pd-announce
hi list,
releasing artnetlib:
---------readme-----------
turn your Pd patch into an Art-Net controller.
Art-Net is an Ethernet protocol based on the TCP/IP protocol suite. Its
purpose is to allow
transfer of large amounts of DMX512 data over a wide area using standard
networking
technology.
https://en.wikipedia.org/wiki/Art-Nethttps://www.artisticlicence.com/WebSiteMaster/User%20Guides/art-net.pdf
artnetlib is a Pd library with 5 objects:
- [artnetfromarray]
 - polls a Pd array and convert the values to a list of DMX 1 byte ints
- [artnetsend]
 - format a Pd list of ints with an _ArtDMX_ header where you specify
"physical" and "universe".
- [artnetudp]
 - send the _ArtDMX_ package to a specified ip
 - sends _ArtPoll_ and receive _ArtPollReply_ (used to discover the
presence of other Controllers, Nodes and Media Servers.)
 - receive data from other Art-Net compatible devices
- [artnetroute]
 - routes received _ArtDMX_ packages according to its "physical" and
"universe".
- [artnettoarray]
 - convert _ArtDMX_ packages to a Pd list.
--------------------
repository: https://github.com/Lucarda/pd-artnetlib
bug reports: https://github.com/Lucarda/pd-artnetlib/issues
happy lighting!!!
:)
Lucarda
--
Mensaje telepatico asistido por maquinas.
_______________________________________________
Pd-announce mailing list
Pd-announce(a)lists.iem.at
https://lists.puredata.info/listinfo/pd-announce
Here's something the Chair and Bela teams have been working on for a few months: a proof-of-concept web interface to Pd.
https://github.com/BelaPlatform/pure-data-web-GUI
This leverages the refactored communication protocol effort by Iohannes in order to obtain a "toolkit-agnostic Core<->GUI Communication" (https://github.com/pure-data/pure-data/discussions/1695), which resulted in https://github.com/pure-data/pure-data/pull/1765 . This is part of a broader project outlined in https://github.com/pure-data/pure-data/pull/1693 .
Now, this pure-data-web-GUI repo comprises three components:
- pd: is started with -guiport so that it doesn't start its own GUI
- the "shim": a very thin layer of websocket that forwards messages to/from Pd and the browser
- the "frontend": the actual HTML5 stuff, written using the svelte framework.
For now, you can try it out with docker following the instructions included in the repo. The easiest way is to run it with the Pd it comes with (which is run inside docker and thus doesn't have audio/MIDI I/O capabilities), but you can easily connect it to your own Pd server instance (assuming it comes from this branch https://github.com/giuliomoro/pure-data-1/). The docker containers are used to simplify the development effort, but ultimately this can be packaged up in a self-contained app (even for Android, if required), or you can have it run embedded (e.g.: on a Bela board) while displaying the GUI in a web browser (which is actually our primary goal).
It is by no mean complete or perfect, but I hope it shows that there is a tcl-tk-compatible, non-tcl-tk future possible for Pd. As it is, it even allows (well, with a lot of effort on the user side, but very little effort was put into it from the dev side) to patch on a touchscreen.
You may be wondering how this differs from the purr-data web GUI. Good question. This is a complete rewrite and it aims to use "stock" Pd as a backend server, by means of a communication protocol that has been refactored (by Iohannes) such that Pd no longer sends out raw tk messages, but rather tcl-compatible commands that are higher level and also easier to parse in other languages (the parser here is written in js). So right now you can run the same Pd binary (from this branch) deciding at runtime if using a tcl GUI or a web GUI. Nifty. The aim is eventually to upstream this communication protocol into vanilla, to make it easier to swap GUI frontends. Hopefully this can eventually help other forks with custom GUIs such as PlugData so that they don't have to maintain their own fork of Pd.
Best,
Giulio
+1 form me. Thank you for being the test bunny on this and taking the time to gather our different viewports on how this could work. I am looking forward to some canvas widget reimplementation on iOS...
> On Mar 17, 2023, at 6:25 AM, pd-list-request(a)lists.iem.at wrote:
>
> Message: 4
> Date: Fri, 17 Mar 2023 13:18:56 +0800
> From: Chris McCormick <chris(a)mccormick.cx <mailto:chris@mccormick.cx>>
> To: Giulio Moro <giuliomoro(a)yahoo.it <mailto:giuliomoro@yahoo.it>>, Pd-list <pd-list(a)lists.iem.at <mailto:pd-list@lists.iem.at>>
> Subject: Re: [PD] [PD-dev] A web frontend for Pd
> Message-ID: <ed039d5f-9a5e-4eb6-4cdd-8013f679e965(a)mccormick.cx <mailto:ed039d5f-9a5e-4eb6-4cdd-8013f679e965@mccormick.cx>>
> Content-Type: text/plain; charset=utf-8; format=flowed
>
> On 17/3/23 5:02 am, Giulio Moro via Pd-dev wrote:
>> Here's something the Chair and Bela teams have been working on for a few
>> months: a proof-of-concept web interface to Pd.
>>
>> ?https://github.com/BelaPlatform/pure-data-web-GUI <https://github.com/BelaPlatform/pure-data-web-GUI>
>
> Amazing! Thank you for sharing this!
>
> Chris.
--------
Dan Wilcox
@danomatika <http://twitter.com/danomatika>
danomatika.com <http://danomatika.com/>
robotcowboy.com <http://robotcowboy.com/>
> From: Alexandre Torres Porres <porres(a)gmail.com>
> To: pd-announce(a)lists.iem.at
> Cc:
> Bcc:
> Date: Mon, 6 Mar 2023 22:52:25 -0300
> Subject: [PD] [PD-announce] taking over completion-plugin and releasing
> version 0.48.0
> Hi, I forked completion-plugin and released an update (0.48.0), which is
> in deken.
>
> See https://github.com/porres/completion-plugin/releases/tag/v0.48.0
>
> cheers
>
Many thanks Alexandre, very useful for lazy and forgetful users like me!
It works like a charm on my PD 0.51.4 on Windows 10 laptop.
I already found some objects I didn't know existed :-)
Dario
Thanks for confirmation that this does indeed work. I took the liberty to add this info to mac/README.txt when the question comes up in the future:
https://github.com/pure-data/pure-data/commit/68dd3428d5f37fed32b94451fbeea… <https://github.com/pure-data/pure-data/commit/68dd3428d5f37fed32b94451fbeea…>
> On Mar 1, 2023, at 12:00 PM, pd-list-request(a)lists.iem.at wrote:
>
> Message: 2
> Date: Tue, 28 Feb 2023 22:25:40 +0000
> From: Pierre Alexandre Tremblay <tremblap(a)gmail.com <mailto:tremblap@gmail.com>>
> Cc: Pd-List <pd-list(a)lists.iem.at <mailto:pd-list@lists.iem.at>>
> Subject: Re: [PD] Attaching Xcode debugger
> Message-ID: <82F63261-F4C1-4F86-AFBB-2E889FC059C5(a)gmail.com <mailto:82F63261-F4C1-4F86-AFBB-2E889FC059C5@gmail.com>>
> Content-Type: text/plain; charset="utf-8"
>
> Ok I got it to work - there was on colon missing in the article, so here are my steps to make the downloaded Pd linkable to the debugger:
>
> 1) extract the current pd executable entitlements (don?t forget the colon before the path as this is an option to remove the blob)
>
> codesign -d /Applications/Pd-0.53-0.app/Contents/Resources/bin/pd --entitlements :/tmp/pd-entitlement.xml
>
> 2) open /tmp/pd-entitlement.xml should start it in Xcode. Add this key to it and save
>
> <key>com.apple.security.get-task-allow</key>
> <true/>
>
> 3) replace the entitlement back with this code:
>
> codesign -s - --deep --force --options=runtime --entitlements /tmp/pd-entitlement.xml /Applications/Pd-0.53-0.app/Contents/Resources/bin/pd
>
> Voil?! Link pd (not Pd) to your debugger and you?re as happy as me!
--------
Dan Wilcox
@danomatika <http://twitter.com/danomatika>
danomatika.com <http://danomatika.com/>
robotcowboy.com <http://robotcowboy.com/>