

JUCE
JUCE is the C++ framework behind a ridiculous number of audio plugins and applications. DSP, GUI, MIDI, plugin formats and plenty of things you really did not want to implement twice.
Programming - Framework
Product information
Overview
JUCE is one of those frameworks hiding behind far more audio software than most users will ever realize. Written in C++, it provides the foundations for building plugins, instruments, desktop applications and interfaces across multiple platforms without maintaining an entirely different universe of code for each one. It began life as Jules' Utility Class Extensions, created by Julian Storer while developing Tracktion. The utility classes eventually escaped their original project, grew into a framework of their own and became something close to common infrastructure for the audio development world.
So You Want to Make a Plugin
JUCE handles much of the machinery surrounding audio software, including audio and MIDI I/O, plugin formats, parameter management, DSP building blocks and communication with plugin hosts. That leaves developers considerably more time to work on the part that actually makes their plugin interesting. Of course, this is still C++ audio development. JUCE can provide the framework, abstractions and examples. It cannot prevent you from spending an evening wondering why your audio thread is angry.
Write Once, Debug Everywhere
A major reason developers reach for JUCE is its cross-platform architecture. Much of the same codebase can target Windows, macOS, Linux, iOS and Android, while plugin projects can cover the formats expected by modern hosts. That does not mean platform-specific problems magically cease to exist. Nothing involving five operating systems could possibly be that merciful. But JUCE absorbs a remarkable amount of the ugly plumbing and gives projects a common structure across them.
Not Just Knobs and DSP
Despite its reputation in audio, JUCE is much more than a DSP toolkit. Graphics, windows, files, networking, threading, data structures and a large collection of general utilities are all part of the framework, making it possible to build most of an application without constantly leaving the JUCE ecosystem. This is also why learning it can feel suspiciously like learning its own little world. Come for the audio callback, stay because somehow JUCE is now also drawing your buttons, reading your files and managing half your application.
The Audio Dev Rabbit Hole
JUCE has accumulated documentation, tutorials, examples and a long-running developer community around it, which matters when your project has progressed from hello world to why does this crash only inside this particular DAW. Its widespread use also means learning JUCE unlocks more than one project. Concepts and patterns encountered in one plugin tend to reappear across the ecosystem. Eventually you stop asking why everyone uses JUCE and start arguing about the correct way to use JUCE. Congratulations, you are an audio developer now.