2 min read

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:

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.