Skip to content

Latest commit

 

History

1 Commit

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🎼 Orpheus Audio Engine

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.

About

A lightweight, modular C++ audio engine designed for deterministic timing, beat-based layering, and clean mixing.

Resources

Stars

5 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages