ot_tools_io/parts/tracks/
recorder.rs1use crate::Defaults;
7use ot_tools_io_derive::{ArrayDefaults, AsMutDerive, AsRefDerive, BoxedArrayDefaults};
8use serde::{Deserialize, Serialize};
9use std::array::from_fn;
10
11#[derive(
13 Copy,
14 Clone,
15 Debug,
16 Eq,
17 Hash,
18 Ord,
19 PartialEq,
20 PartialOrd,
21 Serialize,
22 Deserialize,
23 AsMutDerive,
24 AsRefDerive,
25)]
26pub struct RecorderSetupSources {
27 pub in_ab: u8,
28 pub in_cd: u8,
29 pub rlen: u8,
31 pub trig: u8,
32 pub src3: u8,
34 pub xloop: u8,
35}
36
37impl Default for RecorderSetupSources {
38 fn default() -> Self {
39 Self {
40 in_ab: 1,
41 in_cd: 1,
42 rlen: 64,
43 trig: 0,
44 src3: 0,
45 xloop: 1,
46 }
47 }
48}
49
50#[cfg(test)]
51mod recorder_setup_src {
52 use crate::parts::test_helper::get_default_test_bank;
53 use crate::parts::tracks::recorder::RecorderSetupSources;
54 use crate::OtToolsIoError;
55
56 #[test]
57 fn default() -> Result<(), OtToolsIoError> {
58 let b = get_default_test_bank()?;
59 for x in b.parts_unsaved[0].recorder_setup.iter() {
60 assert_eq!(x.src, RecorderSetupSources::default());
61 }
62 Ok(())
63 }
64}
65
66#[derive(
68 Copy,
69 Clone,
70 Debug,
71 Eq,
72 Hash,
73 Ord,
74 PartialEq,
75 PartialOrd,
76 Serialize,
77 Deserialize,
78 AsMutDerive,
79 AsRefDerive,
80)]
81pub struct RecorderSetupProcessing {
82 pub fin: u8,
83 pub fout: u8,
84 pub ab: u8,
85 pub qrec: u8,
86 pub qpl: u8,
87 pub cd: u8,
88}
89
90impl Default for RecorderSetupProcessing {
91 fn default() -> Self {
92 Self {
93 fin: 0,
94 fout: 0,
95 ab: 0,
96 qrec: 255,
97 qpl: 255,
98 cd: 0,
99 }
100 }
101}
102
103#[cfg(test)]
104mod recorder_setup_proc {
105 use crate::parts::test_helper::get_default_test_bank;
106 use crate::parts::tracks::recorder::RecorderSetupProcessing;
107 use crate::OtToolsIoError;
108
109 #[test]
110 fn default() -> Result<(), OtToolsIoError> {
111 let b = get_default_test_bank()?;
112 for x in b.parts_unsaved[0].recorder_setup.iter() {
113 assert_eq!(x.proc, RecorderSetupProcessing::default());
114 }
115 Ok(())
116 }
117}
118
119#[derive(
121 Copy,
122 Clone,
123 Debug,
124 Eq,
125 Hash,
126 Ord,
127 PartialEq,
128 PartialOrd,
129 Serialize,
130 Deserialize,
131 AsMutDerive,
132 AsRefDerive,
133 Default,
134 ArrayDefaults,
135 BoxedArrayDefaults,
136)]
137pub struct RecorderSetup {
138 pub src: RecorderSetupSources,
139 pub proc: RecorderSetupProcessing,
140}
141
142#[cfg(test)]
143mod recorder_setup {
144 use crate::parts::test_helper::get_default_test_bank;
145 use crate::parts::tracks::recorder::RecorderSetup;
146 use crate::OtToolsIoError;
147
148 #[test]
149 fn default() -> Result<(), OtToolsIoError> {
150 let b = get_default_test_bank()?;
151 for x in b.parts_unsaved[0].recorder_setup.iter() {
152 assert_eq!(x, &RecorderSetup::default());
153 }
154 Ok(())
155 }
156}