Module map
Every JUCE module and every dependency between them, generated at build time from the BEGIN_JUCE_MODULE_DECLARATION blocks in modules/*/juce_*.h.[1] Columns are layers: a module's layer is the length of its longest dependency chain down to juce_core.
Click (or tab to and press Enter on) a module to highlight what it depends on (blue) and what is built on it (orange). Use the chips to hide groups.
juce_audio_processorsPlug-ins & hosting · layer 5JUCE audio processor classes
Classes for loading and playing VST, AU, LADSPA, or internally-generated audio processors.
- Depends on (direct)
- Used by (direct)
- Pulls in
- 8 modules in total (transitively)
- Public headers
- 15
Reading the graph
- Left means fundamental.
juce_core(layer 0) is needed by everything; nothing depends on the rightmost modules. - Linking pulls in the whole upstream chain. Add
juce::juce_audio_utilsto a CMake target and you get it plus the modules beneath it (the graph shows the count).[2] Selecting a module shows this "pulls in" count. - Two independent trunks. The audio chain (
audio_basics → audio_devices / audio_formats → dsp) never touches the GUI chain (graphics → gui_basics → gui_extra). They only meet injuce_audio_processorsandjuce_audio_utils. juce_eventsis the junction. Almost every branch passes through it, because almost everything needs the message loop.- Some modules are leaves (
juce_dsp,juce_osc,juce_midi_ci,juce_javascript,juce_video,juce_opengl…). You can add or skip them freely.
How big is each module?
Questions to explore
- Which module would you need for a command-line tool that converts WAV files to FLAC? What does it pull in?
- Why does
juce_dspdepend onjuce_audio_formats? (Hint: look atdsp::Convolution::loadImpulseResponse.) juce_audio_processors_headlesspulls in only three modules. What kinds of program does that make possible thatjuce_audio_processors(which pulls in the whole GUI stack) did not?
Sources
site/scripts/gen-modules.mjsparses the declaration blocks intosite/data/modules.json. The block format is indocs/JUCE Module Format.md. The observations under "Reading the graph" are read off that generated graph for the checked-out version and may change as JUCE does. ↩︎docs/CMake API.md: linking a module target brings in its dependencies. ↩︎