MimiSDK 12.0.0 Migration Guide¶
This document outlines the various changes required to migrate from MSDK 11.x.x to MSDK 12.0.0.
If you have further questions then please don't hesitate to get in touch with us via our Mimi Support Portal.
What is new?¶
MSDK 12.0.0 focuses on changes the Processing API to help bring more Mimi features into your apps.
Required Migrations¶
Mimi Logging changes¶
The Mimi Logging class has been moved from io.mimi.sdk.core.util.Log to io.mimi.sdk.common.logging.MimiLog. You should update your imports accordingly.
For details on usage refer to Troubleshooting.
Processing APIs¶
Although the Processing APIs have changed, the good news is they fundamentally work in the same way as previous releases, so the vast majority of your app's code will be unaffected. Also, all previously supported processing devices are still supported.
The primary changes are:
- How
ProcessingSessionis configured and activated. - How
MimiProcessingParameters are accessed from theProcessingSession. - Package changes for related components, such as models.
Refer to the Processing section for more detailed view of the APIs.
Migration Example¶
We have provided an example migration in our Integration Sample App.
Activating a ProcessingSession¶
The MimiProcessingConfiguration class has changed to support a broader feature set, additionally the activateSession function returns a Result<ProcessingSession>.
Also, the Applicator functions can now only be provided as part of the MimiProcessingConfiguration. The lifecycle of the Applicator now matches the ProcessingSession lifecycle.
Before
// Define configuration
val processingConfiguration = MimiProcessingConfiguration(
personalization = PersonalizationConfiguration(
mode = PersonalizationModeConfiguration.FineTuning(fitting = TODO("Tech level is defined by your Processing System"))
)
)
// Activate ProcessingSession
val processingSession : ProcessingSession = MimiCore.processingController.activateSession(processingConfiguration)
// Add Applicators
val isEnabledApplicator = processingSession.isEnabled.addApplicator(APPLY_TIMEOUT, { TODO("IsEnabled Applicator implementation") })
val intensityApplicator = processingSession.intensity.addApplicator(APPLY_TIMEOUT, { TODO("Intensity Applicator implementation") })
val presetApplicator = processingSession.isEnabled.addApplicator(APPLY_TIMEOUT, { TODO("Preset Applicator implementation") })
After
// Applicator configuration is supplied when activating the ProcessingSession.
val processingConfiguration = MimiProcessingConfiguration.Basic(
soundPersonalization = SoundPersonalizationFeatureConfiguration(
mode = PersonalizationModeConfiguration.FineTuning(fitting = TODO("Tech level is defined by your Processing System"),
parameterConfiguration = SoundPersonalizationParametersConfiguration(
isEnabled = ProcessingParameterConfiguration(
APPLY_TIMEOUT,
{ TODO("IsEnabled Applicator implementation") }
),
intensity = ProcessingParameterConfiguration(
APPLY_TIMEOUT,
{ TODO("Intensity Applicator implementation") }
),
preset = ProcessingParameterConfiguration(
APPLY_TIMEOUT,
{ TODO("Preset Applicator implementation") }
),
)
)
)
)
val activationResult : Result<ProcessingSession> = MimiCore.processingController.activateSession(processingConfiguration)
Your application should also handle the possibility of activateSession() returning a Result.Failure instance, potentially by informing the user.
Accessing the active ProcessingSession¶
The ProcessingSession instance is now wrapped in an AsyncState instance.
This means that the ProcessingSession instance must now be retrieved from the value property.
Before
After
Warning
You should also check your code to see if you previously compared MimiCore.processingController.activeSession.state != null to determine if there was an active ProcessingSession. If so, then you should change it to MimiCore.processingController.activeSession.state.value != null.
Accessing Sound Personalization Processing Parameters¶
The ProcessingSession new structure affects the way your app references the MimiProcessingParameters:
After
Parameter to Device Synchronization¶
As a ProcessingSession now only supports a single Applicator per MimiProcessingParameter, the call to synchronize the Applicator has changed:
Package Change Summary¶
In this release we've defined two new modules which are automatically included in the main MSDK artefact:
libProcessing(io.mimi.sdk:processing)libCommon(io.mimi.sdk:common)
These modules contain some components extracted from libCore for which you should update your imports accordingly.
Changes for libCommon:
| MSDK 11.x.x | MSDK 12.0.0 |
|---|---|
io.mimi.sdk.core.util.Log |
io.mimi.sdk.common.logging.MimiLog |
io.mimi.sdk.core.common.MimiObservable |
io.mimi.sdk.common.observable.MimiObservable |
io.mimi.sdk.core.internal.MsdkInternalApi |
io.mimi.sdk.common.annotations.MsdkInternalApi |
io.mimi.sdk.core.internal.MsdkExperimentalApi |
io.mimi.sdk.common.annotations.MsdkExperimentalApi |
Changes for libProcessing:
| MSDK 11.x.x | MSDK 12.0.0 |
|---|---|
io.mimi.sdk.core.controller.processing.MimiApplicatorResult |
io.mimi.sdk.processing.MimiApplicatorResult |
io.mimi.sdk.core.controller.processing.Fitting |
io.mimi.sdk.processing.model.Fitting |
io.mimi.sdk.core.controller.processing.Personalization |
io.mimi.sdk.processing.model.Personalization |
io.mimi.sdk.core.controller.processing.MimiParameterApplicator |
Removed |
io.mimi.sdk.core.controller.processing.MimiProcessingParameter |
io.mimi.sdk.processing.MimiProcessingParameter |
io.mimi.sdk.core.controller.processing.ProcessingParameterResult |
io.mimi.sdk.processing.ProcessingParameterResult |
io.mimi.sdk.core.controller.processing.ProcessingSession |
io.mimi.sdk.processing.ProcessingSession |
io.mimi.sdk.core.controller.processing.MimiPresetParameterDataSource |
io.mimi.sdk.processing.MimiPresetParameterDataSource |
io.mimi.sdk.core.controller.processing.MimiProcessingParameterDataSource |
io.mimi.sdk.processing.MimiProcessingParameterDataSource |
io.mimi.sdk.core.controller.processing.ProcessingParameterState |
io.mimi.sdk.processing.ProcessingParameterState |
io.mimi.sdk.core.controller.processing.ProcessingParameterExceptions |
io.mimi.sdk.processing.ProcessingParameterExceptions |