Aestra

๐Ÿงญ Aestra Architecture Overview

Architecture C++17

Comprehensive overview of Aestraโ€™s modular architecture, covering Core, UI, Audio, and Platform systems.

๐Ÿ“‹ Table of Contents

๐Ÿ—๏ธ System Overview

Aestra is built with a clean, modular architecture that separates concerns into distinct subsystems:

โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚                    Aestra Application                     โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
            โ”‚                 โ”‚
      โ”Œโ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”     โ”Œโ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”
      โ”‚  AestraUI  โ”‚     โ”‚ AestraAudioโ”‚
      โ”‚ Framework โ”‚     โ”‚   Engine  โ”‚
      โ””โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”˜     โ””โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”˜
            โ”‚                 โ”‚
      โ”Œโ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”
      โ”‚          AestraCore            โ”‚
      โ”‚  (Platform abstraction,       โ”‚
      โ”‚   utilities, types)            โ”‚
      โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
            โ”‚                 โ”‚
      โ”Œโ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”     โ”Œโ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”
      โ”‚  Windows  โ”‚     โ”‚   Linux   โ”‚
      โ”‚  Platform โ”‚     โ”‚  Platform โ”‚
      โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜     โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜

๐Ÿงฉ Core Modules

AestraCore

Purpose: Foundation layer providing platform abstraction, utilities, and common types.

Location: Aestra-core/, AestraCore/

Key Components:

Public API:

namespace Aestra {
    namespace core {
        // Platform abstraction
        class FileSystem;
        class Thread;
        class Mutex;

        // Utilities
        class Logger;
        class Timer;
    }
}

AestraUI

Purpose: GPU-accelerated custom UI framework with immediate-mode rendering.

Location: AestraUI/

Key Components:

Architecture:

AestraUI/
โ”œโ”€โ”€ Core/           # Core UI framework
โ”‚   โ”œโ”€โ”€ NUIWidget   # Base widget class
โ”‚   โ”œโ”€โ”€ NUIWindow   # Window management
โ”‚   โ””โ”€โ”€ NUIRenderer # OpenGL rendering
โ”œโ”€โ”€ Widgets/        # Standard UI widgets
โ”‚   โ”œโ”€โ”€ NUIButton
โ”‚   โ”œโ”€โ”€ NUISlider
โ”‚   โ”œโ”€โ”€ NUITextBox
โ”‚   โ””โ”€โ”€ NUIDropdown
โ””โ”€โ”€ Layout/         # Layout system
    โ”œโ”€โ”€ NUILayout
    โ””โ”€โ”€ NUIConstraints

Key Features:

AestraAudio

Purpose: Professional audio engine with ultra-low latency processing.

Location: AestraAudio/

Key Components:

Architecture:

AestraAudio/
โ”œโ”€โ”€ Drivers/
โ”‚   โ”œโ”€โ”€ AudioDriver         # Abstract driver interface
โ”‚   โ”œโ”€โ”€ WASAPIDriver        # Windows WASAPI implementation
โ”‚   โ””โ”€โ”€ ALSADriver          # Linux ALSA implementation
โ”œโ”€โ”€ Core/
โ”‚   โ”œโ”€โ”€ AudioEngine         # Main audio engine
โ”‚   โ”œโ”€โ”€ Track               # Individual audio track
โ”‚   โ”œโ”€โ”€ AudioBuffer         # Lock-free buffer
โ”‚   โ””โ”€โ”€ SampleCache         # Waveform caching
โ””โ”€โ”€ Processing/
    โ”œโ”€โ”€ Mixer               # Audio mixing
    โ””โ”€โ”€ Effects             # Audio effects (future)

Key Features:

Muse AI โ€” Post-Beta

AI features are explicitly deferred until after v1 Beta. The roadmap cuts AI features from Beta scope to focus on core DAW stability. Muse integration will resume only after the base product is shippable.

AestraPlat

Purpose: Platform-specific implementations and windowing.

Location: AestraPlat/

Key Components:

๐ŸŽฏ Architecture Principles

1. Separation of Concerns

Each module has a clear, focused responsibility:

2. Dependency Hierarchy

Application
    โ†“
AestraUI + AestraAudio + Muse
    โ†“
AestraCore
    โ†“
AestraPlat (Platform Layer)
    โ†“
OS APIs (Windows, Linux, macOS)

Rules:

3. Interface-based Design

Abstract interfaces allow for multiple implementations:

// Abstract audio driver interface
class AudioDriver {
public:
    virtual bool initialize(int sampleRate, int bufferSize) = 0;
    virtual void start() = 0;
    virtual void stop() = 0;
    virtual ~AudioDriver() = default;
};

// Concrete implementations
class WASAPIDriver : public AudioDriver { ... };
class ALSADriver : public AudioDriver { ... };

4. Real-time Constraints

Audio thread is lock-free:

5. Data-Oriented Design

Cache-friendly data layouts for performance:

๐Ÿ”„ Data Flow

Audio Processing Pipeline

[Audio Files]
     โ†“
[Sample Loader] โ†’ [Sample Cache]
     โ†“                    โ†“
[Track Manager] โ†’ [Waveform Cache]
     โ†“
[Audio Mixer]
     โ†“
[Audio Driver] โ†’ [WASAPI/ALSA]
     โ†“
[Hardware Output]

UI Rendering Pipeline

[User Input]
     โ†“
[Event Handler]
     โ†“
[Widget Tree] โ†’ [Layout Engine]
     โ†“
[OpenGL Renderer]
     โ†“
[Display Output]

Complete System Flow

โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”     โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”     โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚   User     โ”‚โ”€โ”€โ”€โ”€โ†’โ”‚   AestraUI   โ”‚โ”€โ”€โ”€โ”€โ†’โ”‚ Application  โ”‚
โ”‚   Input    โ”‚     โ”‚   Events    โ”‚     โ”‚   Logic      โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜     โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜     โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
                                              โ”‚
                   โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
                   โ”‚
        โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
        โ†“                     โ†“
โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”     โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚  UI Updates   โ”‚     โ”‚ Audio Engine โ”‚
โ”‚  (Main Thread)โ”‚     โ”‚(Audio Thread)โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜     โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
        โ”‚                    โ”‚
        โ†“                    โ†“
โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”     โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚   Renderer    โ”‚     โ”‚ Audio Driver โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜     โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜

๐Ÿงต Threading Model

Thread Architecture

Aestra uses a multi-threaded architecture with strict thread separation:

โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚   Main Thread   โ”‚  UI, event handling, application logic
โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
โ”‚  Audio Thread   โ”‚  Real-time audio processing (lock-free)
โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
โ”‚  Loader Thread  โ”‚  Async file I/O, sample loading
โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
โ”‚  Render Thread  โ”‚  GPU rendering (optional, future)
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜

Thread Responsibilities

Main Thread (UI Thread)

Priority: Normal

Audio Thread

Priority: Real-time (highest) Constraints: Lock-free, no allocations, no blocking

Loader Thread

Priority: Background (low)

Thread Communication

Lock-free communication between threads:

// Main โ†’ Audio: Commands via lock-free queue
LockFreeQueue<AudioCommand> commandQueue;

// Audio โ†’ Main: State updates via atomic flags
std::atomic<bool> isPlaying;
std::atomic<int> currentPosition;

// Example: Start playback
commandQueue.push(AudioCommand::Start);  // Main thread
// Audio thread processes command in callback

Synchronization Primitives

๐Ÿ“Š Performance Characteristics

AestraUI

AestraAudio

Memory

๐Ÿ” Security Considerations

Public vs Private Code

Public (Aestra-core/):

Private (not in public repo):

Security Measures

๐Ÿ“š Module Dependencies

โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚              Source/ (Application)           โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
        โ†“                โ†“              โ†“
โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”  โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”  โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚   AestraUI    โ”‚  โ”‚  AestraAudio  โ”‚  โ”‚   Muse   โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜  โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜  โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
        โ†“                โ†“              โ†“
โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚              AestraCore / Aestra-core          โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
        โ†“                โ†“              โ†“
โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”  โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”  โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚  AestraPlat   โ”‚  โ”‚  Windows API โ”‚  โ”‚ Linux APIโ”‚
โ”‚ (Win/Linux)  โ”‚  โ”‚   (WASAPI)   โ”‚  โ”‚  (ALSA)  โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜  โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜  โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜

๐Ÿ”ฎ Future Architecture Plans

v1 Beta Focus (Dec 2026)

  1. Internal Arsenal Plugins โ€” Built-in instruments (Rumble) validated through discovery, persistence, and audible playback
  2. Recording Reliability โ€” Multi-track audio recording with device stress testing
  3. Offline Render/Export โ€” Bounce that matches playback
  4. Plugin Decision Gate โ€” VST3/CLAP hosting ships only if it can be made boringly stable (Phase 4, Sep 2026)

Post-Beta (Deferred)

Scalability

๐Ÿ“š Additional Resources


โ† Return to Aestra Docs Index