ez_audi/samples_player/modifiers/
shittify.rs

1use crate::cpal_abstraction::SamplesTrait;
2use crate::samples::IntermediateSampleType;
3use crate::samples::Samples;
4
5use super::ModifierTrait;
6use super::utils;
7
8#[derive(Debug, Clone)]
9/// It's quite the crude name, I think you can guess what it does.
10/// Artificially flattens the audio, reduces the sample rate and transforms the sample type to u8
11pub struct Shittify;
12
13impl ModifierTrait for Shittify {
14    fn modify(&self, samples: Samples<IntermediateSampleType>) -> Samples<IntermediateSampleType> {
15        let original_metadata = samples.metadata.clone();
16
17        let one_channel_samples = utils::into_n_channels(samples, 1);
18        let low_sample_rate_samples = utils::into_sample_rate(one_channel_samples, 12000);
19        let u8_samples = low_sample_rate_samples.into_t_samples::<u8>();
20
21        let normal_sample_rate_samples = utils::into_sample_rate(u8_samples, original_metadata.sample_rate);
22        let normal_type_samples = normal_sample_rate_samples.into_generic_representation_samples();
23        let normal_channel_nb_samples = utils::into_n_channels(normal_type_samples, original_metadata.channels);
24
25        Samples::new(normal_channel_nb_samples.samples, original_metadata)
26    }
27}