Audio plugin that implements a MIDI-controlled synth that modulates oscillators
$$
e^{z};=;e^{\text{ln}A+i,2\pi,\lambda,t}
$$
by performing complex argument multiplication with an arbitrary complex number
cmake -S . -B build -DBUILD_TESTING=ON
cmake --build build
ctest --output-on-failureAfter building, CMake (via JUCE) generates the following targets:
| Output Type | Path | Description |
|---|---|---|
| Standalone App | build/GmPlugin_artefacts/Standalone/GmPlugin.app |
Run directly from Terminal for testing and live MIDI control |
| VST3 Plugin | build/GmPlugin_artefacts/VST3/GmPlugin.vst3 |
Standard plugin for DAWs like FL Studio, Ableton Live, Reaper |
| Audio Unit (AU) | build/GmPlugin_artefacts/AU/GmPlugin.component |
macOS Audio Unit plugin for Logic Pro and GarageBand |
| Unit Tests | build/Tests/ |
Compiled test binaries, runnable via ctest |
All generated binaries and plugin bundles are self-contained inside build/GmPlugin_artefacts/.
To run the plugin as a standalone synthesizer (outside any DAW):
./build/GmPlugin_artefacts/Standalone/GmPlugin.app/Contents/MacOS/GmPluginYou should then open Options → Audio/MIDI Settings in the GUI window. Enable your MIDI controller (e.g. MPK Mini Mk II), and then twist knobs or press keys to see live MIDI messages in the console. You should hear the resulting sound synthesis directly.
Once built, JUCE generates plugin binaries automatically:
| Plugin Type | macOS Path |
|---|---|
| VST3 | ~/Library/Audio/Plug-Ins/VST3/GmPlugin.vst3 |
| Audio Unit (AU) | ~/Library/Audio/Plug-Ins/Components/GmPlugin.component |
- Open Plugin Manager (Options → Manage Plugins).
- Click Find Plugins to rescan.
- Make sure GmPlugin appears and is enabled (green check). It will show up under Add → More Plugins → Generators → GmPlugin.
The plugin appears automatically after a rescan in the corresponding VST3 or AU list.
.
├── assets
├── CMakeLists.txt
├── LICENSE
├── README.md
├── Source
│ ├── dsp
│ │ └── Oscillator.h
│ ├── params
│ │ ├── KnobState.h
│ │ ├── ParameterIDs.h
│ │ └── ParamSpec.h
│ └── plugin
│ ├── PluginEditor.cpp
│ ├── PluginEditor.h
│ ├── PluginProcessor.cpp
│ └── PluginProcessor.h
├── Testing
└── TestsRun all tests with:
ctest --output-on-failure- C++20
- CMake ≥ 3.20
- Catch2 for testing
This project is licensed under the MIT License.