# maytiger877/exodus_delay architecture

> Architecture diagram of the GitHub repository maytiger877/exodus_delay, 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/maytiger877/exodus_delay
- Repository: https://github.com/maytiger877/exodus_delay

## Overview

Exodus Delay is a JUCE audio-effect plugin: a host supplies audio and tempo, the processor reads parameter state and configures the delay engine, and processed audio returns to the host. The engine manages delay buffers and up to 16 per-repeat gain, pan, distortion, phaser, and reverb mixes alongside global delay, feedback, and dry/wet settings. The editor exposes those controls. Source excerpts confirm processor-to-engine configuration and engine effect ownership; finer processing order and some unsampled implementation details are not inferred.

Main entry points: [`Source/DelayEngine.cpp`](https://github.com/maytiger877/exodus_delay/blob/main/Source/DelayEngine.cpp) (Delay engine), [`Source/PluginProcessor.cpp`](https://github.com/maytiger877/exodus_delay/blob/main/Source/PluginProcessor.cpp) (Audio processor), [`Source/PluginEditor.cpp`](https://github.com/maytiger877/exodus_delay/blob/main/Source/PluginEditor.cpp) (Plugin editor), [`Source/Parameters.h`](https://github.com/maytiger877/exodus_delay/blob/main/Source/Parameters.h) (Parameter state)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_interface["Plugin interface"]
  node_editor["Plugin editor<br/>[PluginEditor.cpp]"]
  node_uiwidgets["Control styling<br/>[TileSlider.cpp]"]
end

subgraph group_control["Parameters and control"]
  node_parameters["Parameter state<br/>[Parameters.h]"]
  node_delaytime["Delay timing"]
  node_tapsettings["Per-repeat settings<br/>[DelayEngine.h]"]
end

subgraph group_audio["Audio processing"]
  node_processor["Audio processor"]
  node_engine["Delay engine<br/>[DelayEngine.cpp]"]
  node_delaybuffers["Delay buffers<br/>[DelayEngine.h]"]
end

subgraph group_effects["Effect processing"]
  node_distortion["Distortion DSP<br/>[MyDistortion.cpp]"]
  node_phaser["Phaser DSP<br/>[MyPhaser.cpp]"]
  node_reverb["Reverb DSP<br/>[DelayEngine.cpp]"]
end

node_host(("DAW host"))
node_tempo(("Host tempo"))

node_host -->|"audio and MIDI"| node_processor
node_processor -->|"processed audio"| node_host
node_host -.->|"playhead timing"| node_processor
node_editor -->|"edits controls"| node_parameters
node_parameters -->|"supplies values"| node_processor
node_processor -->|"converts sync"| node_delaytime
node_tempo -.->|"provides BPM"| node_delaytime
node_processor -->|"configures and processes"| node_engine
node_engine -->|"reads and writes"| node_delaybuffers
node_engine -->|"sets repeat mix"| node_tapsettings
node_engine -->|"processes distortion"| node_distortion
node_engine -->|"processes phasing"| node_phaser
node_engine -->|"processes reverb"| node_reverb
node_uiwidgets -->|"styles controls"| node_editor

click node_editor "https://github.com/maytiger877/exodus_delay/blob/main/Source/PluginEditor.cpp"
click node_processor "https://github.com/maytiger877/exodus_delay/blob/main/Source/PluginProcessor.cpp"
click node_parameters "https://github.com/maytiger877/exodus_delay/blob/main/Source/Parameters.h"
click node_delaytime "https://github.com/maytiger877/exodus_delay/blob/main/Source/PluginProcessor.cpp"
click node_engine "https://github.com/maytiger877/exodus_delay/blob/main/Source/DelayEngine.cpp"
click node_delaybuffers "https://github.com/maytiger877/exodus_delay/blob/main/Source/DelayEngine.h"
click node_tapsettings "https://github.com/maytiger877/exodus_delay/blob/main/Source/DelayEngine.h"
click node_distortion "https://github.com/maytiger877/exodus_delay/blob/main/Source/MyDistortion.cpp"
click node_phaser "https://github.com/maytiger877/exodus_delay/blob/main/Source/MyPhaser.cpp"
click node_reverb "https://github.com/maytiger877/exodus_delay/blob/main/Source/DelayEngine.cpp"
click node_uiwidgets "https://github.com/maytiger877/exodus_delay/blob/main/Source/TileSlider.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_editor,node_uiwidgets toneBlue
class node_parameters,node_delaytime,node_tapsettings toneAmber
class node_processor,node_engine,node_delaybuffers toneMint
class node_distortion,node_phaser,node_reverb toneRose
class node_host,node_tempo toneIndigo
```

## Components

### Plugin interface

- [Plugin editor](https://github.com/maytiger877/exodus_delay/blob/main/Source/PluginEditor.cpp): `Source/PluginEditor.cpp`
- [Control styling](https://github.com/maytiger877/exodus_delay/blob/main/Source/TileSlider.cpp): `Source/TileSlider.cpp`

### Parameters and control

- [Parameter state](https://github.com/maytiger877/exodus_delay/blob/main/Source/Parameters.h): `Source/Parameters.h`
- [Delay timing](https://github.com/maytiger877/exodus_delay/blob/main/Source/PluginProcessor.cpp): `Source/PluginProcessor.cpp`
- [Per-repeat settings](https://github.com/maytiger877/exodus_delay/blob/main/Source/DelayEngine.h): `Source/DelayEngine.h`

### Audio processing

- [Audio processor](https://github.com/maytiger877/exodus_delay/blob/main/Source/PluginProcessor.cpp): `Source/PluginProcessor.cpp`
- [Delay engine](https://github.com/maytiger877/exodus_delay/blob/main/Source/DelayEngine.cpp): `Source/DelayEngine.cpp`
- [Delay buffers](https://github.com/maytiger877/exodus_delay/blob/main/Source/DelayEngine.h): `Source/DelayEngine.h`

### Effect processing

- [Distortion DSP](https://github.com/maytiger877/exodus_delay/blob/main/Source/MyDistortion.cpp): `Source/MyDistortion.cpp`
- [Phaser DSP](https://github.com/maytiger877/exodus_delay/blob/main/Source/MyPhaser.cpp): `Source/MyPhaser.cpp`
- [Reverb DSP](https://github.com/maytiger877/exodus_delay/blob/main/Source/DelayEngine.cpp): `Source/DelayEngine.cpp`

### Other components

- **DAW host**
- **Host tempo**

## Connections

- DAW host → Audio processor: audio and MIDI
- Audio processor → DAW host: processed audio
- DAW host → Audio processor: playhead timing
- Plugin editor → Parameter state: edits controls
- Parameter state → Audio processor: supplies values
- Audio processor → Delay timing: converts sync
- Host tempo → Delay timing: provides BPM
- Audio processor → Delay engine: configures and processes
- Delay engine → Delay buffers: reads and writes
- Delay engine → Per-repeat settings: sets repeat mix
- Delay engine → Distortion DSP: processes distortion
- Delay engine → Phaser DSP: processes phasing
- Delay engine → Reverb DSP: processes reverb
- Control styling → Plugin editor: styles controls
