SonixMixerConfig

data class SonixMixerConfig(val loopCount: Int = 1, val onPlaybackComplete: () -> Unit? = null, val onLoopComplete: (loopIndex: Int) -> Unit? = null, val onError: (error: String) -> Unit? = null)

Configuration for SonixMixer.

What is SonixMixer?

A multi-track audio mixer that plays multiple audio files synchronized. Use it for:

  • Karaoke apps (backing track + vocal guide)

  • Practice apps (instrument tracks + drone)

  • Any scenario requiring independent volume control per track

When to Use

ScenarioUse This?Why
Play multiple tracks togetherYesCore use case
Karaoke with vocal mutingYesFade vocal track
Single audio file playbackNoUse SonixPlayer (simpler)
Metronome click trackNoUse SonixMetronome

Usage Tiers

Tier 1: Presets (80% of users)

val mixer = SonixMixer.create()  // Uses DEFAULT
val mixer = SonixMixer.create(SonixMixerConfig.LOOPING)

Tier 2: Builder (15% of users)

val config = SonixMixerConfig.Builder()
.preset(SonixMixerConfig.LOOPING)
.loopCount(3)
.onPlaybackComplete { println("Done!") }
.build()
val mixer = SonixMixer.create(config)

Tier 3: .copy() (5% of users)

val config = SonixMixerConfig.LOOPING.copy(loopCount = 3)

Constructors

Link copied to clipboard
constructor(loopCount: Int = 1, onPlaybackComplete: () -> Unit? = null, onLoopComplete: (loopIndex: Int) -> Unit? = null, onError: (error: String) -> Unit? = null)

Types

Link copied to clipboard
class Builder

Builder for SonixMixerConfig.

Link copied to clipboard
object Companion

Properties

Link copied to clipboard

Loop count (1 = play once, -1 = infinite)

Link copied to clipboard
val onError: (error: String) -> Unit?

Called on playback error

Link copied to clipboard
val onLoopComplete: (loopIndex: Int) -> Unit?

Called when a single loop iteration completes

Link copied to clipboard

Called when all loops complete