@skylabs_technology/capacitor-mixer v0.9.21
Mixer Plugin by Skylabs Technology
Android
Usage
Minimum target deployment: 28
to set this value you can add this to your ./android/variables.gradle
ext {
minSdkVersion = 28
}Permissions
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data android:scheme="@string/custom_url_scheme" />
</intent-filter>
<intent-filter>
<action android:name="android.intent.action.OPEN_DOCUMENT" />
<category android:name="android.intent.category.DEFAULT" />
<data android:scheme="io.ionic.starter" />
<data android:mimeType="audio/*" />
</intent-filter><uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"></uses-permission>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-permission>
<uses-permission android:name="android.permission.RECORD_AUDIO"></uses-permission>
<uses-permission android:name="android.permission.READ_PHONE_STATE"></uses-permission>API
requestMixerPermissions()addListener(string, ...)addListener(string, ...)addListener(string, ...)playOrPause(...)stop(...)isPlaying(...)getCurrentVolume(...)getCurrentEq(...)initAudioFile(...)adjustVolume(...)adjustEq(...)setElapsedTimeEvent(...)getElapsedTime(...)getTotalTime(...)initMicInput(...)getInputChannelCount()initAudioSession(...)deinitAudioSession()checkAudioSessionState()resetPlugin()getAudioSessionPreferredInputPortType()destroyMicInput(...)destroyAudioFile(...)validateFileUri(...)startStream(...)stopStream()- Interfaces
- Type Aliases
- Enums
requestMixerPermissions()
requestMixerPermissions() => Promise<BaseResponse<null>>Requests permissions required by the mixer plugin
iOS: Permissions must be added to application in the Info Target Properties
Android: Permissions must be added to AndroidManifest.XML
See README for additional information on permissions
Returns: Promise<BaseResponse<null>>
addListener(string, ...)
addListener(eventName: string, listenerFunc: (response: AudioSessionEvent) => void) => Promise<PluginListenerHandle> & PluginListenerHandleAdds listener for AudioSession events
Ex:
Register Listener:
Mixer.addListener("myEventName", this.myListenerFunction.bind(this));
myListenerFunction(response: <a href="#audiosessionevent">AudioSessionEvent</a>) {
// handle event
}| Param | Type |
|---|---|
eventName | string |
listenerFunc | (response: AudioSessionEvent) => void |
Returns: Promise<PluginListenerHandle> & PluginListenerHandle
addListener(string, ...)
addListener(eventName: string, listenerFunc: (response: MixerTimeEvent) => void) => Promise<PluginListenerHandle> & PluginListenerHandleAdds listener for audio track time update events
Ex:
Register Listener:
Mixer.addListener("myEventName", this.myListenerFunction.bind(this));
myListenerFunction(response: <a href="#mixertimeevent">MixerTimeEvent</a>) {
// handle event
}| Param | Type |
|---|---|
eventName | string |
listenerFunc | (response: MixerTimeResponse) => void |
Returns: Promise<PluginListenerHandle> & PluginListenerHandle
addListener(string, ...)
addListener(eventName: string, listenerFunc: (response: VolumeMeterEvent) => void) => Promise<PluginListenerHandle> & PluginListenerHandleAdds listener for volume metering update events
Ex:
Register Listener:
Mixer.addListener("myEventName", this.myListenerFunction.bind(this));
myListenerFunction(response: <a href="#volumemeterevent">VolumeMeterEvent</a>) {
// handle event
}| Param | Type |
|---|---|
eventName | string |
listenerFunc | (response: VolumeMeterEvent) => void |
Returns: Promise<PluginListenerHandle> & PluginListenerHandle
playOrPause(...)
playOrPause(request: BaseMixerRequest) => Promise<BaseResponse<PlaybackStateResponse>>Toggles playback and pause on an initialized audio file
| Param | Type |
|---|---|
request | BaseMixerRequest |
Returns: Promise<BaseResponse<PlaybackStateResponse>>
stop(...)
stop(request: BaseMixerRequest) => Promise<BaseResponse<PlaybackStateResponse>>Stops playback on a playing audio file
| Param | Type |
|---|---|
request | BaseMixerRequest |
Returns: Promise<BaseResponse<PlaybackStateResponse>>
isPlaying(...)
isPlaying(request: BaseMixerRequest) => Promise<BaseResponse<IsPlayingResponse>>A boolean that returns the playback state of initialized audio file
| Param | Type |
|---|---|
request | BaseMixerRequest |
Returns: Promise<BaseResponse<IsPlayingResponse>>
getCurrentVolume(...)
getCurrentVolume(request: ChannelPropertyRequest) => Promise<BaseResponse<VolumeResponse>>Returns current volume of a channel as a number between 0 and 1
| Param | Type |
|---|---|
request | ChannelPropertyRequest |
Returns: Promise<BaseResponse<VolumeResponse>>
getCurrentEq(...)
getCurrentEq(request: ChannelPropertyRequest) => Promise<BaseResponse<EqResponse>>Returns an object with numeric values for gain and frequency in bass, mid, and treble ranges
| Param | Type |
|---|---|
request | ChannelPropertyRequest |
Returns: Promise<BaseResponse<EqResponse>>
initAudioFile(...)
initAudioFile(request: InitChannelRequest) => Promise<BaseResponse<InitResponse>>Returns AudioId string of initialized audio file
| Param | Type |
|---|---|
request | InitChannelRequest |
Returns: Promise<BaseResponse<InitResponse>>
adjustVolume(...)
adjustVolume(request: AdjustVolumeRequest) => Promise<BaseResponse<null>>Adjusts volume for a channel
| Param | Type |
|---|---|
request | AdjustVolumeRequest |
Returns: Promise<BaseResponse<null>>
adjustEq(...)
adjustEq(request: AdjustEqRequest) => Promise<BaseResponse<null>>Adjusts gain and frequency in bass, mid, and treble ranges for a channel
| Param | Type |
|---|---|
request | AdjustEqRequest |
Returns: Promise<BaseResponse<null>>
setElapsedTimeEvent(...)
setElapsedTimeEvent(request: SetEventRequest) => Promise<BaseResponse<null>>Sets an elapsed time event name for a given audioId. To unset elapsedTimeEvent pass an empty string and this will stop the event from being triggered.
Only applicable for audio files
| Param | Type |
|---|---|
request | SetEventRequest |
Returns: Promise<BaseResponse<null>>
getElapsedTime(...)
getElapsedTime(request: BaseMixerRequest) => Promise<BaseResponse<MixerTimeResponse>>Returns an object representing hours, minutes, seconds, and milliseconds elapsed
| Param | Type |
|---|---|
request | BaseMixerRequest |
Returns: Promise<BaseResponse<MixerTimeResponse>>
getTotalTime(...)
getTotalTime(request: BaseMixerRequest) => Promise<BaseResponse<MixerTimeResponse>>Returns total time in an object of hours, minutes, seconds, and millisecond totals
| Param | Type |
|---|---|
request | BaseMixerRequest |
Returns: Promise<BaseResponse<MixerTimeResponse>>
initMicInput(...)
initMicInput(request: InitChannelRequest) => Promise<BaseResponse<InitResponse>>Initializes microphone channel on mixer
Returns AudioId string of initialized microphone input
| Param | Type |
|---|---|
request | InitChannelRequest |
Returns: Promise<BaseResponse<InitResponse>>
getInputChannelCount()
getInputChannelCount() => Promise<BaseResponse<ChannelCountResponse>>Returns the channel count and name of the initialized audio device
Returns: Promise<BaseResponse<ChannelCountResponse>>
initAudioSession(...)
initAudioSession(request: InitAudioSessionRequest) => Promise<BaseResponse<InitAudioSessionResponse>>Initializes audio session with selected port type,
Returns a value describing the initialized port type for the audio session (usb, built-in, etc.)
| Param | Type |
|---|---|
request | InitAudioSessionRequest |
Returns: Promise<BaseResponse<InitAudioSessionResponse>>
deinitAudioSession()
deinitAudioSession() => Promise<BaseResponse<null>>Cancels audio session and resets selected port. Use prior to changing port type
Returns: Promise<BaseResponse<null>>
checkAudioSessionState()
checkAudioSessionState() => Promise<BaseResponse<SessionStateResponse>>Checks the current state of the AudioSession.
Returns: Promise<BaseResponse<SessionStateResponse>>
resetPlugin()
resetPlugin() => Promise<BaseResponse<null>>Resets plugin state back to its initial state
<span style="color: 'red'">CAUTION: This will completely wipe everything you have initialized from the plugin!</span>
Returns: Promise<BaseResponse<null>>
getAudioSessionPreferredInputPortType()
getAudioSessionPreferredInputPortType() => Promise<BaseResponse<InitResponse>>Returns a value describing the initialized port type for the audio session (usb, built-in, etc.)
Returns: Promise<BaseResponse<InitResponse>>
destroyMicInput(...)
destroyMicInput(request: BaseMixerRequest) => Promise<BaseResponse<DestroyResponse>>De-initializes a mic input channel based on audioId
Note: Once destroyed, the channel cannot be recovered
| Param | Type | Description |
|---|---|---|
request | BaseMixerRequest | audioId |
Returns: Promise<BaseResponse<DestroyResponse>>
destroyAudioFile(...)
destroyAudioFile(request: BaseMixerRequest) => Promise<BaseResponse<DestroyResponse>>De-initializes an audio file channel based on audioId
Note: Once destroyed, the channel cannot be recovered
| Param | Type | Description |
|---|---|---|
request | BaseMixerRequest | audioId |
Returns: Promise<BaseResponse<DestroyResponse>>
validateFileUri(...)
validateFileUri(request: FileValidationRequest) => Promise<BaseResponse<FileValidationResponse>>Validates file path and returns true if valid, false if invalid
| Param | Type |
|---|---|
request | FileValidationRequest |
Returns: Promise<BaseResponse<FileValidationResponse>>
startStream(...)
startStream(request: StreamRequest) => Promise<BaseResponse<null>>Starts a stream to a provided URL
| Param | Type |
|---|---|
request | StreamRequest |
Returns: Promise<BaseResponse<null>>
stopStream()
stopStream() => Promise<BaseResponse<null>>Stops a stream if one is currently active.
Returns: Promise<BaseResponse<null>>
Interfaces
BaseResponse
The response wrapper for all response objects
| Prop | Type | Description |
|---|---|---|
status | ResponseStatus | Status of returned request. Ex: 'SUCCESS', 'ERROR' |
message | string | Message that describes response Note: Can be used for user messages |
data | T | Response data object field Ex: A MixerTimeResponse object |
PluginListenerHandle
| Prop | Type |
|---|---|
remove | () => Promise<void> |
AudioSessionEvent
Event response for handling audio session notifications
| Prop | Type | Description |
|---|---|---|
handlerType | AudioSessionHandlerTypes | The event type that occurred |
MixerTimeResponse
Response representing HH:MM:SS.ms-formatted time
| Prop | Type | Description |
|---|---|---|
milliSeconds | number | ms in formatted time |
seconds | number | SS in formatted time |
minutes | number | MM in formatted time |
hours | number | HH in formatted time |
VolumeMeterEvent
Event response for handling current volume level
| Prop | Type | Description |
|---|---|---|
meterLevel | number | Calculated amplitude in dB - Range: -80 to 0 dB |
PlaybackStateResponse
Response that returns PlayerState
| Prop | Type | Description |
|---|---|---|
state | PlayerState | Represents the state of the player |
BaseMixerRequest
Base class for all mixer requests, consists of audioId only
| Prop | Type | Description |
|---|---|---|
audioId | string | A string identifying the audio file or microphone channel instance |
IsPlayingResponse
Response for tracking player state as a boolean
| Prop | Type | Description |
|---|---|---|
value | boolean | Value of tracked player state |
VolumeResponse
Response for tracking channel volume
| Prop | Type | Description |
|---|---|---|
volume | number | Value of tracked channel volume |
ChannelPropertyRequest
Request to get info about channel properties such as current volume, EQ, etc.
| Prop | Type | Description |
|---|---|---|
inputType | InputType | Type of input on which properties are being requested |
EqResponse
Response for tracking channel EQ
| Prop | Type | Description |
|---|---|---|
bassGain | number | Bass gain for channel - Range: -36 to +15 dB |
bassFrequency | number | Bass frequency for channel - Suggested range: 20Hz to 499Hz |
midGain | number | Mid gain for channel - Range: -36 to +15 dB |
midFrequency | number | Mid frequency for channel - Suggested range: 500Hz to 1499Hz |
trebleGain | number | Treble gain for channel - Range: -36 to +15 dB |
trebleFrequency | number | Treble frequency for channel - Suggested range: 1.5kHz to 20kHz |
InitResponse
Response for initialization of channel
| Prop | Type | Description |
|---|---|---|
value | string | Initialized channel audioId |
InitChannelRequest
Request used to initialize a channel on the mixer
| Prop | Type | Description |
|---|---|---|
filePath | string | A string identifying the path to the audio file on device. Unused if initializing microphone channel |
elapsedTimeEventName | string | A string identifying the elapsed time event name. This will automatically set the event and setElapsedTimeEvent is not needed. Unused if initializing microphone channel |
channelNumber | number | The channel number being initialized for microphone. Starts at 0. Unused if initializing audio file |
bassGain | number | Optional bass gain setting for initialization: -36dB to +15 dB Default: 0dB |
bassFrequency | number | Optional init eq setting for bass EQ band iOS Default: 115Hz Android Default: 200Hz |
midGain | number | Optional mid gain setting for initialization: -36dB to +15 dB Default: 0dB |
midFrequency | number | Optional init setting for mid EQ band iOS Default: 500Hz Android Default: 1499Hz |
trebleGain | number | Optional treble gain setting for initialization: -36dB to +15 dB Default: 0dB |
trebleFrequency | number | Optional init eq setting for treble EQ band iOS Default: 1.5kHz Android Default: 20kHz |
volume | number | Optional init setting for volume Default: 1 Range: 0 - 1 |
channelListenerName | string | Required name used to set listener for volume metering Subscribed event returns VolumeMeterEvent Note: if empty string is passed, metering will be disabled on channel |
AdjustVolumeRequest
For mixer requests manipulating volume level
| Prop | Type | Description |
|---|---|---|
volume | number | A number between 0 and 1 specifying volume level being set |
inputType | InputType | Type of input on which volume is being adjusted |
AdjustEqRequest
For mixer requests manipulating EQ
| Prop | Type | Description |
|---|---|---|
eqType | EqType | Identifies EQ band to adjust: Bass, Mid, Treble |
gain | number | A number between -36dB and +15dB identifying EQ band gain |
frequency | number | A number identifying cutoff/central frequency for EQ band Bass: - iOS implemented as a low shelf - Android implemented as a high pass filter Mid: - implemented as a parametric 'bump' Treble: - iOS implemented as a high shelf - Android implemented as a low pass filter |
inputType | InputType | Type of input on which EQ is being adjusted |
SetEventRequest
Request to set an event listener
| Prop | Type | Description |
|---|---|---|
eventName | string | The name of the event that will be subscribed to Subscribed event returns MixerTimeEvent |
ChannelCountResponse
Response for channel count of requested audio port
| Prop | Type | Description |
|---|---|---|
channelCount | number | Number of channels found |
deviceName | string | Name of the device at the requested audio port |
InitAudioSessionResponse
Response for initalizing audio session
| Prop | Type | Description |
|---|---|---|
preferredInputPortType | AudioSessionPortType | Type found when initializing audio session |
preferredInputPortName | string | Device name found when initializing audio session |
preferredIOBufferDuration | number | iOS only Preferred buffer duration when initializing audio session |
InitAudioSessionRequest
Request to initialize an audio session
| Prop | Type | Description |
|---|---|---|
inputPortType | AudioSessionPortType | An enum describing input hardware device to be used |
ioBufferDuration | number | iOS only The preferred duration of the input buffer (0.05 recommended as a starting point, change may be observed as output latency) |
audioSessionListenerName | string | The name of the audio session event that will be subscribed to. Subscribed event returns AudioSessionEvent |
SessionStateResponse
Response that returns PlayerState
| Prop | Type | Description |
|---|---|---|
state | boolean | Represents the state of the player |
DestroyResponse
Response for destroying a channel
| Prop | Type | Description |
|---|---|---|
listenerName | string | The name of the volume metering event Note: If no event is found, empty string is returned |
elapsedTimeEventName | string | The name of the elapsed time event Note: If no event is found, empty string is returned |
FileValidationResponse
Response for validating file path
| Prop | Type | Description |
|---|---|---|
isFileValid | boolean | True if file path is found, False if file path is not found |
filePath | string | File path that was checked. |
FileValidationRequest
Request to validate a file path.
| Prop | Type | Description |
|---|---|---|
filePath | string | The file path that will be validated. |
StreamRequest
Request to stream audio to provided url
| Prop | Type |
|---|---|
streamUrl | string |
Type Aliases
MixerTimeEvent
Event response for handling current elapsed time
MixerTimeResponse
PlayerState
Possible states of player
"play" | "pause" | "stop" | "not implemented"
Enums
ResponseStatus
| Members | Value |
|---|---|
SUCCESS | "success" |
ERROR | "error" |
AudioSessionHandlerTypes
| Members | Value | Description |
|---|---|---|
INTERRUPT_BEGAN | "INTERRUPT_BEGAN" | Invoked when another audio session has started This can cause your audio to be 'ducked', or silenced with the audio session |
INTERRUPT_ENDED | "INTERRUPT_ENDED" | Invoked when another audio session has ended Your audio session should resume |
ROUTE_DEVICE_DISCONNECTED | "ROUTE_DEVICE_DISCONNECTED" | Invoked when the device you're currently connected to is disconnected from the audio session |
ROUTE_DEVICE_RECONNECTED | "ROUTE_DEVICE_RECONNECTED" | Invoked when previously-used device is reconnected to the audio session |
ROUTE_NEW_DEVICE_FOUND | "ROUTE_NEW_DEVICE_FOUND" | Invoked when previously-UNUSED device is connected to the audio session |
InputType
| Members | Value |
|---|---|
MIC | "mic" |
FILE | "file" |
EqType
| Members | Value |
|---|---|
BASS | "bass" |
MID | "mid" |
TREBLE | "treble" |
AudioSessionPortType
| Members | Value | Description |
|---|---|---|
HDMI | "hdmi" | |
AIRPLAY | "airplay" | iOS only |
BLUETOOTH_A2DP | "bluetoothA2DP" | |
BLUETOOTH_HFP | "bluetoothHFP" | |
BLUETOOTH_LE | "bluetoothLE" | iOS only |
BUILT_IN_MIC | "builtInMic" | |
HEADSET_MIC_WIRED | "headsetMicWired" | iOS only |
HEADSET_MIC_USB | "headsetMicUsb" | |
LINE_IN | "lineIn" | |
THUNDERBOLT | "thunderbolt" | iOS only |
USB_AUDIO | "usbAudio" | |
VIRTUAL | "virtual" |
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago