๐ผ Orpheus Audio Engine
December 24, 2025 ยท View on GitHub
Orpheus Audio Engine is a lightweight, modular C++ audio engine built for precise timing, layered playback, and clean mixing. Designed by Curly Development, Orpheus focuses on deterministic audio behavior, beat-based sequencing, and an API thatโs simple to embed into games, tools, and creative software.
โOrpheus is built to make audio predictable, controllable, and composable โ not magical.โ
โจ Features
- ๐ Modular Architecture โ Independent systems for loading, mixing, timelines, and beat layers
- ๐ฅ Beat & Layer System โ Stack and control audio layers with musical timing
- ๐งญ Timeline-Based Playback โ Schedule audio events precisely
- ๐๏ธ Mixer Abstraction โ Centralized volume and routing control
- ๐ฆ Sample Loader โ Efficient sample management
- ๐งฉ Simple C++ API โ Easy to integrate into existing projects
- โ๏ธ Engine-Core Separation โ Clean internal engine vs public-facing API
๐๏ธ Project Structure
orpheus/
โโโ audio_engine.cpp # Core engine loop and lifecycle
โโโ orpheus_api.cpp # Public-facing API
โโโ mixer.cpp # Audio mixing and volume control
โโโ timeline.cpp # Time-based scheduling system
โโโ beat_layer.cpp # Beat / layer abstraction
โโโ sample_loader.cpp # Audio sample loading and management
โโโ README.md
Each module is intentionally isolated to keep the engine extensible and readable.
๐ง Engine Concepts
Audio Engine Core
The heart of Orpheus. Manages initialization, updates, and coordination between all subsystems.
Sample Loader
Responsible for loading and storing audio samples in memory. Designed to avoid duplicate loads and simplify reuse.
Mixer
Handles volume control, blending, and routing of all active audio layers into a final output stream.
Timeline
A deterministic timeline system that allows scheduling events (play, stop, transition) at exact times or beats.
Beat Layers
A musical abstraction allowing sounds to be layered, muted, swapped, or transitioned in sync with tempo.
Public API
orpheus_api.cpp exposes a clean interface so users donโt need to touch engine internals.
๐ Getting Started
Requirements
- C++17 or newer
- A supported audio backend (implementation-dependent)
Basic Integration
- Add Orpheus source files to your project
- Include the public API header
- Initialize the engine
- Load samples
- Schedule or play sounds
๐งช Example Usage (Conceptual)
Orpheus::Init();
Sample kick = Orpheus::LoadSample("kick.wav");
Sample snare = Orpheus::LoadSample("snare.wav");
BeatLayer drums;
drums.Add(kick);
drums.Add(snare);
Orpheus::Timeline::Play(drums);
(Exact API calls may differ โ this example shows intent, not final syntax.)
๐ฏ Use Cases
- ๐ฎ Game audio engines
- ๐ฅ Video or cinematic tools
- ๐ต Rhythm-based applications
- ๐งช Audio experimentation & tooling
- ๐ ๏ธ Custom editors or engines
๐ฃ๏ธ Roadmap (Optional)
- Effects pipeline (reverb, filters, etc.)
- Real-time tempo changes
- Serialization / project saving
- Multi-output routing
- Scripting bindings (Lua / Python)
๐งโ๐ป Author
Curly Development Engine & architecture by Curly
License
This project is licensed under the MIT License โ see the LICENSE file for details.
โญ Final Notes
Orpheus is built to be understandable first, fast second, and flexible always. If youโre tired of opaque audio engines and want full control over timing and structure โ Orpheus is for you.