SonixResampler

actual object SonixResampler
expect object SonixResampler

High-quality audio resampling using libsamplerate.

What is Resampling?

Audio is recorded at a specific sample rate (samples per second). Different systems use different rates:

  • CD quality: 44100 Hz

  • Video: 48000 Hz

  • Calibra APIs: 16000 Hz

Resampling converts audio between sample rates while preserving audio quality.

When to Use

ScenarioUse This?Why
Prepare audio for CalibraUsually NoSonixDecoder.decode() resamples automatically
Custom audio processingYesWhen you have raw samples at wrong rate
Mix audio at different ratesYesAll tracks need same rate

Quick Start

Kotlin

// Resample from 44100 Hz to 16000 Hz (for Calibra)
val resampled = SonixResampler.resample(
samples = audioSamples,
fromRate = 44100,
toRate = 16000
)

// Now use with Calibra
val contour = pitchExtractor.extract(resampled, 16000)

Swift

// Resample from 44100 Hz to 16000 Hz (for Calibra)
let resampled = SonixResampler.resample(
samples: audioSamples,
fromRate: 44100,
toRate: 16000
)

// Now use with Calibra
let contour = pitchExtractor.extract(audio: resampled, sampleRate: 16000)

Quality

Uses libsamplerate (Secret Rabbit Code) which provides:

  • High-quality sinc interpolation

  • Minimal aliasing artifacts

  • Fast performance on mobile devices

Platform Notes

iOS/Android

  • Uses native libsamplerate library (compiled for each platform)

  • Processing time scales with audio length and rate ratio

Common Pitfalls

  1. Mono only: Input must be mono; convert stereo to mono first

  2. Memory usage: Creates new array for output (doesn't modify input)

  3. Usually unnecessary: SonixDecoder.decode() already resamples to 16kHz

See also

For decoding with automatic resampling

CalibraPitch

For pitch detection (requires 16kHz)

actual object SonixResampler

Functions

Link copied to clipboard
actual fun resample(samples: FloatArray, fromRate: Int, toRate: Int): FloatArray
expect fun resample(samples: FloatArray, fromRate: Int, toRate: Int): FloatArray

Resample audio from one sample rate to another.

actual fun resample(samples: FloatArray, fromRate: Int, toRate: Int): FloatArray