# gvr::AudioApi

`#include <gvr_audio.h>`

This is a convenience C++ wrapper for the Audio C API.

## Summary

This wrapper strategy prevents ABI compatibility issues between compilers by ensuring that the interface between client code and the implementation code in libgvr.so is a pure C interface. The translation from C++ calls to C calls provided by this wrapper runs entirely in the client's binary and is compiled by the client's compiler.

Methods in this class are only documented insofar as the C++ wrapping logic is concerned; for information about the method itself, please refer to the corresponding function in the C API.

THREADING: this class is thread-safe and reentrant after initialized with [Init()](https://developers.google.com/vr/reference/android-ndk/class/gvr/audio-api#classgvr_1_1_audio_api_1a5f0245195b3e4c6252b22eb022003d89).

### Inheritance

Inherits from: [gvr::WrapperBase\< gvr_audio_context, gvr_audio_destroy \>](https://developers.google.com/vr/reference/android-ndk/class/gvr/wrapper-base)

| ### Public functions ||
|---|---|
| `https://developers.google.com/vr/reference/android-ndk/class/gvr/audio-api#classgvr_1_1_audio_api_1a82b01f73382a280ecc69336487201082(const std::string & filename)` | `AudioSourceId` Returns a new sound object. |
| `https://developers.google.com/vr/reference/android-ndk/class/gvr/audio-api#classgvr_1_1_audio_api_1adcc23276d8823210574a260dbc36880b(const std::string & filename)` | `AudioSourceId` Returns a new sound field. |
| `https://developers.google.com/vr/reference/android-ndk/class/gvr/audio-api#classgvr_1_1_audio_api_1a1684388344d3c5014256516d0d0b6367(const std::string & filename)` | `AudioSourceId` Returns a new stereo sound. |
| `https://developers.google.com/vr/reference/android-ndk/class/gvr/audio-api#classgvr_1_1_audio_api_1a34522a915aa0e130a50bec84f9355e7a(bool enable)` | `void` Turns on/off the room reverberation effect. |
| `https://developers.google.com/vr/reference/android-ndk/class/gvr/audio-api#classgvr_1_1_audio_api_1afc9f6d0d2af463b1c247ad9811f0f6b5(bool enable)` | `void` Enables the stereo speaker mode. |
| `https://developers.google.com/vr/reference/android-ndk/class/gvr/audio-api#classgvr_1_1_audio_api_1a5f0245195b3e4c6252b22eb022003d89(JNIEnv *env, jobject android_context, jobject class_loader, https://developers.google.com/vr/reference/android-ndk/group/types#group__types_1ga81435bed7e3235488fd7137c6fddc23c rendering_mode)` | `bool` Creates and initializes a gvr_audio_context. |
| `https://developers.google.com/vr/reference/android-ndk/class/gvr/audio-api#classgvr_1_1_audio_api_1a0f0d797cd00ba7dd75d92b895fd1da2b(AudioSourceId source_id) const ` | `bool` Checks if a sound is playing. |
| `https://developers.google.com/vr/reference/android-ndk/class/gvr/audio-api#classgvr_1_1_audio_api_1a15d2792f30c72912e273b4be95887c90(AudioSourceId source_id)` | `bool` Checks if a source is in a valid playable state. |
| `https://developers.google.com/vr/reference/android-ndk/class/gvr/audio-api#classgvr_1_1_audio_api_1ac2e567d38c2ba8f2f81f6326f0f96910()` | `void` Pauses the audio engine. |
| `https://developers.google.com/vr/reference/android-ndk/class/gvr/audio-api#classgvr_1_1_audio_api_1abadd53ee12ef42285f88b342f10c96fb(AudioSourceId source_id)` | `void` Pauses the playback of a sound. |
| `https://developers.google.com/vr/reference/android-ndk/class/gvr/audio-api#classgvr_1_1_audio_api_1a3e5021678ba73412fdf58159d9a18392(AudioSourceId source_id, bool looping_enabled)` | `void` Starts the playback of a sound. |
| `https://developers.google.com/vr/reference/android-ndk/class/gvr/audio-api#classgvr_1_1_audio_api_1aec5071e8005f2080cafa3fdc361ef987(const std::string & filename)` | `bool` Preloads a local sound file. |
| `https://developers.google.com/vr/reference/android-ndk/class/gvr/audio-api#classgvr_1_1_audio_api_1af6b00635e81d5d65a5e747fb4c3328b3()` | `void` Resumes the audio engine. |
| `https://developers.google.com/vr/reference/android-ndk/class/gvr/audio-api#classgvr_1_1_audio_api_1aee4a4795e488a66a05ed3975e95fe12a(AudioSourceId source_id)` | `void` Resumes the playback of a sound. |
| `https://developers.google.com/vr/reference/android-ndk/class/gvr/audio-api#classgvr_1_1_audio_api_1aa01d46c6aff97b25fc3884d5670c6297(const https://developers.google.com/vr/reference/android-ndk/struct/gvr-mat4f#structgvr__mat4f & head_pose_matrix)` | `void` Sets the head position from a matrix representation. |
| `https://developers.google.com/vr/reference/android-ndk/class/gvr/audio-api#classgvr_1_1_audio_api_1a9c74de001e2087c87d88d0f759abb140(float volume)` | `void` Changes the master volume. |
| `https://developers.google.com/vr/reference/android-ndk/class/gvr/audio-api#classgvr_1_1_audio_api_1a562ffa78300b3b3f8feb695b89e9bc6a(float size_x, float size_y, float size_z, https://developers.google.com/vr/reference/android-ndk/group/types#group__types_1gae7e544e03435556a97f99d7a23d4bf82 wall_material, https://developers.google.com/vr/reference/android-ndk/group/types#group__types_1gae7e544e03435556a97f99d7a23d4bf82 ceiling_material, https://developers.google.com/vr/reference/android-ndk/group/types#group__types_1gae7e544e03435556a97f99d7a23d4bf82 floor_material)` | `void` Sets the room properties describing the dimensions and surface materials of a given room. |
| `https://developers.google.com/vr/reference/android-ndk/class/gvr/audio-api#classgvr_1_1_audio_api_1a1cf589efb502592f427fb027fbd25d60(float gain, float time_adjust, float brightness_adjust)` | `void` Adjusts the properties of the current reverb, allowing changes to the reverb's gain, duration and low/high frequency balance. |
| `https://developers.google.com/vr/reference/android-ndk/class/gvr/audio-api#classgvr_1_1_audio_api_1abce809d96fde012f5fb82b10d4da2c14(AudioSourceId sound_object_id, float alpha, float order)` | `void` Sets directivity constants for an existing sound object. |
| `https://developers.google.com/vr/reference/android-ndk/class/gvr/audio-api#classgvr_1_1_audio_api_1a5a5b8af7b224616031de2262f3ff2695(AudioSourceId sound_object_id, https://developers.google.com/vr/reference/android-ndk/group/types#group__types_1ga6f7b4981dd2d8f6d4dda118d0b2bd7f5 rolloff_model, float min_distance, float max_distance)` | `void` |
| `https://developers.google.com/vr/reference/android-ndk/class/gvr/audio-api#classgvr_1_1_audio_api_1a24d93b8e03e5686b8ad8334b507bdd81(AudioSourceId sound_object_id, float x, float y, float z)` | `void` Repositions an existing sound object. |
| `https://developers.google.com/vr/reference/android-ndk/class/gvr/audio-api#classgvr_1_1_audio_api_1ac23d3d3944c238aa1a4e81f7d6207124(AudioSourceId sound_object_id, const https://developers.google.com/vr/reference/android-ndk/struct/gvr-quatf#structgvr__quatf & sound_object_quat)` | `void` Sets the rotation for an existing sound object. |
| `https://developers.google.com/vr/reference/android-ndk/class/gvr/audio-api#classgvr_1_1_audio_api_1a693986f1bc98efa4600fa4a05a5e3efd(AudioSourceId source_id, float volume)` | `void` Changes the volume of an existing sound. |
| `https://developers.google.com/vr/reference/android-ndk/class/gvr/audio-api#classgvr_1_1_audio_api_1af2faabaedeb8062edef17a62bfcbbe2d(AudioSourceId soundfield_id, const https://developers.google.com/vr/reference/android-ndk/struct/gvr-quatf#structgvr__quatf & soundfield_rotation)` | `void` Rotates an existing soundfield. |
| `https://developers.google.com/vr/reference/android-ndk/class/gvr/audio-api#classgvr_1_1_audio_api_1a5162a035386b5ceae0e964ed2da43dd7(AudioSourceId source_id)` | `void` Stops the playback of a sound. |
| `https://developers.google.com/vr/reference/android-ndk/class/gvr/audio-api#classgvr_1_1_audio_api_1a18d05d35377a4ddde58f431dc1382bc2(const std::string & filename)` | `void` Unloads a previously preloaded sample from memory. |
| `https://developers.google.com/vr/reference/android-ndk/class/gvr/audio-api#classgvr_1_1_audio_api_1a08a1a03eb5882fc5933f54cda6ce280b()` | `void` For more information, see [gvr_audio_update()](https://developers.google.com/vr/reference/android-ndk/group/audio#group___audio_1ga785908ababd50f72b999f42e9b2eaea1). |

## Public functions

### CreateSoundObject

```
AudioSourceId CreateSoundObject(
  const std::string & filename
)
```
Returns a new sound object.

For more information, see [gvr_audio_create_sound_object()](https://developers.google.com/vr/reference/android-ndk/group/audio#group___audio_1ga7e4aac8bf24e9b20d058d7fdf0c94222).

### CreateSoundfield

```
AudioSourceId CreateSoundfield(
  const std::string & filename
)
```
Returns a new sound field.

For more information, see [gvr_audio_create_soundfield()](https://developers.google.com/vr/reference/android-ndk/group/audio#group___audio_1ga8d2324128b530bb3a19a53810c7ef62a).

### CreateStereoSound

```
AudioSourceId CreateStereoSound(
  const std::string & filename
)
```
Returns a new stereo sound.

For more information, see [gvr_audio_create_stereo_sound()](https://developers.google.com/vr/reference/android-ndk/group/audio#group___audio_1ga6b4896f75a3af97cb92530ec5932baa2).

### EnableRoom

```
void EnableRoom(
  bool enable
)
```
Turns on/off the room reverberation effect.

For more information, see [gvr_audio_enable_room()](https://developers.google.com/vr/reference/android-ndk/group/audio#group___audio_1ga3be69e5d0085c276436ccb3814bdda42).

### EnableStereoSpeakerMode

```
void EnableStereoSpeakerMode(
  bool enable
)
```
Enables the stereo speaker mode.

For more information see [gvr_audio_enable_stereo_speaker_mode()](https://developers.google.com/vr/reference/android-ndk/group/audio#group___audio_1gab777df45d7dab8d83250f00f766f5833).

### Init

```
bool Init(
  JNIEnv *env,
  jobject android_context,
  jobject class_loader,
  AudioRenderingMode rendering_mode
)
```
Creates and initializes a gvr_audio_context.

For more information, see [gvr_audio_create()](https://developers.google.com/vr/reference/android-ndk/group/audio#group___audio_1ga8621fd76744d99fb60ee5df2c9f0af5b).

### IsSoundPlaying

```
bool IsSoundPlaying(
  AudioSourceId source_id
) const 
```
Checks if a sound is playing.

For more information, see [gvr_audio_is_sound_playing()](https://developers.google.com/vr/reference/android-ndk/group/audio#group___audio_1ga5b7e30bccff7bd87a00a0eaf89cc70a9).

### IsSourceIdValid

```
bool IsSourceIdValid(
  AudioSourceId source_id
)
```
Checks if a source is in a valid playable state.

For more information, see [gvr_audio_is_source_id_valid()](https://developers.google.com/vr/reference/android-ndk/group/audio#group___audio_1gae872b33a52405f63c5fa9cc3d8ec4fae).

### Pause

```
void Pause()
```
Pauses the audio engine.

For more information, see [gvr_audio_pause()](https://developers.google.com/vr/reference/android-ndk/group/audio#group___audio_1ga0fbed0e33b3025e0878d55bca260d6d7).

### PauseSound

```
void PauseSound(
  AudioSourceId source_id
)
```
Pauses the playback of a sound.

For more information, see [gvr_audio_pause_sound()](https://developers.google.com/vr/reference/android-ndk/group/audio#group___audio_1gae83cb9b8cc90d75bd93f59d99b5929d3).

### PlaySound

```
void PlaySound(
  AudioSourceId source_id,
  bool looping_enabled
)
```
Starts the playback of a sound.

For more information, see [gvr_audio_play_sound()](https://developers.google.com/vr/reference/android-ndk/group/audio#group___audio_1gaf1050554a376df696169a618abaf161e).

### PreloadSoundfile

```
bool PreloadSoundfile(
  const std::string & filename
)
```
Preloads a local sound file.

For more information, see [gvr_audio_preload_soundfile()](https://developers.google.com/vr/reference/android-ndk/group/audio#group___audio_1ga49b34f13607a9030c3fef82cfd127ee4).

### Resume

```
void Resume()
```
Resumes the audio engine.

For more information, see [gvr_audio_resume()](https://developers.google.com/vr/reference/android-ndk/group/audio#group___audio_1gaa8422d796a3a28a69b26fae707c0ba86).

### ResumeSound

```
void ResumeSound(
  AudioSourceId source_id
)
```
Resumes the playback of a sound.

For more information, see [gvr_audio_resume_sound()](https://developers.google.com/vr/reference/android-ndk/group/audio#group___audio_1ga6d6ebbe459a23da7fe147294c1deaf9f).

### SetHeadPose

```
void SetHeadPose(
  const Mat4f & head_pose_matrix
)
```
Sets the head position from a matrix representation.

For more information, see [gvr_audio_set_head_pose()](https://developers.google.com/vr/reference/android-ndk/group/audio#group___audio_1gace662b2168bc701baaa7f1fdd1b40218).

### SetMasterVolume

```
void SetMasterVolume(
  float volume
)
```
Changes the master volume.

For more information, see [gvr_audio_set_master_volume()](https://developers.google.com/vr/reference/android-ndk/group/audio#group___audio_1ga4581c8775b2a305b7688e7c4b57eed1f).

### SetRoomProperties

```
void SetRoomProperties(
  float size_x,
  float size_y,
  float size_z,
  gvr_audio_material_type wall_material,
  gvr_audio_material_type ceiling_material,
  gvr_audio_material_type floor_material
)
```
Sets the room properties describing the dimensions and surface materials of a given room.

For more information, see [gvr_audio_set_room_properties()](https://developers.google.com/vr/reference/android-ndk/group/audio#group___audio_1ga29356cac89a5e9d7aff32b01ed67f42b).

### SetRoomReverbAdjustments

```
void SetRoomReverbAdjustments(
  float gain,
  float time_adjust,
  float brightness_adjust
)
```
Adjusts the properties of the current reverb, allowing changes to the reverb's gain, duration and low/high frequency balance.

For more information see [gvr_audio_set_room_reverb_adjustments()](https://developers.google.com/vr/reference/android-ndk/group/audio#group___audio_1ga9ef58141f5afaf762754a9d5380761b9).

### SetSoundObjectDirectivity

```
void SetSoundObjectDirectivity(
  AudioSourceId sound_object_id,
  float alpha,
  float order
)
```
Sets directivity constants for an existing sound object.

For more information, see gvr_audio_set_sound_object_directivity.

### SetSoundObjectDistanceRolloffModel

```
void SetSoundObjectDistanceRolloffModel(
  AudioSourceId sound_object_id,
  gvr_audio_distance_rolloff_type rolloff_model,
  float min_distance,
  float max_distance
)
```

### SetSoundObjectPosition

```
void SetSoundObjectPosition(
  AudioSourceId sound_object_id,
  float x,
  float y,
  float z
)
```
Repositions an existing sound object.

For more information, see [gvr_audio_set_sound_object_position()](https://developers.google.com/vr/reference/android-ndk/group/audio#group___audio_1ga1977f6259b25ed30c9049c036b5b9237).

### SetSoundObjectRotation

```
void SetSoundObjectRotation(
  AudioSourceId sound_object_id,
  const Quatf & sound_object_quat
)
```
Sets the rotation for an existing sound object.

For more information, see gvr_audio_set_sound_object_rotation.

### SetSoundVolume

```
void SetSoundVolume(
  AudioSourceId source_id,
  float volume
)
```
Changes the volume of an existing sound.

For more information, see [gvr_audio_set_sound_volume()](https://developers.google.com/vr/reference/android-ndk/group/audio#group___audio_1gac99aed32e43ee0c1b7536267f49d38d5).

### SetSoundfieldRotation

```
void SetSoundfieldRotation(
  AudioSourceId soundfield_id,
  const Quatf & soundfield_rotation
)
```
Rotates an existing soundfield.

For more information, see [gvr_audio_set_soundfield_rotation()](https://developers.google.com/vr/reference/android-ndk/group/audio#group___audio_1gab76d43cb5a54218aa28780ad0f823b40).

### StopSound

```
void StopSound(
  AudioSourceId source_id
)
```
Stops the playback of a sound.

For more information, see [gvr_audio_stop_sound()](https://developers.google.com/vr/reference/android-ndk/group/audio#group___audio_1ga71cc098b93121c0967b1ba0ba4a76d96).

### UnloadSoundfile

```
void UnloadSoundfile(
  const std::string & filename
)
```
Unloads a previously preloaded sample from memory.

For more information, see [gvr_audio_preload_soundfile()](https://developers.google.com/vr/reference/android-ndk/group/audio#group___audio_1ga49b34f13607a9030c3fef82cfd127ee4).

### Update

```
void Update()
```
For more information, see [gvr_audio_update()](https://developers.google.com/vr/reference/android-ndk/group/audio#group___audio_1ga785908ababd50f72b999f42e9b2eaea1).