Socket
Socket
Sign inDemoInstall

musquito

Package Overview
Dependencies
4
Maintainers
1
Versions
21
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

    musquito

An audio engine for HTML5 games and interactive websites


Version published
Weekly downloads
3
Maintainers
1
Created
Weekly downloads
 

Readme

Source

musquito

musquito is an audio engine created using Web Audio API for HTML5 games and interactive websites. It provides a simple abstraction to create and play sounds easier.

Below are some of the core features supported by the library.

  • Simple API to create and play sounds
  • Supports variety of codecs
  • Supports audio sprites
  • Supports streaming using HTML5 audio nodes
  • Fading
  • Caching
  • Auto Garbage Management

Browser Support

  • Google Chrome
  • Firefox
  • Safari
  • Opera
  • Microsoft Edge

Installation

At this time musquito is available only in npm and you can install it using the below command.

npm install musquito --save

You can also directly reference files available from the distribution folder.

<script src="musquito/dist/musquito-1.0.0.min.js"></script>

"Hello World" example

A simple example of how to create and play a gun fire sound.

ES6 and above

import $buzz from 'musquito';

const buzz = $buzz('gunfire.mp3');

buzz.play();

Classic JavaScript

var buzz = $buzz('gunfire.mp3');

buzz.play();

Advanced example

The below example shows how you can pass additional parameters like volume, rate and event handlers.

const buzz = $buzz({
  src: ['gunfire.mp3', 'gunfire.wav'],
  volume: 0.5,
  rate: 2,
  onplaystart: () => console.log('Playback started'),
  onplayend: () => console.log('Playback ended')
});

buzz.play();

Using sprites

Audio Sprites are like image sprites concatenates multiple small sounds in a single file. You can create audio sprite using this tool.

Below is an example of how to use sprites.

const buzz = $buzz({
  src: 'gamesprite.mp3',
  sprite:{
    'gun': [0, 0.48],
    'bomb': [2, 2.42],
    'greenade': [4, 4.67]
  }
});

buzz.play('gun');
buzz.play('bomb');

Playing Long Audio Files

To stream long audio files and play using HTML5 audio node you can pass the stream parameter as true.

const buzz = $buzz({
  src: 'bg.mp3',
  stream: true
});

buzz.play();

Fading Sounds

You can fade the volume of a playing sound linearly or exponentially as shown below.

const buzz = $buzz({
  src: 'bg.mp3'
});

buzz.play();
...

buzz.fade(0, 3);

API

$buzz function

$buzz(args: string|Array<string>|object)

$buzz is the single API that helps you to create and manage sounds. It's a function that returns a Buzz object. The Buzz object helps to control group of sounds created for a single audio source.

You can pass a single audio source, array of audio sources or an object. If an array of audio sources is passed then the first compatible one is picked for playing. If you need to pass additional information like initial volume, playback speed then you need to pass an object.

The different options you can pass in arguments object for the $buzz function.
NameTypeRequiredDefaultDescription
srcstring, ArrayyesSingle or array of audio sources. If an array of audio sources is passed then the first compatible one is picked for playing.
idnumbernoAuto-generatedThe unique identifier for the Buzz object.
volumenumberno1.0The initial volume of the sound. The value should be from 0.0 to 1.0.
ratenumberno1.0The initial playback speed. The value should be from 0.5 to 5.0.
loopbooleannofalsePass true to play the sound repeatedly.
mutedbooleannofalsePass true to keep the sound muted initially.
preloadbooleannofalsePass true to pre-load the sound.
autoplaybooleannofalsePass true to play the sound at-once created.
formatstring, ArraynofalseSingle or array of audio formats for the passed audio sources.
spriteobjectnoThe sprite definition object that contains the starting and ending positions of each sound embedded in the sprite.
onloadfunctionnoThe event handler for "load" event.
onloadprogressfunctionnoThe event handler for "loadprogress" event.
onunloadfunctionnoThe event handler for "unload" event.
onplaystartfunctionnoThe event handler for "playstart" event.
onplayendfunctionnoThe event handler for "playend" event.
onstopfunctionnoThe event handler for "stop" event.
onpausefunctionnoThe event handler for "pause" event.
onmutefunctionnoThe event handler for "mute" event.
onvolumefunctionnoThe event handler for "volume" event.
onratefunctionnoThe event handler for "rate" event.
onseekfunctionnoThe event handler for "seek" event.
onerrorfunctionnoThe event handler for "error" event.
ondestroyfunctionnoThe event handler for "destroy" event.

Buzz object methods

MethodReturnsDescription
load()BuzzLoads the audio buffer.
play(soundOrId?: string, number)BuzzPlays a new sound or the passed sound defined in the sprite or the sound that belongs to the passed id.
pause(id?: number)BuzzPauses the sound belongs to the passed id or all the sounds belongs to this group.
stop(id?: number)BuzzStops the sound belongs to the passed id or all the sounds belongs to this group.
mute(id?: number)BuzzMutes the sound belongs to the passed id or all the sounds belongs to this group.
unmute(id?: number)BuzzUn-mutes the sound belongs to the passed id or all the sounds belongs to this group.
volume(volume?: number, id?: number)Buzz, numberGets/sets the volume of the passed sound or the group. The passed value should be from 0.0 to 1.0.
rate(rate?: number, id?: number)Buzz, numberGets/sets the rate of the passed sound or the group. The passed value should be from 0.5 to 5.0.
seek(id: number, seek?: number)Buzz, numberGets/sets the current playback position of the sound.
loop(loop?: boolean, id?: number)Buzz, booleanGets/sets the looping behavior of a sound or the group.
fade(to: number, duration: number, type = 'linear', id?: number)BuzzFades the volume of a playing sound or all sounds belongs to the group.
fadeStop(id?: number)BuzzStops the current running fade of the passed sound or all sounds belongs to the group.
playing(id: number)booleanReturns true if the passed sound is playing.
muted(id?: number)booleanReturns true if the passed sound is muted or the group is muted.
state(id?: number)BuzzState, SoundStateReturns the state of the passed sound or the group.
duration(id?: number)numberReturns the duration of the passed sound or the total duration of the sound.
unload()BuzzUnloads the loaded audio buffer.
destroy()BuzzStops and destroys all the sounds belong to this group and release other dependencies.
on(eventName: string, handler: function, once = false, id?: number)BuzzSubscribes to an event for the sound or the group.
off(eventName: string, handler: function, id?: number)BuzzUn-subscribes from an event for the sound or the group.
id()numberReturns the unique id of the sound.
loadState()LoadStateReturns the audio resource loading status.
isLoaded()booleanReturns true if the audio source is loaded.
sound(id: number)SoundReturns the sound for the passed id.
alive(id: number)booleanReturns true if the passed sound exists.

$buzz static / global methods

These are wrapper methods of engine that helps to control the audio globally. You can invoke this method by $buzz.[methodname](args).

MethodReturnsDescription
setup(args?: object)$buzzSets-up the audio engine.
load(urls: string, Array, progressCallback: function)PromiseLoads single or multiple audio resources into audio buffers and returns them.
loadMedia(urls: string, Array)PromisePre-loads single or multiple HTML5 audio nodes with the passed resources and returns them.
unload(urls: string, Array)$buzzUnloads single or multiple loaded audio buffers from cache.
unloadMedia(urls: string, Array)$buzzReleases audio nodes allocated for the passed urls.
mute()$buzzMutes the engine.
unmute()$buzzUn-mutes the engine.
volume(vol?: number)$buzz, numberGets/sets the volume for the audio engine that controls global volume for all sounds.
stop()$buzzStops all the currently playing sounds.
suspend()$buzzStops all the playing sounds and suspends the engine immediately.
resume()$buzzResumes the engine from the suspended mode.
terminate()$buzzShuts down the engine.
muted()booleanReturns whether the engine is currently muted or not.
state()EngineStateReturns the state of the engine.
context()AudioContextReturns the created audio context.
isAudioAvailable()booleanReturns true if Web Audio API is available.
on(eventName: string, handler: function, once = false)$buzzSubscribes to an event.
off(eventName: string, handler: function)$buzzUn-subscribes from an event.
masterGain()GainNodeReturns the master gain node.
bufferLoader()BufferLoaderReturns buffer loader.
mediaLoader()MediaLoaderReturns media loader.

License

MIT

Keywords

FAQs

Last updated on 04 Apr 2020

Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc