use super::{Node, default_gain};
use schemars::JsonSchema;
use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, Serialize, Deserialize, JsonSchema)]
pub struct Track {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub id: Option<String>,
pub node: Node,
#[serde(default)]
pub pan: f32,
#[serde(default = "default_gain")]
pub gain: f32,
#[serde(default)]
pub at: f32,
#[serde(default)]
pub mute: bool,
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub automation: Vec<AutoLane>,
}
#[non_exhaustive]
#[derive(Debug, Clone, Copy, Serialize, Deserialize, JsonSchema, PartialEq)]
#[serde(rename_all = "lowercase")]
pub enum AutoTarget {
Gain,
Pan,
}
#[derive(Debug, Clone, Serialize, Deserialize, JsonSchema)]
pub struct AutoPoint {
pub t: f32,
pub v: f32,
}
#[derive(Debug, Clone, Serialize, Deserialize, JsonSchema)]
pub struct AutoLane {
pub target: AutoTarget,
pub points: Vec<AutoPoint>,
}