Howler.js Versions Save

Javascript audio library for the modern web.

v2.0.4

6 years ago
  • CHANGED Removed the resuming state, which wasn't actually being used and was leading to a bug on Android (#679).
  • CHANGED Any playback initiated before the sound has loaded will now go into the queue to fix various race conditions (#714).
  • FIXED Correctly initialize an AudioContext with the global mute status (#714).
  • FIXED AudioContext unlocks on user interaction within a cross-domain iframe on Android Chrome (#756).
  • FIXED Stopping/pausing a group of sounds now behaves as expected in edge cases (#734).
  • FIXED Sound ID's now start at 1000 instead of 0 to avoid rate collisions (#764).
  • FIXED Prevent unknown mime errors on Internet Explorer when unloading a sound (#720).
  • FIXED Correctly clean up error event listeners (#720).
  • FIXED Audio clipping in Internet Explorer when network latency is present with HTML5 Audio (#720).
  • FIXED Allow passing just an event and ID to turn off listener (#767).
  • FIXED npm warning caused by invalid license definition (#763).

v2.0.3

7 years ago
  • CHANGED Unloading a sound no longer fires the end event (#675).
  • FIXED Remove setTimeout wrapper on HTML5 play call to fix issues on mobile browsers (#694).
  • FIXED Remove rare possibility of duplicate sound ID's by using global counter (#709).
  • FIXED Support fades with 2+ decimal places (#696).
  • FIXED Error in Firefox caused by invalid silent WAV on unload (#678).
  • FIXED Check for and warn about missing file extension (#680).
  • FIXED Regression in Firefox relating to spatial audio (#664).

v2.0.2

7 years ago
  • FIXED Wait to begin playback until AudioContext has resumed (#643).
  • FIXED Run noAudio check on initial setup instead of waiting for first Howl (#619).
  • FIXED Add play event to start of queue when autoplay is used (#659).
  • FIXED Make sure seek and duration are always >= 0 to prevent errors (#682).
  • FIXED Audio test wouldn't work in IE11 Enhanced Security Mode (#631).
  • FIXED Ensure AudioContext exists on unload (#646).
  • FIXED Always fire pause event even if sound is already paused (#639).

v2.0.1

7 years ago
  • ADDED Support for FLAC audio files.
  • FIXED Improve fading performance when short fade times are used (#621).
  • FIXED Correctly handle fades from 0 to 0 volume (#575).
  • FIXED Prevent a load error from blocking all future playback (#613).
  • FIXED Reset noAudio to false when a sound is unloaded (#617).
  • FIXED Stop a sound even if it is not playing (#595).
  • FIXED Emit stop event before returning from stop (#616).
  • FIXED Improve codec checks by removing x- prefix (#576).
  • FIXED Set correct loop start/end when calling loop on a sprite (#604).

v2.0.0

7 years ago

This major release contains just a few breaking changes outlined below. Howler.js has been rewritten from the ground up using the knowledge and work since the initial release. There's a long list of additions and improvements, which I urge you to read through as the library has evolved quite a bit over this time.

The biggest change is how you should think about your audio when using howler.js. There is now the concept of global (Howler), group (Howl) and single sound (Sound). Each sound that is played gets its own Sound object that can be manipulated, giving much greater control over playback, whether using sprites or not. Howl method calls can then apply to one sound or all in the group.

Howler (global) ->
        Howl (group) ->
                Sound (single)

Howler.js now also has the concept of plugins. The core represents 100% compatibility across hTML5 Audio and Web Audio, adhering to the initial goals of the library. There is also a new Spatial Plugin that adds 3D and stereo audio support only available in the Web Audio API.

Read more about the update in this blog post.

Breaking Changes

  • The buffer option is now named html5. Use this to force HTML5 Audio usage.
  • The pos method has been renamed to seek.
// Change the seek position of a sound (in seconds).
sound.seek(10);
  • mute and unmute have been consolidated into mute.
// Mute a sound (or all sounds).
sound.mute(true);
Howler.mute(true);

// Unmute a sound (or all sounds).
sound.mute(false);
Howler.mute(false);
  • The play method no longer takes a callback and immediately returns the playback sound id (this means you can no longer chain onto the play method, but all others work the same).
// Get sound id for a specific playback.
var id = sound.play();

// Pause this playback.
sound.pause(id);
  • The deprecated fadeIn and fadeOut methods have been removed in favor of the single fade method.
// Fade in a sound.
sound.fade(0, 1, 1000);

// Fade out the sound once the previous fade has ended.
sound.once('fade', function(){
  sound.fade(1, 0, 1000);
});

New Features

  • Lots of general code cleanup, simplification and reorganization.
  • Howler.js is now modularized. The core represents the initial goal for howler.js with 100% compatibility across HTML5 Audio and Web Audio. The spatial plugin adds spatial and stereo support through Web Audio API.
  • The new structure allows for full control of sprite playback (this was buggy or didn't work at all before).
  • New once method to setup event listeners that will automatically remove themselves once fired.
  • New playing method that will return true if the specified sound is currently playing.
  • New duration method that will return the duration of the audio source.
  • New state method that will return the loaded state of the Howl.
  • New preload option to allow disabling the auto-preload functionality.
  • New events: fade, stop, mute, volume, rate, seek.
  • New rate method that allows changing playback rate at runtime.
  • New global unload method that unloads all active Howls and resets the AudioContext to clear memory.
  • New pool option to allow setting the inactive sound pool size (for advanced use, still defaults to 5).
  • Support for playback of Dolby Audio files.
  • Support for .webm extension in addition to .weba.
  • Support for playback of CAFF audio files.
  • (Spatial) New Howler listener methods stereo, pos and orientation.
  • (Spatial) New Howl methods stereo, pos, orientation and pannerAttr to control stereo and spatial audio of single sounds or groups of sounds.
  • (Spatial) pannerAttr allows for control of coneInnerAngle, coneOUterAngle, coneOuterGain, distanceModel, maxDistance, panningModel, refDistance and rolloffFactor.
  • Third parameter to on, once and off to allow listening or removing events for only a specific sound id.
  • The following methods now alter all sounds within a Howl group when no id is passed: pause, stop, volume, fade, mute, loop, rate.
  • New codec recommendations and notes have been added to the documentation.
  • Web Audio AudioContext now automatically suspends and resumes to lower processing and power usage.

Bug Fixes

  • Improved the ext option and made it especially usefully for playing streams (for example, SoundCloud).
  • The fade method now uses native Web Audio fading when in that mode.
  • Fades are now automatically stopped when a new one is started, volume is changed or the sound is paused/stopped.
  • Moved any needed try/catch statements into own methods to prevent de-optimization in V8 and others.
  • Automatically checks for disabled audio in Internet Explorer.
  • An internal event queue is now used to fix issues caused by multiple actions pre-load.
  • When using Web Audio, a panner node is only added when spatial audio is used.
  • The rate option now changes the playback rate on both Web Audio and HTML5 Audio.
  • The event system has been overhauled to be more reliable.
  • Methods called before a sound has loaded no longer cause events to stick in the queue.
  • The end event correctly fires at the end of each loop when using Web Audio.
  • Several issues with playback of sprites.
  • Several issues with playback timing after pausing sounds.
  • Improved support for seeking a sound while it is playing.
  • When playback rate is changed, the end event now fires at the correct time.
  • Potential memory leak when using the unload method.
  • Calling pause on a sound that hasn't yet loaded now works correctly.
  • Muting a sound while it is fading now works.
  • Playback of base64 encoded sounds in Internet Explorer 9.
  • MIME check for some base64 encoded MP3's.
  • Now tries to automatically unlock audio on mobile browsers besides Mobile Safari.
  • Falls back to HTML5 Audio when loading an HTTP file on an HTTPS page (avoids Mixed Content errors).
  • Stopping a stream is now possible, along with various other fixes.
  • Audio on Chrome for Android no longer gets stuck after a period of inactivity.
  • Crash in iOS <9 webview.
  • Bug in iOS that can cause audio distortion when opening/closing browser.
  • Only setup AudioContext after first Howl is setup so that background audio on mobile devices behaves as expected.