Index: code/branches/sound2/src/orxonox/CameraManager.h
===================================================================
--- code/branches/sound2/src/orxonox/CameraManager.h	(revision 3054)
+++ code/branches/sound2/src/orxonox/CameraManager.h	(revision 3055)
@@ -56,4 +56,5 @@
 
             static CameraManager& getInstance() { assert(singletonRef_s); return *singletonRef_s; }
+            static CameraManager* getInstancePtr() { return singletonRef_s; }
 
             void useCamera(Ogre::Camera* camera);
Index: code/branches/sound2/src/orxonox/OrxonoxPrereqs.h
===================================================================
--- code/branches/sound2/src/orxonox/OrxonoxPrereqs.h	(revision 3054)
+++ code/branches/sound2/src/orxonox/OrxonoxPrereqs.h	(revision 3055)
@@ -253,5 +253,6 @@
     //sound
     class SoundBase;
-    class SoundManger;
+    class SoundManager;
+    class SoundMainMenu;
 }
 
Index: code/branches/sound2/src/orxonox/gamestates/GSMainMenu.cc
===================================================================
--- code/branches/sound2/src/orxonox/gamestates/GSMainMenu.cc	(revision 3054)
+++ code/branches/sound2/src/orxonox/gamestates/GSMainMenu.cc	(revision 3055)
@@ -40,4 +40,5 @@
 #include "objects/Scene.h"
 #include "GraphicsManager.h"
+#include "sound/SoundMainMenu.h"
 
 namespace orxonox
@@ -79,8 +80,13 @@
 
         InputManager::getInstance().requestEnterState("mainMenu");
+
+        this->ambient_ = new SoundMainMenu();
+        this->ambient_->play(true);
     }
 
     void GSMainMenu::deactivate()
     {
+        delete this->ambient_;
+
         InputManager::getInstance().requestLeaveState("mainMenu");
         InputManager::getInstance().requestDestroyState("mainMenu");
Index: code/branches/sound2/src/orxonox/gamestates/GSMainMenu.h
===================================================================
--- code/branches/sound2/src/orxonox/gamestates/GSMainMenu.h	(revision 3054)
+++ code/branches/sound2/src/orxonox/gamestates/GSMainMenu.h	(revision 3055)
@@ -55,4 +55,7 @@
         // console commands
         ConsoleCommand* ccStartGame_;
+
+        // ambient sound for the main menu
+        SoundMainMenu* ambient_;
     };
 }
Index: code/branches/sound2/src/orxonox/sound/CMakeLists.txt
===================================================================
--- code/branches/sound2/src/orxonox/sound/CMakeLists.txt	(revision 3054)
+++ code/branches/sound2/src/orxonox/sound/CMakeLists.txt	(revision 3055)
@@ -2,7 +2,9 @@
     SoundManager.h
     SoundBase.h
+    SoundMainMenu.h
 
     SoundManager.cc
     SoundBase.cc
+    SoundMainMenu.cc
 )
 
Index: code/branches/sound2/src/orxonox/sound/SoundBase.cc
===================================================================
--- code/branches/sound2/src/orxonox/sound/SoundBase.cc	(revision 3054)
+++ code/branches/sound2/src/orxonox/sound/SoundBase.cc	(revision 3055)
@@ -148,9 +148,13 @@
             if(filename.find("ogg", 0) != std::string::npos)
             {
+                COUT(2) << "Sound: Trying fallback ogg loader" << std::endl;
                 this->buffer_ = loadOggFile(filename);
             }
 
-            if(this->buffer_ == AL_NONE) 
+            if(this->buffer_ == AL_NONE)
+            {
+                COUT(2) << "Sound: fallback ogg loader failed: " << alutGetErrorString(alutGetError()) << std::endl;
                 return false;
+            }
         }
 
@@ -158,5 +162,5 @@
         alSourcei(this->source_, AL_BUFFER, this->buffer_);
         if(alGetError() != AL_NO_ERROR) {
-            COUT(2) << "Sound: OpenAL: Error loading sample file" << std::endl;
+            COUT(2) << "Sound: OpenAL: Error loading sample file: " << filename << std::endl;
             return false;
         }
@@ -172,6 +176,4 @@
     ALuint SoundBase::loadOggFile(std::string filename)
     {
-        COUT(2) << "Sound: Trying fallback ogg loader";
-
         char inbuffer[4096];
         std::vector<char> outbuffer;
@@ -207,5 +209,5 @@
             }
         }
-        
+
         ov_clear(&vf);
 
Index: code/branches/sound2/src/orxonox/sound/SoundBase.h
===================================================================
--- code/branches/sound2/src/orxonox/sound/SoundBase.h	(revision 3054)
+++ code/branches/sound2/src/orxonox/sound/SoundBase.h	(revision 3055)
@@ -32,9 +32,8 @@
 #include <string>
 
+#include "OrxonoxPrereqs.h"
+
 namespace orxonox
 {
-    class SoundManager;
-    class WorldEntity;
-
     /**
      * The SoudBase class is the base class for all sound file loader classes.
Index: code/branches/sound2/src/orxonox/sound/SoundMainMenu.cc
===================================================================
--- code/branches/sound2/src/orxonox/sound/SoundMainMenu.cc	(revision 3055)
+++ code/branches/sound2/src/orxonox/sound/SoundMainMenu.cc	(revision 3055)
@@ -0,0 +1,46 @@
+/*
+ *   ORXONOX - the hottest 3D action shooter ever to exist
+ *                    > www.orxonox.net <
+ *
+ *
+ *   License notice:
+ *
+ *   This program is free software; you can redistribute it and/or
+ *   modify it under the terms of the GNU General Public License
+ *   as published by the Free Software Foundation; either version 2
+ *   of the License, or (at your option) any later version.
+ *
+ *   This program is distributed in the hope that it will be useful,
+ *   but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *   GNU General Public License for more details.
+ *
+ *   You should have received a copy of the GNU General Public License
+ *   along with this program; if not, write to the Free Software
+ *   Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
+ *
+ *   Author:
+ *       Erwin 'vaiursch' Herrsche
+ *   Co-authors:
+ *      ...
+ *
+ */
+
+#include "SoundMainMenu.h"
+#include "core/CoreIncludes.h"
+#include "core/ConfigValueIncludes.h"
+
+namespace orxonox
+{
+    SoundMainMenu::SoundMainMenu()
+    {
+        RegisterObject(SoundMainMenu);
+        setConfigValues();
+        loadFile(this->filename_);
+    }
+
+    void SoundMainMenu::setConfigValues()
+    {
+        SetConfigValue(filename_, "ambient/mainmenu.wav");
+    }
+}
Index: code/branches/sound2/src/orxonox/sound/SoundMainMenu.h
===================================================================
--- code/branches/sound2/src/orxonox/sound/SoundMainMenu.h	(revision 3055)
+++ code/branches/sound2/src/orxonox/sound/SoundMainMenu.h	(revision 3055)
@@ -0,0 +1,50 @@
+/*
+ *   ORXONOX - the hottest 3D action shooter ever to exist
+ *                    > www.orxonox.net <
+ *
+ *
+ *   License notice:
+ *
+ *   This program is free software; you can redistribute it and/or
+ *   modify it under the terms of the GNU General Public License
+ *   as published by the Free Software Foundation; either version 2
+ *   of the License, or (at your option) any later version.
+ *
+ *   This program is distributed in the hope that it will be useful,
+ *   but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *   GNU General Public License for more details.
+ *
+ *   You should have received a copy of the GNU General Public License
+ *   along with this program; if not, write to the Free Software
+ *   Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
+ *
+ *   Author:
+ *       Erwin 'vaiursch' Herrsche
+ *   Co-authors:
+ *      ...
+ *
+ */
+
+#ifndef _SOUNDMAINMENU_H__
+#define _SOUNDMAINMENU_H__
+
+#include <string>
+
+#include "core/OrxonoxClass.h"
+#include "OrxonoxPrereqs.h"
+#include "SoundBase.h"
+
+namespace orxonox
+{
+    class _OrxonoxExport SoundMainMenu : public SoundBase, public virtual OrxonoxClass
+    {
+        public:
+            SoundMainMenu();
+            void setConfigValues();
+
+        private:
+            std::string filename_;
+    };
+}
+#endif
Index: code/branches/sound2/src/orxonox/sound/SoundManager.cc
===================================================================
--- code/branches/sound2/src/orxonox/sound/SoundManager.cc	(revision 3054)
+++ code/branches/sound2/src/orxonox/sound/SoundManager.cc	(revision 3055)
@@ -52,6 +52,6 @@
         else
         {
-            COUT(4) << "Sound: OpenAL ALUT version:" << alutGetMajorVersion() << "." << alutGetMinorVersion() << std::endl;
-            COUT(4) << "Sound: OpenAL ALUT supported MIME types:" << alutGetMIMETypes(ALUT_LOADER_BUFFER) << std::endl;
+            COUT(4) << "Sound: OpenAL ALUT version: " << alutGetMajorVersion() << "." << alutGetMinorVersion() << std::endl;
+            COUT(4) << "Sound: OpenAL ALUT supported MIME types: " << alutGetMIMETypes(ALUT_LOADER_BUFFER) << std::endl;
             if(SoundManager::device_s == NULL)
             {
@@ -77,5 +77,5 @@
                 {
                     if(alcMakeContextCurrent(this->context_) == AL_TRUE)
-                        COUT(3) << "Sound: OpenAL: Context " << this->context_ << "loaded" << std::endl;
+                        COUT(3) << "Sound: OpenAL: Context " << this->context_ << " loaded" << std::endl;
                 }
             }
@@ -124,4 +124,7 @@
     void SoundManager::tick(float dt)
     {
+        if (!CameraManager::getInstancePtr())
+            return;
+
         // update listener position
         Camera* camera = CameraManager::getInstance().getActiveCamera();
Index: code/branches/sound2/src/orxonox/sound/SoundManager.h
===================================================================
--- code/branches/sound2/src/orxonox/sound/SoundManager.h	(revision 3054)
+++ code/branches/sound2/src/orxonox/sound/SoundManager.h	(revision 3055)
@@ -31,10 +31,9 @@
 #include <AL/alc.h>
 
-#include <orxonox/objects/Tickable.h>
+#include "OrxonoxPrereqs.h"
+#include "orxonox/objects/Tickable.h"
 
 namespace orxonox
 {
-    class SoundBase;
-
     /**
      * The SoundManager class manages the OpenAL device, context and listener
