Skip to content

Modules ​

One section per module, grouped by role, with the classes you will meet first. The purpose column and dependencies below are generated from each module's header.[1] The notes underneath are hand-written. For the visual version, see the module map.

ModulePurpose (from its header)Direct dependencies
juce_coreThe essential set of basic JUCE classes, as required by all the other JUCE modules. Includes text, container, memory, threading and i/o functionality.—
juce_audio_basicsClasses for audio buffer manipulation, midi message handling, synthesis, etc.core
juce_cryptographyClasses for various basic cryptography functions, including RSA, Blowfish, MD5, SHA, etc.core
juce_eventsClasses for running an application's main event loop and sending/receiving messages, timers, etc.core
juce_javascriptJavascript interpreter.core
juce_audio_devicesClasses to play and record from audio and MIDI I/O devicesaudio_basicsevents
juce_audio_formatsClasses for reading and writing various audio file formats.audio_basics
juce_audio_processors_headlessClasses for loading and playing VST, AU, LADSPA, or internally-generated audio processors without UI.audio_basicsevents
juce_data_structuresClasses for undo/redo management, and smart data structures.events
juce_graphicsClasses for 2D vector graphics, image loading/saving, font handling, etc.events
juce_midi_ciClasses facilitating communication via MIDI Capability Inquiryaudio_basics
juce_oscOpen Sound Control implementation.events
juce_product_unlockingClasses for online product authenticationcryptography
juce_box2dThe Box2D physics engine and some utility classes.graphics
juce_dspClasses for audio buffer manipulation, digital audio processing, filtering, oversampling, fast math functions etc.audio_formats
juce_gui_basicsBasic user-interface components and related classes.graphicsdata_structures
juce_analyticsClasses to collect analytics and send to destinationsgui_basics
juce_animationClasses for defining and handling animations.gui_basics
juce_gui_extraMiscellaneous GUI classes for specialised tasks.gui_basics
juce_audio_processorsClasses for loading and playing VST, AU, LADSPA, or internally-generated audio processors.gui_extraaudio_processors_headless
juce_openglClasses for rendering OpenGL in a JUCE window.gui_extra
juce_videoClasses for playing video and capturing camera input.gui_extra
juce_audio_plugin_clientClasses for building VST, VST3, AU, AUv3, LV2 and AAX plugins.audio_processors
juce_audio_utilsClasses for audio-related GUI and miscellaneous tasks.audio_processorsaudio_formatsaudio_devices

Foundation ​

These modules have no GUI or audio code. Anything can use them, including command-line tools and servers.

juce_core ​

The base of everything, with no dependencies of its own. It covers what the C++ standard library does (and in JUCE's early days didn't), plus OS services.

Start here: String, File, Array, and Thread. You'll use them in every project.

juce_events ​

The message loop and everything asynchronous.

juce_data_structures ​

Observable data and undo.

juce_cryptography ​

Hashes and basic crypto: MD5, SHA256, Whirlpool, RSAKey, BlowFish, and Primes. Useful for checksums and licence keys. For security-critical work, use a dedicated, audited library.

juce_javascript ​

JavascriptEngine, an embedded JavaScript interpreter built on QuickJS (via the bundled choc library)[2], with JSObject and JSCursor for working with values. Split out of juce_core in 8.0.4. Useful for scripting and user-programmable features.

Graphics & GUI ​

juce_graphics ​

2D drawing, independent of windows and widgets.

juce_gui_basics ​

The biggest module: the component system and standard widgets.

juce_gui_extra ​

Specialised GUI components, often wrapping native OS features.

juce_opengl ​

Hardware-accelerated rendering. Attach an OpenGLContext to any component to render its paint() with OpenGL, or implement OpenGLRenderer for custom GL code. Also includes OpenGLShaderProgram, OpenGLTexture, OpenGLFrameBuffer, and OpenGLAppComponent. JUCE 9 added OpenGL ES on Linux.

juce_animation ​

Added in JUCE 8.[4:1] Declarative animations: build an Animator with ValueAnimatorBuilder or AnimatorSetBuilder, then drive it with an AnimatorUpdater or a VBlankAnimatorUpdater synced to the display refresh rate. Includes easing functions.

juce_video ​

VideoComponent for playback and CameraDevice for capture, built on each platform's native media APIs.

juce_box2d ​

The Box2D 2D physics engine, bundled, plus Box2DRenderer to draw a Box2D world with JUCE Graphics. Handy for playful UIs and demos.

Audio & MIDI ​

juce_audio_basics ​

Audio data types and building blocks with no device or file dependencies.

juce_audio_devices ​

Talking to hardware.

juce_audio_formats ​

Reading and writing audio files.

juce_dsp ​

Signal-processing building blocks with a common prepare / process / reset interface.

juce_midi_ci ​

Added in 7.0.9. An implementation of MIDI Capability Inquiry, the MIDI 2.0 negotiation layer: discovery, profiles, and property exchange. The central class is ci::Device.

juce_osc ​

Open Sound Control over UDP: OSCSender, OSCReceiver, OSCMessage, OSCBundle, and OSCAddressPattern. Often used for remote control from apps like TouchOSC, or to link with Max/MSP and SuperCollider.

Plug-ins & hosting ​

juce_audio_processors_headless ​

The GUI-free core of the plug-in model, split out in 8.0.11.

juce_audio_processors ​

The GUI-dependent half.

juce_audio_plugin_client ​

The format wrappers: VST3, AU, AUv3, AAX, LV2, VST2, Unity, and Standalone. You never call this module directly. The build system compiles the right wrapper for each format target, and the wrapper calls your createPluginFilter().

juce_audio_utils ​

Glue and ready-made audio UI.

Commercial services ​

juce_analytics ​

Added in 5.2.0. Event tracking for your app: Analytics collects events and forwards them to ThreadedAnalyticsDestination subclasses that you implement to send data to your own back end. ButtonTracker logs button presses.

juce_product_unlocking ​

Copy protection and purchasing.

Sources ​

The class lists above are hand-written from each module's headers in modules/; the Doxygen comments there are the authority. Treat any list as a starting point rather than a complete API.


  1. Generated by site/scripts/gen-modules.mjs from each BEGIN_JUCE_MODULE_DECLARATION block. ↩︎

  2. JUCE.spdx.json lists QuickJS, CHOC, HarfBuzz, and SheenBidi as bundled dependencies; the QuickJS helpers are in modules/juce_javascript/detail. ↩︎ ↩︎

  3. juce_Desktop.cpp: defaultLookAndFeel.reset (new LookAndFeel_V4());. ↩︎

  4. CHANGE_LIST.md: 9.0.0 ("Added a new SVG parser", "Added a new macOS CoreAudio implementation") and 8.0.0 ("Added a new animation module"). ↩︎ ↩︎ ↩︎

Personal study notes on JUCE. Not affiliated with or endorsed by the JUCE team.