1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
//! # Parameter-lock step sequencer
//!
//! A sample-accurate, telemetry-driven sequencer for scheduling parameter
//! changes over time. Supports parameter-lock (p-lock) style programming:
//! each step specifies exactly which parameters change and to what value;
//! unlisted parameters are untouched.
//!
//! ## Concepts
//!
//! - [`ParameterTarget`] — a single (node, param, value) lock
//! - [`SequenceStep`] — a set of p-locks + duration
//! - [`Pattern`] — a sequence of steps with a playback mode
//! - [`Snapshot`] — a named collection of p-locks (convenience presets)
//! - [`SnapshotSequencer`] — tick-driven state machine
//!
//! ## Clock source
//!
//! The sequencer is designed to be driven by the audio thread's `CLOCK_TICK`
//! telemetry events. Each tick carries `(sample_pos, sample_rate, tempo)`,
//! which the sequencer uses to determine step boundaries with sample accuracy.
//!
//! ## Integration
//!
//! Use [`PatchbayControl::attach_sequencer`](crate::control::PatchbayControl::attach_sequencer)
//! or [`PatchbayEngine::attach_sequencer`](crate::engine::PatchbayEngine::attach_sequencer)
//! to spawn the sequencer task and start listening for clock ticks.
//! A [`SequencerHandle`] is returned for external control (start/stop/pattern
//! select).
pub use ;
pub use ;
pub use ;
pub use SequenceStep;
/// Serializable sequencer configuration (serde feature gate).
pub use SequencerDocument;