# Sound Instances

## `~_SoundInstance_Play(soundInstanceID, loop)`

**Returns:** N/A (`undefined`)

|Argument         |Datatype|Description                                           |
|-----------------|--------|--------------------------------------------------------------------------------|
|`soundInstanceID`|number  |Sound instance to target                                                        |
|`loop`           |boolean |Whether the sound instance should replay from the start when it finishes playing|

Plays the given sound instance. If the sound instance is set to *not* loop (`loop` is `false`) then `FAudio_SoundInstance_DestroyWhenFinished()` will be called automatically for the sound instance.

 

## `~_SoundInstance_Pause(soundInstanceID)`

**Returns:** N/A (`undefined`)

|Argument         |Datatype|Description                                           |
|-----------------|--------|------------------------------------------------------|
|`soundInstanceID`|number  |Sound instance to target                              |

Pauses playback of a sound instance. It can later be resumed by calling `FAudio_SoundInstance_Resume(soundInstanceID)`.

 

## `~_SoundInstance_Resume(soundInstanceID)`

**Returns:** N/A (`undefined`)

|Argument         |Datatype|Description                                           |
|-----------------|--------|------------------------------------------------------|
|`soundInstanceID`|number  |Sound instance to target                              |

Resumes playback of a sound instance that has been paused by `FAudio_SoundInstance_Pause()`. If the sound instance in question hasn't been paused then this function does nothing.

 

## `~_SoundInstance_Stop(soundInstanceID)`

**Returns:** N/A (`undefined`)

|Argument         |Datatype|Description                                           |
|-----------------|--------|------------------------------------------------------|
|`soundInstanceID`|number  |Sound instance to target                              |

Stops playback of the given sound instance completely. To restart playback, `FAudio_SoundInstance_Play()` should be called.

 

## `~_SoundInstance_Destroy(soundInstanceID)`

**Returns:** N/A (`undefined`)

|Argument         |Datatype|Description                                           |
|-----------------|--------|------------------------------------------------------|
|`soundInstanceID`|number  |Sound instance to target                              |

Destroys a sound instance, freeing memory associated with it.

 

## `~_SoundInstance_DestroyWhenFinished(soundInstanceID)`

**Returns:** N/A (`undefined`)

|Argument         |Datatype|Description                                           |
|-----------------|--------|------------------------------------------------------|
|`soundInstanceID`|number  |Sound instance to target                              |

Sets a sound instance to self-destruct when it finishes playing. This is useful for one-off audio clips that you don't want to keep track of.

 

## `~_SoundInstance_SetPan(soundInstanceID, pan)`

**Returns:** N/A (`undefined`)

|Argument         |Datatype|Description                                                                |
|-----------------|--------|---------------------------------------------------------------------------|
|`soundInstanceID`|number  |Sound instance to target                                                   |
|`pan`            |number  |Should be from `-1` (100% left) to `+1` (100% right) with `0` being central|

Sets the stereo (left/right) panning of the sound instance. This is useful to fake positional audio in 2D, amongst other mixing techniques.

 

## `~_SoundInstance_SetPitch(soundInstanceID, pitch)`

**Returns:** N/A (`undefined`)

|Argument         |Datatype|Description                                                                                                                                                 |
|-----------------|--------|------------------------------------------------------------------------------------------------------------------------------------------------------------|
|`soundInstanceID`|number  |Sound instance to target                                                                                                                                    |
|`pitch`          |number  |Frequency multiplier. A value of `2` will double the frequency and make the pitch higher, a value of `0.5` will halve the frequency and make the pitch lower|

Changes the pitch of the audio by time-stretching or time-condensing playback. This also changes the playback time accordingly (a higher-pitched sound will take less time to fully play).

 

## `~_SoundInstance_SetVolume(soundInstanceID, volume)`

**Returns:** N/A (`undefined`)

|Argument         |Datatype|Description                                             |
|-----------------|--------|--------------------------------------------------------|
|`soundInstanceID`|number  |Sound instance to target                                |
|`volume`         |number  |Volume of the sound instance. `1` is 100% volume        |

Sets the volume for the sound instance. To change volume smoothly over time, please use `FAudio_SoundInstance_SetVolumeOverTime()`.

 

## `~_SoundInstance_Set3DPosition(soundInstanceID, x, y, z)`

**Returns:** N/A (`undefined`)

|Argument         |Datatype|Description                                             |
|-----------------|--------|--------------------------------------------------------|
|`soundInstanceID`|number  |Sound instance to target                                |
|`x`              |number  |x-position of the sound instance                        |
|`y`              |number  |y-position of the sound instance                        |
|`z`              |number  |z-position of the sound instance                        |

Places the sound instance in 3D space. In combination with `FAudio_SetListenerPosition()`, this sets the relative panning and volume for the sound instance to give the illusion of the player being in a 3D environment.

 

## `~_SoundInstance_Set3DVelocity(soundInstanceID, xVelocity, yVelocity, zVelocity)`

**Returns:** N/A (`undefined`)

|Argument         |Datatype|Description                                             |
|-----------------|--------|--------------------------------------------------------|
|`soundInstanceID`|number  |Sound instance to target                                |
|`xVelocity`      |number  |x-component of the velocity of the sound instance       |
|`yVelocity`      |number  |y-component of the velocity of the sound instance       |
|`zVelocity`      |number  |z-component of the velocity of the sound instance       |

Sets the velocity of the sound instance, allowing for pitch shifting to emulate the [Doppler effect](https://en.wikipedia.org/wiki/Doppler_effect).

 

## `~_SoundInstance_SetTrackPositionInSeconds(soundInstanceID, trackPositionInSeconds)`

**Returns:** N/A (`undefined`)

|Argument                |Datatype|Description                                             |
|------------------------|--------|--------------------------------------------------------|
|`soundInstanceID`       |number  |Sound instance to target                                |
|`trackPositionInSeconds`|number  |Track position to jump to, in seconds                   |

Jumps to a fixed position in the sound instance's audio asset. This is useful for audio assets that are comprised of a few different sections.

 

## `~_SoundInstance_SetVolumeOverTime(soundInstanceID, volume, milliseconds)`

**Returns:** N/A (`undefined`)

|Argument         |Datatype|Description                                             |
|-----------------|--------|--------------------------------------------------------|
|`soundInstanceID`|number  |Sound instance to target                                |
|`volume`         |number  |Target velocity to interpolate towards                  |
|`milliseconds`   |number  |Duration of the interpolation, in milliseconds          |

Smoothly interpolates the volume of a sound instance over time. This time can be very short or very long, as you see fit.

 

## `~_SoundInstance_SetLowPassFilter(soundInstanceID, lowPassFilter, Q)`

**Returns:** N/A (`undefined`)

|Argument         |Datatype|Description                                                              |
|-----------------|--------|-------------------------------------------------------------------------|
|`soundInstanceID`|number  |Sound instance to target                                                 |
|`lowPassFilter`  |number  |Frequency of the low-pass. This is a value from `0` (20hz) to `1` (20khz)|
|`Q`              |number  |Unitless - the steepness of the cutoff knee. A recommended value is `1`  |

Sets a low-pass filter on a sound instance, cutting out high frequencies. This has the effect of making the sound seem muffled.

 

## `~_SoundInstance_SetHighPassFilter(soundInstanceID, lowPassFilter, Q)`

**Returns:** N/A (`undefined`)

|Argument         |Datatype|Description                                                               |
|-----------------|--------|--------------------------------------------------------------------------|
|`soundInstanceID`|number  |Sound instance to target                                                  |
|`highPassFilter` |number  |Frequency of the high-pass. This is a value from `0` (20hz) to `1` (20khz)|
|`Q`              |number  |Unitless - the steepness of the cutoff knee. A recommended value is `1`   |

Sets a high-pass filter on a sound instance, cutting out low frequencies. This has the effect of making the sound seem tinny and thin.

 

## `~_SoundInstance_SetBandPassFilter(soundInstanceID, bandPassFilter, Q)`

**Returns:** N/A (`undefined`)

|Argument         |Datatype|Description                                                               |
|-----------------|--------|--------------------------------------------------------------------------|
|`soundInstanceID`|number  |Sound instance to target                                                  |
|`bandPassFilter` |number  |Frequency of the band-pass. This is a value from `0` (20hz) to `1` (20khz)|
|`Q`              |number  |Unitless - the steepness of the cutoff knee. A recommended value is `1`   |

Sets a band-pass filter on a sound instance, cutting out frequencies above and below the center of the band. What this sounds like depends on what frequency you choose, but it has a habit of making sounds seem nasal and boxy.

 

## `~_SoundInstance_GetPitch(soundInstanceID)`

**Returns:** Number, the pitch of the sound instance, with `1` being no pitch shift

|Argument         |Datatype|Description                                             |
|-----------------|--------|--------------------------------------------------------|
|`soundInstanceID`|number  |Sound instance to target                                |

 

## `~_SoundInstance_GetVolume(soundInstanceID)`

**Returns:** Number, the volume of the sound instance, from `0` (inaudible) to `1` (full volume)

|Argument         |Datatype|Description                                             |
|-----------------|--------|--------------------------------------------------------|
|`soundInstanceID`|number  |Sound instance to target                                |

 

## `~_SoundInstance_GetTrackLengthInSeconds(soundInstanceID)`

**Returns:** Number, the track length (in seconds)

|Argument         |Datatype|Description                                             |
|-----------------|--------|--------------------------------------------------------|
|`soundInstanceID`|number  |Sound instance to target                                |

 

## `~_SoundInstance_GetTrackPositionInSeconds(soundInstanceID)`

**Returns:** Number, the track position (in seconds)

|Argument         |Datatype|Description                                             |
|-----------------|--------|--------------------------------------------------------|
|`soundInstanceID`|number  |Sound instance to target                                |