MimiSDK 11 Migration Guide

MimiSDK 11 brings about significant improvements to the Processing APIs. In addition to removal of certain unnecessarily complex APIs, a top-level Processing Configuration API has been introduced which wraps the lower-level Processing APIs.

This document outlines the various changes required to migrate to MimiSDK 11 from a previous version of MimiSDK.

Requirements

  • iOS 15 or above.
  • Xcode 16.
  • Swift 5.9

API Changes

MimiSDK 11 introduces several API-breaking changes that should be made aware of. These changes are documented in the Changelog.

Processing API Changes

Configuration API Changes

The Processing APIs have been further simplified in MSDK 11 by moving the Parameter Applicator definitions directly into the Configuration object.

// Before
let fitting = MimiPersonalization.Fitting.techLevel(4) // An example fitting, yours will be defined by the Mimi Processing system on the device.

do {
    let configuration = mimiProcessingConfiguration {
        Personalization {
            FineTuning(fitting: fitting)
        }
    }
    let session = try await MimiCore.shared.processing.activate(configuration: configuration)

    let isEnabledApplicator = try await session.isEnabled.addApplicator(apply: { value in
        // Apply the isEnabled value to your audio processing system
    })

    let intensityApplicator = try await session.intensity.addApplicator(apply: { value in
        // Apply the intensity value to your audio processing system
    })

    let presetApplicator = try await session.preset.addApplicator(apply: { value in
        // Apply the preset value to your audio processing system
    })
} catch {
    // Handle activation failure
}

// After
let fitting = MimiPersonalization.Fitting.techLevel(4) // An example fitting, yours will be defined by the Mimi Processing system on the device.
do {
    let configuration = try MimiBasicProcessingConfiguration {
        SoundPersonalization {
            FineTuning(fitting: fitting)

            Applicators {
                IsEnabled { value in
                    // Apply the isEnabled value to your audio processing system
                }

                Intensity { value in
                    // Apply the intensity value to your audio processing system
                }

                Preset { value in
                    // Apply the preset value to your audio processing system
                }
            }
        }
    }
    let session = try await MimiCore.shared.processing.activate(configuration: configuration)
} catch {
    // Handle activation failure
}

Processing Parameter API Changes

Access to the isEnabled, intensity and preset Processing Parameters has been changed as follows.

// Before

// isEnabled
session.isEnabled

// intensity
session.intensity

// preset
session.preset
// After

// isEnabled
session.soundPersonalization?.media?.isEnabled

// intensity
session.soundPersonalization?.media?.intensity

// preset
session.soundPersonalization?.media?.preset

See the the Integrating Processing guide for more detailed information on the Configuration API.