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
Once your plugin is built and tested, you can package it for safe, notarized distribution using the sign_and_package_plugin.sh
script.
- The script signs, notarizes, and staples each format
- All formats are bundled into a single
.pkg
installer - The
.pkg
is signed and notarized - Finally, the
.pkg
is included in a ready-to-share.dmg
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.