Skip to main content

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;