4 releases (breaking)
| new 0.4.0 | Apr 15, 2026 |
|---|---|
| 0.3.0 | Mar 3, 2026 |
| 0.2.0 | Feb 22, 2026 |
| 0.1.0 | Jan 28, 2026 |
#980 in Audio
188 downloads per month
79KB
2K
SLoC
audio-automation
Time-based parameter automation with interpolation curves for audio applications.
#![no_std] compatible (requires alloc). Works on embedded, WASM, and standard targets.

Usage
use audio_automation::prelude::*;
#[derive(Debug, Clone, serde::Serialize, serde::Deserialize)]
enum Param { Volume, Cutoff }
let env = AutomationEnvelope::new(Param::Volume)
.with_point(AutomationPoint::new(0.0, 0.0))
.with_point(AutomationPoint::with_curve(4.0, 1.0, CurveType::Exponential))
.with_range(0.0, 1.0);
let value = env.get_value_at(2.0).unwrap();
Presets
// Fade in over 4 beats
let fade = AutomationEnvelope::fade_in(Param::Volume, 4.0, CurveType::SCurve);
// Pulse: 1 beat attack, 2 beat sustain, 1 beat release
let pulse = AutomationEnvelope::pulse(Param::Volume, 1.0, 2.0, 1.0, CurveType::Linear);
// 2 Hz LFO tremolo
let tremolo = AutomationEnvelope::lfo(Param::Volume, 2.0, 4.0, 0.5, 1.0);
Multiple Parameters
let clip = AutomationClip::new("Intro", 8.0)
.with_envelope("volume",
AutomationEnvelope::fade_in(Param::Volume, 4.0, CurveType::Linear))
.with_envelope("cutoff",
AutomationEnvelope::new(Param::Cutoff)
.with_point(AutomationPoint::new(0.0, 0.0))
.with_point(AutomationPoint::new(8.0, 1.0)));
Curve Types
Linear, Exponential, Logarithmic, SCurve, Stepped, Bezier, Elastic, Bounce, Back, Circular, and polynomial easing variants (QuadIn/Out/InOut, CubicIn/Out/InOut, QuartIn/Out/InOut, QuintIn/Out/InOut).
License
MIT or Apache-2.0
Dependencies
~1.7–2.4MB
~45K SLoC