# dj-joel/mixxx architecture

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

- Interactive diagram: https://gitdiagram.com/dj-joel/mixxx
- Repository: https://github.com/dj-joel/mixxx

## Overview

Mixxx is live DJ software, with this fork emphasizing Auto DJ 2.0 set planning and video mixing. The principal workflow is to select and analyze tracks, load and play them on decks, then mix and perform through audio effects and output; Auto DJ adds harmonic/energy-aware planning and beatmatched, phrase-aligned transitions. Controller input, broadcasting, and video are important performance branches. The tree and excerpts support several internal layers, but do not expose Auto DJ or video implementation paths, so those nodes have no asserted source path and their internal wiring is omitted.

Main entry points: [`src/database/mixxxdb.cpp`](https://github.com/dj-joel/mixxx/blob/autodj-2/src/database/mixxxdb.cpp) (Track library), [`src/engine/enginebuffer.cpp`](https://github.com/dj-joel/mixxx/blob/autodj-2/src/engine/enginebuffer.cpp) (Deck playback), [`src/controllers/scripting/legacy/controllerscriptenginelegacy.cpp`](https://github.com/dj-joel/mixxx/blob/autodj-2/src/controllers/scripting/legacy/controllerscriptenginelegacy.cpp) (Controller mappings), [`src/controllers/controllermanager.cpp`](https://github.com/dj-joel/mixxx/blob/autodj-2/src/controllers/controllermanager.cpp) (Controller manager)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_library["Library and analysis"]
  node_librarydb[("Track library<br/>[mixxxdb.cpp]")]
  node_trackanalysis["Track analysis<br/>[analyzertrack.cpp]"]
  node_beatkey["Beat and key data<br/>[beatfactory.cpp]"]
end

subgraph group_playback["Playback and mixing"]
  node_deck["Deck playback<br/>[enginebuffer.cpp]"]
  node_effects["Audio effects"]
  node_audio["Audio output<br/>[streaminfo.cpp]"]
end

subgraph group_performance["Live performance"]
  node_controller["Controller manager"]
  node_mapping["Controller mappings"]
  node_rendering["Controller screens"]
  node_broadcast["Broadcast manager"]
end

subgraph group_extensions["Fork capabilities"]
  node_autodj["Auto DJ planner"]
  node_video["Video mixing"]
end

node_dj(("DJ"))
node_listeners(("Audience"))
node_hardware(("DJ hardware"))

node_dj -->|"selects tracks"| node_librarydb
node_librarydb -->|"schedules analysis"| node_trackanalysis
node_trackanalysis -->|"produces analysis"| node_beatkey
node_dj -->|"requests a set"| node_autodj
node_autodj -->|"selects tracks"| node_librarydb
node_autodj -->|"plans transitions"| node_beatkey
node_dj -->|"loads and plays"| node_deck
node_librarydb -->|"supplies track"| node_deck
node_deck -->|"processes audio"| node_effects
node_effects -->|"sends mixed audio"| node_audio
node_dj -->|"performs video mix"| node_video
node_hardware -->|"sends input"| node_controller
node_controller -->|"dispatches events"| node_mapping
node_mapping -->|"controls playback"| node_deck
node_mapping -->|"requests screen frames"| node_rendering
node_rendering -->|"sends frame data"| node_controller
node_audio -->|"provides stream"| node_broadcast
node_broadcast -.->|"broadcasts audio"| node_listeners

click node_librarydb "https://github.com/dj-joel/mixxx/blob/autodj-2/src/database/mixxxdb.cpp"
click node_trackanalysis "https://github.com/dj-joel/mixxx/blob/autodj-2/src/analyzer/analyzertrack.cpp"
click node_beatkey "https://github.com/dj-joel/mixxx/blob/autodj-2/src/track/beatfactory.cpp"
click node_deck "https://github.com/dj-joel/mixxx/blob/autodj-2/src/engine/enginebuffer.cpp"
click node_effects "https://github.com/dj-joel/mixxx/blob/autodj-2/src/engine/effects/engineeffectsmanager.cpp"
click node_audio "https://github.com/dj-joel/mixxx/blob/autodj-2/src/audio/streaminfo.cpp"
click node_controller "https://github.com/dj-joel/mixxx/blob/autodj-2/src/controllers/controllermanager.cpp"
click node_mapping "https://github.com/dj-joel/mixxx/blob/autodj-2/src/controllers/scripting/legacy/controllerscriptenginelegacy.cpp"
click node_rendering "https://github.com/dj-joel/mixxx/blob/autodj-2/src/controllers/rendering/controllerrenderingengine.cpp"
click node_broadcast "https://github.com/dj-joel/mixxx/blob/autodj-2/src/broadcast/broadcastmanager.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_librarydb,node_trackanalysis,node_beatkey toneBlue
class node_deck,node_effects,node_audio toneAmber
class node_controller,node_mapping,node_rendering,node_broadcast toneMint
class node_autodj,node_video toneRose
class node_dj,node_listeners,node_hardware toneIndigo
```

## Components

### Library and analysis

- [Track library](https://github.com/dj-joel/mixxx/blob/autodj-2/src/database/mixxxdb.cpp): `src/database/mixxxdb.cpp`
- [Track analysis](https://github.com/dj-joel/mixxx/blob/autodj-2/src/analyzer/analyzertrack.cpp): `src/analyzer/analyzertrack.cpp`
- [Beat and key data](https://github.com/dj-joel/mixxx/blob/autodj-2/src/track/beatfactory.cpp): `src/track/beatfactory.cpp`

### Playback and mixing

- [Deck playback](https://github.com/dj-joel/mixxx/blob/autodj-2/src/engine/enginebuffer.cpp): `src/engine/enginebuffer.cpp`
- [Audio effects](https://github.com/dj-joel/mixxx/blob/autodj-2/src/engine/effects/engineeffectsmanager.cpp): `src/engine/effects/engineeffectsmanager.cpp`
- [Audio output](https://github.com/dj-joel/mixxx/blob/autodj-2/src/audio/streaminfo.cpp): `src/audio/streaminfo.cpp`

### Live performance

- [Controller manager](https://github.com/dj-joel/mixxx/blob/autodj-2/src/controllers/controllermanager.cpp): `src/controllers/controllermanager.cpp`
- [Controller mappings](https://github.com/dj-joel/mixxx/blob/autodj-2/src/controllers/scripting/legacy/controllerscriptenginelegacy.cpp): `src/controllers/scripting/legacy/controllerscriptenginelegacy.cpp`
- [Controller screens](https://github.com/dj-joel/mixxx/blob/autodj-2/src/controllers/rendering/controllerrenderingengine.cpp): `src/controllers/rendering/controllerrenderingengine.cpp`
- [Broadcast manager](https://github.com/dj-joel/mixxx/blob/autodj-2/src/broadcast/broadcastmanager.cpp): `src/broadcast/broadcastmanager.cpp`

### Fork capabilities

- **Auto DJ planner**
- **Video mixing**

### Other components

- **DJ**
- **Audience**
- **DJ hardware**

## Connections

- DJ → Track library: selects tracks
- Track library → Track analysis: schedules analysis
- Track analysis → Beat and key data: produces analysis
- DJ → Auto DJ planner: requests a set
- Auto DJ planner → Track library: selects tracks
- Auto DJ planner → Beat and key data: plans transitions
- DJ → Deck playback: loads and plays
- Track library → Deck playback: supplies track
- Deck playback → Audio effects: processes audio
- Audio effects → Audio output: sends mixed audio
- DJ → Video mixing: performs video mix
- DJ hardware → Controller manager: sends input
- Controller manager → Controller mappings: dispatches events
- Controller mappings → Deck playback: controls playback
- Controller mappings → Controller screens: requests screen frames
- Controller screens → Controller manager: sends frame data
- Audio output → Broadcast manager: provides stream
- Broadcast manager → Audience: broadcasts audio
