Stem Desktop 1.0.0 — corresponding source for its GNU LGPL components

Every archive in sources/ is the upstream release (or, for GitHub archives, the tagged commit) the shipped
binary was built from, checked against the sha256 below. build/ holds the scripts we built with, laid out
as they are in our repository so they run from here.

== Rebuilding ffmpeg / ffprobe

From the folder this README is in, with Node.js 22.18 or later (it reads build/app/src/main/engine/
setup-constants.ts directly) and no network — the two tarballs are taken from sources/ and checked
against the sha256 pinned in setup-constants.ts:

    node build/app/scripts/build-ffmpeg.mjs --sources sources --platform win32 --arch x64          # win32-x64

macOS pairs are built on a Mac with the Xcode Command Line Tools (xcode-select --install: clang, make);
the x64 pair cross-compiles on an Apple silicon Mac. The Windows pair is cross-compiled on a Mac with
mingw-w64 (brew install mingw-w64, which puts x86_64-w64-mingw32-gcc on PATH). The result lands in
build/engine/dist/ffmpeg/<platform>-<arch>/ (ffmpeg, ffprobe, their licence texts, SOURCE.txt and
manifest.json); replace engine/bin/ffmpeg and engine/bin/ffprobe inside the app with those two files.

== Rebuilding the engine's libraries

lameenc: unpack sources/lameenc-*.tar.gz and build it with CMake as its .github/workflows do
(it builds LAME from sources/lame-*.tar.gz and links it statically); install the wheel into the engine.

python-soxr: `pip wheel sources/soxr-*.tar.gz` builds the extension together with the libsoxr the
sdist carries; install the wheel into the engine.

libsndfile: unpack sources/libsndfile-binaries-*.tar.gz and run its mac_build.sh (macOS) or
linux_build.sh (Linux). Those scripts fetch each library with curl -LO; the LGPL ones (libsndfile,
mpg123, LAME) are here in sources/ under the names they fetch — put them beside the script and drop
their curl lines to build from these rather than a fresh download. On
Windows its .github/workflows/build-libs.yml runs vcpkg (sources/vcpkg-*.tar.gz holds the ports and
patches). Replace the file under _soundfile_data/ named below with the result.

== win32-x64

* FFmpeg 8.1.3 (ffmpeg, ffprobe), with LAME 3.100 built in — LGPL-2.1-or-later
    in the app at: engine/bin/ffmpeg.exe, engine/bin/ffprobe.exe
    built: configure --disable-gpl --disable-nonfree --disable-version3 --disable-autodetect --disable-zlib --disable-network --disable-doc --disable-debug --disable-devices --enable-indev=lavfi --disable-hwaccels --disable-programs --enable-ffmpeg --enable-ffprobe --enable-libmp3lame --extra-cflags=-I<lame prefix>/include --extra-ldflags=-L<lame prefix>/lib --disable-encoders --enable-encoder=aac,libmp3lame,pcm_*,adpcm_*,flac,alac,png,mjpeg,bmp,rawvideo --enable-cross-compile --target-os=mingw32 --arch=x86_64 --cross-prefix=x86_64-w64-mingw32- --extra-ldflags=-static --disable-x86asm
    script: build/app/scripts/build-ffmpeg.mjs
    sources/ffmpeg-8.1.3.tar.xz  sha256 7138d28c96d9d3e3af4ee3d8cad72741f8ffb40da90c1112235dea3ecd3178a3  (https://ffmpeg.org/releases/ffmpeg-8.1.3.tar.xz)
    sources/lame-3.100.tar.gz  sha256 ddfe36cab873794038ae2c1210557ad34857a4b6bdc515785d1da9e175b1da1e  (https://downloads.sourceforge.net/project/lame/lame/3.100/lame-3.100.tar.gz)

* lameenc 1.8.4, with LAME 3.100 built in — LGPL-3.0-or-later
    in the app at: engine/python/Lib/site-packages/lameenc.cp312-win_amd64.pyd
    built: CMake build of the tag (its .github/workflows), LAME statically linked
    sources/lameenc-1.8.4.tar.gz  sha256 70c7a23830c98139f2b8e2ebdd56990b3e8e50bb8eaf22daa7b8861b1f6bffcb  (https://github.com/chrisstaite/lameenc/archive/refs/tags/v1.8.4.tar.gz)
    sources/lame-3.100.tar.gz  sha256 ddfe36cab873794038ae2c1210557ad34857a4b6bdc515785d1da9e175b1da1e  (https://downloads.sourceforge.net/project/lame/lame/3.100/lame-3.100.tar.gz)

* python-soxr 1.1.0, with libsoxr built in — LGPL-2.1-or-later
    in the app at: engine/python/Lib/site-packages/soxr/soxr_ext.pyd
    built: the sdist builds its own libsoxr (pip wheel)
    sources/soxr-1.1.0.tar.gz  sha256 9f228ae21c78fa9359ca98d8a5e8e91f30639e438e574133dace62c5b5309e44  (https://files.pythonhosted.org/packages/ed/11/27cebce4a108f77afea7c80545115536b45e3f11ebfb914f638fdd9ba847/soxr-1.1.0.tar.gz)

* libsndfile 1.2.2 (soundfile 0.14.0), with mpg123 1.32.9 and LAME 3.100 built in — LGPL-2.1-or-later
    in the app at: engine/python/Lib/site-packages/_soundfile_data/libsndfile_x64.dll
    built: libsndfile-binaries df220a2e69f9beab93e89dc2344bd6f434d326f5 .github/workflows/build-libs.yml: vcpkg install libsndfile with the repo's triplets, on vcpkg b545373a9 — its ports/libsndfile, ports/mpg123 and ports/mp3lame (portfiles and the patches applied) are in vcpkg-b545373.tar.gz
    sources/libsndfile-binaries-df220a2.tar.gz  sha256 eab75e3d1b6743b22c78a924868bc1a7da07b57e460eef85a6e55e7d1ca0d09d  (https://github.com/bastibe/libsndfile-binaries/archive/df220a2e69f9beab93e89dc2344bd6f434d326f5.tar.gz)
    sources/libsndfile-1.2.2-tag.tar.gz  sha256 ffe12ef8add3eaca876f04087734e6e8e029350082f3251f565fa9da55b52121  (https://github.com/libsndfile/libsndfile/archive/1.2.2.tar.gz)
    sources/mpg123-1.32.9.tar.bz2  sha256 03b61e4004e960bacf2acdada03ed94d376e6aab27a601447bd4908d8407b291  (https://downloads.sourceforge.net/project/mpg123/mpg123/1.32.9/mpg123-1.32.9.tar.bz2)
    sources/vcpkg-b545373.tar.gz  sha256 e162b7148df9ef8ce6ff289a9708a466abcab6f2a8f9949c1c28ec33caab2e43  (https://github.com/microsoft/vcpkg/archive/b545373a9a536dc559dac8583467a21497a0e897.tar.gz)
    sources/lame-3.100.tar.gz  sha256 ddfe36cab873794038ae2c1210557ad34857a4b6bdc515785d1da9e175b1da1e  (https://downloads.sourceforge.net/project/lame/lame/3.100/lame-3.100.tar.gz)
