use crate::Defaults;
use ot_tools_io_derive::{ArrayDefaults, AsMutDerive, AsRefDerive, BoxedArrayDefaults};
use serde::{Deserialize, Serialize};
use std::array::from_fn;
#[derive(
Copy,
Clone,
Debug,
Eq,
Hash,
Ord,
PartialEq,
PartialOrd,
Serialize,
Deserialize,
AsMutDerive,
AsRefDerive,
)]
pub struct RecorderSetupSources {
pub in_ab: u8,
pub in_cd: u8,
pub rlen: u8,
pub trig: u8,
pub src3: u8,
pub xloop: u8,
}
impl Default for RecorderSetupSources {
fn default() -> Self {
Self {
in_ab: 1,
in_cd: 1,
rlen: 64,
trig: 0,
src3: 0,
xloop: 1,
}
}
}
#[cfg(test)]
mod recorder_setup_src {
use crate::parts::test_helper::get_default_test_bank;
use crate::parts::tracks::recorder::RecorderSetupSources;
use crate::OtToolsIoError;
#[test]
fn default() -> Result<(), OtToolsIoError> {
let b = get_default_test_bank()?;
for x in b.parts_unsaved[0].recorder_setup.iter() {
assert_eq!(x.src, RecorderSetupSources::default());
}
Ok(())
}
}
#[derive(
Copy,
Clone,
Debug,
Eq,
Hash,
Ord,
PartialEq,
PartialOrd,
Serialize,
Deserialize,
AsMutDerive,
AsRefDerive,
)]
pub struct RecorderSetupProcessing {
pub fin: u8,
pub fout: u8,
pub ab: u8,
pub qrec: u8,
pub qpl: u8,
pub cd: u8,
}
impl Default for RecorderSetupProcessing {
fn default() -> Self {
Self {
fin: 0,
fout: 0,
ab: 0,
qrec: 255,
qpl: 255,
cd: 0,
}
}
}
#[cfg(test)]
mod recorder_setup_proc {
use crate::parts::test_helper::get_default_test_bank;
use crate::parts::tracks::recorder::RecorderSetupProcessing;
use crate::OtToolsIoError;
#[test]
fn default() -> Result<(), OtToolsIoError> {
let b = get_default_test_bank()?;
for x in b.parts_unsaved[0].recorder_setup.iter() {
assert_eq!(x.proc, RecorderSetupProcessing::default());
}
Ok(())
}
}
#[derive(
Copy,
Clone,
Debug,
Eq,
Hash,
Ord,
PartialEq,
PartialOrd,
Serialize,
Deserialize,
AsMutDerive,
AsRefDerive,
Default,
ArrayDefaults,
BoxedArrayDefaults,
)]
pub struct RecorderSetup {
pub src: RecorderSetupSources,
pub proc: RecorderSetupProcessing,
}
#[cfg(test)]
mod recorder_setup {
use crate::parts::test_helper::get_default_test_bank;
use crate::parts::tracks::recorder::RecorderSetup;
use crate::OtToolsIoError;
#[test]
fn default() -> Result<(), OtToolsIoError> {
let b = get_default_test_bank()?;
for x in b.parts_unsaved[0].recorder_setup.iter() {
assert_eq!(x, &RecorderSetup::default());
}
Ok(())
}
}