# jerryuhoo/fire architecture

> Architecture diagram of the GitHub repository jerryuhoo/fire, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-28). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/jerryuhoo/fire
- Repository: https://github.com/jerryuhoo/fire

## Overview

Fire is a JUCE multiband distortion audio plugin. The main workflow is host audio entering the plugin processor, being split and processed across enabled bands, then returned to the host; user controls configure band/global effects and modulation. The README also documents presets, A/B comparison, HQ oversampling, spectrogram band editing, and visualizers. Several implementation details are represented at subsystem level because the supplied processor and UI excerpts are partial.

Main entry points: [`Source/PluginProcessor.cpp`](https://github.com/jerryuhoo/fire/blob/master/Source/PluginProcessor.cpp) (Plugin Processor), [`Source/Panels/ControlPanel`](https://github.com/jerryuhoo/fire/tree/master/Source/Panels/ControlPanel) (Effect Controls), [`Source/DSP/LfoManager.cpp`](https://github.com/jerryuhoo/fire/blob/master/Source/DSP/LfoManager.cpp) (LFO Manager), [`Source/DSP`](https://github.com/jerryuhoo/fire/tree/master/Source/DSP) (Band Effects)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_audio["Audio Processing"]
  node_processor["Plugin Processor"]
  node_band_dsp["Band Effects"]
  node_distortion["Distortion DSP<br/>[DistortionLogic.h]"]
  node_width["Stereo Width<br/>[WidthProcessor.cpp]"]
  node_meters["Level Reporting"]
end

subgraph group_modulation["Modulation"]
  node_lfo_manager["LFO Manager<br/>[LfoManager.cpp]"]
  node_lfo_engine["LFO Engine<br/>[LfoEngine.cpp]"]
  node_routing["Modulation Routing"]
end

subgraph group_interface["Plugin Interface"]
  node_editor["Plugin Editor<br/>[PluginEditor.cpp]"]
  node_control_panels["Effect Controls"]
  node_spectrogram["Band Spectrogram"]
  node_visualizers["Audio Visualizers"]
  node_lfo_panel["LFO Editor<br/>[LfoPanel.cpp]"]
end

subgraph group_state["Parameters and Presets"]
  node_parameters["Plugin Parameters<br/>[Parameters.h]"]
  node_preset["Preset Controls<br/>[Preset.cpp]"]
end

node_daw(("DAW Host"))

node_daw -->|"audio and transport"| node_processor
node_processor -->|"processed audio"| node_daw
node_processor -->|"processes bands"| node_band_dsp
node_band_dsp -->|"applies distortion"| node_distortion
node_band_dsp -->|"processes stereo"| node_width
node_processor -->|"updates levels"| node_meters
node_processor -->|"processes modulation"| node_lfo_manager
node_lfo_manager -->|"generates signals"| node_lfo_engine
node_lfo_manager -->|"applies routings"| node_routing
node_lfo_manager -->|"reads and modulates"| node_parameters
node_editor -->|"hosts controls"| node_control_panels
node_control_panels -->|"edits values"| node_parameters
node_control_panels -->|"exposes band editing"| node_spectrogram
node_control_panels -->|"shows audio data"| node_visualizers
node_control_panels -->|"exposes modulation"| node_lfo_panel
node_lfo_panel -->|"edits shapes and routes"| node_lfo_manager
node_preset -->|"loads and saves state"| node_parameters

click node_processor "https://github.com/jerryuhoo/fire/blob/master/Source/PluginProcessor.cpp"
click node_band_dsp "https://github.com/jerryuhoo/fire/tree/master/Source/DSP"
click node_distortion "https://github.com/jerryuhoo/fire/blob/master/Source/DSP/DistortionLogic.h"
click node_width "https://github.com/jerryuhoo/fire/blob/master/Source/DSP/WidthProcessor.cpp"
click node_meters "https://github.com/jerryuhoo/fire/blob/master/Source/PluginProcessor.cpp"
click node_lfo_manager "https://github.com/jerryuhoo/fire/blob/master/Source/DSP/LfoManager.cpp"
click node_lfo_engine "https://github.com/jerryuhoo/fire/blob/master/Source/DSP/LfoEngine.cpp"
click node_routing "https://github.com/jerryuhoo/fire/blob/master/Source/DSP/ModulationRouting.h"
click node_editor "https://github.com/jerryuhoo/fire/blob/master/Source/PluginEditor.cpp"
click node_control_panels "https://github.com/jerryuhoo/fire/tree/master/Source/Panels/ControlPanel"
click node_spectrogram "https://github.com/jerryuhoo/fire/tree/master/Source/Panels/SpectrogramPanel"
click node_visualizers "https://github.com/jerryuhoo/fire/tree/master/Source/Panels/ControlPanel/Graph%20Components"
click node_lfo_panel "https://github.com/jerryuhoo/fire/blob/master/Source/Panels/ControlPanel/LfoPanel.cpp"
click node_parameters "https://github.com/jerryuhoo/fire/blob/master/Source/Utility/Parameters.h"
click node_preset "https://github.com/jerryuhoo/fire/blob/master/Source/Panels/TopPanel/Preset.cpp"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_processor,node_band_dsp,node_distortion,node_width,node_meters toneBlue
class node_lfo_manager,node_lfo_engine,node_routing toneAmber
class node_editor,node_control_panels,node_spectrogram,node_visualizers,node_lfo_panel toneMint
class node_parameters,node_preset toneRose
class node_daw toneIndigo
```

## Components

### Audio Processing

- [Plugin Processor](https://github.com/jerryuhoo/fire/blob/master/Source/PluginProcessor.cpp): `Source/PluginProcessor.cpp`
- [Band Effects](https://github.com/jerryuhoo/fire/tree/master/Source/DSP): `Source/DSP`
- [Distortion DSP](https://github.com/jerryuhoo/fire/blob/master/Source/DSP/DistortionLogic.h): `Source/DSP/DistortionLogic.h`
- [Stereo Width](https://github.com/jerryuhoo/fire/blob/master/Source/DSP/WidthProcessor.cpp): `Source/DSP/WidthProcessor.cpp`
- [Level Reporting](https://github.com/jerryuhoo/fire/blob/master/Source/PluginProcessor.cpp): `Source/PluginProcessor.cpp`

### Modulation

- [LFO Manager](https://github.com/jerryuhoo/fire/blob/master/Source/DSP/LfoManager.cpp): `Source/DSP/LfoManager.cpp`
- [LFO Engine](https://github.com/jerryuhoo/fire/blob/master/Source/DSP/LfoEngine.cpp): `Source/DSP/LfoEngine.cpp`
- [Modulation Routing](https://github.com/jerryuhoo/fire/blob/master/Source/DSP/ModulationRouting.h): `Source/DSP/ModulationRouting.h`

### Plugin Interface

- [Plugin Editor](https://github.com/jerryuhoo/fire/blob/master/Source/PluginEditor.cpp): `Source/PluginEditor.cpp`
- [Effect Controls](https://github.com/jerryuhoo/fire/tree/master/Source/Panels/ControlPanel): `Source/Panels/ControlPanel`
- [Band Spectrogram](https://github.com/jerryuhoo/fire/tree/master/Source/Panels/SpectrogramPanel): `Source/Panels/SpectrogramPanel`
- [Audio Visualizers](https://github.com/jerryuhoo/fire/tree/master/Source/Panels/ControlPanel/Graph%20Components): `Source/Panels/ControlPanel/Graph Components`
- [LFO Editor](https://github.com/jerryuhoo/fire/blob/master/Source/Panels/ControlPanel/LfoPanel.cpp): `Source/Panels/ControlPanel/LfoPanel.cpp`

### Parameters and Presets

- [Plugin Parameters](https://github.com/jerryuhoo/fire/blob/master/Source/Utility/Parameters.h): `Source/Utility/Parameters.h`
- [Preset Controls](https://github.com/jerryuhoo/fire/blob/master/Source/Panels/TopPanel/Preset.cpp): `Source/Panels/TopPanel/Preset.cpp`

### Other components

- **DAW Host**

## Connections

- DAW Host → Plugin Processor: audio and transport
- Plugin Processor → DAW Host: processed audio
- Plugin Processor → Band Effects: processes bands
- Band Effects → Distortion DSP: applies distortion
- Band Effects → Stereo Width: processes stereo
- Plugin Processor → Level Reporting: updates levels
- Plugin Processor → LFO Manager: processes modulation
- LFO Manager → LFO Engine: generates signals
- LFO Manager → Modulation Routing: applies routings
- LFO Manager → Plugin Parameters: reads and modulates
- Plugin Editor → Effect Controls: hosts controls
- Effect Controls → Plugin Parameters: edits values
- Effect Controls → Band Spectrogram: exposes band editing
- Effect Controls → Audio Visualizers: shows audio data
- Effect Controls → LFO Editor: exposes modulation
- LFO Editor → LFO Manager: edits shapes and routes
- Preset Controls → Plugin Parameters: loads and saves state
