<div dir="ltr"><div dir="ltr">Thank you so much for this! Hope the whole idea of a GUI-agnostic protocol achieves success (possibly avoiding a dispersive trend with scattered forks -- all of them usually very interesting! -- which end up straying too far from the original project).</div><div dir="ltr"><br></div><div>Congratulations again!</div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">Em qui., 16 de mar. de 2023 às 18:04, Giulio Moro via Pd-list <<a href="mailto:pd-list@lists.iem.at">pd-list@lists.iem.at</a>> escreveu:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">Here's something the Chair and Bela teams have been working on for a few months: a proof-of-concept web interface to Pd.<br>
<br>
  <a href="https://github.com/BelaPlatform/pure-data-web-GUI" rel="noreferrer" target="_blank">https://github.com/BelaPlatform/pure-data-web-GUI</a><br>
<br>
This leverages the refactored communication protocol effort by Iohannes in order to obtain a "toolkit-agnostic Core<->GUI Communication" (<a href="https://github.com/pure-data/pure-data/discussions/1695" rel="noreferrer" target="_blank">https://github.com/pure-data/pure-data/discussions/1695</a>), which resulted in <a href="https://github.com/pure-data/pure-data/pull/1765" rel="noreferrer" target="_blank">https://github.com/pure-data/pure-data/pull/1765</a> . This is part of a broader project outlined in <a href="https://github.com/pure-data/pure-data/pull/1693" rel="noreferrer" target="_blank">https://github.com/pure-data/pure-data/pull/1693</a> .<br>
<br>
Now, this pure-data-web-GUI repo comprises three components:<br>
<br>
- pd: is started with -guiport so that it doesn't start its own GUI<br>
- the "shim": a very thin layer of websocket that forwards messages to/from Pd and the browser<br>
- the "frontend": the actual HTML5 stuff, written using the svelte framework.<br>
<br>
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 <a href="https://github.com/giuliomoro/pure-data-1/" rel="noreferrer" target="_blank">https://github.com/giuliomoro/pure-data-1/</a>). 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).<br>
<br>
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.<br>
<br>
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.<br>
<br>
Best,<br>
Giulio<br>
<br>
<br>
<br>
_______________________________________________<br>
<a href="mailto:Pd-list@lists.iem.at" target="_blank">Pd-list@lists.iem.at</a> mailing list<br>
UNSUBSCRIBE and account-management -> <a href="https://lists.puredata.info/listinfo/pd-list" rel="noreferrer" target="_blank">https://lists.puredata.info/listinfo/pd-list</a><br>
</blockquote></div></div>