TL;DR : Faster, better, stronger, WebPd 1.0 is coming (featuring WebAssembly, Audio Worklet and more) ... but it needs your support !
WebPd is a highly modular web audio programming toolkit inspired by Pure Data. → it allows Pure Data patches to run in web pages, therefore enabling non-programmers (artists musicians, etc ... ) to design live and interactive audio for the web. → it provides experienced web programmers with a complete audio toolkit that is production-ready, and enables efficient audio synthesis and processing in the browser.
🌱 You can try a demo of the upcoming version here : https://sebpiq.github.io/WebPd_demos/the-graph/www/. 🌱 You can donate money to help making it real : https://opencollective.com/webpd#category-CONTRIBUTE. 🌱 Your money will help moving forward the following roadmap : https://github.com/sebpiq/WebPd/blob/master/README.md#roadmap.
----------------------
FULL VERSION
For the past weeks, development of WebPd (1) has picked up a good pace, and the project has reached a state where I feel now confident for sharing a demo (2), a public update on what's going on and a call for crowdfunding (3).
🔊 1. How WebPd Got Here The project was started in 2010 by Chris Mc Cormick when Firefox released the first implementation of an API that enabled live audio synthesis in the web browser. In 2012, I took over and ported WebPd to a different API called Web Audio API (4), which has since become the web standard for live audio. The Web Audio API implementation of WebPd is still the current version (v0.4) and hasn't seen any significant update for many years. It works, but it is hackish and limited. This is due to the fact that the Web Audio API impose its own synthesis and processing functions (oscillators, filters, etc, ... ), and is therefore nearly impossible to customize. Luckily, the situation is now very different than it was 10 years ago. New APIs and standards have been proposed and adopted by all major browser vendors, making it finally possible to build serious custom audio apps for the web browser : - The AudioWorklet (5) : a recent fix to the Web Audio API allowing it to run custom audio code with good performance. - WebAssembly (6) : a binary instruction format which allows to compile code so that it can run in the browser with performance close to that of native applications. With these in mind, I've been meaning to re build WebPd from scratch for several years already but it's a daunting task : it requires an entire re-design of the audio engine, and a full re-write of the code to make the project future proof. Another problem is that there isn't yet a good ecosystem of libraries for writing code with the new web audio technologies mentioned above. Therefore, some generic web audio packages need to be built as part of the project (adding to the complexity and the amount of work).
🔊 2. What's planned for this new version, WebPd 1.0 First, let me say that WebPd does not intend to be a fully-fledged application like Pure Data is on the desktop, but rather a library for developing web applications. In that sense, conceptually, it is closer to libpd (7) than to Pure Data. Of course, you could build a fully-featured user interface, a Pure Data on the web, using WebPd, but that is out of the scope of the project. WebPd's goals are : → to allow artists to take their Pure Data patches and run these in web pages, therefore enabling non-programmers (sound designers, musicians, etc ... ) to design live and interactive audio for the web. → to provide experienced web programmers with a complete audio toolkit that is production-ready, and enables efficient audio synthesis and processing in the browser. For this to be possible, WebPd needs a small community of users and developers. In fact, I have received many messages inquiring about the status of the project and many have offered help with development, so I know that this community exists. The first milestone is therefore to build a minimum viable product, write good docs, resources for beginners to find help, find a good platform for questions and discussion, etc ... making it more easy for others to contribute. In the long run, I would like the development work to be as collaborative as possible, and progressively hand over ownership of the project to the community.
🔊 3. Crowdfunding campaign In order to help reach this first milestone, I am starting a small crowdfunding campaign so I can spend more time on the project in the coming months. You can find here (https://github.com/sebpiq/WebPd/blob/master/README.md#roadmap) a list of what I plan to achieve for WebPd 1.0 with help from that money. If this is something you'd like to help with, you can donate on the opencollective page of the project (https://opencollective.com/webpd#category-CONTRIBUTE). Any amount is welcome. You can also ask questions, or come share ideas here (https://github.com/sebpiq/WebPd/issues/113) or here (https://opencollective.com/webpd/conversations/announcing-webpd-complete-ref...).
(1) https://github.com/sebpiq/WebPd (2) https://sebpiq.github.io/WebPd_demos/the-graph/www/ (3) https://opencollective.com/webpd/contribute/backer-42114/checkout (4) https://webaudio.github.io/web-audio-api/ (5) https://webaudio.github.io/web-audio-api/#AudioWorklet (6) https://webassembly.org/ (7) https://github.com/libpd/libpd