# Third-party components

The distributable source ZIP contains original application code and a projectM patch, not bundled third-party binaries. Setup downloads/builds dependencies locally.

- **projectM:** LGPL-2.1-or-later, projectM contributors. Source: https://github.com/projectM-visualizer/projectm at `349b7cc2db312d47cef6be24c6856ced6643a385`. Its vendored components retain upstream licenses. The complete checked-out source is in `.deps/projectm` after setup; the setup script preserves source and builds shared libraries, not statically linked copies.
- **Phraseframe change to projectM:** `patches/0001-directed-dissolves.patch`, dated 2026-10-23, changes transition selection to the existing SimpleBlend shader instead of a randomly chosen transition. This modification is LGPL-2.1-or-later as part of projectM. No other library behavior is intentionally modified. Rebuild with the supplied setup script; the dynamically linked library remains replaceable.
- **FFmpeg / libx264:** supplied by `imageio-ffmpeg`'s platform wheel. Inspect the bundled FFmpeg's `-version` / `-L` for its build configuration and license. The tested wheel includes GPL-enabled libx264. The Python wrapper's license does not replace the executable's license. Do not treat the installed environment as an MIT-only binary redistribution.
- **Pillow:** HPND/PIL-family license; its installed wheel includes the complete license notices. It renders the optional text card using system fonts; no Apple fonts are redistributed in the source archive.
- **NumPy / SciPy:** BSD-family licenses; **FastAPI / Uvicorn / HTTPX / python-multipart / pytest / imageio-ffmpeg:** respective upstream licenses. Their installed distributions contain license metadata. `requirements.txt` pins direct dependencies and `requirements-lock.txt` records the tested full environment.

The original four `.milk` presets require no external textures or community preset pack. Test audio is procedurally synthesized; no artist recording or third-party sample is included.


## Optional downloaded community presets and textures

`scripts/install-presets.py` downloads the four official preset packs and the Milkdrop texture pack from the projectM-visualizer GitHub organization. Exact commit IDs and archive checksums are pinned in the installer and recorded in `presets/community/catalog.json`. Original source paths and duplicate aliases are preserved there; original preset contents are unchanged. Upstream README/LICENSE/COPYING files are retained in `presets/community/notices/` and complete downloaded archives in `.deps/preset-archives/`. These downloads are excluded from the source ZIP and are not relicensed under the application's MIT license.

Cream of the Crop's `LICENSE.md` says most presets were released without an explicit license and copyright remains with their authors; the maintainers express an assumption about public-domain status. That assumption is not an express license from each author. Phraseframe does not certify blanket commercial rights for the entire collection. Refer to the relevant author/upstream terms for publishing or redistributing particular community works and textures. Sources:

- https://github.com/projectM-visualizer/presets-cream-of-the-crop
- https://github.com/projectM-visualizer/presets-projectm-classic
- https://github.com/projectM-visualizer/presets-milkdrop-original
- https://github.com/projectM-visualizer/presets-en-d
- https://github.com/projectM-visualizer/presets-milkdrop-texture-pack

## Online browser build

The optional `online/gpu/build-browser.sh` compiles the same pinned projectM source and patch to a statically linked WebAssembly module. Its original application host is `native/browser.cpp`; rebuild instructions are in `online/README.md`, with Docker compiler flags and dependency source retrieval in `online/gpu/Dockerfile`. Keep these source/build materials and upstream LGPL/vendor notices available with engine distributions. The source ZIP excludes generated WASM and downloaded community assets. Linux fonts come from Ubuntu DejaVu/Noto packages, not macOS system fonts. Frontend and service dependencies retain their licenses in npm packages and package-lock.json.
