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



_______________________________________________
Pd-dev mailing list
[email protected]
https://lists.puredata.info/listinfo/pd-dev

Reply via email to