Skip to main content

SonixEncoder

Encode raw PCM audio to compressed formats (M4A/AAC or MP3) for storage and sharing.

Quick Start

Kotlin

// Encode from AudioRawData (e.g., after decoding or synthesis)
val rawData = SonixDecoder.decode("input.wav", targetSampleRate = null)
if (rawData != null) {
val success = SonixEncoder.encode(
data = rawData,
outputPath = "/path/to/output.mp3",
format = "mp3"
)
}

Swift

if let rawData = SonixDecoder.decode(path: "input.wav", targetSampleRate: nil) {
let success = SonixEncoder.encode(
data: rawData,
outputPath: "/path/to/output.mp3",
format: "mp3"
)
}

Encoding Methods

From AudioRawData

SonixEncoder.encode(
data = audioRawData,
outputPath = "/path/to/output.m4a",
format = "m4a", // "m4a" (default) or "mp3"
bitrateKbps = 128 // default: 128
)
SonixEncoder.encode(
data: audioRawData,
outputPath: "/path/to/output.m4a",
format: "m4a",
bitrateKbps: 128
)

From Float Samples

Kotlin

SonixEncoder.encode(
samples = floatArray, // [-1.0, 1.0] range
sampleRate = 44100,
channels = 1,
outputPath = "/path/to/output.m4a",
format = "m4a",
bitrateKbps = 128
)

Swift

SonixEncoder.encode(
samples: floatArray,
sampleRate: 44100,
channels: 1,
outputPath: "/path/to/output.m4a",
format: "m4a",
bitrateKbps: 128
)

From PCM Bytes

Kotlin

SonixEncoder.encode(
pcmData = byteArray, // 16-bit signed, little-endian
sampleRate = 44100,
channels = 1,
outputPath = "/path/to/output.mp3",
format = "mp3",
bitrateKbps = 192
)

Swift

SonixEncoder.encode(
pcmData: data,
sampleRate: 44100,
channels: 1,
outputPath: "/path/to/output.mp3",
format: "mp3",
bitrateKbps: 192
)

Method Summary

MethodInput TypeParameters
encodeAudioRawDatadata, outputPath, format, bitrateKbps
encodeFloatArray / [Float]samples, sampleRate, channels, outputPath, format, bitrateKbps
encodeByteArray / DatapcmData, sampleRate, channels, outputPath, format, bitrateKbps
isFormatAvailableformat: StringBoolean

Format Availability

if (SonixEncoder.isFormatAvailable("mp3")) {
// MP3 encoding is supported on this platform
}

Supported Formats

FormatStringQualityUse Case
M4A/AAC"m4a" or "aac"BestDefault choice, native hardware encoding
MP3"mp3"GoodUniversal compatibility

Bitrate Guide

BitrateQualityFile Size
64 kbpsLow (voice)~0.5 MB/min
128 kbpsStandard~1 MB/min
192 kbpsHigh~1.5 MB/min
256 kbpsVery high~2 MB/min

Common Patterns

Convert Audio Format

// Decode MP3, re-encode as M4A
val audioData = SonixDecoder.decode("input.mp3", targetSampleRate = null)
if (audioData != null) {
SonixEncoder.encode(data = audioData, outputPath = "output.m4a")
}

Export Synthesized Audio

val synth = SonixMidiSynthesizer.create(soundFontPath = sfPath)
synth.synthesizeFromNotes(notes, outputPath = "output.wav")

// Convert WAV to compressed MP3
val wavData = SonixDecoder.decode("output.wav", targetSampleRate = null)
if (wavData != null) {
SonixEncoder.encode(data = wavData, outputPath = "output.mp3", format = "mp3")
}

Next Steps