# mtytel/vital architecture

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

- Interactive diagram: https://gitdiagram.com/mtytel/vital
- Repository: https://github.com/mtytel/vital

## Overview

Vital is a spectral-warping wavetable synthesizer, exposed as a plugin and a standalone application. The user-facing path is MIDI or keyboard input into the voice and synthesis engines, through effects and audio output; the editor configures sound and manages presets, samples, and wavetables. The graph also preserves wavetable creation/editing and modulation as distinct capabilities. Some links are supported only by the SOURCE INDEX’s import references or documented product description; unsampled implementation details are not asserted.

Main entry points: [`src/synthesis/synth_engine/sound_engine.cpp`](https://github.com/mtytel/vital/blob/main/src/synthesis/synth_engine/sound_engine.cpp) (Voice Synthesis Engine), [`src/interface/editor_sections/full_interface.cpp`](https://github.com/mtytel/vital/blob/main/src/interface/editor_sections/full_interface.cpp) (Synth Editor), [`src/standalone/main.cpp`](https://github.com/mtytel/vital/blob/main/src/standalone/main.cpp) (Standalone Entry), [`src/plugin/synth_plugin.cpp`](https://github.com/mtytel/vital/blob/main/src/plugin/synth_plugin.cpp) (Plugin Host Entry)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_entry["Applications"]
  node_plugin["Plugin Host Entry<br/>[synth_plugin.cpp]"]
  node_standalone["Standalone Entry<br/>[main.cpp]"]
end

subgraph group_editor["Sound Design UI"]
  node_editor_ui["Synth Editor<br/>[full_interface.cpp]"]
  node_mod_ui["Modulation Manager"]
  node_effect_ui["Effect Ordering"]
end

subgraph group_state["Sound and Assets"]
  node_midi["MIDI Manager<br/>[midi_manager.cpp]"]
  node_persistence["Preset and State I/O<br/>[load_save.h]"]
  node_tuning["Tuning<br/>[tuning.h]"]
end

subgraph group_synth["Synthesis Runtime"]
  node_framework["Processor Framework<br/>[operators.h]"]
  node_module["Synth Modules<br/>[synth_module.h]"]
  node_voice["Voice Handler"]
  node_osc["Oscillator Producers"]
  node_modulation["Modulation Processor"]
  node_synth_engine["Voice Synthesis Engine<br/>[sound_engine.cpp]"]
  node_effects_engine["Effects Engine<br/>[sound_engine.cpp]"]
  node_effects["Effect Modules"]
end

subgraph group_wave["Wavetable System"]
  node_wavemaker["Wavetable Creator"]
  node_wavegroup["Wavetable Components"]
  node_wavetable["Wavetable Lookup<br/>[wavetable.cpp]"]
end

node_user(("Musician"))
node_output(("Audio Output"))

node_user -.->|"plays through"| node_plugin
node_user -.->|"plays through"| node_standalone
node_plugin -->|"creates editor"| node_editor_ui
node_standalone -->|"creates editor"| node_editor_ui
node_standalone -->|"uses state I/O"| node_persistence
node_standalone -->|"uses tuning"| node_tuning
node_plugin -->|"uses engine"| node_synth_engine
node_midi -->|"sends note events"| node_synth_engine
node_synth_engine -->|"sets tuning"| node_tuning
node_synth_engine -->|"dispatches voices"| node_voice
node_voice -->|"uses operators"| node_framework
node_voice -->|"uses modulation"| node_modulation
node_synth_engine -->|"builds processing"| node_framework
node_synth_engine -.->|"renders audio"| node_output
node_effects_engine -->|"processes effects"| node_effects
node_effects_engine -.->|"renders audio"| node_output
node_mod_ui -->|"configures links"| node_modulation
node_effect_ui -->|"supports ordering"| node_editor_ui
node_editor_ui -.->|"manages presets"| node_persistence
node_wavemaker -->|"creates tables"| node_wavegroup
node_wavemaker -->|"builds frames"| node_wavetable
node_osc -.->|"reads tables"| node_wavetable
node_editor_ui -.->|"edits tables"| node_wavemaker

click node_plugin "https://github.com/mtytel/vital/blob/main/src/plugin/synth_plugin.cpp"
click node_standalone "https://github.com/mtytel/vital/blob/main/src/standalone/main.cpp"
click node_editor_ui "https://github.com/mtytel/vital/blob/main/src/interface/editor_sections/full_interface.cpp"
click node_mod_ui "https://github.com/mtytel/vital/blob/main/src/interface/editor_sections/modulation_manager.cpp"
click node_effect_ui "https://github.com/mtytel/vital/blob/main/src/interface/editor_components/drag_drop_effect_order.cpp"
click node_midi "https://github.com/mtytel/vital/blob/main/src/common/midi_manager.cpp"
click node_persistence "https://github.com/mtytel/vital/blob/main/src/common/load_save.h"
click node_tuning "https://github.com/mtytel/vital/blob/main/src/common/tuning.h"
click node_wavemaker "https://github.com/mtytel/vital/blob/main/src/common/wavetable/wavetable_creator.cpp"
click node_wavegroup "https://github.com/mtytel/vital/blob/main/src/common/wavetable/wavetable_group.cpp"
click node_wavetable "https://github.com/mtytel/vital/blob/main/src/synthesis/lookups/wavetable.cpp"
click node_framework "https://github.com/mtytel/vital/blob/main/src/synthesis/framework/operators.h"
click node_module "https://github.com/mtytel/vital/blob/main/src/synthesis/framework/synth_module.h"
click node_voice "https://github.com/mtytel/vital/blob/main/src/synthesis/modules/synth_voice_handler.cpp"
click node_osc "https://github.com/mtytel/vital/blob/main/src/synthesis/producers/synth_oscillator.cpp"
click node_modulation "https://github.com/mtytel/vital/blob/main/src/synthesis/modules/modulation_connection_processor.h"
click node_synth_engine "https://github.com/mtytel/vital/blob/main/src/synthesis/synth_engine/sound_engine.cpp"
click node_effects_engine "https://github.com/mtytel/vital/blob/main/src/synthesis/effects_engine/sound_engine.cpp"
click node_effects "https://github.com/mtytel/vital/blob/main/src/synthesis/modules/reorderable_effect_chain.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_plugin,node_standalone toneBlue
class node_editor_ui,node_mod_ui,node_effect_ui toneAmber
class node_midi,node_persistence,node_tuning toneMint
class node_framework,node_module,node_voice,node_osc,node_modulation,node_synth_engine,node_effects_engine,node_effects toneRose
class node_wavemaker,node_wavegroup,node_wavetable,node_user,node_output toneIndigo
```

## Components

### Applications

- [Plugin Host Entry](https://github.com/mtytel/vital/blob/main/src/plugin/synth_plugin.cpp): `src/plugin/synth_plugin.cpp`
- [Standalone Entry](https://github.com/mtytel/vital/blob/main/src/standalone/main.cpp): `src/standalone/main.cpp`

### Sound Design UI

- [Synth Editor](https://github.com/mtytel/vital/blob/main/src/interface/editor_sections/full_interface.cpp): `src/interface/editor_sections/full_interface.cpp`
- [Modulation Manager](https://github.com/mtytel/vital/blob/main/src/interface/editor_sections/modulation_manager.cpp): `src/interface/editor_sections/modulation_manager.cpp`
- [Effect Ordering](https://github.com/mtytel/vital/blob/main/src/interface/editor_components/drag_drop_effect_order.cpp): `src/interface/editor_components/drag_drop_effect_order.cpp`

### Sound and Assets

- [MIDI Manager](https://github.com/mtytel/vital/blob/main/src/common/midi_manager.cpp): `src/common/midi_manager.cpp`
- [Preset and State I/O](https://github.com/mtytel/vital/blob/main/src/common/load_save.h): `src/common/load_save.h`
- [Tuning](https://github.com/mtytel/vital/blob/main/src/common/tuning.h): `src/common/tuning.h`

### Synthesis Runtime

- [Processor Framework](https://github.com/mtytel/vital/blob/main/src/synthesis/framework/operators.h): `src/synthesis/framework/operators.h`
- [Synth Modules](https://github.com/mtytel/vital/blob/main/src/synthesis/framework/synth_module.h): `src/synthesis/framework/synth_module.h`
- [Voice Handler](https://github.com/mtytel/vital/blob/main/src/synthesis/modules/synth_voice_handler.cpp): `src/synthesis/modules/synth_voice_handler.cpp`
- [Oscillator Producers](https://github.com/mtytel/vital/blob/main/src/synthesis/producers/synth_oscillator.cpp): `src/synthesis/producers/synth_oscillator.cpp`
- [Modulation Processor](https://github.com/mtytel/vital/blob/main/src/synthesis/modules/modulation_connection_processor.h): `src/synthesis/modules/modulation_connection_processor.h`
- [Voice Synthesis Engine](https://github.com/mtytel/vital/blob/main/src/synthesis/synth_engine/sound_engine.cpp): `src/synthesis/synth_engine/sound_engine.cpp`
- [Effects Engine](https://github.com/mtytel/vital/blob/main/src/synthesis/effects_engine/sound_engine.cpp): `src/synthesis/effects_engine/sound_engine.cpp`
- [Effect Modules](https://github.com/mtytel/vital/blob/main/src/synthesis/modules/reorderable_effect_chain.cpp): `src/synthesis/modules/reorderable_effect_chain.cpp`

### Wavetable System

- [Wavetable Creator](https://github.com/mtytel/vital/blob/main/src/common/wavetable/wavetable_creator.cpp): `src/common/wavetable/wavetable_creator.cpp`
- [Wavetable Components](https://github.com/mtytel/vital/blob/main/src/common/wavetable/wavetable_group.cpp): `src/common/wavetable/wavetable_group.cpp`
- [Wavetable Lookup](https://github.com/mtytel/vital/blob/main/src/synthesis/lookups/wavetable.cpp): `src/synthesis/lookups/wavetable.cpp`

### Other components

- **Musician**
- **Audio Output**

## Connections

- Musician → Plugin Host Entry: plays through
- Musician → Standalone Entry: plays through
- Plugin Host Entry → Synth Editor: creates editor (evidence: `src/plugin/synth_plugin.cpp`)
- Standalone Entry → Synth Editor: creates editor (evidence: `src/standalone/main.cpp`)
- Standalone Entry → Preset and State I/O: uses state I/O (evidence: `src/standalone/main.cpp`)
- Standalone Entry → Tuning: uses tuning (evidence: `src/standalone/main.cpp`)
- Plugin Host Entry → Voice Synthesis Engine: uses engine (evidence: `src/plugin/synth_plugin.cpp`)
- MIDI Manager → Voice Synthesis Engine: sends note events (evidence: `src/common/midi_manager.cpp`)
- Voice Synthesis Engine → Tuning: sets tuning (evidence: `src/synthesis/synth_engine/sound_engine.cpp`)
- Voice Synthesis Engine → Voice Handler: dispatches voices (evidence: `src/synthesis/synth_engine/sound_engine.cpp`)
- Voice Handler → Processor Framework: uses operators (evidence: `src/synthesis/modules/synth_voice_handler.cpp`)
- Voice Handler → Modulation Processor: uses modulation (evidence: `src/synthesis/modules/synth_voice_handler.cpp`)
- Voice Synthesis Engine → Processor Framework: builds processing (evidence: `src/synthesis/synth_engine/sound_engine.cpp`)
- Voice Synthesis Engine → Audio Output: renders audio
- Effects Engine → Effect Modules: processes effects (evidence: `src/synthesis/effects_engine/sound_engine.cpp`)
- Effects Engine → Audio Output: renders audio
- Modulation Manager → Modulation Processor: configures links (evidence: `src/interface/editor_sections/modulation_manager.cpp`)
- Effect Ordering → Synth Editor: supports ordering (evidence: `src/interface/editor_components/drag_drop_effect_order.cpp`)
- Synth Editor → Preset and State I/O: manages presets
- Wavetable Creator → Wavetable Components: creates tables (evidence: `src/common/wavetable/wavetable_creator.cpp`)
- Wavetable Creator → Wavetable Lookup: builds frames (evidence: `src/common/wavetable/wavetable_creator.cpp`)
- Oscillator Producers → Wavetable Lookup: reads tables
- Synth Editor → Wavetable Creator: edits tables
