Function normalize

Source
pub fn normalize(
    signal: &AudioData,
    target: f32,
    mode: &str,
) -> Result<AudioData, AmplitudeError>
Expand description

Normalizes an audio signal to a target peak or RMS level.

This function scales the signal so its peak amplitude or RMS (root mean square) level matches the target value. Useful for ensuring consistent loudness.

§Arguments

  • signal - The input audio signal.
  • target - The target level (e.g., 1.0 for full scale).
  • mode - “peak” for peak normalization, “rms” for RMS normalization.

§Returns

Returns Result<AudioData, AmplitudeError> containing the normalized signal or an error.

§Examples

let signal = AudioData { samples: vec![0.5, 1.0, 0.5], sample_rate: 44100, channels: 1 };
let normalized = normalize(&signal, 1.0, "peak")?;
assert_eq!(normalized.samples, vec![0.5, 1.0, 0.5]); // Already at peak 1.0

let signal = AudioData { samples: vec![0.2, 0.4, 0.2], sample_rate: 44100, channels: 1 };
let normalized = normalize(&signal, 1.0, "peak")?;
assert_eq!(normalized.samples, vec![0.5, 1.0, 0.5]); // Scaled to peak 1.0