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
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
extern crate alloc;
// `no_std` builds need a float math backend because `f32`'s transcendental
// methods (`sqrt`, `sin`, `log2`, ...) live in `std`. Users must opt into
// exactly one of `libm` or `micromath` when `std` is disabled.
compile_error!;
pub
pub
pub
pub
pub
pub
pub
pub
pub
pub
pub
/// Generational arena of `Voice`s, indexed by opaque `VoiceId`
/// handles. Owns every live and ghost voice the player has in
/// flight; channels carry only handles. Capacity is configurable
/// at construction (default 256, mirroring schism's `MAX_VOICES`)
/// and the pool falls back to lowest-audible-volume eviction when
/// full — see [`voice_pool::VoicePool::allocate_live`] /
/// [`voice_pool::VoicePool::allocate_ghost`].
pub
// --- Post-refactor modules (0.10) ---
/// Song cursor and tick clock. Consumes navigation-side global effects
/// (`Fxx`, `Bxx`, `Dxx`, `E6y`, `EEy`, `BPM`, `BPMSlide`) directly from
/// pattern cells, without going through channels.
/// Audio engine: per-channel state, mixer gain, and sample generation.
/// Consumes volume-side global effects (`Volume`, `VolumeSlide`).
/// Subscription API — `PlayerObserver` trait and event context structs.
/// Audio-side subscription API — `MixObserver` and `ChannelsObserver`
/// traits for consumers of the produced audio stream (VU-meters,
/// oscilloscopes, recorders, analyzers).
/// MIDI-side subscription API — `MidiObserver` trait for consumers
/// of MIDI events emitted by the IT macro interpreter (`Zxx` macros
/// that encode Note On/Off, CC, Program Change, SysEx, etc.).
/// Built-in observer that prints pattern/row changes. Requires `std`.
/// Built-in MIDI observer that prints MIDI events to stdout. Requires
/// `std`. Mirrors `debug_observer` but for the `MidiObserver` trait.