Yanap (yet another native audio plugin)
This Cordova's plugin is an alternative to the cordova-plugin-media
and cordova-plugin-nativeaudio
/cordova-plugin-lowlatencyaudio
plugins to play audio from native on Android. It may support iOS in the future.
Main features we have in mind while developing it are:
- gapless audio loops
- low latency playback for short sounds
Basic usage
var Yanap = cordova.plugins.Yanap;
var myBackgroundLoop = new Yanap.AudioInstance(Yanap.AUDIO_TYPE.LOOP);
myBackgroundLoop.load('audio/bg.mp3');
myBackgroundLoop.play();
API
Yanap.AUDIO_TYPE
Enum of available audio instance types:
Yanap.AUDIO_TYPE.LOOP
Yanap.AUDIO_TYPE.MUSIC
Yanap.AUDIO_TYPE.SOUND
Yanap.AUDIO_INSTANCE_STATUS
Enum of possible audio instance status:
Yanap.AUDIO_INSTANCE_STATUS.ERROR
Yanap.AUDIO_INSTANCE_STATUS.EMPTY
Yanap.AUDIO_INSTANCE_STATUS.LOADING
Yanap.AUDIO_INSTANCE_STATUS.LOADED
Yanap.AUDIO_INSTANCE_STATUS.PLAYING
Yanap.AUDIO_INSTANCE_STATUS.LOOPING
Yanap.AUDIO_INSTANCE_STATUS.STOPPED
Yanap.AUDIO_INSTANCE_STATUS.RELEASED
NB:
LOOPING
is available only for audio types LOOP
PLAYING
and STOPPED
are not available for audio types SOUND
Yanap.AudioInstance(audioType, onStatusUpdate)
Audio instance constructor.
audioType
can be any value present in Yanap.AUDIO_TYPE
.onStatusUpdate
is an optional method that will receive a Yanap.AUDIO_INSTANCE_STATUS
as first parameter and a string containing additional information as second parameter (mostly used when an error happened).
var mySong = new Yanap.AudioInstance(
Yanap.AUDIO_TYPE.MUSIC,
function onStatusUpdate(status, additionalInfo) {
if (status === Yanap.AUDIO_INSTANCE_STATUS.ERROR) {
return console.error('error: ' + additionalInfo);
}
console.log('new status: ' + status);
}
);
This creation is successful even if audio type is invalid (it would fail during the loading).
Yanap.AudioInstance.load(filePath)
Used to load a file.
filePath
is a string:
- relative to application asset folder if string starts with
file:///android_asset/
- else an absolute path if string starts with
file://
- else a relative path to application
cache
directory
var myLaserFx = new Yanap.AudioInstance(Yanap.AUDIO_TYPE.SOUND, function (status) {
if (status === Yanap.AUDIO_INSTANCE_STATUS.ERROR) {
return console.error('error: ' + additionalInfo);
}
if (status === Yanap.AUDIO_INSTANCE_STATUS.LOADED) {
myLaserFx.play();
}
});
myLaserFx.load('audio/laser.mp3');
var myLaserFx = new Yanap.AudioInstance(Yanap.AUDIO_TYPE.SOUND);
myLaserFx.load('audio/laser.mp3');
myLaserFx.play();
Yanap.AudioInstance.play()
Used to start or resume an audio instance playback.
Yanap.AudioInstance.stop()
Used to interrupt an audio instance playback.
Yanap.AudioInstance.setVolume(channel1, channel2)
Set audio volume.
channel1
and channel2
represents the left and right speakers.- Values are in a range of
0.0
~ 1.0
.
Yanap.AudioInstance.release()
Has to be called when you don't need an audio instance anymore. It's automatically stopping playback before releasing all resources.
Yanap.AudioInstance.fileLength
Size of the audio file in bytes. Default is -1
.
Yanap.releaseAll()
Static method used to stop and release all audio instances.