{"id":13658495,"url":"https://github.com/sebpiq/WebPd","last_synced_at":"2025-04-24T11:31:45.382Z","repository":{"id":2185469,"uuid":"3133062","full_name":"sebpiq/WebPd","owner":"sebpiq","description":"Run your Pure Data patches on the web.","archived":false,"fork":false,"pushed_at":"2025-01-26T22:10:04.000Z","size":11034,"stargazers_count":951,"open_issues_count":9,"forks_count":87,"subscribers_count":89,"default_branch":"main","last_synced_at":"2025-04-18T10:15:40.821Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"lgpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/sebpiq.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":".github/FUNDING.yml","license":"COPYING","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":"ROADMAP.md","authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null},"funding":{"open_collective":"webpd","github":"sebpiq"}},"created_at":"2012-01-09T00:35:53.000Z","updated_at":"2025-04-17T21:48:56.000Z","dependencies_parsed_at":"2023-11-11T22:08:41.013Z","dependency_job_id":"5b5e4a2d-1124-43d7-9941-538a1936ebb7","html_url":"https://github.com/sebpiq/WebPd","commit_stats":{"total_commits":601,"total_committers":15,"mean_commits":40.06666666666667,"dds":0.5257903494176372,"last_synced_commit":"7b45ef1a46ce2982bbf38c8bc907f899c3157321"},"previous_names":[],"tags_count":16,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sebpiq%2FWebPd","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sebpiq%2FWebPd/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sebpiq%2FWebPd/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sebpiq%2FWebPd/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/sebpiq","download_url":"https://codeload.github.com/sebpiq/WebPd/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":250618310,"owners_count":21460068,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-08-02T05:01:00.054Z","updated_at":"2025-04-24T11:31:45.343Z","avatar_url":"https://github.com/sebpiq.png","language":"TypeScript","readme":"\u003cp align=\"center\"\u003e\n  \u003cimg src=\"webpd.png\" /\u003e\n\u003c/p\u003e\n\n\u003c!-- intro start --\u003e\n\n**WebPd** is a compiler for the [Pure Data](https://puredata.info/) audio programming language allowing to run **.pd** patches in web pages.\n\n**WebPd is highly modular and takes a white-box approach to audio programming**. It converts the audio graph and processing objects from a patch into plain human-readable JavaScript or [AssemblyScript](https://www.assemblyscript.org/) (*). The pure audio generated code can be then integrated directly in any web application without using WebPd or Pure Data ever again 🌈.\n\n\u003c!-- intro end --\u003e\n\n[![](https://img.shields.io/static/v1?label=Sponsor\u0026message=%E2%9D%A4\u0026logo=GitHub\u0026color=%23ed00d9)](https://github.com/sponsors/sebpiq)\n\n*(\\*) AssemblyScript is a TypeScript-style language which compiles to WebAssembly.*\n\n## Usecase examples\n\n- Publish generative musical works on the web\n- Execute, tweak and share patches collectively on any machine\n- Produce, filter and playback sound and music data in realtime from web based applications and games\n\n## Integration and scope\n\nThere are plenty of good JavaScript libraries to build interactive visual interfaces such as [Three.js](https://threejs.org/), [p5.js](https://p5js.org/), good old JavaScript / HTML / CSS, etc. Integrating them with a WebPd patch should be fairly easy. An example of such integration is the *patch player* demo, available through [the web compiler](#using-the-web-compiler).\n\nWebPd is **not**, in itself, a complete editor and a live performance platform like Pure Data. The Pure Data graphical interface, as well as GEM, are out of the scope of WebPd. WebPd isn't either a simple executor like libpd. It is rather a lean audio compiler, which generates high-performance, human-readable and easily integrable audio code with no bloat.\n\n## Usage\n\n\u003cspan id=\"using-the-web-compiler\"\u003e\u003cspan\u003e\n\n### Web compiler and player\n\n**The web compiler and a patch player are live at the following address: https://sebpiq.github.io/WebPd_website**\n\nJust upload or give a URL(*) of a patch, compile it just in time and generate an interface allowing to play that patch in realtime in your browser. Once the compilation succeeds, you can copy and share with others the resulting URL from the player(**). This URL contains all the modified parameters of the patch you have played with, so that it is shared completely in its *current* state.\n\n*(\\*)You can use any public URL of a patch found in the wild (on github, Pure Data forums, etc.).*\n\n*(\\*\\*)Sharing a compiled patch doesn't work if you used local files for compilation.*\n\n\u003cspan id=\"using-the-cli\"\u003e\u003cspan\u003e\n\n### Command line interface\n\n*NOTE : Running the CLI requires node.js version 18 or higher.*\n\nThe command-line interface (CLI) offers more customization options, including the ability to generate a fully-functional (but bare bones) web page embedding your patch.\n\nOpen a terminal and install the CLI with [node / npm](https://nodejs.org/) by running the following command:\n\n```\nnpm install -g webpd\n```\n\nVerify that installation worked by running:\n\n```\nwebpd --help\n```\n\nThis should output help for the CLI and will hopefully get you started.\n\n### Advices for writing WebPd compatible patches \n\n- Make sure that you only use [supported features](https://github.com/sebpiq/WebPd/blob/main/ROADMAP.md).\n- Always use `[trigger]` objects to make messages send order explicit (including in initialization with `[loadbang]` and when loading soundfiles). Indeed, due to different constraints, Pd and WebPd's message sequencing order might be different.\n- Use [samplerate~] object instead of hard-coding sample rate with a fixed value.\n\n### Getting help\n\nIf you feel stuck, there's [plenty of places](https://puredata.info/community) where you can ask for help. I recommend in particular [the discord server](https://discord.gg/AZ43djV) where you can get help quickly and find support from the community.\n\nIf you feel you might have stumbled upon a bug, please report it following [these simple guidelines](#reporting-a-bug).\n\n### You are using WebPd?\n\nGreat 🌱 ! It helps a lot with motivation to hear that people are using it. Don't hesitate to let me know by pinging me on twitter [@sebpiq](https://twitter.com/sebpiq), or [writing me directly by email](https://second-hander.com/).\n\n\nIf you can afford it, you can also [donate](https://opencollective.com/webpd) to help move development forward.\n\n\n## Development\n\n### Status \u0026 roadmap\n\nWebPd is currently under heavy development, but it is still a work in progress. A list of implemented objects, features and the roadmap are [here](https://github.com/sebpiq/WebPd/blob/main/ROADMAP.md).\n\nThe project is currently in *alpha release state* which means that many of your patches will *not* work out of the box. Many objects and features are indeed still missing. If you feel there is a bug, thanks for reporting it following [these simple guidelines](#reporting-a-bug). If you feel you could develop an object that is missing in WebPd to play a specific patch, see [contributing](#contributing).\n\n\u003cspan id=\"reporting-a-bug\"\u003e\u003cspan\u003e\n\n### Reporting a bug\n\nIf you wish to report a bug:\n\n- First narrow it down. Remove all objects in your patch that are not related with the bug. Try to find the simplest patch with which this bug can be reproduced.\n- Then submit a bug report [in github](https://github.com/sebpiq/WebPd/issues) with the following template :\n\n```\nPatch and description -\u003e Upload your minimal patch\n\nCurrent behavior -\u003e Describe shortly how it is working at the moment\n\nExpected behavior -\u003e Describe shortly how it should work instead\n```\n\n\u003cspan id=\"contributing\"\u003e\u003cspan\u003e\n\n### Contributing\n\nOne-time contributions or regular work on the library are more than welcome! Contribution guidelines are coming, meanwhile if you have time and would really like to get involved please get in touch on the issue tracker on GitHub. I would be pleased to help you getting started for contributing.\n\nIn case you would like to try developping a new object, here are some good examples to start with:\n\n- [clip.ts](https://github.com/sebpiq/WebPd/blob/develop/src/nodes/nodes/clip.ts)\n- [clip~.ts](https://github.com/sebpiq/WebPd/blob/develop/src/nodes/nodes/clip~.ts)\n\nIf you want to dig deeper into the code, WebPd is built in several sub-packages in addition to this one which combines them all : \n\n- Pd file parser : https://github.com/sebpiq/WebPd_pd-parser\n- WebPd compiler : https://github.com/sebpiq/WebPd_compiler\n- WebPd runtime : https://github.com/sebpiq/WebPd_runtime\n\n\n## License\n\nWebPd is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 3 as published by the Free Software Foundation.\n\nWebPd is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\nGNU Lesser General Public License or read the [COPYING.LESSER](https://github.com/sebpiq/WebPd/blob/main/COPYING.LESSER) file for more details.\n\n\n## Authors\n\n- Sébastien Piquemal \u003csebpiq@protonmail.com\u003e\n- Chris McCormick\n- Brandon James\n- mgsx-dev\n- Atul Varma\n- Ulric Wilfred\n- Paul Money\n\n\n## Acknowledgment and sponsors\n\nThis project has been sponsored by the [DAFNE+](https://dafneplus.eu/) european research project funded by the European Union within the \"Horizon Europe\" program (Grant Agreement 101061548) and [IRCAM](https://www.ircam.fr) within the WAM team from december 2022 to march 2023.","funding_links":["https://opencollective.com/webpd","https://github.com/sponsors/sebpiq"],"categories":["JavaScript","Sound creation","Pd on the Web"],"sub_categories":["Pure Data (PD) patches"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsebpiq%2FWebPd","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsebpiq%2FWebPd","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsebpiq%2FWebPd/lists"}