wave_stream 0.5.0

Wave file reader and writer. Random access and streaming is supported for reading, random access is supported for writing
Documentation
#[derive(Debug, Clone, Copy, PartialEq)]
pub struct SamplesByChannel<T> {
    pub front_left: Option<T>,
    pub front_right: Option<T>,
    pub front_center: Option<T>,
    pub low_frequency: Option<T>,
    pub back_left: Option<T>,
    pub back_right: Option<T>,
    pub front_left_of_center: Option<T>,
    pub front_right_of_center: Option<T>,
    pub back_center: Option<T>,
    pub side_left: Option<T>,
    pub side_right: Option<T>,
    pub top_center: Option<T>,
    pub top_front_left: Option<T>,
    pub top_front_center: Option<T>,
    pub top_front_right: Option<T>,
    pub top_back_left: Option<T>,
    pub top_back_center: Option<T>,
    pub top_back_right: Option<T>,
}

impl<T: Copy> SamplesByChannel<T> {
    pub fn new() -> SamplesByChannel<T> {
        SamplesByChannel {
            front_left: None,
            front_right: None,
            front_center: None,
            low_frequency: None,
            back_left: None,
            back_right: None,
            front_left_of_center: None,
            front_right_of_center: None,
            back_center: None,
            side_left: None,
            side_right: None,
            top_center: None,
            top_front_left: None,
            top_front_center: None,
            top_front_right: None,
            top_back_left: None,
            top_back_center: None,
            top_back_right: None,
        }
    }

    pub fn front_left(mut self, sample: T) -> SamplesByChannel<T> {
        self.front_left = Some(sample);

        self
    }

    pub fn front_right(mut self, sample: T) -> SamplesByChannel<T> {
        self.front_right = Some(sample);

        self
    }

    pub fn front_center(mut self, sample: T) -> SamplesByChannel<T> {
        self.front_center = Some(sample);

        self
    }

    pub fn low_frequency(mut self, sample: T) -> SamplesByChannel<T> {
        self.low_frequency = Some(sample);

        self
    }

    pub fn back_left(mut self, sample: T) -> SamplesByChannel<T> {
        self.back_left = Some(sample);

        self
    }

    pub fn back_right(mut self, sample: T) -> SamplesByChannel<T> {
        self.back_right = Some(sample);

        self
    }

    pub fn front_left_of_center(mut self, sample: T) -> SamplesByChannel<T> {
        self.front_left_of_center = Some(sample);

        self
    }

    pub fn front_right_of_center(mut self, sample: T) -> SamplesByChannel<T> {
        self.front_right_of_center = Some(sample);

        self
    }

    pub fn back_center(mut self, sample: T) -> SamplesByChannel<T> {
        self.back_center = Some(sample);

        self
    }

    pub fn side_left(mut self, sample: T) -> SamplesByChannel<T> {
        self.side_left = Some(sample);

        self
    }

    pub fn side_right(mut self, sample: T) -> SamplesByChannel<T> {
        self.side_right = Some(sample);

        self
    }

    pub fn top_center(mut self, sample: T) -> SamplesByChannel<T> {
        self.top_center = Some(sample);

        self
    }

    pub fn top_front_left(mut self, sample: T) -> SamplesByChannel<T> {
        self.top_front_left = Some(sample);

        self
    }

    pub fn top_front_center(mut self, sample: T) -> SamplesByChannel<T> {
        self.top_front_center = Some(sample);

        self
    }

    pub fn top_front_right(mut self, sample: T) -> SamplesByChannel<T> {
        self.top_front_right = Some(sample);

        self
    }

    pub fn top_back_left(mut self, sample: T) -> SamplesByChannel<T> {
        self.top_back_left = Some(sample);

        self
    }

    pub fn top_back_center(mut self, sample: T) -> SamplesByChannel<T> {
        self.top_back_center = Some(sample);

        self
    }

    pub fn top_back_right(mut self, sample: T) -> SamplesByChannel<T> {
        self.top_back_right = Some(sample);

        self
    }

    pub fn to_vec(&self) -> Vec<T> {
        let mut vec = Vec::new();

        match self.front_left {
            Some(sample) => vec.push(sample),
            None => {}
        };

        match self.front_right {
            Some(sample) => vec.push(sample),
            None => {}
        };

        match self.front_center {
            Some(sample) => vec.push(sample),
            None => {}
        };

        match self.low_frequency {
            Some(sample) => vec.push(sample),
            None => {}
        };

        match self.back_left {
            Some(sample) => vec.push(sample),
            None => {}
        };

        match self.back_right {
            Some(sample) => vec.push(sample),
            None => {}
        };

        match self.front_left_of_center {
            Some(sample) => vec.push(sample),
            None => {}
        };

        match self.front_right_of_center {
            Some(sample) => vec.push(sample),
            None => {}
        };

        match self.back_center {
            Some(sample) => vec.push(sample),
            None => {}
        };

        match self.side_left {
            Some(sample) => vec.push(sample),
            None => {}
        };

        match self.side_right {
            Some(sample) => vec.push(sample),
            None => {}
        };

        match self.top_center {
            Some(sample) => vec.push(sample),
            None => {}
        };

        match self.top_front_left {
            Some(sample) => vec.push(sample),
            None => {}
        };

        match self.top_front_center {
            Some(sample) => vec.push(sample),
            None => {}
        };

        match self.top_front_right {
            Some(sample) => vec.push(sample),
            None => {}
        };

        match self.top_back_left {
            Some(sample) => vec.push(sample),
            None => {}
        };

        match self.top_back_center {
            Some(sample) => vec.push(sample),
            None => {}
        };

        match self.top_back_right {
            Some(sample) => vec.push(sample),
            None => {}
        };

        vec
    }
}