# Volume too low when playing wav files using FMOD Core API

**URL:** https://qa.fmod.com/t/volume-too-low-when-playing-wav-files-using-fmod-core-api/19856
**Category:** FMOD Engine
**Created:** [February 9, 2023, 6:48pm UTC](https://qa.fmod.com/t/volume-too-low-when-playing-wav-files-using-fmod-core-api/19856 "2023-02-09T18:48:09Z")
**Posts on this page:** 1
**Showing post:** 12

<div class="post-metadata">

### Author: ![Connor\_FMOD](https://yyz2.discourse-cdn.com/flex036/user_avatar/qa.fmod.com/connor_fmod/32/3685_2.png) [@Connor\_FMOD](https://qa.fmod.com/u/Connor_FMOD)
#### Post date: [February 21, 2023, 10:18pm UTC](https://qa.fmod.com/t/volume-too-low-when-playing-wav-files-using-fmod-core-api/19856/12 "2023-02-21T22:18:12Z")

</div>

Hi,

In the code you have uploaded, it is still using `system->mixerSuspend()` which might be the cause of the popping. So I have changed the code to remove any `mixer` manipulation:

> **Play Sound Example**
>
> ```auto
> #include "fmod.hpp"
> #include "common.h"
> 
> int FMOD_Main()
> {
> FMOD::System *system;
> FMOD::Sound *sound1, *sound2, *sound3;
> FMOD::Channel *channel = 0;
> FMOD_RESULT result;
> void *extradriverdata = 0;
> bool isSuspendedState = false;
> FMOD::ChannelGroup* masterBus = nullptr;
>     
> Common_Init(&extradriverdata);
> 
> /*
> Create a System object and initialize
> */
> result = FMOD::System_Create(&system);
> ERRCHECK(result);
> 
> result = system->init(32, FMOD_INIT_NORMAL, extradriverdata);
> ERRCHECK(result);
> 
> result = system->createSound(Common_MediaPath("drumloop.wav"), FMOD_DEFAULT, 0, &sound1);
> ERRCHECK(result);
> 
> result = sound1->setMode(FMOD_LOOP_OFF); /* drumloop.wav has embedded loop points which automatically makes looping turn on, */
> ERRCHECK(result); /* so turn it off here. We could have also just put FMOD_LOOP_OFF in the above CreateSound call. */
> 
> result = system->createSound(Common_MediaPath("jaguar.wav"), FMOD_DEFAULT, 0, &sound2);
> ERRCHECK(result);
> 
> result = system->createSound(Common_MediaPath("swish.wav"), FMOD_DEFAULT, 0, &sound3);
> ERRCHECK(result);
> 
> result = system->getMasterChannelGroup(&masterBus);
> ERRCHECK(result);
> 
> /*
> Main loop
> */
> do
> {
> Common_Update();
> 
> if (Common_BtnPress(BTN_ACTION1))
> {
> result = system->playSound(sound1, 0, false, &channel);
> ERRCHECK(result);
> }
> 
> if (Common_BtnPress(BTN_ACTION2))
> {
> result = system->playSound(sound2, 0, false, &channel);
> ERRCHECK(result);
> }
> 
> if (Common_BtnPress(BTN_ACTION3))
> {
> result = system->playSound(sound3, 0, false, &channel);
> ERRCHECK(result);
> }
> 
> if (Common_BtnPress(BTN_DOWN)) {
> result = masterBus->setPaused(true);
> ERRCHECK(result);
> isSuspendedState = true;
> }
> 
> if (Common_BtnPress(BTN_ACTION4)) {
> 
> result = masterBus-SetPaused(false);
> ERRCHECK(result);
> 
> isSuspendedState = false;
> }
> 
> result = system->update();
> ERRCHECK(result);
> 
> {
> unsigned int ms = 0;
> unsigned int lenms = 0;
> bool playing = 0;
> bool paused = 0;
> int channelsplaying = 0;
> 
> if (channel)
> {
> FMOD::Sound *currentsound = 0;
> 
> result = channel->isPlaying(&playing);
> if ((result != FMOD_OK) && (result != FMOD_ERR_INVALID_HANDLE) && (result != FMOD_ERR_CHANNEL_STOLEN))
> {
> ERRCHECK(result);
> }
> 
> result = channel->getPaused(&paused);
> if ((result != FMOD_OK) && (result != FMOD_ERR_INVALID_HANDLE) && (result != FMOD_ERR_CHANNEL_STOLEN))
> {
> ERRCHECK(result);
> }
> 
> result = channel->getPosition(&ms, FMOD_TIMEUNIT_MS);
> if ((result != FMOD_OK) && (result != FMOD_ERR_INVALID_HANDLE) && (result != FMOD_ERR_CHANNEL_STOLEN))
> {
> ERRCHECK(result);
> }
>                
> channel->getCurrentSound(&currentsound);
> if (currentsound)
> {
> result = currentsound->getLength(&lenms, FMOD_TIMEUNIT_MS);
> if ((result != FMOD_OK) && (result != FMOD_ERR_INVALID_HANDLE) && (result != FMOD_ERR_CHANNEL_STOLEN))
> {
> ERRCHECK(result);
> }
> }
> }
> 
> system->getChannelsPlaying(&channelsplaying, NULL);
> 
> Common_Draw("==================================================");
> Common_Draw("Play Sound Example.");
> Common_Draw("Copyright (c) Firelight Technologies 2004-2023.");
> Common_Draw("==================================================");
> Common_Draw("");
> Common_Draw("Press %s to play a mono sound (drumloop)", Common_BtnStr(BTN_ACTION1));
> Common_Draw("Press %s to play a mono sound (jaguar)", Common_BtnStr(BTN_ACTION2));
> Common_Draw("Press %s to play a stereo sound (swish)", Common_BtnStr(BTN_ACTION3));
> Common_Draw("Press %s to stop playing channel and call mixerSuspend()", Common_BtnStr(BTN_DOWN));
> Common_Draw("Press %s to call mixerResume()", Common_BtnStr(BTN_ACTION4));
> Common_Draw("Press %s to quit", Common_BtnStr(BTN_QUIT));
> Common_Draw("");
> Common_Draw("Time %02d:%02d:%02d/%02d:%02d:%02d : %s", ms / 1000 / 60, ms / 1000 % 60, ms / 10 % 100, lenms / 1000 / 60, lenms / 1000 % 60, lenms / 10 % 100, paused ? "Paused " : playing ? "Playing" : "Stopped");
> Common_Draw("Channels Playing %d", channelsplaying);
> Common_Draw("Suspended state: %s", isSuspendedState ? "Suspended" : "Resumed");
> }
> 
> Common_Sleep(50);
> } while (!Common_BtnPress(BTN_QUIT));
> 
> /*
> Shut down
> */
> result = sound1->release();
> ERRCHECK(result);
> result = sound2->release();
> ERRCHECK(result);
> result = sound3->release();
> ERRCHECK(result);
> result = system->close();
> ERRCHECK(result);
> result = system->release();
> ERRCHECK(result);
> 
> Common_Close();
> 
> return 0;
> }
> 
> ```

There should not be any issues with using `AudioTrack` for android devices, however, there is a known issue ([FMOD API | Platform Details](https://fmod.com/docs/2.02/api/platforms-android.html#known-issues)) Where recording does not work. If this will not affect you then it should be ok!

Hope this helps!

---

_[View the full topic](https://qa.fmod.com/t/volume-too-low-when-playing-wav-files-using-fmod-core-api/19856)._
