It seems that libsndfile reads 83 less frames than expected every time you load a file, so when it is played there is an error as it accesses uninitalized memory.
I read over the libsndfile spec, it expects the info struct passed to sf_open to have a format value of 0. Maybe on my system it is set to zero automatically, but on yours it is uninitalized, so reads the wrong amount of frames.
if you place this line at the start of the AudioData(std::string filename) function that loads the audio:
//---snip---
AudioData(std::string filename)
{
this->info.format = 0; // <--- add this line
SNDFILE* file = sf_open(filename.c_str(), SFM_READ, &this->info);
//---snip---
on my repo it would be line 35.
if that doesn’t work, here is a version of audio.h that doesn’t start portaudio or load any audio, the game is still completely playable. https://drive.google.com/file/d/1-0iQF-y4WovPo_n6aQFHmRLnNhTz-pyr/view?usp=sharing