# nota-daw/nota architecture

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

- Interactive diagram: https://gitdiagram.com/nota-daw/nota
- Repository: https://github.com/nota-daw/nota

## Overview

Nota is a cross-platform digital audio workstation. A musician edits or launches musical material in its Arrangement, Session, piano-roll and Modular views, then plays or records it through the audio engine and mixer; projects can also be exported. The managed application communicates with the native real-time engine through an engine port and C ABI. The README documents plugin hosting, browsing, version history, optional AI control and phone-based remote operation. Some subsystem links are documented rather than verified in unsampled implementation files.

Main entry points: [`src/managed/Nota.App/MainWindow.axaml.cs`](https://github.com/nota-daw/nota/blob/develop/src/managed/Nota.App/MainWindow.axaml.cs) (Desktop app), [`src/native/nota.engine/src/engine/Engine.h`](https://github.com/nota-daw/nota/blob/develop/src/native/nota.engine/src/engine/Engine.h) (Engine core), [`src/managed/Nota.Infrastructure/Interop/NotaEngine.Tracks.cs`](https://github.com/nota-daw/nota/blob/develop/src/managed/Nota.Infrastructure/Interop/NotaEngine.Tracks.cs) (Managed interop), [`src/native/nota.engine/include/nota/nota_engine.h`](https://github.com/nota-daw/nota/blob/develop/src/native/nota.engine/include/nota/nota_engine.h) (Native C ABI)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_creative["Music creation"]
  node_desktop["Desktop app"]
  node_arrangement["Arrangement<br/>[ArrangementView.cs]"]
  node_session["Session grid<br/>[Engine_Session.cpp]"]
  node_pianoroll["Piano roll<br/>[PianoRollView.cs]"]
  node_modular["Modular view<br/>[ModularView.cs]"]
  node_mixer["Mixer<br/>[MixerView.cs]"]
end

subgraph group_audio["Audio engine"]
  node_engineport["Audio engine port<br/>[IAudioEngine.cs]"]
  node_interop["Managed interop"]
  node_abi["Native C ABI<br/>[nota_engine.h]"]
  node_engine["Engine core<br/>[Engine.h]"]
  node_render["Realtime rendering<br/>[Engine_Render.cpp]"]
  node_trackengine["Tracks and clips<br/>[Engine_Tracks.cpp]"]
end

subgraph group_content["Project content"]
  node_projectstore[("Project storage<br/>[ProjectService.cs]")]
  node_browser["Content browser<br/>[BrowserView.cs]"]
  node_export["Audio export<br/>[ExportWindow.cs]"]
end

subgraph group_extensions["Devices and extensions"]
  node_pluginhost["Plugin hosting<br/>[PluginHostBridge.h]"]
  node_mcp["AI control<br/>[EngineTools.cs]"]
end

subgraph group_remote["Remote control"]
  node_phone["Phone controller<br/>[App.svelte]"]
  node_phoneclient["Phone connection<br/>[app.svelte.ts]"]
  node_remoteservice["Remote service<br/>[RemoteService.cs]"]
end

node_musician(("Musician"))

node_musician -->|"uses"| node_desktop
node_desktop -->|"edits timeline"| node_arrangement
node_desktop -->|"launches clips"| node_session
node_desktop -->|"edits MIDI"| node_pianoroll
node_desktop -->|"patches modulation"| node_modular
node_desktop -->|"mixes tracks"| node_mixer
node_engineport -->|"implemented by"| node_interop
node_interop -->|"calls"| node_abi
node_abi -.->|"exposes engine"| node_engine
node_engine -->|"renders audio"| node_render
node_engine -->|"manages tracks"| node_trackengine
node_engine -->|"handles session"| node_session
node_musician -->|"browses content"| node_browser
node_musician -->|"exports audio"| node_export
node_desktop -->|"saves versions"| node_projectstore
node_engine -.->|"hosts plugins"| node_pluginhost
node_musician -->|"controls remotely"| node_phone
node_phone -->|"uses connection"| node_phoneclient
node_phoneclient -.->|"connects to"| node_remoteservice
node_desktop -.->|"offers optional AI"| node_mcp

click node_desktop "https://github.com/nota-daw/nota/blob/develop/src/managed/Nota.App/MainWindow.axaml.cs"
click node_arrangement "https://github.com/nota-daw/nota/blob/develop/src/managed/Nota.App/ArrangementView.cs"
click node_session "https://github.com/nota-daw/nota/blob/develop/src/native/nota.engine/src/engine/Engine_Session.cpp"
click node_pianoroll "https://github.com/nota-daw/nota/blob/develop/src/managed/Nota.App/PianoRollView.cs"
click node_modular "https://github.com/nota-daw/nota/blob/develop/src/managed/Nota.App/ModularView.cs"
click node_mixer "https://github.com/nota-daw/nota/blob/develop/src/managed/Nota.App/MixerView.cs"
click node_engineport "https://github.com/nota-daw/nota/blob/develop/src/managed/Nota.Application/Engine/IAudioEngine.cs"
click node_interop "https://github.com/nota-daw/nota/blob/develop/src/managed/Nota.Infrastructure/Interop/NotaEngine.Tracks.cs"
click node_abi "https://github.com/nota-daw/nota/blob/develop/src/native/nota.engine/include/nota/nota_engine.h"
click node_engine "https://github.com/nota-daw/nota/blob/develop/src/native/nota.engine/src/engine/Engine.h"
click node_render "https://github.com/nota-daw/nota/blob/develop/src/native/nota.engine/src/engine/Engine_Render.cpp"
click node_trackengine "https://github.com/nota-daw/nota/blob/develop/src/native/nota.engine/src/engine/Engine_Tracks.cpp"
click node_projectstore "https://github.com/nota-daw/nota/blob/develop/src/managed/Nota.Infrastructure/Persistence/ProjectService.cs"
click node_browser "https://github.com/nota-daw/nota/blob/develop/src/managed/Nota.App/BrowserView.cs"
click node_export "https://github.com/nota-daw/nota/blob/develop/src/managed/Nota.App/ExportWindow.cs"
click node_pluginhost "https://github.com/nota-daw/nota/blob/develop/src/native/nota.engine/pluginhost/bridge/PluginHostBridge.h"
click node_mcp "https://github.com/nota-daw/nota/blob/develop/src/managed/Nota.Mcp/EngineTools.cs"
click node_phone "https://github.com/nota-daw/nota/blob/develop/src/web/remote/src/App.svelte"
click node_phoneclient "https://github.com/nota-daw/nota/blob/develop/src/web/remote/src/lib/app.svelte.ts"
click node_remoteservice "https://github.com/nota-daw/nota/blob/develop/src/managed/Nota.App/Remote/RemoteService.cs"

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_desktop,node_arrangement,node_session,node_pianoroll,node_modular,node_mixer toneBlue
class node_engineport,node_interop,node_abi,node_engine,node_render,node_trackengine toneAmber
class node_projectstore,node_browser,node_export toneMint
class node_pluginhost,node_mcp toneRose
class node_phone,node_phoneclient,node_remoteservice,node_musician toneIndigo
```

## Components

### Music creation

- [Desktop app](https://github.com/nota-daw/nota/blob/develop/src/managed/Nota.App/MainWindow.axaml.cs): `src/managed/Nota.App/MainWindow.axaml.cs`
- [Arrangement](https://github.com/nota-daw/nota/blob/develop/src/managed/Nota.App/ArrangementView.cs): `src/managed/Nota.App/ArrangementView.cs`
- [Session grid](https://github.com/nota-daw/nota/blob/develop/src/native/nota.engine/src/engine/Engine_Session.cpp): `src/native/nota.engine/src/engine/Engine_Session.cpp`
- [Piano roll](https://github.com/nota-daw/nota/blob/develop/src/managed/Nota.App/PianoRollView.cs): `src/managed/Nota.App/PianoRollView.cs`
- [Modular view](https://github.com/nota-daw/nota/blob/develop/src/managed/Nota.App/ModularView.cs): `src/managed/Nota.App/ModularView.cs`
- [Mixer](https://github.com/nota-daw/nota/blob/develop/src/managed/Nota.App/MixerView.cs): `src/managed/Nota.App/MixerView.cs`

### Audio engine

- [Audio engine port](https://github.com/nota-daw/nota/blob/develop/src/managed/Nota.Application/Engine/IAudioEngine.cs): `src/managed/Nota.Application/Engine/IAudioEngine.cs`
- [Managed interop](https://github.com/nota-daw/nota/blob/develop/src/managed/Nota.Infrastructure/Interop/NotaEngine.Tracks.cs): `src/managed/Nota.Infrastructure/Interop/NotaEngine.Tracks.cs`
- [Native C ABI](https://github.com/nota-daw/nota/blob/develop/src/native/nota.engine/include/nota/nota_engine.h): `src/native/nota.engine/include/nota/nota_engine.h`
- [Engine core](https://github.com/nota-daw/nota/blob/develop/src/native/nota.engine/src/engine/Engine.h): `src/native/nota.engine/src/engine/Engine.h`
- [Realtime rendering](https://github.com/nota-daw/nota/blob/develop/src/native/nota.engine/src/engine/Engine_Render.cpp): `src/native/nota.engine/src/engine/Engine_Render.cpp`
- [Tracks and clips](https://github.com/nota-daw/nota/blob/develop/src/native/nota.engine/src/engine/Engine_Tracks.cpp): `src/native/nota.engine/src/engine/Engine_Tracks.cpp`

### Project content

- [Project storage](https://github.com/nota-daw/nota/blob/develop/src/managed/Nota.Infrastructure/Persistence/ProjectService.cs): `src/managed/Nota.Infrastructure/Persistence/ProjectService.cs`
- [Content browser](https://github.com/nota-daw/nota/blob/develop/src/managed/Nota.App/BrowserView.cs): `src/managed/Nota.App/BrowserView.cs`
- [Audio export](https://github.com/nota-daw/nota/blob/develop/src/managed/Nota.App/ExportWindow.cs): `src/managed/Nota.App/ExportWindow.cs`

### Devices and extensions

- [Plugin hosting](https://github.com/nota-daw/nota/blob/develop/src/native/nota.engine/pluginhost/bridge/PluginHostBridge.h): `src/native/nota.engine/pluginhost/bridge/PluginHostBridge.h`
- [AI control](https://github.com/nota-daw/nota/blob/develop/src/managed/Nota.Mcp/EngineTools.cs): `src/managed/Nota.Mcp/EngineTools.cs`

### Remote control

- [Phone controller](https://github.com/nota-daw/nota/blob/develop/src/web/remote/src/App.svelte): `src/web/remote/src/App.svelte`
- [Phone connection](https://github.com/nota-daw/nota/blob/develop/src/web/remote/src/lib/app.svelte.ts): `src/web/remote/src/lib/app.svelte.ts`
- [Remote service](https://github.com/nota-daw/nota/blob/develop/src/managed/Nota.App/Remote/RemoteService.cs): `src/managed/Nota.App/Remote/RemoteService.cs`

### Other components

- **Musician**

## Connections

- Musician → Desktop app: uses (evidence: `README.md`)
- Desktop app → Arrangement: edits timeline (evidence: `README.md`)
- Desktop app → Session grid: launches clips (evidence: `README.md`)
- Desktop app → Piano roll: edits MIDI (evidence: `README.md`)
- Desktop app → Modular view: patches modulation (evidence: `README.md`)
- Desktop app → Mixer: mixes tracks (evidence: `README.md`)
- Audio engine port → Managed interop: implemented by (evidence: `src/managed/Nota.Application/Engine/IAudioEngine.cs`)
- Managed interop → Native C ABI: calls (evidence: `src/managed/Nota.Infrastructure/Interop/NotaEngine.Tracks.cs`)
- Native C ABI → Engine core: exposes engine (evidence: `src/native/nota.engine/src/engine/Engine.h`)
- Engine core → Realtime rendering: renders audio (evidence: `src/native/nota.engine/src/engine/Engine_Render.cpp`)
- Engine core → Tracks and clips: manages tracks (evidence: `src/native/nota.engine/src/engine/Engine_Tracks.cpp`)
- Engine core → Session grid: handles session (evidence: `src/native/nota.engine/src/engine/Engine_Session.cpp`)
- Musician → Content browser: browses content (evidence: `README.md`)
- Musician → Audio export: exports audio (evidence: `README.md`)
- Desktop app → Project storage: saves versions (evidence: `README.md`)
- Engine core → Plugin hosting: hosts plugins
- Musician → Phone controller: controls remotely (evidence: `README.md`)
- Phone controller → Phone connection: uses connection (evidence: `src/web/remote/src/App.svelte`)
- Phone connection → Remote service: connects to
- Desktop app → AI control: offers optional AI (evidence: `README.md`)
