Why I use JUCE

Building a project with the Projucer


When I started out as an audio programmer, my first framework that I tried was the VST SDK. As a relatively inexperienced C++ programmer, I had a lot of difficulty getting started, and ended up spending close to a year spinning my wheels, not to mention that even after having made a plugin, I had no way of sharing it with friends who used different platforms and different plugin formats. So when my brother pointed me to the JUCE framework in summer of 2016, I was beyond relieved! Programming with JUCE allowed me to write portable code with relative ease, allowing my plugins to be compiled cross-platform and cross-plugin-format.

Some neat graphics features available with iPlug2


The next great feature about JUCE is how much support it provides for both new and advanced users.


For beginners looking to start a new project with JUCE, the JUCE tutorials provide easy-to-read explanations of how to write JUCE code to accomplish specific tasks. These tutorials were invaluable when I was getting started, but I still often refer to them today. The example code that comes with each tutorial is often a great way to get started with an implementation of some new feature related to the tutorial.


The JUCE documentation is as good as any that I’ve worked with. While most of the API documentation is generated with Doxygen (similar to many other C++ tools), the JUCE docs often give very clear explanations of the available classes and functions, as well as useful code examples. Finally, the documentation contains an immense amount of self-reference, helping readers to find exactly what they’re looking for.


Another important part of the support that JUCE provides is the vibrant community of JUCE users. The JUCE forum is an indispensible resource for learning from bugs that past developers have dealt with, learning about new JUCE features, and even finding JUCE-related jobs. More recently, The Audio Programmer community has also been a wonderful resource, hosting JUCE tutorials on YouTube, and leading regular developer meet-ups.


The JUCE framework is dual-licensed: users can either use JUCE under the open-source General Public License (GPL), or pay a licensing fee for a proprietary license. As a regular open-source contributer, having the free open-source licensing option is crucial, but even for proprietary projects the JUCE licensing fees are pretty reasonable. There have been some concerns for the future of JUCE’s open-source status, given their recently being acquired by PACE, but the JUCE developers have maintained that their open-source support will not be diminished.


I also wanted to mention how extensible the JUCE framework is. JUCE uses a series of libraries known as modules, letting users pick and choose which JUCE modules their project requires. However, JUCE also allows users to create and use their own custom modules. Several of my favorites include:

Building a plugin GUI with Plugin GUI Magic


Having used JUCE for several years now, I’ve also had the opportunity to see JUCE improve. Both performance improvements and new features have made my life as a programmer significantly easier, and I’m excited to see what improvements JUCE continues to make in the future. Perhaps most important of all, JUCE listens to their users when making improvements. About once a year I fill out a developer survey telling the JUCE folks what features matter to me, and where I’d like to see them spend their time and energy.


At the end of the day, JUCE is a tool just like any other, and the ultimate goal of any tool is to help achieve peace of mind for the user. In your work, you should use whatever tool brings you and your collaborators peace of mind, whether that’s JUCE or something else. Everything I’ve said here is my own opinion, and you should feel free to agree/disagree as you see fit. That said, I hope I’ve helped to give some explanation as to why I (and many other audio developers) so often use JUCE.



Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store