Just had another look through your code. The problem might be the way the sound is created. By default, get_sound gives you a non-positional sound. This is from audioManager.h:
virtual PT(AudioSound) get_sound(const string& file_name, bool positional = false, int mode=SM_heuristic) = 0;
You need to set this positional argument to true, so:
bgsound = AM->get_sound("KirbyMono.mp3", true);