An HTML5 library that implements (and extends) the Audio object using the Web Audio API.
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.


Audia reimplements and extends the HTML5 Audio object using the Web Audio API.


  • Future-proof

  • Fails gracefully

  • Consistent API with HTML5 Audio which you probably already know

  • Fixes bugs in some Audio implementations

  • Implementation of Audio is weak across the board. Even in the best browers

  • this is future-proof. you get Audio which is the best you can get for now, then later down the road you get web audio api

  • and seriously, you'll need a wrapper for WAI anyway

A complete write-up on this project can be found on the Lost Decade Games blog.

API Documentation

Everything is identical to the HTML5 Audio spec. Anything not working as it should? File an issue! :)

In fact in many cases Audia is BETTER than the browser's native Audio implementation, even if it doesn't also support Web Audio API.

Global Audia object

TODO: Provide thin wrappers around the base code.

  • Audia (global object)

  • version: String The version of Audia being run. (Example: "0.1.0")

  • canPlayType: you can pass in mp3, ogg (helpers since normally it wants audio/ogg audio/mp3)

Gimme some sugar baby

Audia also has the below API. If any of the below functionality is not supported by the client, Audia will fail silently.

Audia instances

Example: var sound = new Audia();


Each Audia instance has the following properties:

  • currentTime: Number The playback point of the sound (in seconds).
  • duration: Number The length of the current sound buffer in seconds. (Read-only)
  • loop: Boolean If set to true, the audio will play again when it reaches the end of playback. (default: false)
  • muted: Boolean True if the sound has been muted, otherwise false.
  • paused: Boolean True if the sound is paused, false if it's playing. (Read-only)
  • src: String The URL of a sound file to load.
  • volume: Number The volume of the playback where 0 is muted and 1 is normal volume. (arbitrary maximum = 10), (default: 1)
  • onended: Function Gets called when playback reaches the end of the buffer.
  • onload: Function Gets called when a sound file (requested by setting src) is done loading.

* The italicized properties are only available if the client supports Web Audio API (otherwise they fail silently).


  • play: Begins playback of the sound buffer. Arguments: currentTime (optional) Sets the currentTime property before playing.
  • pause: Pauses sound playback (retaining currentTime).
  • stop: Stops sound playback (resetting currentTime to 0). // TODO: it's actually .muted (Boolean)
  • mute: Silences playback of the sound buffer.
  • unmute: Restores audible playback of the sound buffer.


Create a sound object and play an mp3

var sound = new Audia();
sound.src = "onslaught.mp3";;

Create sounds with some sugar

var backgroundMusic = new Audia("joshua_morse.mp3");
var battleMusic = new Audia({
	src: "a_recurring_conflict.mp3",
	loop: true

Move the playback pointer to 30 seconds into the sound buffer

sound.currentTime = 30;

Calculate the percentage of song that's played

var percentage = (sound.currentTime / sound.duration) * 100;

Stop it if it's playing

if (sound.playing) {

Play it when it loads

sound.onload = function () {
sound.src = "new_song.mp3";