CMake 3.22 or newer, and a C and C++20 compiler. JUCE refuses to configure unless C is among the project languages, so a C compiler is not optional.
JUCE 9.0.1 is added by add_subdirectory; VALIS_JUCE_DIR sets the path.
On Debian or Ubuntu, with JUCE_WEB_BROWSER=0 and JUCE_USE_CURL=0 set by the
build so neither WebKit nor libcurl is needed:
sudo apt install \
build-essential cmake ninja-build pkg-config \
libasound2-dev libjack-jackd2-dev \
libfreetype-dev libfontconfig1-dev \
libx11-dev libxcomposite-dev libxcursor-dev libxext-dev \
libxinerama-dev libxrandr-dev libxrender-dev libxi-dev
serd and sord are used through libserd-dev and libsord-dev when pkg-config
finds them, and otherwise fetched and compiled from source. Either way the
build works with no action.
./build.sh # Debug with tests, CTest, then a Release plugin
VALIS_WITH_CLAP=1 ./build.sh # and the CLAP format
Options: VALIS_BUILD_TESTS (ON), VALIS_BUILD_PLUGIN (ON), VALIS_WITH_MCP
(ON), VALIS_WITH_CLAP (OFF), VALIS_JUCE_DIR.
./valis # the standalone
ctest --test-dir build --output-on-failure
./build/valis_render_artefacts/Debug/valis_render examples/skream.ttl \
-o out.wav --tone 100
valis-render needs no host, no GUI and no audio device, which makes it the
fastest way to hear a change.
LV2_PATH="$PWD/build/valis_plugin_artefacts/Debug/LV2" lv2ls
LV2_PATH="$PWD/build/valis_plugin_artefacts/Debug/LV2" lv2info urn:valis:valis
lv2info reports ports but not parameters: JUCE 9 exposes plugin parameters
through the LV2 patch extension rather than as control ports. To see the slots,
read the generated manifest:
grep -A5 'plug:p00' build/valis_plugin_artefacts/Debug/LV2/Valis.lv2/dsp.ttl
docs/manual/elements.md is generated from vocabs/valis.ttl, so it cannot
drift from what the plugin offers:
./scripts/generate-docs.sh