Processing API Architecture
The Processing APIs can be divided into five main components:
- MimiProcessingController - Root entry point and context for Processing API access.
- MimiProcessingConfiguration - The top-level configuration for activating processing.
- MimiProcessingSession - The provider of access to processing parameters when activated.
- MimiProcessingParameter - Individual parameter object that provides state, data and mutation.
- MimiProcessingParameterApplicator - Responsible for applying the processing parameter values to external systems.
MimiProcessingController
Root entry point and context for Processing API access.
Overview
MimiProcessingController
is a controller owned and intialized by MimiCore
. It owns activation/deactivation of processing sessions, and therefore can be used as the source of truth for the active processing session.
Responsibilities
- Centralized location for access to Processing APIs.
- Owner of active processing session including activation and deactivation.
MimiProcessingConfiguration
The top-level configuration for activating processing.
Overview
The MimiProcessingConfiguration
is a DSL-style configuration which offers a declarative approach to configure Mimi Processing.
Responsibilities
- A higher-level, opinionated API which provides sensible, overridable defaults for different types of integrations.
- Wraps the lower-level Processing APIs which offer flexibility, but are more complex.
MimiProcessingSession
The provider of access to processing parameters when activated.
Overview
As described in the previous section, a MimiProcessingSession
is owned by a MimiProcessingController
, which is responsible for handling the session lifecycle in terms of activation/deactivation.
MimiProcessingSession
itself owns the processing parameters, and therefore is the gateway to parameter access.
Responsibilities
- Owner of all processing parameters, providing access to
isEnabled
,intensity
andpreset
. - Source of truth for
fitting
which provides required fitting information for preset acquisition. - Provides the ability for processing to be “interrupted” and automatically disabled due to external events (such as the hearing test launching).
MimiProcessingParameter
The focal point for state, application and data.
Overview
A MimiProcessingParameter
represents an individual parameter that can be used to control Mimi processing functionality. It encompasses a value that can be mutated and applied asynchronously with the help of MimiProcessingParameterApplicator
(s).
The MimiProcessingSession
defines the following processing parameters to provide access and control of the Mimi processing:
isEnabled
- Whether Mimi processing is enabled or disabled.intensity
- Intensity of Mimi processing.preset
- Preset data model for use with a Mimi processor.
Responsibilities
- Providing access to the current parameter value.
- Applying values to a collection of associated applicators using the value application sequence.
- Fetching values from remote data sources asynchronously (such as preset data).
- Providing state and value updates to a collection of registered subscribers.
MimiProcessingParameterApplicator
Responsible for applying the processing parameter values to external systems.
Overview
Arguably the most relevant Processing API component for most integrators is the MimiProcessingParameterApplicator
.
An applicator is an accessory of a MimiProcessingParameter
that is capable of performing the value application logic for its associated parameter. It is roughly equivalent to the previous MimiProcessingHandler
concept.
In simple terms, its role is to apply processing parameter values to an external system. When there is a request to update a processing parameter value, its applicators are requested to apply this value. The result of this request in turn influences the MimiProcessingParameter
state.
Responsibilities
- Provides an
apply
method which will allow the applicator to asynchronously apply a value to an external system. - Ability to set a
timeout
to specify a time duration which if exceeded is considered erroneous and will cause a value application sequence to fail.
Integrating Processing
The Integrating Processing guide explains how to add a custom Processing component to provide your users with Mimified audio.