/SoundJS

A Javascript library for working with Audio. Features a simple interface as the front end to multiple audio APIs via a plugin model. Currently supports HTML5 Audio & Flash.

Primary LanguageJavaScriptMIT LicenseMIT

SoundJS

SoundJS is a library to make working with audio on the web easier. It provides a consistent API for playing audio in different browsers, including using a target plugin model to provide an easy way to provide additional audio plugins like a Flash fallback. A mechanism has been provided for easily tying in audio preloading to PreloadJS.

Example

createjs.Sound.addEventListener("fileload", handleLoadComplete);
createjs.Sound.registerSound({src:"path/to/sound.mp3|path/to/sound.ogg", id:"sound"});
function handleLoadComplete(event) {
	createjs.Sound.play("sound");
}

License

Built by gskinner.com, and released for free under the MIT license, which means you can use it for almost any purpose (including commercial projects). We appreciate credit where possible, but it is not a requirement.

Support and Resources

Classes

The core API for playing sounds. Call createjs.Sound.play(sound, ...options), and a sound instance is created that can be used to control the audio, and dispatches events when it is complete, loops, or is interrupted.

A controllable sound object that wraps the actual plugin implementation, providing a consistent API for audio playback, no matter what happens in the background. Sound instances can be paused, muted, and stopped; and the volume, pan (where available), and position changed using the simple API.

The default, built-in plugin, which uses Web Audio APIs to playback sounds. Note that WebAudio will fail to load when run locally, and the HTML audio plugin will be used instead.

The fallback built-in plugin, which manages audio playback via the HTML5 tag. This will be used in instances where the WebAudio plugin is not available.

An additional plugin which will playback audio in a Cordova app and tools that utilize Cordova such as PhoneGap or Ionic. You must manually register this plugin. Currently available on github since SoundJS-0.6.1.

An additional plugin which uses a flash shim (and SWFObject) to playback audio using Flash. You must manually set up and register this plugin.

Have a look at the included examples and API documentation for more in-depth information.

Changes for SpringRoll

  • The FlashAudioPlugin as3 class uses startSound() a little differently to support proper resuming of looped audio.
  • The FlashAudioPlugin as3 class allows all domains to embed it.
  • The FlashAudioPlugin as3 class plays infinitely looping audio differently to allow it to play gaplessly - this prevents notification when a loop completes in that case.
  • FlashAudioPlugin can handle changing the master volume before the swf is loaded.
  • Changed how FlashAudioPlugin handles loaded files to avoid reloading files each time you play a sound.
  • Sound gets the extension and filename differently from the url so that assets retrieved via PHP service don't break it.
  • Added global pause() and resume() to Sound.
  • Added _volume as a property to AbstractPlugin so it wouldn't be undefined before setVolume() was called
  • Made a small change to XHRRequest's _checkError() to be more Cordova friendly.
  • Added a check in WebAudioSoundInstance to avoid having negative sound durations, which throws errors.