Index: code/branches/pch/src/orxonox/gamestates/GSGraphics.cc
===================================================================
--- code/branches/pch/src/orxonox/gamestates/GSGraphics.cc	(revision 3183)
+++ code/branches/pch/src/orxonox/gamestates/GSGraphics.cc	(revision 3184)
@@ -52,4 +52,5 @@
 #include "overlays/console/InGameConsole.h"
 #include "gui/GUIManager.h"
+#include "sound/SoundManager.h"
 #include "GraphicsManager.h"
 
@@ -64,4 +65,5 @@
         , guiManager_(0)
         , graphicsManager_(0)
+        , soundManager_(0)
         , masterKeyBinder_(0)
         , masterInputState_(0)
@@ -95,4 +97,5 @@
         \li creates input manager
         \li loads master key bindings
+        \li loads the SoundManager
         \li loads ingame console
         \li loads GUI interface (GUIManager)
@@ -128,4 +131,7 @@
         masterKeyBinder_->loadBindings("masterKeybindings.ini");
         masterInputState_->setKeyHandler(masterKeyBinder_);
+
+        // Load the SoundManager
+        soundManager_ = new SoundManager();
 
         // Load the InGameConsole
@@ -173,4 +179,6 @@
         delete this->debugOverlay_;
 
+        delete this->soundManager_;
+
         delete this->inputManager_;
         this->inputManager_ = 0;
Index: code/branches/pch/src/orxonox/gamestates/GSGraphics.h
===================================================================
--- code/branches/pch/src/orxonox/gamestates/GSGraphics.h	(revision 3183)
+++ code/branches/pch/src/orxonox/gamestates/GSGraphics.h	(revision 3184)
@@ -72,4 +72,5 @@
         GUIManager*           guiManager_;          //!< Interface to GUI
         GraphicsManager*      graphicsManager_;     //!< Interface to Ogre
+        SoundManager*         soundManager_;        //!< Keeps track of SoundBase objects
 
         KeyBinder*            masterKeyBinder_;     //!< Key binder for master key bindings
Index: code/branches/pch/src/orxonox/sound/SoundBase.cc
===================================================================
--- code/branches/pch/src/orxonox/sound/SoundBase.cc	(revision 3183)
+++ code/branches/pch/src/orxonox/sound/SoundBase.cc	(revision 3184)
@@ -41,18 +41,11 @@
 namespace orxonox 
 {
-    SoundManager* SoundBase::soundmanager_s = NULL;
-
     SoundBase::SoundBase(WorldEntity* entity)
     {
-        if(SoundBase::soundmanager_s == NULL)
-        {
-            SoundBase::soundmanager_s = new SoundManager();
-        }
-
         this->source_ = 0;
         this->buffer_ = 0;
         this->entity_ = entity;
 
-        SoundBase::soundmanager_s->addSound(this);
+        SoundManager::getInstance().addSound(this);
     }
 
@@ -144,5 +137,5 @@
         filename = Core::getMediaPathString() + "/audio/" + filename;
 
-        if(!SoundBase::soundmanager_s->isSoundAvailable())
+        if(!SoundManager::getInstance().isSoundAvailable())
         {
             COUT(3) << "Sound: not available, skipping " << filename << std::endl;
Index: code/branches/pch/src/orxonox/sound/SoundBase.h
===================================================================
--- code/branches/pch/src/orxonox/sound/SoundBase.h	(revision 3183)
+++ code/branches/pch/src/orxonox/sound/SoundBase.h	(revision 3184)
@@ -64,6 +64,4 @@
 
         ALint getSourceState();
-
-        static SoundManager* soundmanager_s;
     }; // class SoundBase
 } // namepsace orxonox
Index: code/branches/pch/src/orxonox/sound/SoundManager.cc
===================================================================
--- code/branches/pch/src/orxonox/sound/SoundManager.cc	(revision 3183)
+++ code/branches/pch/src/orxonox/sound/SoundManager.cc	(revision 3184)
@@ -38,4 +38,5 @@
 namespace orxonox
 {
+    SoundManager* SoundManager::singletonRef_s = NULL;
     ALCdevice* SoundManager::device_s = NULL;
 
@@ -45,4 +46,7 @@
     SoundManager::SoundManager()
     {
+        assert(singletonRef_s == NULL);
+        singletonRef_s = this;
+
         this->soundavailable_ = true;
         if(!alutInitWithoutContext(NULL,NULL))
@@ -91,4 +95,7 @@
     SoundManager::~SoundManager()
     {
+        assert(singletonRef_s != NULL);
+        singletonRef_s = NULL;
+
         alcDestroyContext(this->context_);
         alcCloseDevice(SoundManager::device_s);
Index: code/branches/pch/src/orxonox/sound/SoundManager.h
===================================================================
--- code/branches/pch/src/orxonox/sound/SoundManager.h	(revision 3183)
+++ code/branches/pch/src/orxonox/sound/SoundManager.h	(revision 3184)
@@ -30,4 +30,5 @@
 #include "OrxonoxPrereqs.h"
 
+#include <cassert>
 #include <list>
 #include "interfaces/Tickable.h"
@@ -51,4 +52,6 @@
         bool isSoundAvailable();
 
+        static SoundManager& getInstance() { assert(singletonRef_s); return *singletonRef_s; }
+
     private:
         static ALCdevice* device_s;
@@ -57,4 +60,5 @@
         bool soundavailable_;
 
+        static SoundManager* singletonRef_s;
     }; // class SoundManager
 } // namespace orxonox
