Phaser Class: Sound

## Phaser. Sound

#### new Sound(game, key, volume, loop)

  The Sound class constructor.

  ##### Parameters:

  Name | Type | Argument | Default | Description
  --- | --- | --- | --- | ---
  `game` | Phaser.Game |  |  | Reference to the current game instance.
  `key` | string |  |  | Asset key for the sound.
  `volume` | number | <optional> | 1 | Default value for the volume, between 0 and 1.
  `loop` | boolean | <optional> | false | Whether or not the sound will loop.

  Source - sound/Sound.js, line 17

### Members

#### allowMultiple :boolean

  This will allow you to have multiple instances of this Sound playing at once. This is only useful when running under Web Audio, and we recommend you implement a local pooling system to not flood the sound channels.

  Source - sound/Sound.js, line 144

#### autoplay :boolean

  Boolean indicating whether the sound should start automatically.

  Source - sound/Sound.js, line 57

#### context :AudioContext

  Reference to the AudioContext instance.

  Source - sound/Sound.js, line 52

#### currentMarker :string

  The string ID of the currently playing marker, if any.

  Source - sound/Sound.js, line 121

#### currentTime :number

  The current time the sound is at.

  Source - sound/Sound.js, line 73

#### duration :number

  The duration of the current sound marker in seconds.

  Source - sound/Sound.js, line 78

#### durationMS :number

  The duration of the current sound marker in ms.

  Source - sound/Sound.js, line 83

#### externalNode :object

  If defined this Sound won't connect to the SoundManager master gain node, but will instead connect to externalNode.

  Source - sound/Sound.js, line 160

#### fadeTween :Phaser.Tween

  The tween that fades the audio, set via Sound.fadeIn and Sound.fadeOut.

  Source - sound/Sound.js, line 126

#### gainNode :object

  The gain node in a Web Audio system.

  Source - sound/Sound.js, line 170

#### game :Phaser.Game

  A reference to the currently running Game.

  Source - sound/Sound.js, line 27

#### <readonly> isDecoded :boolean

  Returns true if the sound file has decoded.

  Source - sound/Sound.js, line 1087

#### <readonly> isDecoding :boolean

  Returns true if the sound file is still decoding.

  Source - sound/Sound.js, line 1074

#### isPlaying :boolean

  true if the sound is currently playing, otherwise false.

  Source - sound/Sound.js, line 115

#### key :string

  Asset key for the sound.

  Source - sound/Sound.js, line 37

#### loop :boolean

  Whether or not the sound or current sound marker will loop.

  Source - sound/Sound.js, line 42

#### markers :object

  The sound markers.

  Source - sound/Sound.js, line 47

#### masterGainNode :object

  The master gain node in a Web Audio system.

  Source - sound/Sound.js, line 165

#### mute :boolean

  Gets or sets the muted state of this sound.

  Source - sound/Sound.js, line 1100

#### name :string

  Name of the sound.

  Source - sound/Sound.js, line 32

#### onDecoded :Phaser.Signal

  The onDecoded event is dispatched when the sound has finished decoding (typically for mp3 files)

  Source - sound/Sound.js, line 220

#### onFadeComplete :Phaser.Signal

  The onFadeComplete event is dispatched when this sound finishes fading either in or out.

  Source - sound/Sound.js, line 260

#### onLoop :Phaser.Signal

  The onLoop event is dispatched when this sound loops during playback.

  Source - sound/Sound.js, line 240

#### onMarkerComplete :Phaser.Signal

  The onMarkerComplete event is dispatched when a marker within this sound completes playback.

  Source - sound/Sound.js, line 255

#### onMute :Phaser.Signal

  The onMute event is dispatched when this sound is muted.

  Source - sound/Sound.js, line 250

#### onPause :Phaser.Signal

  The onPause event is dispatched when this sound is paused.

  Source - sound/Sound.js, line 230

#### onPlay :Phaser.Signal

  The onPlay event is dispatched each time this sound is played.

  Source - sound/Sound.js, line 225

#### onResume :Phaser.Signal

  The onResume event is dispatched when this sound is resumed from a paused state.

  Source - sound/Sound.js, line 235

#### onStop :Phaser.Signal

  The onStop event is dispatched when this sound stops playback.

  Source - sound/Sound.js, line 245

#### override :boolean

  if true when you play this sound it will always start from the beginning.

  Source - sound/Sound.js, line 138

#### paused :boolean

  true if the sound is paused, otherwise false.

  Source - sound/Sound.js, line 99

#### pausedPosition :number

  The position the sound had reached when it was paused.

  Source - sound/Sound.js, line 104

#### pausedTime :number

  The game time at which the sound was paused.

  Source - sound/Sound.js, line 109

#### <readonly> pendingPlayback :boolean

  true if the sound file is pending playback

  Source - sound/Sound.js, line 132

#### position :number

  The position of the current sound marker.

  Source - sound/Sound.js, line 88

#### startTime :number

  The time the Sound starts at (typically 0 unless starting from a marker)

  Source - sound/Sound.js, line 68

#### stopTime :number

  The time the sound stopped.

  Source - sound/Sound.js, line 93

#### totalDuration :number

  The total duration of the sound in seconds.

  Source - sound/Sound.js, line 62

#### usingAudioTag :boolean

  true if the sound is being played via the Audio tag.

  Source - sound/Sound.js, line 155

#### <readonly> usingWebAudio :boolean

  true if this sound is being played with Web Audio.

  Source - sound/Sound.js, line 150

#### volume :number

  Gets or sets the volume of this sound, a value between 0 and 1. The value given is clamped to the range 0 to 1.

  Source - sound/Sound.js, line 1155

### Methods

#### addMarker(name, start, duration, volume, loop)

  Adds a marker into the current Sound. A marker is represented by a unique key and a start time and duration.
  This allows you to bundle multiple sounds together into a single audio file and use markers to jump between them for playback.

  ##### Parameters:

  Name | Type | Argument | Default | Description
  --- | --- | --- | --- | ---
  `name` | string |  |  | A unique name for this marker, i.e. 'explosion', 'gunshot', etc.
  `start` | number |  |  | The start point of this marker in the audio file, given in seconds. 2.5 = 2500ms, 0.5 = 500ms, etc.
  `duration` | number | <optional> | 1 | The duration of the marker in seconds. 2.5 = 2500ms, 0.5 = 500ms, etc.
  `volume` | number | <optional> | 1 | The volume the sound will play back at, between 0 (silent) and 1 (full volume).
  `loop` | boolean | <optional> | false | Sets if the sound will loop or not.

  Source - sound/Sound.js, line 348

#### destroy(remove)

  Destroys this sound and all associated events and removes it from the SoundManager.

  ##### Parameters:

  Name | Type | Argument | Default | Description
  --- | --- | --- | --- | ---
  `remove` | boolean | <optional> | true | If true this Sound is automatically removed from the SoundManager.

  Source - sound/Sound.js, line 1035

#### fadeIn(duration, loop, marker)

  Starts this sound playing (or restarts it if already doing so) and sets the volume to zero.
  Then increases the volume from 0 to 1 over the duration specified.

  At the end of the fade Sound.onFadeComplete is dispatched with this Sound object as the first parameter,
  and the final volume (1) as the second parameter.

  ##### Parameters:

  Name | Type | Argument | Default | Description
  --- | --- | --- | --- | ---
  `duration` | number | <optional> | 1000 | The time in milliseconds over which the Sound should fade in.
  `loop` | boolean | <optional> | false | Should the Sound be set to loop? Note that this doesn't cause the fade to repeat.
  `marker` | string | <optional> | (current marker) | The marker to start at; defaults to the current (last played) marker. To start playing from the beginning specify specify a marker of `''`.

  Source - sound/Sound.js, line 924

#### fadeOut(duration)

  Decreases the volume of this Sound from its current value to 0 over the duration specified.
  At the end of the fade Sound.onFadeComplete is dispatched with this Sound object as the first parameter,
  and the final volume (0) as the second parameter.

  ##### Parameters:

  Name | Type | Argument | Default | Description
  --- | --- | --- | --- | ---
  `duration` | number | <optional> | 1000 | The time in milliseconds over which the Sound should fade out.

  Source - sound/Sound.js, line 952

#### fadeTo(duration, volume)

  Fades the volume of this Sound from its current value to the given volume over the duration specified.
  At the end of the fade Sound.onFadeComplete is dispatched with this Sound object as the first parameter,
  and the final volume (volume) as the second parameter.

  ##### Parameters:

  Name | Type | Argument | Default | Description
  --- | --- | --- | --- | ---
  `duration` | number | <optional> | 1000 | The time in milliseconds during which the Sound should fade out.
  `volume` | number | <optional> |  | The volume which the Sound should fade to. This is a value between 0 and 1.

  Source - sound/Sound.js, line 966

#### loopFull(volume) → {Phaser.Sound}

  Loops this entire sound. If you need to loop a section of it then use Sound.play and the marker and loop parameters.

  ##### Parameters:

  Name | Type | Argument | Default | Description
  --- | --- | --- | --- | ---
  `volume` | number | <optional> | 1 | Volume of the sound you want to play. If none is given it will use the volume given to the Sound when it was created (which defaults to 1 if none was specified).

  ##### Returns:

  Phaser.Sound -

  This sound instance.

  Source - sound/Sound.js, line 492

#### <internal> onEndedHandler()

  Called automatically by the AudioContext when the sound stops playing.
  Doesn't get called if the sound is set to loop or is a section of an Audio Sprite.

  Internal:
    - This member is internal (protected) and may be modified or removed in the future.
  Source - sound/Sound.js, line 388

#### pause()

  Pauses the sound.

  Source - sound/Sound.js, line 763

#### play(marker, position, volume, loop, forceRestart) → {Phaser.Sound}

  Play this sound, or a marked section of it.

  ##### Parameters:

  Name | Type | Argument | Default | Description
  --- | --- | --- | --- | ---
  `marker` | string | <optional> | '' | If you want to play a marker then give the key here, otherwise leave blank to play the full sound.
  `position` | number | <optional> | 0 | The starting position to play the sound from - this is ignored if you provide a marker.
  `volume` | number | <optional> | 1 | Volume of the sound you want to play. If none is given it will use the volume given to the Sound when it was created (which defaults to 1 if none was specified).
  `loop` | boolean | <optional> | false | Loop when finished playing? If not using a marker / audio sprite the looping will be done via the WebAudio loop property, otherwise it's time based.
  `forceRestart` | boolean | <optional> | true | If the sound is already playing you can set forceRestart to restart it from the beginning.

  ##### Returns:

  Phaser.Sound -

  This sound instance.

  Source - sound/Sound.js, line 505

#### removeMarker(name)

  Removes a marker from the sound.

  ##### Parameters:

  Name | Type | Description
  --- | --- | ---
  `name` | string | The key of the marker to remove.

  Source - sound/Sound.js, line 377

#### restart(marker, position, volume, loop)

  Restart the sound, or a marked section of it.

  ##### Parameters:

  Name | Type | Argument | Default | Description
  --- | --- | --- | --- | ---
  `marker` | string | <optional> | '' | If you want to play a marker then give the key here, otherwise leave blank to play the full sound.
  `position` | number | <optional> | 0 | The starting position to play the sound from - this is ignored if you provide a marker.
  `volume` | number | <optional> | 1 | Volume of the sound you want to play.
  `loop` | boolean | <optional> | false | Loop when it finished playing?

  Source - sound/Sound.js, line 743

#### resume()

  Resumes the sound.

  Source - sound/Sound.js, line 782

#### <internal> soundHasUnlocked(key)

  Called automatically when this sound is unlocked.

  ##### Parameters:

  Name | Type | Description
  --- | --- | ---
  `key` | string | The Phaser.Cache key of the sound file to check for decoding.

  Internal:
    - This member is internal (protected) and may be modified or removed in the future.
  Source - sound/Sound.js, line 332

#### stop()

  Stop playing this sound.

  Source - sound/Sound.js, line 858

#### <internal> update()

  Called automatically by Phaser.SoundManager.

  Internal:
    - This member is internal (protected) and may be modified or removed in the future.
  Source - sound/Sound.js, line 404

#### <internal> updateGlobalVolume(globalVolume)

  Called automatically by SoundManager.volume.

  Sets the volume of AudioTag Sounds as a percentage of the Global Volume.

  You should not normally call this directly.

  ##### Parameters:

  Name | Type | Description
  --- | --- | ---
  `globalVolume` | float | The global SoundManager volume.

  Internal:
    - This member is internal (protected) and may be modified or removed in the future.
  Source - sound/Sound.js, line 1013