How to Start Developing Audio Plugins on macOS
Recently I've been playing around with making audio plugins on macOS using JUCE. I ended up putting together a few simple scripts to make it easier to quickly spin up new audio projects.
The JUCE Plugin Starter repo includes:
- A script to install all required dependencies outside of Xcode (like CMake and PluginVal).
- A quick setup flow that clones the repo with the template and scripts.
- A script that walks through reinitializing and renaming the repo so you can start a fresh plugin project, configure
.env
variables, and publish it to your own GitHub account. - A script to generate the Xcode project and open it, which has been helpful when making changes that require rebuilding the project file.
The simplest way to get everything running is to just copy and paste the following into your terminal. That said, these commands execute several scripts and install multiple components, so it’s wise to review the full README first to understand what’s happening and avoid any surprises.
# Install required tools (Xcode CLT, Homebrew, CMake, PluginVal, etc.)
bash <(curl -fsSL https://raw.githubusercontent.com/danielraffel/JUCE-Plugin-Starter/main/dependencies.sh)
# Clone the starter project and set up environment
git clone https://github.com/danielraffel/JUCE-Plugin-Starter.git
cd JUCE-Plugin-Starter
cp .env.example .env
# Run the first-time setup to configure your plugin project
chmod +x ./init_plugin_project.sh
./init_plugin_project.sh
# Generate and open the Xcode project (downloads JUCE on first run)
chmod +x ./generate_and_open_xcode.sh
./generate_and_open_xcode.sh
Maybe this is only useful to me as a way to prototype new ideas, but if it helps others get started, awesome. The Xcode project template the repository generates sets you up to build a Standalone App, AU plugin (for Logic, GarageBand), and VST3 plugin (for Reaper, Ableton Live, etc.).
GitHub - danielraffel/JUCE-Plugin-Starter
Contribute to danielraffel/JUCE-Plugin-Starter development by creating an account on GitHub.
Update: After creating this, someone pointed me to a more feature-rich template called pamplejuce.