After playing a sound too many times it stopps being audible

In my engine, i implemented a very crude fmod core implementation that plays sounds on either a music or fx channel group, however upon testing some mouse click events and using it to play a sound, i noticed that after a short burst of repeatedly playing the sound, it no longer plays.

AudioSystem::AudioSystem() : BaseSystem("AudioSystem")
{
	result = System_Create(&sys);
	check_result(result);
	check_result(sys->init(512, FMOD_INIT_NORMAL, 0));
	sys->createChannelGroup("SoundEffects", &fx);
	sys->createChannelGroup("Music", &music);
	fx_volume = music_volume = master_volume = 1;

}

int AudioSystem::LoadSound(const char* path, SoundType type)
{
	FMOD::Sound* sound;
	if (type == SoundType::sound_effect) {
		result = sys->createSound(path, FMOD_DEFAULT, nullptr, &sound);
	}
	else {
		result = sys->createSound(path, FMOD_LOOP_NORMAL | FMOD_2D, nullptr, &sound);
	}
	
	if (result == FMOD_OK) {
		sounds.push_back(std::pair<Sound*, SoundType>(sound, type));
	}
	return sounds.size()-1;
}

void AudioSystem::PlaySound(int ID)
{
	Channel* channel;
	auto type = sounds[ID].second;
	result = sys->playSound(sounds[ID].first, (bool)type ? music : fx, false, &channel);
	check_result(result);
	
	
}

Fmod isnt producing any errors with this either so im really just stumped, im thinking im doing something absolutely stupid

Are you releasing any of these sounds that you are creating with AudioSystem::LoadSound? It’s possible you’re hitting the audibility limits of the Virtual Voice System and need to cull some of your FMOD::Sound instances.
Otherwise, if something is going wrong with FMOD internally, you should be able to see it by enabling API error logging. Can you please swap out your libs for the “fmodL” logging libs, call FMOD::Debug_Initialize(FMOD_DEBUG_LEVEL_LOG) at the start of your application, and share the log after reproducing this issue?

I am using the FMODL lib files, the issue I’m experiencing is happening while I only have 1 file loaded so I don’t believe anything is happening there, should I unload a sound and reload when played again

[LOG] OutputWASAPI::init : Mix Format (WAVEFORMATEX): wFormatTag=0xFFFE, nChannels=2, nSamplesPerSec=48000, nAvgBytesPerSec=384000, nBlockAlign=8, wBitsPerSample=32, cbSize=22.
[LOG] OutputWASAPI::init : Mix Format (WAVEFORMATEXTENSIBLE): wValidBitsPerSample=32, dwChannelMask=0x00000003, SubFormat=00000003-0000-0010-8000-00AA00389B71.
[LOG] OutputWASAPI::init : Output buffer size: 4096 samples, latency: 0.00ms, period: 10.00ms, DSP buffer: 1024 * 4
[LOG] Thread::initThread : Init FMOD stream thread. Affinity: 0x4000000000000003, Priority: 0xFFFF7FFB, Stack Size: 98304, Semaphore: No, Sleep Time: 10, Looping: Yes.
[LOG] Thread::initThread : Init FMOD mixer thread. Affinity: 0x4000000000000001, Priority: 0xFFFF7FFA, Stack Size: 81920, Semaphore: No, Sleep Time: 0, Looping: Yes.
[LOG] SystemI::createSoundInternal : Create name=‘assets/coin.mp3’, mode=0x00000000
[LOG] SystemI::createSoundInternal : Sample 0/0: name=‘(null)’, format=2, channels=2, frequency=44100, lengthbytes=31973, lengthpcm=61056, pcmblocksize=1152, loopstart=0, loopend=0, mode=0x00000000, channelmask=0x00000000, channelorder=0, peakvolume=0.000000.

That is indeed a very empty log. I think it would be worth attaching the core profiler and seeing if any new channels are being created after this issue reproduces.
The Core API Profiler can be found in “C:\Program Files (x86)\FMOD SoundSystem\FMOD Studio API Windows\bin\FMOD Profiler.exe”. To enable profiling in your application you will need to pass the FMOD_INIT_PROFILE_METER_ALL flag into your System::init call.

sys->init(512, FMOD_INIT_PROFILE_METER_ALL, 0);

With that, you just need to hit “Connect” while your game is running, and you should be able to see your channels being created and destroyed in the DSP graph.

Can you please give that a shot and let me know if there is any difference in the DSP graph when first creating channels, vs after this issue occurs and you can no longer hear anything?