Tremolo audio plugin project used for the Official JUCE Audio Plugin Development Course 🎓
- Preconfigured plugin formats:
- AU
- VST3
- Standalone
- Tremolo audio effect: tremolo is amplitude modulation at a rate below the human hearing range. The result is a "pulsing" sound.
- Parameters
- modulation rate
- LFO waveform
- bypass
- Real-time LFO visualization
- Custom UI
- State serialization
- Template README.txt for distribution
- Configured GitHub Actions CI pipeline
- Unit tests using googletest
- CMake presets, including "release"
- Automatic dependency downloading using CPM
- Helper .clang-format, .clang-tidy, and .pre-commit-config.yaml configuration files
You need to have the following software installed your machine:
- Git version control system
- CMake 3.25 or higher (the one bundled with CLion 2025.1.1 or higher should work)
- C++ compiler and build system. Tested on:
- macOS: Xcode 15.4 (Apple Clang 15.0.0.15000309), 16.4 (Apple Clang 17.0.0.17000013)
- Windows: Visual Studio 2022 17.14.13 (MSVC 19.44.35215)
- Ubuntu, Debian: gcc 12.2.0, 13.3.0 and make 4.3
Detailed instructions on the setup process are described in the course.
- Click “Use this template” on GitHub to create your own copy and begin your project.
- Clone your repository locally.
- Build the complete/ plugin
-
Open the complete/ folder in CLion, or
-
In the main repo directory execute
cd complete cmake --preset default cmake --build --preset default
-
The first build will take the most time because the dependencies (CPM and JUCE) need to be downloaded.
Build artifacts will be located at complete/cmake-build/TremoloCoursePlugin_artefacts/Debug.
This repository is a template. Click “Use this template” on GitHub to create your own copy and begin your project.
The plugin project is present in two folders:
- complete/ contains the completed tremolo plugin project. It compiles and runs out of the box.
- todo/ contains skeleton code of the same plugin. This is the code you will work on throughout the course to gradually bring it to the same state as the complete/ folder. In its default state, it does not compile.
- If you find a bug, please, open an issue and/or provide a pull request.
- Feature requests won't be merged because the goal of the repository is to be educational not feature-full.
We use the incredibly liberal "Unlicense" license. You can basically do whatever you want with the code. Remember that the commercial use of products built with JUCE requires a JUCE license. Refer to the JUCE license for details.