A guitar multi-effect plugin whose architecture and workflow are modelled on an early-1990s guitar multi-effect floor unit, referred to here as "the original unit".
Status: Milestone 3 done. VST3 and (on macOS) Audio Unit plugins with the original
unit's five-effect chain (compressor, distortion/overdrive, 3-band EQ, chorus/flanger,
reverb/delay), noise reduction and master volume, each control with its original steps. 30
programs in six banks: bank 1 is yours to write; banks 2–6 hold development presets ("DEV …")
and the one factory program the original's manual documents. Every algorithm is a
placeholder: the controls and their documented values match the original, the sound does not
claim to. The editor is a replica of the original's front panel, in both its Program and
Manual/Edit modes. A Processing Rate setting runs the effects at the host's rate or at the
original's 44.1 kHz (the same rate, not a model of its converters). See
docs/implementation-plan.md for the
roadmap and docs/evidence-register.md for what is known versus assumed.
- CMake 3.25 or newer, and Ninja (recommended)
- A C++20 compiler: Xcode 15+ / Apple Clang, Visual Studio 2022, or GCC 11+ / Clang 15+
- Linux only: the JUCE system packages listed in
.github/workflows/build.yml
JUCE 9.0.2 and Catch2 v3.9.1 are git submodules in external/, pinned to their release tags.
Clone with them:
git clone --recurse-submodules https://github.com/CatastrophicCoder/90sGuitarMultiFx.git
# or, in an existing clone:
git submodule update --initcmake -B build -G Ninja -DCMAKE_BUILD_TYPE=Release
cmake --build build
ctest --test-dir build --output-on-failureBuilt products land in build/FiveAPlugin_artefacts/<config>/:
| Format | Path |
|---|---|
| VST3 | VST3/Five-A MultiFX Processor.vst3 |
| AU (macOS) | AU/Five-A MultiFX Processor.component |
A Release build also installs the AU and VST3 into your user plugin folders
(~/Library/Audio/Plug-Ins on macOS); a Debug build does not. Override with
-DFIVEA_COPY_PLUGIN=ON or OFF. To build without tests, -DFIVEA_BUILD_TESTS=OFF.
auval -v aufx Nmf1 Ctcd # the installed AU, i.e. the last Release build
/Applications/pluginval.app/Contents/MacOS/pluginval --strictness-level 10 \
--validate "build/FiveAPlugin_artefacts/Release/VST3/Five-A MultiFX Processor.vst3"CI checks formatting with clang-format 18.1.8:
pipx install clang-format==18.1.8
clang-format -i $(git ls-files 'src/*.h' 'src/*.cpp' 'tests/*.h' 'tests/*.cpp')| Path | Contents |
|---|---|
external |
JUCE and Catch2 submodules, pinned to release tags |
src/core |
Engine façade (FiveAProcessor, pure C++), parameter IDs, parameter layout and state (JUCE) |
src/dsp |
DSP building blocks (only gain smoothing so far) |
src/plugin |
JUCE AudioProcessor and editor |
src/ui |
The replica panel: layout, look-and-feel, controls, LED display |
resources/fonts |
Barlow Condensed (SIL OFL), embedded in the plugin, with its licence |
tests/Unit |
Engine tests, no JUCE |
tests/Integration |
Plugin tests through the AudioProcessor API |
docs |
Architecture, evidence and source registers, parameter specification, validation plan |
GNU Affero General Public License v3.0; see LICENSE. Third-party components and their licences
are listed in THIRD_PARTY_NOTICES.md.