Skip to content

hollance/synth-plugin-book

Repository files navigation

Code Your Own Synth Plug-Ins With C++ and JUCE

This is the source code that accompanies the book Code Your Own Synth Plug-Ins With C++ and JUCE by Matthijs Hollemans.

The book cover

This 360-page book teaches step-by-step how to design and build a software synthesizer plug-in that can be used in all the popular DAWs such as Logic Pro, Ableton Live, REAPER, FL Studio, Cubase, Bitwig Studio, and others. The plug-in is made using industry standard tools for audio programming: the JUCE framework and the C++ programming language. You'll learn all the fundamentals of writing audio plug-ins in general and synths in particular, in an easy-to-follow guide that is light on math and heavy on being practical.

The book is available for purchase from The Audio Programmer as PDF and EPUB, and from Amazon as paperback.

NOTE: This repo accompanies the version of the book that was originally published on Leanpub.com. Visit github.com/TheAudioProgrammer/synth-plugin-book for the most up-to-date version of the source code.

How to use this repo

For each chapter there is a folder with the finished source code. Open the JX11.jucer file in Projucer and click the export button to open the project in your IDE.

The Finished Project folder contains the synth plug-in in its entirety, with added source code comments (it does not include the UI code from Chapter 13).

Want to know what the synth sounds like? Check out a few examples in the Audio Demos folder.

Found a bug or have a question?

First, please check the errata to see if the issue has already been covered.

If not, refer to the list of open issues and submit a new issue if you can't find your question in the list.

Also make sure to join The Audio Programmer community on Discord. This is a great place to chat about all things related to audio programming, and you can find me there as matthijs.

Source code license

The book is copyright 2022 M.I. Hollemans, all rights reserved.

The source code in this repo is licensed under the terms of the MIT license.

The JX11 synth from the book is based on the MDA JX10 synthesizer, originally written by Paul Kellett of maxim digital audio. The factory presets included in the synth are designed by Paul Kellett with additional patch design by Stefan Andersson and Zeitfraktur, Sascha Kujawa.

JUCE is copyright © Raw Material Software.

The Lato font is copyright (c) 2010-2014 Łukasz Dziedzic and is licensed under the SIL Open Font License.

Cover illustration made from artwork by Brett Jordan. License: CC-BY-2.0