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.
| Module | Purpose (from its header) | Direct dependencies |
|---|---|---|
juce_core | The 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_basics | Classes for audio buffer manipulation, midi message handling, synthesis, etc. | core |
juce_cryptography | Classes for various basic cryptography functions, including RSA, Blowfish, MD5, SHA, etc. | core |
juce_events | Classes for running an application's main event loop and sending/receiving messages, timers, etc. | core |
juce_javascript | Javascript interpreter. | core |
juce_audio_devices | Classes to play and record from audio and MIDI I/O devices | audio_basicsevents |
juce_audio_formats | Classes for reading and writing various audio file formats. | audio_basics |
juce_audio_processors_headless | Classes for loading and playing VST, AU, LADSPA, or internally-generated audio processors without UI. | audio_basicsevents |
juce_data_structures | Classes for undo/redo management, and smart data structures. | events |
juce_graphics | Classes for 2D vector graphics, image loading/saving, font handling, etc. | events |
juce_midi_ci | Classes facilitating communication via MIDI Capability Inquiry | audio_basics |
juce_osc | Open Sound Control implementation. | events |
juce_product_unlocking | Classes for online product authentication | cryptography |
juce_box2d | The Box2D physics engine and some utility classes. | graphics |
juce_dsp | Classes for audio buffer manipulation, digital audio processing, filtering, oversampling, fast math functions etc. | audio_formats |
juce_gui_basics | Basic user-interface components and related classes. | graphicsdata_structures |
juce_analytics | Classes to collect analytics and send to destinations | gui_basics |
juce_animation | Classes for defining and handling animations. | gui_basics |
juce_gui_extra | Miscellaneous GUI classes for specialised tasks. | gui_basics |
juce_audio_processors | Classes for loading and playing VST, AU, LADSPA, or internally-generated audio processors. | gui_extraaudio_processors_headless |
juce_opengl | Classes for rendering OpenGL in a JUCE window. | gui_extra |
juce_video | Classes for playing video and capturing camera input. | gui_extra |
juce_audio_plugin_client | Classes for building VST, VST3, AU, AUv3, LV2 and AAX plugins. | audio_processors |
juce_audio_utils | Classes 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.
- Text:
String,StringArray,Identifier,StringRef,CharPointer_UTF8 - Containers:
Array,OwnedArray,ReferenceCountedArray,HashMap,var,DynamicObject,ListenerList,AbstractFifo - Memory:
HeapBlock,MemoryBlock,ReferenceCountedObject,WeakReference, leak detector - Files and streams:
File,FileInputStream,MemoryOutputStream,ZipFile,GZIPCompressorOutputStream - Threads:
Thread,ThreadPool,CriticalSection,SpinLock,WaitableEvent,ChildProcess - Data formats:
XmlElement,XmlDocument,JSON - Network:
URL,WebInputStream,StreamingSocket,DatagramSocket - Misc:
Time,RelativeTime,Random,Uuid,SystemStats,Logger,UnitTest
Start here: String, File, Array, and Thread. You'll use them in every project.
juce_events
The message loop and everything asynchronous.
MessageManager: runs the event loop;callAsync()posts work to itJUCEApplicationBase: the base of the app lifecycle (JUCEApplicationinjuce_gui_basicsbuilds on it)Timer,HighResolutionTimer,MultiTimerAsyncUpdater,ChangeBroadcaster/ChangeListener,ActionBroadcaster- Inter-process communication:
InterprocessConnection,ChildProcessCoordinator/ChildProcessWorker ScopedJuceInitialiser_GUI, for starting JUCE's message system from your ownmain()
juce_data_structures
Observable data and undo.
ValueTreeandValueTree::Listener: the recommended app-state modelValue,ValueSourceUndoManager,UndoableActionPropertiesFile,ApplicationProperties: settings filesValueTreeSynchroniser: mirror a tree to another process or machine
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.
Graphics: the drawing context passed topaint()- Geometry:
Point,Line,Rectangle,Path,AffineTransform,RectangleList Colour,Colours,ColourGradient,FillTypeImage,ImageCache, and image formats (PNG, JPEG, GIF, WebP)Font,FontOptions,GlyphArrangement,TextLayout,AttributedString, with Unicode shaping via HarfBuzz and SheenBidi[2:1]DropShadow,GlowEffect- Native renderers: CoreGraphics (Apple), Direct2D (Windows), and the software renderer
juce_gui_basics
The biggest module: the component system and standard widgets.
- Core:
Component,Desktop,ComponentPeer,MouseEvent,KeyPress,FocusTraverser - App and windows:
JUCEApplication,DocumentWindow,ResizableWindow,DialogWindow,AlertWindow,CallOutBox - Widgets:
TextButton,ToggleButton,Slider,ComboBox,Label,TextEditor,ListBox,TableListBox,TreeView,Viewport,TabbedComponent,PopupMenu,MenuBarComponent - Layout:
FlexBox,Grid,ComponentBoundsConstrainer,StretchableLayoutManager - Look and feel:
LookAndFeel,LookAndFeel_V4(the default)[3] - Drawables:
Drawable,DrawablePath,DrawableImage, with a new SVG parser in JUCE 9[4] - Other:
FileChooser,ApplicationCommandManager(menus and shortcuts),VBlankAttachment, accessibility support
juce_gui_extra
Specialised GUI components, often wrapping native OS features.
WebBrowserComponentplus relays (WebSliderRelay, …) for WebView UIsCodeEditorComponent,CodeDocument,CPlusPlusCodeTokeniser- Native embedding:
NSViewComponent,HWNDComponent,XEmbedComponent,UIViewComponent SystemTrayIconComponent,PushNotifications,AnimatedAppComponent,ColourSelector,KeyMappingEditorComponent,RecentlyOpenedFilesList
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.
- Buffers:
AudioBuffer<float/double>,FloatVectorOperations(SIMD helpers),AudioChannelSet,AudioData(sample-format conversion) - MIDI:
MidiMessage,MidiBuffer,MidiMessageSequence,MidiFile,MidiKeyboardState, MPE classes, and MIDI 2.0 Universal MIDI Packets (ump/) - Sources: the
AudioSourceinterface and helpers (MixerAudioSource,ResamplingAudioSource,ToneGeneratorAudioSource, …) - Synthesis:
Synthesiser,SynthesiserVoice,SynthesiserSound,MPESynthesiser - Utilities:
SmoothedValue,ADSR,Reverb,IIRFilter,Decibels,AudioPlayHead
juce_audio_devices
Talking to hardware.
AudioDeviceManager: opens and manages the input and output device; the one class most apps needAudioIODevice,AudioIODeviceType,AudioIODeviceCallback- Backends: CoreAudio (new implementation in JUCE 9)[4:2], WASAPI, DirectSound, ASIO, ALSA, JACK, Oboe, OpenSL, and iOS audio sessions
- MIDI I/O:
MidiInput,MidiOutput,MidiMessageCollector, Bluetooth MIDI, and Windows MIDI Services AudioSourcePlayer,AudioTransportSource
juce_audio_formats
Reading and writing audio files.
AudioFormatManager: register formats, thencreateReaderFor (file)AudioFormatReader,AudioFormatWriter,AudioFormatReaderSource,BufferingAudioReader- Codecs: WAV, AIFF, FLAC, Ogg Vorbis, Opus, MP3 (decoding), CoreAudio and Windows Media (OS codecs), and a LAME-based MP3 encoder wrapper
AudioSubsectionReader,MemoryMappedAudioFormatReader, and ARA audio readers
juce_dsp
Signal-processing building blocks with a common prepare / process / reset interface.
- Framework:
ProcessSpec,ProcessContextReplacing,AudioBlock,ProcessorChain,ProcessorDuplicator - Filters:
IIR::Filter,FIR::Filter,StateVariableTPTFilter,LinkwitzRileyFilter,LadderFilter, andFilterDesign - Effects ("widgets"):
Gain,Compressor,Limiter,NoiseGate,Chorus,Phaser,Reverb,WaveShaper,Oscillator,DelayLine,DryWetMixer,Panner - Frequency domain:
FFT,Convolution(impulse responses),WindowingFunction - Maths:
Oversampling,LookupTable,FastMathApproximations,Matrix,SIMDRegister
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.
AudioProcessor: the central interface (see Anatomy of a plug-in)- Parameters:
AudioProcessorParameter,RangedAudioParameter,AudioParameterFloat/Int/Bool/Choice,AudioProcessorParameterGroup AudioProcessorGraph: route processors into a network- Hosting:
AudioPluginFormatManager,AudioPluginFormat,AudioPluginInstance,PluginDescription, and headless format implementations (VST3, AU, LV2, LADSPA) - ARA support classes, and the bundled VST3 SDK
juce_audio_processors
The GUI-dependent half.
AudioProcessorEditor,GenericAudioProcessorEditorAudioProcessorValueTreeStateand itsSliderAttachment,ButtonAttachment, andComboBoxAttachmentParameterAttachmentand helpers for custom controls- Scanning:
KnownPluginList,PluginDirectoryScanner,PluginListComponent - Format classes that can show a plug-in's own editor:
VST3PluginFormat,AudioUnitPluginFormat,LV2PluginFormat,VSTPluginFormat
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.
AudioAppComponent: the quickest way to a standalone audio appAudioProcessorPlayer: drive anAudioProcessor(or graph) from an audio deviceAudioDeviceSelectorComponent: a ready-made audio settings panelAudioThumbnail,AudioThumbnailCache: waveform displaysMidiKeyboardComponent,MPEKeyboardComponent,AudioVisualiserComponentSoundPlayer,AudioCDReader,BluetoothMidiDevicePairingDialogue
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.
OnlineUnlockStatusandOnlineUnlockForm: activate a product against a serverTracktionMarketplaceStatus: an implementation for the Tracktion marketplaceKeyGeneration: generate RSA-signed licence keysInAppPurchases: the iOS, macOS, and Android store APIs
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.
Generated by
site/scripts/gen-modules.mjsfrom eachBEGIN_JUCE_MODULE_DECLARATIONblock. ↩︎JUCE.spdx.jsonlists QuickJS, CHOC, HarfBuzz, and SheenBidi as bundled dependencies; the QuickJS helpers are inmodules/juce_javascript/detail. ↩︎ ↩︎juce_Desktop.cpp:defaultLookAndFeel.reset (new LookAndFeel_V4());. ↩︎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"). ↩︎ ↩︎ ↩︎