aether_sampler/lib.rs
1//! Aether Sampler Engine
2//!
3//! A polyphonic sampler that maps audio recordings to MIDI notes.
4//! Supports velocity layers, sustain loops, release samples,
5//! and custom tuning tables for non-Western instruments.
6//!
7//! # Architecture
8//!
9//! ```
10//! SamplerInstrument
11//! └── Vec<SampleZone> — note range + velocity range → audio file
12//! └── SampleBuffer — decoded PCM audio in memory
13//!
14//! SamplerVoice — one playing note (polyphony = many voices)
15//! ├── zone: &SampleZone — which sample to play
16//! ├── position: f64 — current playback position (sub-sample)
17//! ├── phase: VoicePhase — Attack / Sustain / Release / Done
18//! └── envelope: AdsrState — amplitude envelope
19//! ```
20
21pub mod buffer;
22pub mod instrument;
23pub mod voice;
24pub mod node;
25
26pub use instrument::{SamplerInstrument, SampleZone, ArticulationType, RoundRobinState, RoundRobinMode, ZoneGroup};
27pub use node::SamplerNode;
28pub use voice::SamplerVoice;