How nota-daw/nota works
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: MainWindow.axaml.cs Desktop app · Engine.h Engine core · NotaEngine.Tracks.cs Managed interop · nota_engine.h Native C ABI
Components 21
Music creation
- Desktop app
src/managed/Nota.App/MainWindow.axaml.cs - Arrangement
src/managed/Nota.App/ArrangementView.cs - Session grid
src/native/nota.engine/src/engine/Engine_Session.cpp - Piano roll
src/managed/Nota.App/PianoRollView.cs - Modular view
src/managed/Nota.App/ModularView.cs - Mixer
src/managed/Nota.App/MixerView.cs
Audio engine
- Audio engine port
src/managed/Nota.Application/Engine/IAudioEngine.cs - Managed interop
src/managed/Nota.Infrastructure/Interop/NotaEngine.Tracks.cs - Native C ABI
src/native/nota.engine/include/nota/nota_engine.h - Engine core
src/native/nota.engine/src/engine/Engine.h - Realtime rendering
src/native/nota.engine/src/engine/Engine_Render.cpp - Tracks and clips
src/native/nota.engine/src/engine/Engine_Tracks.cpp
Project content
- Project storage
src/managed/Nota.Infrastructure/Persistence/ProjectService.cs - Content browser
src/managed/Nota.App/BrowserView.cs - Audio export
src/managed/Nota.App/ExportWindow.cs
Devices and extensions
- Plugin hosting
src/native/nota.engine/pluginhost/bridge/PluginHostBridge.h - AI control
src/managed/Nota.Mcp/EngineTools.cs
Remote control
- Phone controller
src/web/remote/src/App.svelte - Phone connection
src/web/remote/src/lib/app.svelte.ts - Remote service
src/managed/Nota.App/Remote/RemoteService.cs
Other components
- Musician
Connections 20
- Musician → Desktop app: uses
README.md - Desktop app → Arrangement: edits timeline
README.md - Desktop app → Session grid: launches clips
README.md - Desktop app → Piano roll: edits MIDI
README.md - Desktop app → Modular view: patches modulation
README.md - Desktop app → Mixer: mixes tracks
README.md - Audio engine port → Managed interop: implemented by
src/managed/Nota.Application/Engine/IAudioEngine.cs - Managed interop → Native C ABI: calls
src/managed/Nota.Infrastructure/Interop/NotaEngine.Tracks.cs - Native C ABI → Engine core: exposes engine
src/native/nota.engine/src/engine/Engine.h - Engine core → Realtime rendering: renders audio
src/native/nota.engine/src/engine/Engine_Render.cpp - Engine core → Tracks and clips: manages tracks
src/native/nota.engine/src/engine/Engine_Tracks.cpp - Engine core → Session grid: handles session
src/native/nota.engine/src/engine/Engine_Session.cpp - Musician → Content browser: browses content
README.md - Musician → Audio export: exports audio
README.md - Desktop app → Project storage: saves versions
README.md - Engine core → Plugin hosting: hosts plugins
- Musician → Phone controller: controls remotely
README.md - Phone controller → Phone connection: uses connection
src/web/remote/src/App.svelte - Phone connection → Remote service: connects to
- Desktop app → AI control: offers optional AI
README.md