Initial Commit
Support multiple sounds, use a callback instead of timer