m8_file_parser/instruments/modulator/
tracking_env.rs1use crate::Version;
2
3use super::{M8Result, Reader, Writer};
4
5const TRACKING_ENV_COMMAND_NAMES: [[&'static str; 5]; 4] = [
6 ["TA1", "TS1", "TL1", "TH1", "TX1"],
7 ["TA2", "TS2", "TL2", "TH2", "TX2"],
8 ["TA3", "TS3", "TL3", "TH3", "TX3"],
9 ["TA4", "TS4", "TL4", "TH4", "TX4"],
10];
11
12#[derive(PartialEq, Debug, Clone)]
13pub struct TrackingEnv {
14 pub dest: u8,
15 pub amount: u8,
16 pub src: u8,
17 pub lval: u8,
18 pub hval: u8,
19}
20
21impl TrackingEnv {
22 pub fn command_name(_ver: Version, env_id: usize) -> &'static [&'static str] {
23 &TRACKING_ENV_COMMAND_NAMES[env_id]
24 }
25
26 pub fn write(&self, writer: &mut Writer) {
27 writer.write(self.amount);
28 writer.write(self.src);
29 writer.write(self.lval);
30 writer.write(self.hval);
31 }
32
33 pub fn from_reader(reader: &mut Reader, dest: u8) -> M8Result<Self> {
34 Ok(Self {
35 dest,
36 amount: reader.read(),
37 src: reader.read(),
38 lval: reader.read(),
39 hval: reader.read(),
40 })
41 }
42}