|
1 | | -# Tremolo |
| 1 | +<div align="center"> |
2 | 2 |
|
3 | | - |
| 3 | +# Tremolo Audio Plugin |
4 | 4 |
|
5 | | -## Usage |
| 5 | +[](LICENSE.md) |
| 6 | + |
| 7 | + |
| 8 | + |
| 9 | + |
| 10 | + |
6 | 11 |
|
7 | | -This is a template repository which means you can click "Use this template" on GitHub and create your own repo out of it. |
| 12 | +<img alt="Tremolo user interface" src="docs/UI.png" width="512px"> |
8 | 13 |
|
9 | | -After cloning it locally, you can proceed with the usual CMake workflow. |
| 14 | +Tremolo audio plugin project used for the [Official JUCE Audio Plugin Development Course](https://www.wolfsoundacademy.com/juce) 🎓 |
10 | 15 |
|
11 | | -In the main repo directory execute |
| 16 | + |
12 | 17 |
|
13 | | -```bash |
14 | | -# 'default' preset uses Ninja; alternatives: 'release' | 'vs' | 'Xcode' |
15 | | -# BUILD_TESTS flag will download googletest and allow unit test execution |
16 | | -# WARNINGS_AS_ERRORS flag will disallow code compilation on possible mistakes |
17 | | -cmake --preset default -DBUILD_TESTS=ON -DWARNINGS_AS_ERRORS=ON |
18 | | -cmake --build --preset default |
| 18 | +</div> |
19 | 19 |
|
20 | | -# to run unit tests (BUILD_TESTS=ON) |
21 | | -ctest --preset default |
22 | | -``` |
| 20 | +## ✨ Features |
23 | 21 |
|
24 | | -The first run will take the most time because the dependencies (CPM, JUCE, and optionally googletest) need to be downloaded. |
| 22 | +* Preconfigured plugin formats: |
| 23 | + * AU |
| 24 | + * VST3 |
| 25 | + * Standalone |
| 26 | +* Tremolo audio effect: tremolo is amplitude modulation at a rate below the human hearing range. The result is a "pulsing" sound. |
| 27 | +* Parameters |
| 28 | + * modulation rate |
| 29 | + * LFO waveform |
| 30 | + * bypass |
| 31 | +* Real-time LFO visualization |
| 32 | +* Custom UI |
| 33 | +* State serialization |
| 34 | +* Template *README.txt* for distribution |
| 35 | +* Configured GitHub Actions CI pipeline |
| 36 | +* Unit tests using [googletest](https://github.com/google/googletest) |
| 37 | +* CMake presets, including "release" |
| 38 | +* Automatic dependency downloading using [CPM](https://github.com/cpm-cmake/CPM.cmake) |
| 39 | +* Helper *.clang-format*, *.clang-tidy*, and *.pre-commit-config.yaml* configuration files |
25 | 40 |
|
26 | | -Existing presets are `default`, `release`, `vs`, and `Xcode`. |
| 41 | +## 📋 Requirements |
27 | 42 |
|
28 | | -To run clang-format on every commit, in the main directory execute |
| 43 | +You need to have the following software installed your machine: |
29 | 44 |
|
30 | | -```bash |
31 | | -pre-commit install |
32 | | -``` |
| 45 | +* Git version control system |
| 46 | +* CMake 3.25 or higher (the one bundled with CLion 2025.1.1 or higher should work) |
| 47 | +* C++ compiler and build system. Tested on: |
| 48 | + * macOS: Xcode 15.4 (Apple Clang 15.0.0.15000309), 16.4 (Apple Clang 17.0.0.17000013) |
| 49 | + * Windows: Visual Studio 2022 17.14.13 (MSVC 19.44.35215) |
| 50 | + * Ubuntu, Debian: gcc 12.2.0, 13.3.0 and make 4.3 |
33 | 51 |
|
34 | | -(for this you may need to install `pre-commit` with `pip`: `pip install pre-commit`). |
| 52 | +## 🚀 Getting Started |
| 53 | + |
| 54 | +**Detailed instructions on the setup process [are described in the course.](https://www.wolfsoundacademy.com/juce)** |
| 55 | + |
| 56 | +1. Click “Use this template” on GitHub to create your own copy and begin your project. |
| 57 | +2. Clone **your repository** locally. |
| 58 | +3. Build the *complete/* plugin |
| 59 | + 1. Open the *complete/* folder in CLion, or |
| 60 | + 2. In the main repo directory execute |
| 61 | + |
| 62 | + ```bash |
| 63 | + cd complete |
| 64 | + cmake --preset default |
| 65 | + cmake --build --preset default |
| 66 | + ``` |
| 67 | + |
| 68 | +The first build will take the most time because the dependencies (CPM and JUCE) need to be downloaded. |
| 69 | + |
| 70 | +Build artifacts will be located at *complete/cmake-build/TremoloCoursePlugin_artefacts/Debug*. |
| 71 | + |
| 72 | +## 📂 Structure |
| 73 | + |
| 74 | +This repository is a template. Click “Use this template” on GitHub to create your own copy and begin your project. |
| 75 | + |
| 76 | +The plugin project is present in two folders: |
| 77 | + |
| 78 | +* *complete/* contains the completed tremolo plugin project. It compiles and runs out of the box. |
| 79 | +* *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. |
| 80 | + |
| 81 | +## 🤝 Contributing |
| 82 | + |
| 83 | +* If you find a bug, please, open an issue and/or provide a pull request. |
| 84 | +* Feature requests won't be merged because the goal of the repository is to be educational not feature-full. |
| 85 | +
|
| 86 | +## 📜 License |
| 87 | +
|
| 88 | +We use the incredibly liberal ["Unlicense" license](LICENSE.md). 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. |
0 commit comments