# Namespace: CB_Speaker

## CB_Speaker

Static class to manage the speaker or speakers. It will return itself if it is tried to be instantiated. It can also use timbre.js, Band.js and jsfx.

Source:
  - CrossBase/audiovisual/audio/CB_Speaker.js, line 14
To Do:
  - Check whether the path used to play silent sounds as a workaround (through the internal "_playBlankFilesSilently" method) is right or not (now it uses the `CB_scriptPath` variable).
  - getCopy and filterProperties methods (similar to the ones from `CB_GraphicSprites` and `CB_GraphicSpritesScene`).

### Methods

#### <static> getAudioFileSpritesPool() → {CB_AudioFileSpritesPool|null}

  Returns the current `CB_AudioFileSpritesPool` object (if any).

  Source:
    - CrossBase/audiovisual/audio/CB_Speaker.js, line 349

  ##### Returns:

  Returns the current `CB_AudioFileSpritesPool` object (if any) or null otherwise.

  Type
    CB_AudioFileSpritesPool | null

#### <static> getBandJSObject() → {Object|null}

  Returns a new Band.js object (if possible). Useful for managing music composition.

  Source:
    - CrossBase/audiovisual/audio/CB_Speaker.js, line 373
  To Do:
    - Band.js should have into account the CB_Speaker._volume

  ##### Returns:

  Returns a new Band.js object (if possible) or null otherwise.

  Type
    Object | null

#### <static> getJsfxObject() → {Object|null}

  Returns the jsfx object (if any). Useful for managing sound effects generation.

  Source:
    - CrossBase/audiovisual/audio/CB_Speaker.js, line 385
  To Do:
    - jsfx should have into account the CB_Speaker._volume

  ##### Returns:

  Returns the current jsfx object (if any) or null otherwise.

  Type
    Object | null

#### <static> getTimbreJSObject() → {Object|null}

  Returns the timbre.js object (if any). Useful for functional processing and synthesizing audio.

  Source:
    - CrossBase/audiovisual/audio/CB_Speaker.js, line 361
  To Do:
    - timbre.js should have into account the CB_Speaker._volume

  ##### Returns:

  Returns the current timbre.js object (if any) or null otherwise.

  Type
    Object | null

#### <static> getVolume( [avoidSanitize]) → {number}

  Tells the current volume.

  ##### Parameters:

  Name | Type | Argument | Default | Description
  --- | --- | --- | --- | ---
  `avoidSanitize` | boolean | <optional> | false | If set to true, it will not call the `CB_Speaker.sanitizeVolume` function internally before returning the volume.

  Source:
    - CrossBase/audiovisual/audio/CB_Speaker.js, line 320

  ##### Returns:

  Returns the current volume.

  Type
    number

#### <static> mute( [avoidApplyingVolume] [, onMute] [, audioFiles]) → {number}

  Mutes the speaker. Calls the `CB_Speaker.setVolume` function internally, with 0 (zero) as the "volume" parmeter, null as the "forceSetVolumeProperty" parameter and true for both "saveForUnmute" and "isMuteOrUnmute" parameters.

  ##### Parameters:

  Name | Type | Argument | Default | Description
  --- | --- | --- | --- | ---
  `avoidApplyingVolume` | boolean | <optional> | false | Used as a parameter to call the `CB_Speaker.setVolume` function internally.
  `onMute` | function | <optional> |  | Used as as the "functionToExecute" parameter to call the `CB_Speaker.setVolume` function internally.
  `audioFiles` | array | <optional> |  | Used as a parameter to call the `CB_Speaker.setVolume` function internally.

  Source:
    - CrossBase/audiovisual/audio/CB_Speaker.js, line 288
  To Do:
    - Also affect BandJS, jsfx and timbre.js.

  ##### Returns:

  Returns the result of the internal call to the `CB_Speaker.setVolume` function.

  Type
    number

#### <static> sanitizeVolume( [volume] [, useSpeakerVolumeIfNaN]) → {number}

  Sanitizes the volume (it does not allow values greater than 100 or lower than 0).

  ##### Parameters:

  Name | Type | Argument | Default | Description
  --- | --- | --- | --- | ---
  `volume` | number | <optional> | CB_Configuration.CrossBase.CB_Speaker_DEFAULT_VOLUME|CB_Speaker._volume | The desired volume to be sanitized. If not given, it will use the current volume if the "useSpeakerVolumeIfNaN" parameter is set to true or the default volume otherwise.
  `useSpeakerVolumeIfNaN` | boolean | <optional> | false | If it is set to true and no valid volume is received in the "volume" parameter, it will use the current volume (`CB_Speaker._volume`). Otherwise, if it is set to false and no valid volume is received in the "volume" parameter, it will use the default volume which is set in the `CB_Configuration.CrossBase.CB_Speaker_DEFAULT_VOLUME` constant.

  Source:
    - CrossBase/audiovisual/audio/CB_Speaker.js, line 243

  ##### Returns:

  Returns the volume sanitized (it does not allow values greater than 100 or lower than 0).

  Type
    number

#### <static> setAudioFileSpritesPool(audioFileSpritesPool) → {CB_AudioFileSpritesPool|null}

  Sets the desired `CB_AudioFileSpritesPool` object.

  ##### Parameters:

  Name | Type | Description
  --- | --- | ---
  `audioFileSpritesPool` | CB_AudioFileSpritesPool | The desired `CB_AudioFileSpritesPool` object to manage all audio files.

  Source:
    - CrossBase/audiovisual/audio/CB_Speaker.js, line 333

  ##### Returns:

  Returns the current `CB_AudioFileSpritesPool` object after setting it (if any) or null otherwise.

  Type
    CB_AudioFileSpritesPool | null

#### <static> setVolume( [volume] [, avoidApplyingVolume] [, forceSetVolumeProperty] [, functionToExecute] [, audioFiles] [, saveForUnmute] [, isMuteOrUnmute]) → {number}

  Sets the given volume.

  ##### Parameters:

  Name | Type | Argument | Default | Description
  --- | --- | --- | --- | ---
  `volume` | number | <optional> | CB_Speaker._volume | The desired volume to be used (it will be sanitized internally by calling the `CB_Speaker.sanitizeVolume` function with the volume as the unique parameter). If not given, it will use the current volume. If the "avoidApplyingVolume" is set to false and the "isMuteOrUnmute" parameter is false, it will also be used as a parameter to call the `CB_AudioFileSpritesPool#setVolumeAll` method of the internal `CB_AudioFileSpritesPool` object defined in `CB_Speaker._audioFileSpritesPool` (if any).
  `avoidApplyingVolume` | boolean | <optional> | false | If it is set to true, the volume will not be applied (by calling the `CB_Speaker._applyVolume` internal function, which will also use the internal `CB_AudioFileSpritesPool` object defined in `CB_Speaker._audioFileSpritesPool`, if any) and just the `CB_Speaker._volume` internal property will be set.
  `forceSetVolumeProperty` | boolean | <optional> | false | If the "avoidApplyingVolume" is set to false and the "isMuteOrUnmute" parameter is false, it will be used as a parameter to call the `CB_AudioFileSpritesPool#setVolumeAll` method of the internal `CB_AudioFileSpritesPool` object defined in `CB_Speaker._audioFileSpritesPool` (if any).
  `functionToExecute` | function | <optional> |  | A callback function. If the "avoidApplyingVolume" is set to false and the "isMuteOrUnmute" parameter is false, it will be used as the "onSetVolume" parameter to call the `CB_AudioFileSpritesPool#setVolumeAll` method of the internal `CB_AudioFileSpritesPool` object defined in `CB_Speaker._audioFileSpritesPool` (if any). If the "avoidApplyingVolume" is set to false and the "isMuteOrUnmute" parameter is true, it will be used as the "onMute" parameter to call the `CB_AudioFileSpritesPool#muteAll` method or as the "onUnmute" parameter to call the `CB_AudioFileSpritesPool#unmuteAll` method of the internal `CB_AudioFileSpritesPool` object defined in `CB_Speaker._audioFileSpritesPool` (if any).
  `audioFiles` | array | <optional> |  | An array containing the CB_AudioFile objects that we want to affect (if not set and the "avoidApplyingVolume" is set to false, it will affect all the CB_AudioFile objects of the internal `CB_AudioFileSpritesPool` object defined in `CB_Speaker._audioFileSpritesPool`, if any). If the "avoidApplyingVolume" is set to false and the "isMuteOrUnmute" parameter is false, it will be used as the "audioFiles" parameter to call the `CB_AudioFileSpritesPool#setVolumeAll` method of the internal `CB_AudioFileSpritesPool` object defined in `CB_Speaker._audioFileSpritesPool` (if any). If the "avoidApplyingVolume" is set to false and the "isMuteOrUnmute" parameter is true, it will be used as the "audioFiles" parameter to call the `CB_AudioFileSpritesPool#muteAll` method or as the "audioFiles" parameter to call the `CB_AudioFileSpritesPool#unmuteAll` method of the internal `CB_AudioFileSpritesPool` object defined in `CB_Speaker._audioFileSpritesPool` (if any).
  `saveForUnmute` | boolean | <optional> | false | If it is set to true, the given volume will be saved to be restored later when the `CB_Speaker.unmute` method is called.
  `isMuteOrUnmute` | boolean | <optional> | false | If it is set to true and the volume given is zero, the action performed internally will be muting (by calling the `CB_AudioFileSpritesPool#muteAll` method of the internal `CB_AudioFileSpritesPool` object defined in `CB_Speaker._audioFileSpritesPool`, if any). Otherwise, if it is set to true and the volume given is not zero, the action performed internally will be unmuting (by calling the `CB_AudioFileSpritesPool#unmuteAll` method of the internal `CB_AudioFileSpritesPool` object defined in `CB_Speaker._audioFileSpritesPool`, if any). If it is set to false, the action performed will be set the volume given (by calling the `CB_AudioFileSpritesPool#setVolumeAll` method of the internal `CB_AudioFileSpritesPool` object defined in `CB_Speaker._audioFileSpritesPool`, if any).

  Source:
    - CrossBase/audiovisual/audio/CB_Speaker.js, line 269
  To Do:
    - Also affect BandJS, jsfx and timbre.js.

  ##### Returns:

  Returns the current volume being used after setting it.

  Type
    number

#### <static> unmute( [avoidApplyingVolume] [, onUnmute] [, audioFiles] [, ignoreVolume]) → {number}

  Restores the audio volume after muting it. If the current volume is 0 (zero, muted) or the "ignoreVolume" parameter is set to true, calls the `CB_Speaker.setVolume` function internally, with the previously-saved volume before muting it as the "volume" parmeter, null as the "forceSetVolumeProperty" parameter, false for the "saveForUnmute" parameter and true for the "isMuteOrUnmute" parameter.

  ##### Parameters:

  Name | Type | Argument | Default | Description
  --- | --- | --- | --- | ---
  `avoidApplyingVolume` | boolean | <optional> | false | Used as a parameter to call the `CB_Speaker.setVolume` function internally, if the "ignoreVolume" parameter is set to true.
  `onUnmute` | function | <optional> |  | Used as as the "functionToExecute" parameter to call the `CB_Speaker.setVolume` function internally, if the "ignoreVolume" parameter is set to true.
  `audioFiles` | array | <optional> |  | Used as a parameter to call the `CB_Speaker.setVolume` function internally, if the "ignoreVolume" parameter is set to true.
  `ignoreVolume` | boolean | <optional> | false | If set to true, it will try to perform the muting action even when the current volume is not 0 (zero, muted).

  Source:
    - CrossBase/audiovisual/audio/CB_Speaker.js, line 304
  To Do:
    - Also affect BandJS, jsfx and timbre.js.

  ##### Returns:

  Returns the current volume.

  Type
    number

#### Search results