Skip to main content
Version: Phaser v3.88.2

WebAudioSoundManager

Web Audio API implementation of the Sound Manager.

Not all browsers can play all audio formats.

There is a good guide to what's supported: Cross-browser audio basics: Audio codec support.

Constructor

new WebAudioSoundManager(game)

Parameters

nametypeoptionaldescription
gamePhaser.GameNoReference to the current game instance.

Scope: static

Extends

Phaser.Sound.BaseSoundManager

Source: src/sound/webaudio/WebAudioSoundManager.js#L16
Since: 3.0.0

Inherited Members

From Phaser.Sound.BaseSoundManager:


Public Members

context

context: AudioContext

Description:

The AudioContext being used for playback.

Source: src/sound/webaudio/WebAudioSoundManager.js#L40
Since: 3.0.0


destination

destination: AudioNode

Description:

Destination node for connecting individual sounds to.

Source: src/sound/webaudio/WebAudioSoundManager.js#L71
Since: 3.0.0


masterMuteNode

masterMuteNode: GainNode

Description:

Gain node responsible for controlling global muting.

Source: src/sound/webaudio/WebAudioSoundManager.js#L49
Since: 3.0.0


masterVolumeNode

masterVolumeNode: GainNode

Description:

Gain node responsible for controlling global volume.

Source: src/sound/webaudio/WebAudioSoundManager.js#L58
Since: 3.0.0


mute

mute: boolean

Overrides: Phaser.Sound.BaseSoundManager#mute

Fires: Phaser.Sound.Events#event:GLOBAL_MUTE

Source: src/sound/webaudio/WebAudioSoundManager.js#L508
Since: 3.0.0


volume

volume: number

Overrides: Phaser.Sound.BaseSoundManager#volume

Fires: Phaser.Sound.Events#event:GLOBAL_VOLUME

Source: src/sound/webaudio/WebAudioSoundManager.js#L548
Since: 3.0.0


Inherited Methods

From Phaser.Events.EventEmitter:

From Phaser.Sound.BaseSoundManager:


Public Methods

add

<instance> add(key, [config])

Description:

Adds a new sound into the sound manager.

Parameters:

nametypeoptionaldescription
keystringNoAsset key for the sound.
configPhaser.Types.Sound.SoundConfigYesAn optional config object containing default sound settings.

Overrides: Phaser.Sound.BaseSoundManager#add

Returns: Phaser.Sound.WebAudioSound - The new sound instance.

Source: src/sound/webaudio/WebAudioSoundManager.js#L204
Since: 3.0.0


createAudioContext

<instance> createAudioContext(game)

Description:

Method responsible for instantiating and returning AudioContext instance.

If an instance of an AudioContext class was provided through the game config,

that instance will be returned instead. This can come in handy if you are reloading

a Phaser game on a page that never properly refreshes (such as in an SPA project)

and you want to reuse already instantiated AudioContext.

Parameters:

nametypeoptionaldescription
gamePhaser.GameNoReference to the current game instance.

Returns: AudioContext - The AudioContext instance to be used for playback.

Source: src/sound/webaudio/WebAudioSoundManager.js#L125
Since: 3.0.0


decodeAudio

<instance> decodeAudio([audioKey], [audioData])

Description:

Decode audio data into a format ready for playback via Web Audio.

The audio data can be a base64 encoded string, an audio media-type data uri, or an ArrayBuffer instance.

The audioKey is the key that will be used to save the decoded audio to the audio cache.

Instead of passing a single entry you can instead pass an array of Phaser.Types.Sound.DecodeAudioConfig

objects as the first and only argument.

Decoding is an async process, so be sure to listen for the events to know when decoding has completed.

Once the audio has decoded it can be added to the Sound Manager or played via its key.

Parameters:

nametypeoptionaldescription
audioKeyArray.<Phaser.Types.Sound.DecodeAudioConfig> | stringYesThe string-based key to be used to reference the decoded audio in the audio cache, or an array of audio config objects.
audioDataArrayBuffer | stringYesThe audio data, either a base64 encoded string, an audio media-type data uri, or an ArrayBuffer instance.

Fires: Phaser.Sound.Events#event:DECODED, Phaser.Sound.Events#event:DECODED_ALL

Source: src/sound/webaudio/WebAudioSoundManager.js#L224
Since: 3.18.0


destroy

<instance> destroy()

Description:

Calls Phaser.Sound.BaseSoundManager#destroy method

and cleans up all Web Audio API related stuff.

Overrides: Phaser.Sound.BaseSoundManager#destroy

Source: src/sound/webaudio/WebAudioSoundManager.js#L456
Since: 3.0.0


onBlur

<instance> onBlur()

Description:

Method used internally for pausing sound manager if

Phaser.Sound.WebAudioSoundManager#pauseOnBlur is set to true.

Access: protected

Overrides: Phaser.Sound.BaseSoundManager#onBlur

Source: src/sound/webaudio/WebAudioSoundManager.js#L381
Since: 3.0.0


onFocus

<instance> onFocus()

Description:

Method used internally for resuming sound manager if

Phaser.Sound.WebAudioSoundManager#pauseOnBlur is set to true.

Access: protected

Overrides: Phaser.Sound.BaseSoundManager#onFocus

Source: src/sound/webaudio/WebAudioSoundManager.js#L397
Since: 3.0.0


setAudioContext

<instance> setAudioContext(context)

Description:

This method takes a new AudioContext reference and then sets

this Sound Manager to use that context for all playback.

As part of this call it also disconnects the master mute and volume

nodes and then re-creates them on the new given context.

Parameters:

nametypeoptionaldescription
contextAudioContextNoReference to an already created AudioContext instance.

Returns: Phaser.Sound.WebAudioSoundManager - The WebAudioSoundManager instance.

Source: src/sound/webaudio/WebAudioSoundManager.js#L160
Since: 3.21.0


setListenerPosition

<instance> setListenerPosition([x], [y])

Description:

Sets the X and Y position of the Spatial Audio listener on this Web Audios context.

If you call this method with no parameters it will default to the center-point of

the game canvas. Depending on the type of game you're making, you may need to call

this method constantly to reset the listener position as the camera scrolls.

Calling this method does nothing on HTML5Audio.

Parameters:

nametypeoptionaldescription
xnumberYesThe x position of the Spatial Audio listener.
ynumberYesThe y position of the Spatial Audio listener.

Overrides: Phaser.Sound.BaseSoundManager#setListenerPosition

Source: src/sound/webaudio/WebAudioSoundManager.js#L305
Since: 3.60.0


setMute

<instance> setMute(value)

Description:

Sets the muted state of all this Sound Manager.

Parameters:

nametypeoptionaldescription
valuebooleanNotrue to mute all sounds, false to unmute them.

Returns: Phaser.Sound.WebAudioSoundManager - This Sound Manager.

Fires: Phaser.Sound.Events#event:GLOBAL_MUTE

Source: src/sound/webaudio/WebAudioSoundManager.js#L490
Since: 3.3.0


setVolume

<instance> setVolume(value)

Description:

Sets the volume of this Sound Manager.

Parameters:

nametypeoptionaldescription
valuenumberNoThe global volume of this Sound Manager.

Returns: Phaser.Sound.WebAudioSoundManager - This Sound Manager.

Fires: Phaser.Sound.Events#event:GLOBAL_VOLUME

Source: src/sound/webaudio/WebAudioSoundManager.js#L530
Since: 3.3.0


unlock

<instance> unlock()

Description:

Unlocks Web Audio API on the initial input event.

Read more about how this issue is handled here in this article.

Overrides: Phaser.Sound.BaseSoundManager#unlock

Source: src/sound/webaudio/WebAudioSoundManager.js#L330
Since: 3.0.0


update

<instance> update(time, delta)

Description:

Update method called on every game step.

Removes destroyed sounds and updates every active sound in the game.

Access: protected

Parameters:

nametypeoptionaldescription
timenumberNoThe current timestamp as generated by the Request Animation Frame or SetTimeout.
deltanumberNoThe delta time elapsed since the last frame.

Overrides: Phaser.Sound.BaseSoundManager#update

Fires: Phaser.Sound.Events#event:UNLOCKED

Source: src/sound/webaudio/WebAudioSoundManager.js#L415
Since: 3.0.0