Comprehensive overview of Aestraโs modular architecture, covering Core, UI, Audio, and Platform systems.
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 โ
โโโโโโโโโโโโโ โโโโโโโโโโโโโ
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;
}
}
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:
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:
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.
Purpose: Platform-specific implementations and windowing.
Location: AestraPlat/
Key Components:
Each module has a clear, focused responsibility:
Application
โ
AestraUI + AestraAudio + Muse
โ
AestraCore
โ
AestraPlat (Platform Layer)
โ
OS APIs (Windows, Linux, macOS)
Rules:
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 { ... };
Audio thread is lock-free:
Cache-friendly data layouts for performance:
[Audio Files]
โ
[Sample Loader] โ [Sample Cache]
โ โ
[Track Manager] โ [Waveform Cache]
โ
[Audio Mixer]
โ
[Audio Driver] โ [WASAPI/ALSA]
โ
[Hardware Output]
[User Input]
โ
[Event Handler]
โ
[Widget Tree] โ [Layout Engine]
โ
[OpenGL Renderer]
โ
[Display Output]
โโโโโโโโโโโโโโ โโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโ
โ User โโโโโโโ AestraUI โโโโโโโ Application โ
โ Input โ โ Events โ โ Logic โ
โโโโโโโโโโโโโโ โโโโโโโโโโโโโโโ โโโโโโโโฌโโโโโโโโ
โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ
โโโโโโโโโโโโดโโโโโโโโโโโ
โ โ
โโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโ
โ UI Updates โ โ Audio Engine โ
โ (Main Thread)โ โ(Audio Thread)โ
โโโโโโโโโฌโโโโโโโโ โโโโโโโโฌโโโโโโโโ
โ โ
โ โ
โโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโ
โ Renderer โ โ Audio Driver โ
โโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโ
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)
โโโโโโโโโโโโโโโโโโโ
Priority: Normal
Priority: Real-time (highest) Constraints: Lock-free, no allocations, no blocking
Priority: Background (low)
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
Public (Aestra-core/):
Private (not in public repo):
.gitignore: Block sensitive filesโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ Source/ (Application) โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ โ โ
โโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโ โโโโโโโโโโโโ
โ AestraUI โ โ AestraAudio โ โ Muse โ
โโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโ โโโโโโโโโโโโ
โ โ โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ AestraCore / Aestra-core โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ โ โ
โโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโ โโโโโโโโโโโโ
โ AestraPlat โ โ Windows API โ โ Linux APIโ
โ (Win/Linux) โ โ (WASAPI) โ โ (ALSA) โ
โโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโ โโโโโโโโโโโโ