Skip to main content

maolan_engine/
meter.rs

1use crate::loudness::LoudnessValues;
2use crate::message::SessionSlotState;
3
4#[derive(Clone, Debug, Default)]
5pub struct MeterSnapshot {
6    pub hw_out_db: Vec<f32>,
7    pub hw_out_lufs: Option<LoudnessValues>,
8    pub track_meters: Vec<(String, Vec<f32>)>,
9}
10
11#[derive(Clone, Debug)]
12pub struct TransportSnapshot {
13    pub sample: usize,
14    pub tempo_bpm: f64,
15    pub playing: bool,
16    pub transport_running: bool,
17    pub tsig_num: u16,
18    pub tsig_denom: u16,
19}
20
21impl Default for TransportSnapshot {
22    fn default() -> Self {
23        Self {
24            sample: 0,
25            tempo_bpm: 120.0,
26            playing: false,
27            transport_running: false,
28            tsig_num: 4,
29            tsig_denom: 4,
30        }
31    }
32}
33
34#[derive(Clone, Debug)]
35pub struct SessionRuntimeSlotSnapshot {
36    pub track_name: String,
37    pub scene_index: usize,
38    pub state: SessionSlotState,
39    pub play_position_samples: usize,
40    pub elapsed_samples: usize,
41}
42
43#[derive(Clone, Debug, PartialEq, Eq, Hash)]
44pub struct SessionCompletedClipPass {
45    pub track_name: String,
46    pub scene_index: usize,
47    pub clip_id: String,
48    pub pass_index: usize,
49    pub start_sample: usize,
50    pub length_samples: usize,
51}
52
53#[derive(Clone, Debug, Default)]
54pub struct SessionRuntimeSnapshot {
55    pub session_sample: usize,
56    pub slots: Vec<SessionRuntimeSlotSnapshot>,
57    pub completed_clip_passes: Vec<SessionCompletedClipPass>,
58    /// Scene whose launch most recently fired; `None` before any scene
59    /// launch or after the session transport stopped.
60    pub current_scene: Option<usize>,
61}