You leak sound and timer handles.
Why does it run on map init event?
Can't you just use native KillSoundWhenDone, why do I need to run a timer if I don't recycle the sound handle? I don't have too much experience with sounds in GUI, since Im using a sound recycling tool for my sound needs.