[PD] A web frontend for Pd

Giulio Moro giuliomoro at yahoo.it
Thu Mar 16 22:02:04 CET 2023


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





More information about the Pd-list mailing list