๐ŸŽผ 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

  1. Add Orpheus source files to your project
  2. Include the public API header
  3. Initialize the engine
  4. Load samples
  5. 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.