INNER CODE UNIT · Rust
normalize
EricLBuehler/mistral.rs · mistralrs-audio/src/lib.rs:108
pub fn normalize(&mut self) -> &mut Self {
let max_amplitude = self.samples.iter().map(|s| s.abs()).fold(0.0f32, f32::max);
if max_amplitude > 0.0 && max_amplitude != 1.0 {
let scale = 1.0 / max_amplitude;
for sample in &mut self.samples {
*sample *= scale;
}
}
self
}
/// Apply fade in/out to reduce audio artifacts
pub fn apply_fade(&mut self, fade_in_samples: usize, fade_out_samples: usize) -> &mut Self {
let len = self.samples.len();
// Fade in
for i in 0..fade_in_samples.min(len) {
let factor = i as f32 / fade_in_samples as f32;
self.samples[i] *= factor;