Skip to content

Latest commit

 

History

History
236 lines (177 loc) · 13.3 KB

File metadata and controls

236 lines (177 loc) · 13.3 KB

Licenses and Attributions

Patchies is built upon many amazing open source projects. This document provides comprehensive license information and attributions for all third-party libraries and components used in Patchies.

Check out SUPPORT.md for donation links and sponsorship resources for these amazing open-source projects.

Project License

Patchies is licensed under the GNU Affero General Public License v3.0 (AGPL-3.0).

This means:

  • You are free to use, modify, and distribute this software
  • If you modify the code, you must share your changes under the same license
  • If you run this software on a server and provide services to users, you must make the source code available to those users
  • See the AGPL-3.0 full text for complete terms

Complete License List

This is a comprehensive list of all third-party dependencies and their licenses. For the most current list, please see the package.json file in the project repository.

Runtime Dependencies

Package Version License
@codemirror/autocomplete ^6.18.7 MIT
@codemirror/lang-javascript ^6.2.4 MIT
@codemirror/lang-markdown ^6.3.4 MIT
@codemirror/lang-python ^6.2.1 MIT
@codemirror/language ^6.11.2 MIT
@codemirror/state ^6.5.2 MIT
@codemirror/theme-one-dark ^6.1.3 MIT
@codemirror/view ^6.38.1 MIT
@csound/browser (local fork) 7.0.0-beta20 LGPL-2.1
@elemaudio/core ^4.0.1 MIT
@elemaudio/web-renderer ^4.0.3 MIT
@google/genai ^1.11.0 Apache-2.0
@lezer/generator ^1.8.0 MIT
@lezer/highlight ^1.2.1 MIT
@replit/codemirror-vim ^6.3.0 MIT
@rollup/browser ^4.50.1 MIT
@strudel/* ^1.2.2+ AGPL-3.0-or-later
@sveltejs/adapter-cloudflare ^7.0.0 MIT
@sveltejs/adapter-static ^3.0.8 MIT
@sveltejs/kit ^2.22.0 MIT
@uiw/codemirror-theme-tokyo-night ^4.24.2 MIT
@xyflow/svelte ^1.2.2 MIT
butterchurn ^2.6.7 MIT
butterchurn-presets ^2.4.7 MIT
codemirror ^6.0.2 MIT
expr-eval ^2.0.2 MIT
fuse.js ^7.1.0 Apache-2.0
highlight.js ^11.11.1 BSD-3-Clause
hydra (local fork) - AGPL-3.0
json5 ^2.2.3 MIT
lezer-glsl ^0.6.0 MIT
lodash ^4.17.21 MIT
marked ^16.1.2 MIT
matter-js ^0.20.0 MIT
mediabunny ^0.1.1 MPL-2.0
memfs ^4.39.0 MIT
meyda ^5.6.3 MIT
ml5 ^1.2.1 MIT
mode-watcher 0.5.1 MIT
ohash ^2.0.11 MIT
overtype ^1.1.1 MIT
p2pkit ^0.0.0-2 MIT
p2pt ^1.5.1 MIT
p5 ^1.11.9 LGPL-2.1
trystero ^0.22.0 MIT
pocketbase ^0.26.2 MIT
pyodide ^0.28.1 Apache-2.0
regl ^2.1.1 MIT
stats.js ^0.17.0 MIT
supersonic-scsynth ^0.25.5 Tiered (MIT + GPL-3.0)
tailwindcss ^4.0.0 MIT
textmode.filters.js ^1.0.1 MIT
textmode.js ^0.8.1 MIT
three ^0.172.0 MIT
tone ^15.1.22 MIT
uiua (WASM) 0.15.0-dev MIT
ts-pattern ^5.8.0 MIT
uxn.wasm ^0.9.0 MIT
vite-plugin-pwa ^0.21.1 MIT
@vite-pwa/sveltekit ^1.1.0 MIT
vite-plugin-static-copy ^3.1.1 MIT
webchuck ^1.2.10 Apache-2.0
webmidi ^3.1.12 Apache-2.0

Ported/Adapted Code

Orca

The Orca node in Patchies is based on the Orca livecoding environment by Hundred Rabbits.

  • Original Project: Orca - Esoteric Programming Language
  • Authors: Hundred Rabbits (Devine Lu Linvega and Rekka Bellum)
  • Repository: https://github.com/hundredrabbits/Orca
  • License: MIT
  • Copyright: © Hundred Rabbits

The following components were ported from the original Orca desktop implementation:

  • Core modules are copied as-is: Orca.ts, Operator.ts, library.ts, Clock.ts, transpose.ts
  • MIDI/IO system and renderer are rewritten to fit Patchies: MidiMessageHandler.ts, CCMessageHandler.ts, MonoMessageHandler.ts, IO.ts, OrcaRenderer.ts

All ported code has been properly attributed with license headers in each source file.

Uxn

The Uxn node in Patchies contains a port of the uxn5 emulator by Hundred Rabbits.

  • Original Project: uxn5 - Uxn Virtual Machine Emulator
  • Authors: Devine Lu Linvega
  • Repository: https://git.sr.ht/~rabbits/uxn5
  • License: MIT
  • Copyright: © 2020 Devine Lu Linvega

The emulator was ported to work within the Patchies patcher environment with integration for video chaining and message passing. The original MIT license is preserved in the source files.

Hydra

The Hydra node in Patchies contains a local fork of hydra-ts, which is itself a TypeScript port of Hydra by Olivia Jack.

The local fork modifies the error handling to integrate with Patchies' error reporting system instead of using console.log. The AGPL-3.0 license is preserved in the source files.

Superdough (Package Patch)

Patchies uses a patched version of Superdough, which is part of the Strudel ecosystem.

  • Original Project: Superdough - Audio synthesis engine for Strudel
  • Authors: Felix Roos and Strudel contributors
  • Repository: https://codeberg.org/uzu/strudel
  • License: AGPL-3.0
  • Package Version: 1.2.3 (patched)
  • Patch File: ui/patches/superdough@1.2.3.patch

The package patch makes minor modifications to expose internal audio nodes for integration with Patchies' audio system:

  • Exposes the destination gain node as window.SuperdoughDestinationGain for volume control
  • Exposes audio node chains as window.strudelNodes and returns them for connectivity with other Patchies audio objects

These modifications enable seamless integration between Strudel's audio engine and Patchies' audio chaining system while maintaining full compatibility with the AGPL-3.0 license.

@csound/browser (Local Fork)

The csound~ node uses a local fork of @csound/browser with fixes for multi-instance support.

  • Original Project: Csound - Sound and Music Computing System
  • Authors: Steven Yi, Victor Lazzarini, and Csound contributors
  • Repository: https://github.com/csound/csound
  • License: LGPL-2.1
  • Local Fork: ui/packages/csound-browser/

The local fork fixes a bug in the upstream library where module-level globals in the AudioWorklet (libraryCsound, combined, rtmidiQueue) get overwritten when multiple Csound instances are created. This caused previously running csound~ nodes to become non-functional.

Changes made:

  • Moved module-level globals to instance properties on WorkletSinglethreadWorker class
  • Modified terminateInstance() to not close the AudioContext (caller is responsible for its lifecycle)

The LGPL-2.1 license is preserved in the source files.

Tailwind CSS Browser Runtime (Adapted)

The dom and vue nodes in Patchies use an adapted version of the @tailwindcss/browser runtime for JIT CSS compilation.

The implementation was adapted to work within Shadow DOM for style isolation:

  • Creates a shared Tailwind compiler instance reused across all nodes
  • Each Shadow DOM gets its own style element with compiled CSS
  • Uses MutationObserver to detect class changes and trigger incremental builds
  • Imports Tailwind's CSS assets (preflight, theme, utilities) directly

This allows dom and vue nodes to use Tailwind utility classes without styles leaking to the rest of the application. The original MIT license is preserved.

Array Box (Uiua WASM Build)

The uiua node uses a WASM build approach adapted from Array Box, an interactive playground for array programming languages.

The WASM build script and wasm-bindgen wrapper for Uiua were adapted from Array Box. The build compiles the Uiua language to WebAssembly for browser execution.

html5bytebeat (Local Fork)

The bytebeat~ node uses a local TypeScript fork of html5bytebeat for algorithmic bytebeat synthesis.

The local fork converts the library to TypeScript and restructures it as a proper AudioWorklet module for Vite bundling compatibility. The original library uses Function.toString() to serialize classes into a Blob URL, which breaks under production minification. The fork preserves the core logic (ByteBeatCompiler, ByteBeatProcessor, WrappingStack) with minor TypeScript adaptations.

Network Gong Ensemble Archive (NGEA)

The ngea node uses tuning data from the Network Gong Ensemble Archive, an archive of Southeast Asian sound cultures.

Source Code Access

The complete source code for Patchies is available on GitHub

What this means for users

  1. For personal use: You can use Patchies freely without any restrictions
  2. For modifications: If you modify Patchies code, you must share your changes under AGPL-3.0
  3. For web services: If you host Patchies as a service and modify it, you must provide source code to your users
  4. For redistribution: You can redistribute Patchies but must include the license and attribution notices